去年CMU机器人实验室团队开源了整套的自主探索导航系统,相关文章还荣获IROS2022 最佳学生论文。因此想在实验室的设备上试一下,先跑个官方demo试试。但中文互联网搜索结果的文章质量果然不出我所料,全都是互相抄,下载下来的源码CmakeList文件都是错的😅,最后还是去CMU这个项目的官网才把demo跑起来了。下面记录一下部署过程,我的系统环境是Ubuntu20.04、ROS1 Noetic。
一、安装仿真环境
先安装CMU团队制作的仿真环境,仿真环境包含多楼层停车场、隧道、森林、校园等多种复杂环境,能把这些环境跑好说明这个自主探索导航系统还是很有普适性的。
先安装依赖环境
sudo apt update
sudo apt install libusb-dev
克隆开源存储库
git clone https://github.com/HongbiaoZ/autonomous_exploration_development_environment.git
更换分支,并编译。
cd autonomous_exploration_development_environment
git checkout noetic #如果是melodic 将noetic更换为melodic
catkin_make
如果可以科学上网,运行脚本下载模拟环境,由于网络环境不同,下载可能需要一会。
./src/vehicle_simulator/mesh/download_environments.sh
当然也可以下载官方整理的百度网盘:
链接:https://pan.baidu.com/share/init?surl=7PFWGbQGLLfPy1mHNiiS4A
提取码:qm45
将在百度网盘下载的"autonomous_exploration_environments.zip"解压之后放在src/vehicle_simulator/mesh文件夹下。最终的mesh文件夹结构应该和下面的一致:
mesh
campus
indoor
garage
tunnel
forest
download_environments.sh
然后运行仿真环境
source devel/setup.sh
roslaunch vehicle_simulator system_garage.launch
现在,可以通过点击RVIZ中的“waypoint”按钮发送航路点,然后点击一个点来设置航路点。车辆将导航到航路点,避开沿途的障碍物。请注意,航路点应该是可到达的,并且在车辆附近。
或者,可以运行ROS节点来发送一系列路点。在另一个终端中,转到文件夹并获取ROS工作区,然后使用下面的命令行运行ROS节点。:
roslaunch waypoint_example waypoint_example_garage.launch
存储库包含一组不同类型和规模的模拟环境。要在特定环境下启动系统,请使用下面的命令行。将“environment”替换为环境名称,即'campus',、'indoor',、'garage'、 'tunnel'和'forest'。现在,用户可以使用RVIZ中的“Waypoint”按钮来导航车辆。要在Gazebo GUI中查看环境中的车辆,在启动文件中设置'gazebo_gui = true',该文件位于'src/vehicle_simulator/launch'中。
roslaunch vehicle_simulator system_environment.launch
二、TARE Exploration Planner部署
同样的,先克隆仓库:
git clone https://github.com/caochao39/tare_planner.git
编译后就可以运行了
cd tare_planner
catkin_make
去上一步的工作空间下运行仿真环境:
source devel/setup.sh
roslaunch vehicle_simulator system_garage.launch
然后在现在的工作空间下运行TARE自主探索算法:
source devel/setup.sh
roslaunch tare_planner explore_garage.launch
现在,应该看到自主探索的行动。同样的,要在不同的环境中启动,使用下面的命令行,并将“environment”替换为开发环境中的一个环境名称,即'campus', 'indoor', 'garage', 'tunnel', 和 'forest'。
roslaunch vehicle_simulator system_environment.launch
roslaunch tare_planner explore_environment.launch
三、FAR Planner部署
克隆仓库
git clone https://github.com/MichaelFYang/far_planner
编译
cd far_planner
catkin_make
同样的,去第一个工作空间下运行仿真环境:
source devel/setup.sh
roslaunch vehicle_simulator system_indoor.launch
然后在现在的工作空间下运行FAR-Planner算法
source devel/setup.sh
roslaunch far_planner far_planner.launch
现在,我们可以发送一个目标,通过单击在RVIZ的“Goalpoint”按钮,然后点击一个点设置的目标。车辆将导航到目标,并在沿途建立一个可见性图表(青色)。可见性图所覆盖的区域变成了自由空间。当在自由空间中导航时,计划者使用构建的可见性图,当在未知空间中导航时,计划者试图发现通往目标的方法。通过点击“Reset Visibility Graph”按钮,规划器将重新初始化可见性图。通过取消选中“Planning Attemptable”复选框,规划器将首先尝试在空闲空间中找到一条路径。这条路将以绿色显示。如果不存在这样的路径,规划器会一起考虑未知空间。路径将以蓝色显示。通过取消选中”Update Visibility Graph“
复选框,规划器将停止更新可见性图。
如果是实车可以用手柄遥控,这里是仿真环境,Rviz右下角有一个虚拟遥控器,可以遥控车辆移动,并且移动过程中会自动调用局部路径规划自动避开障碍物。