第三篇:ROS机器人基本参数的配置

第三篇:ROS机器人基本参数的配置

  • 简介
  • 机器人三维坐标和导航速度的调整
  • 雷达、IMU初始位置的调整

简介

此篇主要介绍了如何根据自己的机器人来配置相应的导航速度、三维坐标以及雷达、IMU位置的相对调整,跟之前一样,以下使用的rikirobot这个名字要换成你使用的代码包名,因为我用的是rikirobot的源码,所以调用的是rikirobot的代码包,不过目前市面上大部分的机器人小车都是千篇一律,所以换个名字大概率都适用。注意:这些参数默认都是在工控机里修改的
参考文章:学习move_base包

机器人三维坐标和导航速度的调整

这里主要调整的是在rviz进行自主导航时出现的tf坐标轴,通过控制这个坐标轴与小车保持相同的xyz轴遍可以较为精确地进行导航,这个参数设置大了会导致导航时小车计算路径时容易卡住,设置小了容易让小车四处乱撞,所以这个配置需要根据实际情况来一点点调整。
第一步:找到这个文件

roscd rikirobot/param/navigation/
ls

这里我们发现有有2wd、4wd等等文件夹,根据自己机器人是什么结构来选择(履带选tank,四驱差分选4wd)也可以从bashrc找RIKIBASE的值来确认,我这边是四驱差分的,故选择4wd文件夹进入

有两个文件 :base_local_planner_params.yaml		costmap_common_params.yaml
左边是调整速度的,右边是调整大小的,我们先从大小开始
cd 4wd
sudo vim costmap_common_params.yaml

然后看到这些数据,主要改3行

obstacle_range: 2.5
raytrace_range: 3.0
footprint: [[-0.20, 0.31], [-0.20, -0.31], [0.20, 0.31], [0.20, -0.31]]
inflation_radius: 0.4
transform_tolerance: 0.15

observation_sources: scan
scan:
  data_type: LaserScan
  topic: scan
  marking: true
  clearing: true

map_type: costmap                                                                                            

obstacle_range和raytrace_range参数用于表示传感器的最大探测距离并在代价地图中引入探测的障碍物。前者主要用于障碍的探测。在此示例中,如果机器人检测到一个距离小于2.5的障碍物,就会将这个障碍物引入到代价地图中。后者则用于在机器人运动过程中,实时清除代价地图中的障碍物,并更新可移动的自由空间数据。
footprint是从你机器人来说的横向面积,这四个x,y坐标相当于连成了一个40cm宽,62cm长的一个长方形,在导航计算路径时机器人算法就会根据这个参数来进行路径规划。

配置完大小以后,保存退出vim编辑器,再打开速度编辑的yaml文件
sudo vim base_local_planner_params.yaml

看到以下内容:

DWAPlannerROS:
  max_trans_vel: 0.50
  min_trans_vel: -0.10
  max_vel_x: 0.50
  min_vel_x: -0.10
  max_vel_y: 0.0
  min_vel_y: -0.0
  max_rot_vel: 0.50
  min_rot_vel: -0.50
  acc_lim_x: 2.50
  acc_lim_y: 2.50
  acc_lim_theta: 2.50
  acc_lim_trans: 2.50

  prune_plan: false

  xy_goal_tolerance: 0.25
  yaw_goal_tolerance: 0.1
  trans_stopped_vel: 0.1
  rot_stopped_vel: 0.1
  sim_time: 3.0
  sim_granularity: 0.2
  angular_sim_granularity: 0.4
  path_distance_bias: 34.0
  goal_distance_bias: 24.0
  occdist_scale: 0.05
  twirling_scale: 0.0
  stop_time_buffer: 0.5
  oscillation_reset_dist: 0.05
  oscillation_reset_angle: 0.2
  forward_point_distance: 0.3
  scaling_speed: 0.25
  max_scaling_factor: 0.2
  vx_samples: 20
  vy_samples: 0
  vth_samples: 40

  use_dwa: true
  restore_defaults: false

这里给部分参数的功能解读:
max_vel_x表示机器人最大线速度,单位是m/s。
min_vel_x表示机器人最小线速度。
max_vel_y和min_vel_y对于两轮差分驱动机器人是无效的。
max_vel_theta表示机器人最大转动速度,单位是rad/s。
min_vel_theta表示机器人最小转动速度。
acc_lim_x表示在x方向上最大的线加速度,单位是m/s^2。
acc_lim_theta表示最大角加速度,单位是rad/s^2。
yaw_goal_tolerance表示接近目标方向(就弧度来说)允许的误差(rad),此值太小会造成机器人在目标附近震荡。
xy_goal_tolerance表示接近目标允许的误差(m),此值设置太小,机器人会没完没了在目标位置周围做小调整,而且此值不能小于地图的分辨率。
sim_time表示规划器能看到未来多少秒。
dwa表示当模拟轨迹走向未来,是否使用动态窗口法。

雷达、IMU初始位置的调整

一般来说,激光雷达的位置是放在小车的正中心的,不过总有一些情况会导致其前偏或后偏,为了不影响SLAM功能我们要在启动时配置好激光雷达与小车的相对位置。
一般在bringup文件里配置,如果是其他启动launch文件也可以在那里面改

roscd rikirobot/launch
sudo vim bringup.launch
 找到这两句话
<!-- Publish static transform from base_footprint to imu_link -->
    
    
<!-- Publish static transform from base_footprint to base_link -->
    

第一部分的imu_link指的是IMU距离车体中间的位置,这里默认args=0 0 0 0 0 0说明在最中间
第二部分的base_link则指的是雷达距离车体中间的位置,根据自己需求进行微调,这里贴上一个参考视频来更改参数:TF空间描述与变换(这里的视频教程也可用来进行进阶编程)

你可能感兴趣的:(ROS,Linux,机器人,ROS,机器人,Ubuntu,Linux,修改参数)