赞
踩
参考引用
论文和代码地址
- ICRA 2022:Autonomous Exploration Development Environment and the Planning Algorithms
Autonomous Exploration Development Environment- RSS 2021:TARE: A Hierarchical Framework for Efficiently Exploring Complex 3D Environments
TARE- IROS 2022:FAR planner: Fast, attemptable route planner using dynamic visibility update
FAR planner
- 机器人可通过导航系统自行完成点到点的移动,但其实现高度依赖全局地图。SLAM 可以建立全局地图,但需通过手持、遥控、驾驶等方式,手工遍历整个环境。一旦撤掉操作人员,机器人的应用就会受限于导航与 SLAM 间这种 “鸡与蛋” 的因果困境
- 自主探索(Autonomous Exploration)系统就为解决这类问题而生。借助探索算法,机器人可以自主遍历未知环境,建立完整的地图,全程无需人工的介入。从表现上看,自主探索系统其实是把 SLAM 手工遍历环境的过程自动化了,因此也被归入主动式 SLAM(Active-SLAM)的范畴
- 一些能针对局部环境做出快速反应的规划器(如 FAR Planner)也能在未知环境中实现自主导航,但仍需手动给出目标点 Goalpoints
问题描述
机器人从离散/稀疏的视点(viewpoint)感知环境
通过 viewpoint 求解一条路径来实现对环境的覆盖(coverage)
系统任务
更新环境表述(environment representation)
其中无人车相比无人机的探索更复杂,因为还包含对地面的地形可穿越性分析(Terrain Traversability Analysis,TTA),但同时无人机受到负载和电池续航的制约更大
评估 viewpoint 的环境覆盖/信息增益
寻找一条最优的探索路径
探索是在 “环境表述更新(已覆盖区域)” 和 “可通行路径寻找(覆盖更多区域)” 之间不断循环迭代的过程,因此需要连续不断的计算资源
在环境尺寸比较大、复杂、杂乱和 3D 地形情况下探索更加困难
贪心策略
数据结构不够高效
- 先计算出全局探索路径,然后用全局探索路径去引导局部探索路径的计算
- 这样在机器人探索的过程中,它行驶的路线会由于受到全局的引导而更具目的性,比如先探索完这个房间再探索下一个房间,而不是哪里的未知区域比较大就先去哪里
全局层面(Global Horizon)
局部层面(Local Horizon)
更新环境表述并计算出可通行的空间
旅行商问题:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路
需要调整传感器覆盖范围以考虑视场重叠问题
通过遍历空间构建稀疏路线图
把信息存放在小的绿色方块/体中,代表全局环境中没有覆盖完的区域(多数在十字路口的位置)
- 实际情况中,距离比角度的问题更重要
前面讲的探索问题是一个环境覆盖问题:把一个系统放到一个未知环境中,系统会自主把环境覆盖完。而 FAR Planner 是要把系统送到某一个目标点上去,这个目标点(Goal point)是我们人为给定的,系统通过某种途径算一系列路径(path)
以上两种方法在应付已知环境时性能还是不错的,但是在应付未知环境时需要一路摸索过去才能到达目标点,此时算法性能会大幅下降:因为需要长时间计算规划路径,导致系统在环境中来回走(冗余重访)
- 相较与 RRT 的随机性而使得生成的路径图高度重叠(Redundence)与稠密(Dense),难以动态维护,基于环境特征所生成的 Visibility Graph 拥有更少的节点,可在环境变化发生时,或在未知环境中,随着机器人移动进行快速动态更新,也最大限度降低路径规划的计算复杂度
- 然而基于环境特征的方式因为对环境输入的要求较高,导致很难被应用到实际中去限制了该方法的发展
定义与特点
实现方法
障碍物的多边形提取和配准
两层可视图动态更新
在 V-Graph 上规划
扩展到三维多层 V-Graph
应用场景
已知环境下的快速路径规划以及导航
未知环境中的定向探索及导航
机器学习以及仿真训练
CARLA Simulator 2017
AirSim Simulator 2017
- 与上层算法的通用接口:waypoint,上层只需发送 waypoint 给仿真环境即可实现通信
- 与底层算法的通用接口:cmd_vel,发出的指令包含机器人的线速度和角速度
局部避障(Local Planner 的主要内容)
对应论文:Falco: Fast Likelihood-based Collision Avoidance with Extension to Human-guided Navigation
算法的主要思想在于尽可能地让计算在线下完成
作用
实现方法
- 将路径建模为蒙特卡洛样本,并选择到达目标可能性最大的一组路径
- 因为大量的计算都在线下进行,线上运行的时候只需要实时选择无碰撞的轨迹,算法可以在几毫秒内规划出一条无碰撞而最接近目标点的路径
方法
输出:两个地形图
10m x 10m 的局部地形图(高分辨率)
40m x 40m 的地形图(低分辨率)
负障碍物(negative obstacle)检测
兼容激光 SLAM 算法:LOAM、A-LOAM、LeGO-LOAM、LIO-SAM、LIO-mapping、FAST-LIO2、Faster-LIO
集成配置:以 LIO-SAM 为例(下面有完整配置文件网盘链接)
<!-- 文件路径: \autonomous_exploration_development_environment\src\loam_interface\launch\loam_interface.launch -->
<launch>
<node pkg="loam_interface" type="loamInterface" name="loamInterface" output="screen" required="true">
<param name="stateEstimationTopic" type="string" value="/lio_sam/mapping/odometry" />
<param name="registeredScanTopic" type="string" value="/lio_sam/mapping/cloud_registered" />
<!-- 不同的slam算法发布的odometry以及registered cloud坐标系是不一样的,比如loam发布的点云坐标系是map_rot
与我们使用loam_interface里发布出来的registered_cloud的坐标系map是差了一个旋转变换的
这时候就需要flipRegiateredCloud设置为true,但是也有别的slam算法发布出来的点云和loaminterface发布的
点云坐标系一致,那就不需要转换,参数就是false -->
<param name="flipStateEstimation" type="bool" value="false" />
<param name="flipRegisteredScan" type="bool" value="false" />
<param name="sendTF" type="bool" value="true" />
<param name="reverseTF" type="bool" value="false" />
</node>
</launch>
state_estimation_setup_notes
- 链接:https://pan.quark.cn/s/44fbb88940d7
注意事项
- 允许用户在手动、智能操纵杆和自主模式之间方便切换
- 适配 PS3/4、Xbox 以及虚拟操纵杆
前置信息
- 支持 Ubuntu 18.04 with ROS Melodic & Ubuntu 20.04 with ROS Noetic
- 目前仅支持 AMD64 架构,不支持 ARM 架构
# 1. 安装依赖
$ sudo apt update
$ sudo apt install libusb-dev
# 2. 克隆源码
$ git clone https://github.com/HongbiaoZ/autonomous_exploration_development_environment.git
# 3. 分支检查与编译安装
$ cd autonomous_exploration_development_environment
$ git checkout melodic # Ubuntu 20.04 则将 melodic 替换为 noetic
$ catkin_make
# 4. 通过脚本安装仿真环境
$ ./src/vehicle_simulator/mesh/download_environments.sh
# 5. 启动开发环境
$ source devel/setup.sh
$ roslaunch vehicle_simulator system_xxx.launch
# xxx 可替换为对应的 5 种环境之一:campus、forest、garage、indoor、tunnel
# 案例:发送一系列 waypoint,同时发送导航边界和速度,车辆在跟踪 waypoint 的同时在边界内行驶(另开一个终端)
$ cd autonomous_exploration_development_environment
$ source devel/setup.sh
$ roslaunch waypoint_example waypoint_example_garage.launch
# 1. 克隆源码
$ git clone https://github.com/caochao39/tare_planner.git
# 2. 编译安装
$ cd tare_planner
$ catkin_make
# 3. 启动开发环境
$ cd ~/autonomous_exploration_development_environment
$ source devel/setup.sh
$ roslaunch vehicle_simulator system_xxx.launch
# xxx 可替换为对应的 5 种环境之一:campus、forest、garage、indoor、tunnel
# 4. 启动 TARE(另开一个终端)
$ cd ~/tare_planner
$ source devel/setup.sh
$ roslaunch tare_planner explore_xxx.launch
# xxx 可替换为对应的 5 种环境之一:campus、forest、garage、indoor、tunnel
# 1. 克隆源码
$ git clone https://github.com/MichaelFYang/far_planner
# 2. 编译安装
$ cd far_planner
$ catkin_make
# 3. 启动开发环境
$ cd ~/autonomous_exploration_development_environment
$ source devel/setup.sh
$ roslaunch vehicle_simulator system_xxx.launch
# xxx 可替换为对应的 5 种环境之一:campus、forest、garage、indoor、tunnel
# 4. 启动 FAR Planner(另开一个终端)
$ cd ~/far_planner
$ source devel/setup.sh
$ roslaunch far_planner far_planner.launch
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。