首页 > 代码库 > 卡2-SLAM
卡2-SLAM
---恢复内容开始---
1.下载
首先需要从github上Git以下两个包:
git clone https://github.com/ros-perception/open_karto(开源的karto包,实现底层的kartoslam)
git clone https://github.com/ros-perception/slam_karto(ros层,也就是应用层的kartoslam接口)
还需要一个sparse_bundle_adjustment包,才能顺利编译通过
2.编译之.
3.运行launch文件
<launch>
<param name="use_sim_time" value="http://www.mamicode.com/true"/>
<node pkg="slam_karto" type="slam_karto" name="slam_karto" output="screen">
<rosparam command="load" file="$(find slam_karto)/config/mapper_params.yaml" />
</node>
<node pkg="rosbag" type="play" name="play"
args="$(find slam_karto)/demo/59.bag --clock"/>
<node pkg="tf" type="static_transform_publisher" name="laser_static_tf_publisher" args="-0.013 0.0 0 0 0 0 1 base_link laser 200"/>
</launch>
.bag文件
轮子编码器提供的,就称它为码盘数据.
ros下的message filter用来同步激光和码盘数据.
map->base_link的变换,就是码盘数据与校正的位姿之间的误差,在刚开始的时候二者是重合的,在后面会有偏差.
odom->base_link是码盘提供的原始数据,激光帧间匹配计算得到的是map到base_link,然后map到base_link的变换乘以(odom到base_link的变换的逆变换)就是map到odom的变换了.
激光的ros package包去驱动对应型号的激光,那么它会发布一个/scan话题出来,供程序订阅.
同理,码盘数据即由轮子编码器发布的nav_msgs/Odometry信息,需要有一个ros package包去驱动对应的轮子编码器,它会发布信息nav_msgs/Odometry或者发布odom->base_link的tf变换,每个轮子编码器不一样.
---恢复内容结束---
卡2-SLAM