Navigation导航包的学习实践-(四)导航包设置

导航包设置--配置文件的编写


在此之前,机器人已经能够tf发布坐标系信息,接收来自传感器的sensor_msgs/LaserScansensor_msgs/PointCloud的消息,并且使用tfnav_msgs/Odometry发布里程消息,同时能够将导航包输出的cmd_vel信息发送到底层移动基座上的直流电机,进行指定方向速度的移动。

机器人实现地图构建、定位、路径规划以及实时避障需要完成以下配置


引自WIKI


依据上述配置信息完成机器人导航前的配置任务:

  • 创建包
    catkin_create_pkg my_robot_name_2dnav move_base my_tf_configuration_dep my_odom_configuration_dep my_sensor_configuration_dep
    依赖包里包含了move_base,tf,odom里程计,传感器消息流。

  • 创建机器人配置的启动文件--新建my_robot_configuration.launch,包含了tf、传感器以及里程计的启动,是后续move_base导航的前提。

<launch>
  <node pkg="sensor_node_pkg" type="sensor_node_type" name="sensor_node_name" output="screen">
    <param name="sensor_param" value="param_value" />
  </node>

  <node pkg="odom_node_pkg" type="odom_node_type" name="odom_node" output="screen">
    <param name="odom_param" value="param_value" />
  </node>

  <node pkg="transform_configuration_pkg" type="transform_configuration_type" name="transform_configuration_name" output="screen">
    <param name="transform_configuration_param" value="param_value" />
  </node>
</launch>



本教程将实现navigation导航包中代价地图的配置,完成move_base功能包的配置。

导航包使用两种代价地图存储周围环境中的障碍物信息:一种用于全局路径规划(global_costmap),一种用于本地路径规划和实时避障(local_costmap)。两种代价地图都需要一些共用的或独立的配置文件:通用配置文件全局配置文件本地规划配置文件以及用于计算速度控制指令的本地规划器配置文件

  • 通用配置 (local_costmap) & (global_costmap)
    创建一个名为costmap_common_params.yaml的文件,如下所示,并填写:
obstacle_range: 2.5 #机器人只会更新其地图包含距离移动基座2.5米以内的障碍物的信息
raytrace_range: 3.0 #机器人将尝试清除3米外的空间
footprint: [[x0, y0], [x1, y1], ... [xn, yn]] #若机器人是长方形
#robot_radius: ir_of_robot #若机器人是圆形,设置半径
inflation_radius: 0.55 #设置膨胀半径,即与障碍物保持的安全距离

observation_sources: laser_scan_sensor point_cloud_sensor #把信息传递给代价地图的传感器列表,以空格分隔每个传感器,每个传感器分别定义。

laser_scan_sensor: {sensor_frame: frame_name, data_type: LaserScan, topic: topic_name, marking: true, clearing: true}

point_cloud_sensor: {sensor_frame: frame_name, data_type: PointCloud, topic: topic_name, marking: true, clearing: true}
#marking和clearing表示是否需要用传感器的实时信息来添加或清除代价地图中的障碍物信息。

比如,设置代价地图只接受激光雷达的消息,则设置为:

observation_sources: scan
scan: {sensor_frame: base_laser, data_type: LaserScan, topic: /scan, marking: true, clearing: true}
  • 全局规划配置(global_costmap)
    创建global_costmap_params.yaml文件,代码如下:
global_costmap:
  global_frame: /map #表示全局代价地图需要在哪个参考系下运行,选择map参考系
  robot_base_frame: base_link #定义为机器人的基座的坐标系作为参考
  update_frequency: 5.0 #决定全局地图的更新频率
  static_map: true #决定代价地图是否需要根据map_server提供的地图信息进行初始化。如果没有使用现有的地图或地图服务器,将static_map参数设置为false。
  • 本地规划配置文件(local_costmap)
    本地规划配置文件用来存储本地代价地图的配置参数,命名为local_costmap_params.yaml,代码如下:
local_costmap:
  global_frame: odom #表示本地代价地图需要在哪个参考系下运行,选择odom参考系
  robot_base_frame: base_link #定义为机器人的基座的坐标系作为参考
  update_frequency: 5.0 #决定本地代价地图的更新频率
  publish_frequency: 2.0 #代价地图发布可视化信息的频率
  static_map: false #决定代价地图是否需要根据map_server提供的地图信息进行初始化。如果没有使用现有的地图或地图服务器,将static_map参数设置为false。
  rolling_window: true #参数设置为true意味着当机器人移动时,保持机器人在本地代价地图中心。
  width: 6.0
  height: 6.0
  resolution: 0.05 #“宽度”,“高度”和“分辨率”参数设置本地代价地图的宽度(米),高度(米)和分辨率(米/单元格)。请注意,这个网格的分辨率与静态地图的分辨率不同,但大多数时候我们倾向设置为相同值。
  • 本地规划器配置/base_local_planner
    base_local_planner负责把上层规划器计算的速度指令发送给移动基座。新建base_local_planner_params.yaml文件,代码如下:
TrajectoryPlannerROS: #TrajectoryPlanner的基本配置选项
  max_vel_x: 0.45
  min_vel_x: 0.1
  max_vel_theta: 1.0
  min_in_place_vel_theta: 0.4 #机器人的速度限制

  acc_lim_theta: 3.2
  acc_lim_x: 2.5
  acc_lim_y: 2.5 #机器人的加速度限制

  holonomic_robot: true

有关各种配置现选项的文档,参阅base_local_planner文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,039评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,426评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,417评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,868评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,892评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,692评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,416评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,326评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,782评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,957评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,102评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,790评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,442评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,996评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,113评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,332评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,044评论 2 355