傳感器信息:
- 環境深度信息: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