Turtlebot代码解读-turtlebot_apps-turtlebot_navigation
Turtlebot代码解读-turtlebot_apps-turtlebot_navigation
说明
- 介绍Turtlebot的导航应用,可实现自主导航功能。
文件树及说明:
├── CHANGELOG.rst
├── CMakeLists.txt
├── env-hooks #钩子
│ └── 25.turtlebot-navigation.sh.em #设置一些稳定的默认值,目前是导出TURTLEBOT_MAP_FILE,使用默认的地图。
├── laser #雷达相关设置
│ ├── costmap_common_params.yaml #costmap的通用参数
│ ├── laser_amcl_demo.launch #激光amcl启动文件
│ ├── laser_gmapping_demo.launch #激光gmapping启动文件
│ └── move_base_laser.launch #带激光底盘移动启动文件
├── launch #启动目录
│ ├── amcl_demo.launch #amcl启动文件
│ ├── gmapping_demo.launch #gmapping启动文件
│ ├── graveyard
│ │ └── graveyard_bump_navi_demo.launch #
│ └── includes #启动文件的子模块
│ ├── amcl #即时定位
│ │ ├── amcl.launch.xml #即时定位核心启动文件
│ │ ├── astra_amcl.launch.xml -> amcl.launch.xml #使用astra进行定位
│ │ ├── asus_xtion_pro_amcl.launch.xml -> amcl.launch.xml #使用asus_xtion_pro进行定位
│ │ ├── asus_xtion_pro_offset_amcl.launch.xml -> amcl.launch.xml #使用asus_xtion_pro_live进行定位
│ │ ├── kinect_amcl.launch.xml -> amcl.launch.xml #使用kinect进行定位
│ │ └── r200_amcl.launch.xml #使用r200进行定位
│ ├── gmapping #实时建图
│ │ ├── astra_gmapping.launch.xml -> gmapping.launch.xml #使用astra建图
│ │ ├── asus_xtion_pro_gmapping.launch.xml -> gmapping.launch.xml #使用asus_xtion_pro建图
│ │ ├── asus_xtion_pro_offset_gmapping.launch.xml -> gmapping.launch.xml #使用asus_xtion_pro_live建图
│ │ ├── gmapping.launch.xml #实际建图核心启动文件
│ │ ├── kinect_gmapping.launch.xml -> gmapping.launch.xml #使用kinect建图
│ │ └── r200_gmapping.launch.xml #使用r200建图
│ ├── move_base.launch.xml #底盘移动启动文件
│ ├── safety_controller.launch.xml #安全控制启动文件
│ └── velocity_smoother.launch.xml #速度平滑启动文件
├── maps #地图目录
│ ├── willow-2010-02-18-0.10.pgm
│ └── willow-2010-02-18-0.10.yaml
├── package.xml
├── param #参数目录
│ ├── astra_costmap_params.yaml -> dummy.yaml #astra的costmap参数定义,指向空文件
│ ├── asus_xtion_pro_costmap_params.yaml -> dummy.yaml #asus_xtion_pro的costmap参数定义,指向空文件
│ ├── asus_xtion_pro_offset_costmap_params.yaml -> dummy.yaml #asus_xtion_pro_live的costmap参数定义,指向空文件
│ ├── costmap_common_params.yaml #通用的costmap参数定义
│ ├── dummy.yaml #空文件,没有自定义的参数设置
│ ├── dwa_local_planner_params.yaml #dwa本地规划参数定义
│ ├── global_costmap_params.yaml #全局costmap参数定义
│ ├── global_planner_params.yaml #全局规划参数定义
│ ├── kinect_costmap_params.yaml -> dummy.yaml #kinect的costmap参数定义,指向空文件
│ ├── local_costmap_params.yaml #本地的costmap参数定义
│ ├── move_base_params.yaml #底盘移动参数定义
│ ├── navfn_global_planner_params.yaml #navfn全局规划参数定义
│ └── r200_costmap_params.yaml #r200的costmap参数定义
└── src #源码目录
└── laser_footprint_filter.cpp #激光过滤footprint源码, 订阅/scan话题,过滤后,重发布/scan_filtered话题
重要知识点:
param/global_planner_params.yaml
- 全局规划参数设置
- http://wiki.ros.org/global_planner
- dijkstra算法(默认),A*算法
param/dwa_local_planner_params.yaml
- 针对本地规划的算法实现的参数设置
- DWAPlannerROS
- translational velocities 平移速度
- rotational velocity 旋转速度
- dwa DWA算法包
- 参考:
- http://blog.csdn.net/x_r_su/article/details/53393872
- http://blog.csdn.net/u013158492/article/details/50512900
- http://blog.csdn.net/eaibot/article/details/51674133
- http://wiki.ros.org/base_local_planner
- http://wiki.ros.org/dwa_local_planner
- http://wiki.ros.org/navigation
param/navfn_global_planner_params.yaml
- 针对全局规划的算法实现参数设置
- navfn通过Dijkstra最优路径的算法,计算costmap上的最小花费路径,作为机器人的全局路线
- 参考:
- http://wiki.ros.org/navfn
- http://blog.csdn.net/x_r_su/article/details/53407105
param/costmap_common_params.yaml
- costmap的通用参数设置, costmap(我这里翻译为估测地图,容易理解,也有中文资料翻译为代价地图)
- robot_radius: 0.20 # 距离圆形机器人应清除障碍物 (kobuki: 0.18)
- track_unknown_space: true #为true时需要禁止全局路径规划来通过未知空间
- http://wiki.ros.org/costmap_2d
- voxel 三维像素
- cost_scaling_factor: 5.0 # 估算到障碍时逐步降低的指数速率(default: 10)
- inflation_radius: 0.5 # 障碍(路径规划估算的)的最大距离,也可称为膨胀区.
launch/gmapping_demo.launch
- 启动3D sensor,深度相机,根据参数设置,指定深度相机
- 启动Gmapping,即时建图,根据参数设置,指定对应深度相机的Gmapping文件
- 启动Move base,底盘移动
launch/amcl_demo.launch
- 启动3D sensor,深度相机,根据参数设置,指定深度相机
- 启动Map server,地图服务器,根据参数设置,指定地图
- 启动AMCL,定位和导航,根据参数设置,指定对应深度相机的AMCL文件
- 启动Move base,底盘移动,根据参数设置,指定对应的配置文件
graveyard/graveyard_bump_navi_demo.launch
- 随走导航演示: 尝试使用navi包结合保险杆和悬崖传感器
launch/include/move_base.launch.xml
- move_base包
- 参考:
- http://wiki.ros.org/move_base
- velocity_smoother.launch.xml 速度平滑, 使用yocs_velocity_smoother/VelocitySmootherNodelet
- safety_controller.launch.xml 安全控制, 使用kobuki_safety_controller/SafetyControllerNodelet
includes/amcl/amcl.launch.xml
- amcl包, 定位和导航
- 参考:
- http://wiki.ros.org/amcl
launch/includes/gmapping/gmapping.launch.xml
- gmapping包, 地图构建
- 参考:
- http://wiki.ros.org/gmapping
- 使用slam_gmapping算法实现
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号