传感器信息:
- 环境深度信息:sensor_msgs/laserScan -----> RGBD三维点云数据:通过ros功能包depthimage to laserscan完成深度相机数据转换成激光数据
- 里程计信息:机器人发布的nav_msgs/Odemetry(pose:x,y,z三轴位置与方向以及矫正误差的协方差矩阵;twist):通过伪造的节点发布odom数据
发布gmapping需要的传感器信息和里程计消息:
- $ catkin_create_pkg odom_tf_package std_msgs rospy roscpp sensor_msgs tf nav_msgs
- $ touch odom_tf_node.cpp
编译源码:在odom_tf_package/CMakeLists.txt添加编译选项:
- add_executable(odom_tf_node src/odom_tf_node.cpp)
- target_link_libraries(odom_tf_node ${catkin_LIBRARIES})
在odom_tf_package中添加launch文件:
- mkdir -p launch
- cd launch
- touch gamppping_slam.launch添加代码如下:
<launch> <node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0 0 0 0 0 0 /base_link /laser_frame 100" /> <node pkg="tf" type="static_transform_publisher" name="base_footprint_2_base_link" args="0 0 0 0 0 0 /odom /base_link 100"/> <node pkg="tf" type="static_transform_publisher" name="base_link_2_base_stabilized_link" args="0 0 0 0 0 0 /base_link /camera_link 100"/> </launch>
启动kinect相机:$ roslaunch freenect_launch freenect.launch
完成深度信息转换成/scan信息:$ rosrun depthimage_to_laserscan depthimage_to_laserscan image:=/camera/depth/image_raw
发布Odom信息:$ rosrun odom_tf_package odom_tf_node
启动launch:$ roslaunch odom_tf_package gmapping_slam.launch
启动gmapping建图:$ rosrun gmapping slam_gmapping scan:=scan
在rviz中观察建图过程:$ rviz
查看tree图 :$ rosrun rqt_tf_tree rqt_tf_tree