本篇内容:如何运行Astar以及控制无人车进行规划避障
关于Astar
Astar算法是启发式搜索算法,启发式搜索是在状态空间中对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无谓的搜索路径,提高效率。在启发式搜索中,对位置的估价是十分重要的。采用了不同的估价可以有不同的效果。
map_generator.h:建图头文件
init:地图初始化函数
updateMapFromLaserScan:处理二维雷达数据并发布地图数据
updateMapFromMid360Scan:处理三维雷达数据并发布地图数据
odomCallback:通过里程计数据更新机器人的实时位姿(位置+姿态),并管理地图的初始化状态
ugvStateCallback:为系统提供机器人的位姿信息,同时触发地图状态转换
PublishOctomap:发布地图数据
laser_topic:雷达话题参数,用于订阅雷达数据
input_type:雷达类型参数,用于更换的雷达类型
map_resolution:定义地图的精度,决定二维栅格地图中每个单元格代表的物理尺寸
inflate_size:障碍物膨胀的安全距离,确保路径规划时小车不会靠近障碍物
规划
Astar.h:规划头文件
SimpleGraph:表示一个简单的图结构
GridLocation:表示网格中的二维坐标
SquareGrid:表示一个方形网格地图,支持障碍物
GridWithWeights:继承自 SquareGrid,支持带权重的移动
a_star_search():搜索算法
reconstruct_path():路径重构
width、height:定义网格尺寸
current:a_star_search()算法处理的当前节点
new_cost:路径代价计算中间值
ugv_control.h:控制头文件
回调函数:
mocap_pos_cb:获取小车姿态(动捕)
mocap_vel_cb:获取小车速度(动捕)
odom_cb:将标准里程计数据转换为控制友好的格式
viobot_cb:将标准viobot数据转换为控制友好的格式
ugv_cmd_cb:发送指令
goal_point_cb:设置目标点,用于Astar算法
battery_cb:获取电池数据
location_source:位置来源(1:代表动捕、2代表gazebo odom) - 通过参数配置
topic_prefixugv_name:名称
topic_prefix:话题前缀
vel_topic:速度话题
odom_topic:odom话题
flag_printf:是否打印 - 通过参数配置
goal_set:是否有规划目标点
enable_rviz:是否启用rviz
enable_astar:是否启用路径规划避障
simulation_mode:是否为仿真环境
resolution:地图分辨率
inflate:障碍物膨胀系数
在scripts_sim中打开终端并输入./sunray_ugv_sim.sh
# 利用脚本一键启动
./sunray_ugv_Astar_test.sh
点开rviz,点击上方2D Nav Goal,任意点一个点,在rviz上会显示出规划的路径