STDR仿真学习

 

http://www.corvin.cn/

最近老师让做一下2D激光雷达的路径规划最小实现系统,于是简单学习了一下stdr,感觉走一遍以后思路清晰了很多,但是不认真研究源码还是不行,接下来暑假要开始看代码啦。

一 实验步骤:

1 2D思岚激光雷达启动

首先接入激光雷达usb接口(思岚A1)

在终端启动ls/dev/ttyUSB*

           Sudo chmod 666/dev/ttyUSB0

           Sudo apt-get install ros-kinetic-rplidar-ros

安装好后,在terminal输入

           Roslaunch rplidar_ros view_rplidar.launch

在hector slam中启动launch文件,录制2D激光雷达地图

(此处需下载hector slam包,同时添加文件夹中的launch文件)

            在rviz中加入节点/map

在终端中输入rosrun map_server map_server保存地图文件(文件夹中有已建好的2D地图文件)

2 导入map_server地图并实现amcl定位

   将此文件夹拷到linux下的工作空间中。

进入工作空间catkin_ws/src/stdr_gmapping/stdr_amcl/launch

并启动launch文件roslaunch stdr_amcl stdr_amcl.launch

在rviz中添加/map和/point_clounds 节点

完成激光点云定位

3 导入costmap代价地图,完成目标点导航

   在第2节定位的基础上

启动catkin_ws/src/stdr_move_base/launch

            roslaunch stdr_move_base.launch

   在rviz中添加/global_costmap/costmap/map

               /local_costmap/costmap/map

生成全局路径规划地图和局部路径规划地图

选择2DNav Goal可以完成已知地图的导航

二 本次实验仿真遇到的问题:

  1. 在建图过程中如果使用teleop_tewist_keyboard进行键盘控制时,需要将CmakeList.txt中的启动python节点注释掉
    否则会与手动启动节点冲突。
  2. 解压文件夹指令 tar –zxvf <文件名称>
  3. 单独编译包指令 catkin_make –pkg stdr_macl
  4. 在使用amcl定位使报错,找不到stdr_amcl的启动文件
    找到stdr_amcl/launch文件中的find部分
    将stdr_amcl修改为amcl使下载文件的名称与launch文件中相对应,即可解决问题。

三 本次仿真使用的模块如下:

hector_slam/slam_gmapping : 在ros中启动激光雷达驱动后,通常使用这两种方式进行建图,主要使用粒子滤波算法,根据雷达测量的数据生成2D栅格地图。

stdr_amcl:(本部分使用amcl软件包对laser进行定位)可使用其他传感器辅助定位。Amcl定位时首先订阅激光点云信息laser_0,以及各坐标系转化话题tf,从而发布机器人在地图上的位姿估计amcl_pose。

stdr_move_base: move_base软件包是ros自动导航系统中的核心软件包,通过加载move_base中cost_common_params.yaml等yaml文件到global_costmap和local_costmap两个命名空间中,为costmap代价地图配置了相关参数。

附:在OPGL可视化界面下的Dstar算法路径规划代码分析

四 下一阶段学习任务:

  1. 对导航模块中的launch文件代码详细分析,及move_base导航模块中的yaml文件代码详细分析,以便日后修改和调用。
  2. 学习stm32通信部分,实现将仿真输出的线速度和角速度信息与下位机联合控制和通信。
  3. 对这方面有兴趣的小伙伴可加群:942475720一起交流探讨,同时分享更多资料。

 

 

你可能感兴趣的:(STDR仿真学习)