Skip to main content

FastPlanner

Fast-Planner旨在帮助四旋翼飞行器在复杂的未知环境中实现快速飞行。它包含一套丰富的、精心设计的规划算法,并提供了基础代码框架和算法,支持多个流行的开源无人机项目,包括ego-planner、 FUELRACER等。

消息

  • 2021年3月13日:快速自主探索代码现已发布!查看此代码库了解更多详情。

  • 2020年10月20日:Fast-Planner 得到扩展,并应用于快速自主探索。查看此repo了解更多详情。

作者:香港科技大学空中机器人课题组周博宇沈少杰,浙江大学FAST实验室高飞。

   

完整视频: video1、 video2、 video3。IEEE Spectrum 上已报道了有关此项工作的演示:page1page2、 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

所有规划算法以及其他关键模块(例如映射)都在fast_planner中实现:

  • plan_env:在线地图构建算法。它以深度图像(或点云)和相机姿态(里程计)对作为输入,进行光线投射以更新概率体积地图,并为规划系统构建欧氏有向距离场(ESDF)。
  • path_searching:前端路径搜索算法。目前,它包含一个动态路径搜索算法,该算法遵循四旋翼飞行器的动力学原理。它还包含一个基于采样的拓扑路径搜索算法,用于生成多个拓扑结构独特的路径,从而捕捉三维环境的结构。
  • bspline:基于 B 样条的轨迹表示的实现。
  • bspline_opt:使用 B 样条轨迹的基于梯度的轨迹优化。
  • active_perception:感知规划策略,使四旋翼飞行器能够主动观察并避开未来出现的未知障碍物。
  • plan_manage:调度和调用映射与规划算法的高级模块。其中包含启动整个系统的接口以及配置文件。

除了文件夹fast_planner之外,还使用轻量级uav_simulator进行测试。

3. 设置和配置

先决条件

  1. 我们的软件是在 Ubuntu 18.04(ROS Melodic)和 20.04(ROS Noetic)中开发和测试的。

  2. 我们使用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 版本不同导致的编译错误,请先参考已有的IssuesPull 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许可发布。

免责声明

这是研究代码,分发时希望它有用,但不附带任何担保;甚至不附带适销性或针对特定用途的适用性的暗示担保。

更多信息

  1. FastPlanner官方