TARE代码解读
本代码主只是用来做自主探索时的上层路径规划和重定位
- exploration_path
- keypose_graph
- navigation_boundary_publisher
- rolling_grid
- tare_planner_node
- utils
- graph
- lidar_model
- planning_env
- rolling_occupancy_grid
- tare_visualizer
- viewpoint
- grid_world
- local_coverage_planner
- pointcloud_manager
- sensor_coverage_planner
- tsp_solver
- viewpoint_manager
1. exploration_path
实现探索路径的类
2. keypose_graph
3. navigation_boundary_publisher
在Matterport3D 仿真环境时,从src/tare_planner/data/boundary.ply文件读取探索边界信息并发送出去
输入为空
输出为/navigation_boundary
4. rolling_grid
实现滚动3D网格的类
5. tare_planner_node
tare planner主程序入口
6. utils
杂项功能函数
7. graph
实现图的类
8. lidar_model
实现激光雷达模型的类,应该是用来计算viewpoint的回报的时候用的
9. planning_env
管理使用点云的世界表示的类
10. rolling_occupancy_grid
实现滚动占据栅格的类
11. tare_visualizer
可视化规划过程的类
12. viewpoint
实现viewpoint的类
13. grid_world
实现网格世界的类
14. local_coverage_planner
确保覆盖机器人周围的类
15. pointcloud_manager
实现点云网格的类
16. sensor_coverage_planner
输入为
/start_exploration 开始探索
/terrain_map
/terrain_map_ext
/state_estimation_at_scan
/registered_scan
/sensor_coverage_planner/coverage_boundary
/navigation_boundary 作为viewpoint_boundary
/sensor_coverage_planner/nogo_boundary 禁止区域边界
/joy 手柄,可删去
/reset_waypoint
输出为
global_path_full
global_path
old_global_path
to_nearest_global_subspace_path
local_path
exploration_path
/way_point
exploration_finish
runtime_breakdown
/runtime
momentum_activation_count
pointcloud_manager_neighbor_cells_origin
17. tsp_solver
实现了tsp求解器的封装,在tsp规划的时候调用
18. viewpoint_manager
管理局部规划范围内viewpoint的类
参数解读
kAutoStart 是否自动开始,如果设为True,则/start_exploration话题不起作用。见sensor_coverage_planner_ground.cpp的1276行
kRushHome 接近起点时是否快速回到起点,当探索结束、接近起点、快速回到起点设为True都满足时,会直接把起点发送为目标点。见sensor_coverage_planner_ground.cpp的1155行
kUseTerrainHeight 是否考虑地形高度,如果设为True,在设置ViewPoint时会根据地形调整高度,见sensor_coverage_planner_ground.cpp的491行;会将/terrain_map_ext话题里的消息放进地形点云里,见sensor_coverage_planner_ground.cpp的335行
kCheckTerrainCollision 是否考虑地形碰撞
kExtendWayPoint 是否要延长路径点,如果设为True,当机器人与前瞻点距离小于延长阈值时会适当延长路径点,见sensor_coverage_planner_ground.cpp的1168行
kUseLineOfSightLookAheadPoint 前瞻点的选择是否考虑视线的范围和遮挡
kNoExplorationReturnHome 探索结束后是否返回起点
kExtendWayPointDistanceBig 无障碍物遮挡时的路径点延长阈值,此时移动更加激进,阈值较大。需要kExtendWayPoint设为True才会发挥作用
kExtendWayPointDistanceSmall 有障碍物遮挡时的路径点延长阈值,此时移动更加保守,阈值较小。需要kExtendWayPoint设为True才会发挥作用
kKeyposeCloudDwzFilterLeafSize 关键帧点云的下采样粒度
kRushHomeDist 回到起点时,当与起点的距离小于这个阈值判断为接近起点,若是kRushHome设为True,此时会快速回到起点
kAtHomeDistThreshold 当与起点的距离小于这个阈值判断为已经到达起点
kTerrainCollisionThreshold 地形碰撞检测的阈值,/terrain_map中每个点的intensity(点云强度)字段表示地形高度或危险程度,当intensity > 这个阈值,则该点被视为障碍物,会被加入地形碰撞检测点云terrain_collision_cloud_
kLookAheadDistance 前瞻点距离,机器人会在路径上搜索距离机器人当前位置最远不超过此距离的点作为前瞻点
kUseMomentum 是否启用动量机制,如果设为True并且机器人激活了动量机制,机器人在选择前瞻点时,会优先选择与当前运动方向一致的点
kDirectionChangeCounterThr 方向变化次数的阈值,若方向频繁反转超过此阈值,则激活动量机制
kDirectionNoChangeCounterThr 方向保持不变次数的阈值,若方向稳定,不变化的次数超过此阈值,则激活动量机制
kResetWaypointJoystickAxesID 使用手柄重设路径点的按键ID号,可删去