使用hector-slam和Kinect V1建图

扶醉桌前 提交于 2020-04-27 20:20:05

一.建图实际操作

  1. 下载源码测试源码,depthimage_to_laserscan,参考https://blog.csdn.net/u010925447/article/details/56494680
  2. 解压到你的ros工作空间路径中。
  3. 使用catkin_make编译功能包。
  4. 分析launch文件,修改使其在自己的平台上可用:参考https://www.jianshu.com/p/429e59d48322
  5. 运行launch文件 启动转换节点:roslaunch depthimage_to_laserscan sample_node.launch(包含主节点和深度相机启动节点)

二.利用深度相机仿激光数据创建地图

  1. 下载hector_slam_example:下载地址 https://github.com/chenxingzhe/hector_slam_example,编译(cmake)(无需里程计即可建图,核心节点hector_mapping订阅/scan话题)
  2. sudo apt-get install ros-indigo-hector-slam
  3. Install the dependency packages:rosdep install hector_slam_example
  4. 在启动之前如果你用的是kinect,那就修改一下launch文件
  5. 然后就是roslaunch hector_slam_example hector_openni.launch
  6. 只需要让移动平台移动就可以去构建地图了,当然这里面用的生成模拟激光的方法是depthimage_to_laserscan节点,但是要求KINECT要相对稳定,并且尽量水平放置。
  7. 在rviz中就可以看到hector_slam的效果了

三.终端操作

  • 启动摄像头 : $ roslaunch freenect_launch freenect.launch
  • 启动深度转scan信息:$ rosrun depthimage_to_laserscan depthimage_to_laserscan image:=/camera/depth/image_raw
  • 启动自己添加的三个launch文件:$ roslaunch hector_slam_launch slam.launch
  • 查看tree图:$ rosrun rqt_tf_tree rqt_tf_tree

 

  • 接下的是我自己通过手柄控制机器人的程序
  • $ rosrun joy joy_node  
  • $ rosrun input_js_control logitech
  • $ rosrun ros_car_py base.py
  • $ python 22-tcp_client_joy.py

 

  • 利用预先准备好的bag文件运行的SLAM
  • $rosbag record -o foo scan tf
  • $rosbag play --clock foo.bag
  • $rosbag info foo.bag

 

  • 创建完成之后,启动地图以及查看地图
  • $ rosrun map_server map_server map.yaml
  • $ rosrun map_server map_server -f map
  • $ roscd ~/maps
  • $ rosrun map_server map_server map.yaml





易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!