FastPlanner
Fast-Planner旨在帮助四旋翼飞行器在复杂的未知环境中实现快速飞行。它包含一套丰富的、精心设计的规划算法,并提供了基础代码框架和算法,支持多个流行的开源无人机项目,包括ego-planner、 FUEL和RACER等。
消息:
作者:香港科技大学空中机器人课题组周博宇、沈少杰,浙江大学FAST实验室高飞。
完整视频: video1、 video2、 video3。IEEE Spectrum 上已报道了有关此项工作的演示:page1、page2、 page3 (在页面中搜索_HKUST )。_
要在几分钟内运行此项目,请查看快速入门。查看其他部分以获取更多详细信息。
如果此项目对您有帮助,请点赞⭐。我们非常努力地开发和维护它😁😁。
目录
1. 快速入门
该项目已经在 Ubuntu 18.04(ROS Melodic)和 20.04(ROS Noetic)上进行了测试。
首先,您应该安装nlopt v2.7.1:
git clone -b v2.7.1 https://github.com/stevengj/nlopt.git
cd nlopt
mkdir build
cd build
cmake ..
make
sudo make install
接下来,您可以运行以下命令来安装其他所需的工具:
sudo apt-get install libarmadillo-dev
然后简单地克隆并编译我们的包(这里使用 ssh):
cd ${YOUR_WORKSPACE_PATH}/src
git clone https://github.com/HKUST-Aerial-Robotics/Fast-Planner.git
cd ../
catkin_make
您可以查看详细的项目设置说明。编译完成后,您可以通过以下方式启动可视化:
source devel/setup.bash && roslaunch plan_manage rviz.launch
并开始模拟(在新终端中运行):
source devel/setup.bash && roslaunch plan_manage kino_replan.launch
您将在 中找到随机地图和无人机Rviz
。您可以使用该工具选择无人机要到达的目标。此处2D Nav Goal
展示了一个示例模拟。
2. 算法与论文
该项目包含一系列用于四旋翼飞行器的稳健且计算高效的算法:
- 运动动力学路径搜索
- 基于B样条的轨迹优化
- 拓扑路径搜索和路径引导优化
- 感知意识规划策略(待出版)
这些方法在下面列出的论文中有详细说明。
如果您在研究中使用此项目,请至少引用我们的一篇论文:Bibtex。
- 实现快速自主飞行的稳健高效四旋翼飞行器轨迹生成,周博宇、高飞、王璐琪、刘楚豪和沈少杰,IEEE 机器人与自动化快报( RA-L),2019 年。
- 使用基于引导梯度优化和拓扑路径的鲁棒实时无人机重新规划,周博宇、高飞、潘杰和沈少杰,IEEE 国际机器人与自动化会议( ICRA),2020 年。
- RAPTOR:四旋翼快速飞行的稳健感知轨迹重规划,周博宇、潘杰、高飞和沈少杰,IEEE 机器人学报( T-RO)。
所有规划算法以及其他关键模块(例如映射)都在fast_planner中实现:
- plan_env:在线地图构建算法。它以深度图像(或点云)和相机姿态(里程计)对作为输入,进行光线投射以更新概率体积地图,并为规划系统构建欧氏有向距离场(ESDF)。
- path_searching:前端路径搜索算法。目前,它包含一个动态路径搜索算法,该算法遵循四旋翼飞行器的动力学原理。它还包含一个基于采样的拓扑路径搜索算法,用于生成多个拓扑结构独特的路径,从而捕捉三维环境的结构。
- bspline:基于 B 样条的轨迹表示的实现。
- bspline_opt:使用 B 样条轨迹的基于梯度的轨迹优化。
- active_perception:感知规划策略,使四旋翼飞行器能够主动观察并避开未来出现的未知障碍物。
- plan_manage:调度和调用映射与规划算法的高级模块。其中包含启动整个系统的接口以及配置文件。
除了文件夹fast_planner之外,还使用轻量级uav_simulator进行测试。
3. 设置和配置
先决条件
-
我们的软件是在 Ubuntu 18.04(ROS Melodic)和 20.04(ROS Noetic)中开发和测试的。
-
我们使用NLopt来解决非线性优化问题。uav_simulator依赖于 C++ 线性代数库Armadillo。这两个依赖项可以通过以下命令安装。
首先,您应该安装nlopt v2.7.1:
git clone -b v2.7.1 https://github.com/stevengj/nlopt.git
cd nlopt
mkdir build
cd build
cmake ..
make
sudo make install
接下来,您可以运行以下命令来安装其他所需的工具:
sudo apt-get install libarmadillo-dev
在 ROS 上构建
满足先决条件后,您可以将此存储库克隆到您的 catkin 工作区和 catkin_make。建议使用新的工作区:
cd ${YOUR_WORKSPACE_PATH}/src
git clone https://github.com/HKUST-Aerial-Robotics/Fast-Planner.git
cd ../
catkin_make
如果在此步骤中遇到问题,请先参考现有问题、拉取请求和Google ,然后再提出新问题。
现在您可以开始运行模拟了。
使用 GPU 深度渲染(可以选择跳过)
此步骤并非运行模拟的必需步骤。但是,如果您想在uav_simulator中运行更逼真的深度摄像头,则需要安装CUDA 工具包。否则,将使用不太逼真的深度传感器模型。
uav_simulator中的local_sensing包可以选择使用 GPU 或 CPU 来渲染深度传感器测量数据。默认情况下,在 CMakeLists 中设置为 CPU 版本:
set(ENABLE_CUDA false)
# set(ENABLE_CUDA true)
但是,我们强烈推荐 GPU 版本,因为它生成的深度图像更像真实的深度相机。要启用 GPU 深度渲染,请将 ENABLE_CUDA 设置为 true,同时记得根据您的显卡设备更改“arch”和“code”标志。您可以在此处查看正确的代码。
set(CUDA_NVCC_FLAGS
-gencode arch=compute_61,code=sm_61;
)
如需安装 CUDA,请访问CUDA ToolKit
4. 运行模拟
首先使用我们的配置运行Rviz :
<!-- go to your workspace and run: -->
source devel/setup.bash
roslaunch plan_manage rviz.launch
然后运行四旋翼模拟器和Fast-Planner。下面提供了几个示例:
运动动力学路径搜索与 B 样条优化
该方法通过动态路径搜索在离散控制空间中找到安全、动态可行且时间最短的初始轨迹。然后,通过 B 样条优化来提高轨迹的平滑度和清晰度。要测试此方法,请运行:
<!-- open a new terminal, go to your workspace and run: -->
source devel/setup.bash
roslaunch plan_manage kino_replan.launch
通常情况下,您会在 中找到随机生成的地图和无人机模型Rviz
。此时,您可以使用2D Nav Goal
工具触发规划器。点击 中的某个点Rviz
,会立即生成新的轨迹并由无人机执行。示例如下:
文中 详细 介绍 了 相关 算法.
拓扑路径搜索与路径引导优化
该方法的特点是搜索不同拓扑类别中的多条轨迹。得益于该策略,解空间的探索更加彻底,避免了局部极小值,并得到了更优的解。同样,运行:
<!-- open a new terminal, go to your workspace and run: -->
source devel/setup.bash
roslaunch plan_manage topo_replan.launch
然后你会发现随机地图已经生成,并且可以使用它2D Nav Goal
来触发规划器:
文中 详细 介绍 了 相关 算法.
感知重规划
相关论文发表后将发布代码。
5. 在您的应用程序中使用
如果您已成功运行模拟并希望在项目中使用Fast-Planner,请浏览 kino_replan.launch 或 topo_replan.launch 文件。其中包含并记录了您在使用过程中可能更改的重要参数。
请注意,在我们的配置中,深度图像的尺寸为 640x480。为了提高地图融合效率,我们进行了下采样(在 kino_algorithm.xml 中,skip_pixel = 2)。如果您使用分辨率较低的深度图像(例如 256x144),可以通过设置 skip_pixel = 1 来禁用下采样。此外,depth_scaling_factor_设置_为 1000,您可能需要根据您的设备进行更改。
最后,对于安装问题,例如 ROS/Eigen 版本不同导致的编译错误,请先参考已有的Issues、Pull Request以及Google等资源,再提交新 Issue。无关紧要的 Issue 将不会收到回复。
6.更新
-
2020年10月20日:Fast-Planner 得到扩展,并应用于快速自主探索。查看此repo了解更多详情。
-
2020年7月5日:我们将在未来发布论文的实现:RAPTOR: Robust and Perception-aware Trajectory Replanning for Quadrotor Fast Flight (已提交给TRO,正在审核中)。
-
2020 年 4 月 12 日:ICRA2020 论文《_使用基于引导梯度的优化和拓扑路径的鲁棒实时无人机重新规划》_的实现现已可用。
-
2020年1月30日:体积映射与我们的规划器集成。它以深度图像和相机姿态对作为输入,进行光线投射以融合测量值,并为规划模块构建欧氏有向距离场 (ESDF)。
致谢
我们使用NLopt进行非线性优化。
执照
源代码根据GPLv3许可发布。
免责声明
这是研究代码,分发时希望它 有用,但不附带任何担保;甚至不附带适销性或针对特定用途的适用性的暗示担保。