主要目的:实现autolabor小车实时避障
硬件:autolabor底盘车,rplidar1,autolabor轮子里程计,华硕A550笔记本电脑;
软件:Linux系统,ubuntu16.04,ros机器人操作系统,小车/rplidar1启动软件,move_base功能包;
DWA:
DWA算法基本思路如下:
1.在机器人控制空间进行速度离散采样(dx,dy,dtheta)
2.对每一个采样速度执行前向模拟,看看使用该采样速度移动一小段段时间后会发生什么
3.评价前向模拟中每个轨迹,评价准则如: 靠近障碍物,靠近目标,贴近全局路径和速度;丢弃非法轨迹(如哪些靠近障碍物的轨迹)
4.挑出得分最高的轨迹并发送相应速度给移动底座
5.重复上面步骤.
参数调试:
有很多ROS参数可以用来配置dwa_local_planner::DWAPlannerROS的行为。 这些参数被分成了几组:: robot configuration, goal tolerance, forward simulation, trajectory scoring, oscillation prevention, and global plan.
acc_lim_x:x方向的加速度绝对值
acc_lim_y:y方向的加速度绝对值,该值只有全向移动的机器人才需配置.
acc_lim_th:旋转加速度的绝对值.
max_trans_vel:平移速度最大值绝对值
min_trans_vel:平移速度最小值的绝对值
max_vel_x:x方向最大速度的绝对值
min_vel_x:x方向最小值绝对值,如果为负值表示可以后退.
max_vel_y:y方向最大速度的绝对值.
min_vel_y:y方向最小速度的绝对值.
max_rot_vel:最大旋转速度的绝对值.
min_rot_vel:最小旋转速度的绝对值.
yaw_goal_tolerance:到达目标点时偏行角允许的误差,单位弧度.
xy_goal_tolerance:到达目标点时,在xy平面内与目标点的距离误差.
latch_xy_goal_tolerance:设置为true,如果到达容错距离内,机器人就会原地旋转,即使转动是会跑出容错距离外.
sim_time:向前仿真轨迹的时间.
sim_granularity:步长,轨迹上采样点之间的距离,轨迹上点的密集程度.
vx_samples:x方向速度空间的采样点数.
vy_samples:y方向速度空间采样点数.
vth_samples:旋转方向的速度空间采样点数.
controller_frequency:发送给底盘控制移动指令的频率.
path_distance_bias:定义控制器与给定路径接近程度的权重.
goal_distance_bias:定义控制器与局部目标点的接近程度的权重.
occdist_scale:定义控制器躲避障碍物的程度.
stop_time_buffer:为防止碰撞,机器人必须提前停止的时间长度.
scaling_speed:启动机器人底盘的速度.
max_scaling_factor:最大缩放参数.
publish_cost_grid:是否发布规划器在规划路径时的代价网格.如果设置为true,那么就会在~/cost_cloud话题上发布sensor_msgs/PointCloud2类型消息.
oscillation_reset_dist:机器人运动多远距离才会重置振荡标记.
prune_plan:机器人前进是是否清除身后1m外的轨迹.
DWA参数:
Forward Simulation Parameters中:
1.vth_samples 20 (默认值) ----小车停在障碍物附近一直处在寻找路径的状态
2.vth_samples 0-10 ---小车遇到障碍物过不去,会有明显的后退重新规划路径的现象