码迷,mamicode.com
首页 > 其他好文 > 详细

Ros学习——导航

时间:2018-12-11 19:45:45      阅读:362      评论:0      收藏:0      [点我收藏+]

标签:create   搜索   splay   stream   自适应   最优路径   isp   sub   sphinx   

1.导航框架

技术分享图片

 

 

 在总体框架图中可以看到,move_base提供了ROS导航的配置、运行、交互接口,它主要包括两个部分:
      (1) 全局路径规划(global planner):根据给定的目标位置进行总体路径的规划;
      (2) 本地实时规划(local planner):根据附近的障碍物进行躲避路线规划。

  • 全局路径规划(global planner)

        在ROS的导航中,首先会通过全局路径规划,计算出机器人到目标位置的全局路线。这一功能是navfn这个包实现的。
        navfn通过Dijkstra最优路径的算法,计算costmap上的最小花费路径,作为机器人的全局路线。将来在算法上应该还会加入A*算法。

  • 本地实时规划(local planner)

        本地的实时规划是利用base_local_planner包实现的。该包使用Trajectory Rollout 和Dynamic Window approaches算法计算机器人每个周期内应该行驶的速度和角度(dx,dy,dtheta velocities)。

  base_local_planner这个包通过地图数据,通过算法搜索到达目标的多条路经,利用一些评价标准(是否会撞击障碍物,所需要的时间等等)选取最优的路径,并且计算所需要的实时速度和角度。
  其中,Trajectory Rollout 和Dynamic Window approaches算法的主要思路如下:
      (1) 采样机器人当前的状态(dx,dy,dtheta);
      (2) 针对每个采样的速度,计算机器人以该速度行驶一段时间后的状态,得出一条行驶的路线。
      (3) 利用一些评价标准为多条路线打分。
      (4) 根据打分,选择最优路径。
      (5) 重复上面过程。

 

2.安装rbx1 package

  • 安装gmapping: 由激光雷达数据生成地图(或者深度相机数据)
git clone https://github.com/ros-perception/slam_gmapping.git 
  • 安装amcl:在已有的地图内定位机器人
git clone https://github.com/ros-planning/navigation.git
  • 其他可能用到的包:提示没有哪个就装哪个
sudo apt-get install 

ros-indigo-turtlebot-bringup ros-indigo-turtlebot-create-desktop ros-indigo-openni-* ros-indigo-openni2-* ros-indigo-freenect-* ros-indigo-usb-cam ros-indigo-laser-* ros-indigo-hokuyo-node \
ros-indigo-audio-common gstreamer0.10-pocketsphinx ros-indigo-pocketsphinx ros-indigo-slam-gmapping ros-indigo-joystick-drivers python-rosinstall ros-indigo-orocos-kdl ros-indigo-python-orocos-kdl \
python-setuptools ros-indigo-dynamixel-motor-* \
libopencv
-dev python-opencv ros-indigo-vision-opencv ros-indigo-depthimage-to-laserscan ros-indigo-arbotix-* \(我安装的过程中提示没有这个: ERROR:cannot launch node of type [arbotix_python/arbotix_driver]:arbotix_python) ros-indigo-turtlebot-teleop ros-indigo-move-base ros-indigo-map-server ros-indigo-fake-localization ros-indigo-amcl git subversion mercurial
  • 安装rbx1 package 
cd ~/catkin_ws/src
git clone https://github.com/pirobot/rbx1.git cd rbx1
git checkout indigo-devel
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
rospack profile
  • 测试
roslaunch rbx1_bringup fake_turtlebot.launch
rosrun rviz rviz -d `rospack find rbx1_nav`/sim.rviz

 

提示错误:Error: package ‘rbx1_nav‘ not found。vmw_ioctl_command error Invalid argument.

解决:退出后,在终端中运行:

$ export SVGA_VGPU10=0

 

 3.运行正方形

  • 运行机器人
1.打开一个终端
cd ~/catkin_ws/
catkin_make
source ./devel/setup.bash
cd src
roslaunch rbx1_bringup fake_turtlebot.launch
  • 运行rviz仿真环境
//新打开一个终端
cd ~/catkin_ws/
catkin_make
source ./devel/setup.bash
cd src
rosrun rviz rviz -d `rospack find rbx1_nav`/nav_fuerte.rviz
  • 运行空地图
//新打开一个终端
cd ~/catkin_ws/
catkin_make
source ./devel/setup.bash
cd src
roslaunch rbx1_nav fake_move_base_blank_map.launch 
  • 运行正方形路径 
//打开一个新终端,
cd ~/catkin_ws/
catkin_make
source ./devel/setup.bash
cd src
rosrun rbx1_nav move_base_square.py  

代码解释 move_base_square.py  

 

 

4.避障行走

  • 找到空白地图的终端,ctrl+c退出这个地图,运行障碍地图
 roslaunch rbx1_nav fake_move_base_map_with_obstacles.launch
  •  运行正方形路径
rosrun rbx1_nav move_base_square.py  

 运行效果:

技术分享图片

 

 若没有显示障碍物,在rviz里加载了这几个display,其中global plan下的costmap,RobotModel,global plan下的Path,Axes是必须的。

 技术分享图片

 

5.amcl定位

  • 先运行仿真机器人
//打开一个新终端
cd ~/catkin_ws/ catkin_make source ./devel/setup.bash cd src roslaunch rbx1_bringup fake_turtlebot.launch
  • 运行amcl节点

amcl是二维环境下的概率定位系统,之所以说是概率定位系统,是因为它用的是自适应的蒙特卡洛的定位方法,就是之前的粒子滤波,用这个粒子滤波去跟踪机器人当前的状态/

//打开一个新终端
cd ~/catkin_ws/
catkin_make
source ./devel/setup.bash
cd src 
roslaunch rbx1_nav fake_amcl.launch map:=test_map.yaml
  • 然后运行rviz
cd ~/catkin_ws/
catkin_make
source ./devel/setup.bash
cd src
rosrun rviz rviz -d `rospack find rbx1_nav`/nav_fuerte.rviz

 

 技术分享图片

 

 

 

 

 参考:

https://www.cnblogs.com/talugirl/p/5962806.html

https://blog.csdn.net/hcx25909/article/details/9470297

Ros学习——导航

标签:create   搜索   splay   stream   自适应   最优路径   isp   sub   sphinx   

原文地址:https://www.cnblogs.com/yrm1160029237/p/10104290.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!