Ros基于RRT算法的路径仿真

最近,在做毕业设计,有关Ros这方面的。于是,利用空余时间,简单的探索了一下。

环境Ubuntu 16.04 LTS + ROS kinetic

首先为catkin创建一个工作空间

如果已装好了catkin,并且初始化好了变量环境,且创建好了工作空间,则该步骤可以跳过。

若没有,则可以按照下面步骤进行。

创建一个catkin工作空间

1
2
3
4
5
6
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace

进入工作空间,通过catkin_make进行编译

1
2
$ cd ~/catkin_ws/
$ catkin_make

工作空间建立好后,文件夹中会看见 src文件夹,然后 将path_planning 放入src中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
打开终端
$ roscore // 启动ros


打开新的终端
$ cd ~/catkin_ws //进入工作空间
$ catkin_make //对工程进行编译
$ source devel/setup.sh
将编译后的文件 提到上层 若不执行改命令 这 rosrun 指令无法识别 已编译的程序
$ rosrun path_planning env_node //执行环境节点


再开启新的终端
$ rosrun rviz rviz //启动Rviz模拟仿真软件
在Rviz窗口,更改:
在全局选项固定框架'path_planner'
在Rviz 左下角 点击add添加 Mark ,并改变Mark主题 为'Path_planner_rrt'


再打开新终端
$ rosrun path_planning rrt_node


rrt_ros1

修改path_planning 包的scr中的obstacles.cpp 代码 可以 向地图中添加 障碍物

基于官方的rrt_exploration的探索

起初,使用的是环境Ubuntu 16.04 LTS + ROS lunar 但由于该版本太新 官方没有提供相应的ros-kinetic-kobuki ros-kinetic-kobuki-core ros-kinetic-kobuki-gazebo 包 只好回到环境Ubuntu 16.04 LTS + ROS kinetic。

rrt_exploration教程

首先,在安装好Ros 并创建好工作环境下,安装需要的依赖环境。

1
2
3
sudo apt-get install ros-kinetic-gmapping ros-kinetic-navigation ros-kinetic-kobuki ros-kinetic-kobuki-core ros-kinetic-kobuki-gazebo
sudo apt-get install python-opencv python-numpy python-scikits-learn

然后,将官方的rrt_exploration包从git中clone到本地的 工作环境目录中的 src,并对其进行编译。

在编译过程中 遇到了“make -j2 -l2” 报错 ,发现双核2G,程序无法编译完成,由于是在虚拟机中运行,将虚拟机中的配置 改为4核4G 才能 编译完成。

1
2
3
4
5
$ cd ~/catkin_ws/src/
$ git clone https://github.com/hasauino/rrt_exploration.git
$ git clone https://github.com/hasauino/rrt_exploration_tutorials.git
$ cd ~/catkin_ws
$ catkin_make

第1,2行 在每次编译新包后,一定要运行,将新编译的文件添加到ros依赖中,否则roslaunch,rosrun 等命令无法识别新产生的文件。 若,依然无法识别,将工作环境目录下的build中,相应的包删除,重新编译,反复执行第1,2行 。(有的时候,能识别;有时候,不能。具体,为什么,我也不清楚)

1
2
3
$ cd ~/catkin_ws/
$ source devel/setup.sh
roslaunch rrt_exploration_tutorials single_simulated_house.launch

运行后,将会自动启动Rviz和Gazebo模拟器。若启动后,发现 一直停在 Gazebo启动 页面 则代表Gazebo真正下载模型,下载完毕即可。

rrt_ros2

rrt_ros3

在执行下面命令 启动机器人节点

1
$ roslaunch rrt_exploration single.launch

并在 rviz中 如图操作,让机器人节点,自动搜寻 整个房间。

rrt_ros4

rrt_ros5

与此同时,机器人节点,根据Gazebo中的房间 模型, 在Rviz中实时 绘出地图,并根据该 绘出的图形,机器人耿局rrt算法进行 下一步搜索

rrt_ros6