ROS导航——配置机器人的导航功能(move_base包)

2023-05-16

中间部分是整个导航的核心部分,由move_base功能包提供

配置如下:

<launch>

 

<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen" clear_params="true">

<rosparam file="$(find mbot_navigation)/config/mbot/costmap_common_params.yaml" command="load" ns="global_costmap" />

<rosparam file="$(find mbot_navigation)/config/mbot/costmap_common_params.yaml" command="load" ns="local_costmap" />

<rosparam file="$(find mbot_navigation)/config/mbot/local_costmap_params.yaml" command="load" />

<rosparam file="$(find mbot_navigation)/config/mbot/global_costmap_params.yaml" command="load" />

<rosparam file="$(find mbot_navigation)/config/mbot/base_local_planner_params.yaml" command="load" />

</node>

</launch>

 

base_local_planner_params.yaml配置详解如下

controller_frequency: 3.0 —— 每多少秒我们需要更新一次路径规划?把这个值舍得太高会使性能不足的CPU过载。对于一台普通的计算机来说,设定为3到5就可以运行的相当不错了

recovery_behavior_enabled: false

clearing_rotation_allowed: false

 

TrajectoryPlannerROS:

max_vel_x: 0.5——机器人的最大线速度,单位是m/s。对于室内机器人来说0.5就已经很快了,所以保守地选择设为0.3

min_vel_x: 0.1——机器人的最小线速度

max_vel_y: 0.0 # zero for a differential drive robot

min_vel_y: 0.0

max_vel_theta: 1.0——机器人的最大旋转速度,单位是弧度/秒。不要把这个值设的太高,不然机器人会错过它的目标方向

min_vel_theta: -1.0——机器人最小的旋转速度

min_in_place_vel_theta: 0.5——机器人最小的原地旋转速度,单位是弧度/秒

escape_vel: -0.1——机器人逃离时的速度,单位是m/s。请注意这个值必须是负数,这样机器人才能反向移动

acc_lim_x: 1.5——在x方向上的最大线加速度

acc_lim_y: 0.0 # zero for a differential drive robot ——在y轴上的最大线加速度。对于差速驱动(非完整驱动)机器人,设为0,这样机器人就只能在x方向上线性运动(和旋转)了

acc_lim_theta: 1.2——最大角加速度

 

holonomic_robot: false——除非你有一个全方向驱动机器人,否则一律设为false

yaw_goal_tolerance: 0.1 # about 6 degrees——至多距离目标方向的误差(单位为弧度)是多少?把这个值设得太小的话可能会导致机器人在目标附近徘徊

xy_goal_tolerance: 0.1 # 10 cm——至多距离目标位置的误差(单位为米)是多少?如果把值设得太小,你的机器人可能会不断地在目标位置附近调整。注意:不要把最大误差设定得比地图的分辨率还小,否则机器人会永不停息地在目标附近徘徊但永远到不了目标位置。

latch_xy_goal_tolerance: false

pdist_scale: 0.9——全局路径规划和到达目的位置之间的权重。这个参数比gdist_scale大时,机器人会更倾向于考虑全局路径规划

gdist_scale: 0.6——到达目的位置和全局路径规划之间的权重。这个参数比pdist_scale大时,机器人会更考虑到达目标位置,而不管这段路在全局路径规划中是否是必须的

meter_scoring: true

 

heading_lookahead: 0.325

heading_scoring: false

heading_scoring_timestep: 0.8

occdist_scale: 0.1——避开障碍物的权重

oscillation_reset_dist: 0.05

publish_cost_grid_pc: false

prune_plan: true

 

sim_time: 1.0——规划时需要考虑未来多长时间(单位为秒)呢?这个参数和下一个参数(dwa)一起极大地影响机器人往目标移动的路径

sim_granularity: 0.025

angular_sim_granularity: 0.025——在给定轨迹上的点之间采用的步长

vx_samples: 8

vy_samples: 0 # zero for a differential drive robot——探索x速度空间时要使用的样本数

vtheta_samples: 20——探索θ速度空间时要使用的样本数

dwa: true——在模拟未来的轨迹时是否用动态窗口方法(Dynamic Window Approach)

simple_attractor: false

 

 

 

costmap_common_params.yaml通用配置文件(这个文件夹只有两个参数是需要你立刻为你的机器人调整的)配置详解如下:

obstacle_range: 2.5——参数用来设置机器人检测障碍物的最大范围,设置为2.5意为在2.5米范围内检测到的障碍信息,才会在地图中进行更新。

raytrace_range: 3.0——参数用来设置机器人检测自由空间的最大范围,设置为3.0意为在3米范围内,机器人将根据传感器的信息,清除范围内的自由空间

footprint: [[0.10, 0.10], [0.10, -0.10], [-0.10, -0.10], [-0.10, 0.10]]——在列表中的每一个坐标代表机器人的边上的一点,机器人中心设为[0,0],测量单位是米。这在机器人周长上的点要不按照顺时针排列,要不按照逆时针排列

footprint_inflation: 0.01——机器人膨胀区域(个人猜测)

robot_radius: 0.10

inflation_radius: 0.05——地图上的障碍物的膨胀参数

max_obstacle_height: 0.6

min_obstacle_height: 0.0

observation_sources: scan——列出了代价地图需要关注的所有传感器信息,每一个传感器信息都将在后边列出详细信息

scan: {data_type: LaserScan, topic: /scan, marking: true, clearing: true, expected_update_rate: 0}——sensor_frame标识传感器的参考系名称,data_type表示激光数据或者点云数据使用的消息类型,topic_name表示传感器发布的话题名称,而marking和clearing参数用来表示是否需要使用传感器的实时信息来添加或清楚代价地图中的障碍物信息。(这里没有sensor_frame,原因不清,有待验证)

 

 

 

global_costmap_params.yaml全局规划配置文件(详细配置如下):

这个文件夹中的一些参数,需要根据机器人CPU的计算能力和你的工作站与机器人之间的网络情况来实验得到的

global_frame: map——对于全局代价地图,我们用map框架来作为global框架

robot_base_frame: base_footprint——这个通常不是/base_link就是/base_footprint。对于TurtleBot应设为/base_footprint

update_frequency: 5.0——根据传感器数据,全局地图更新的频率,单位为赫兹。这个数值越大,你的计算机的CPU负担会越重。特别对于全局地图

publish_frequency: 0——对于静态的全局地图来说,不需要不断发布

static_map: true——这个参数和下一个参数通常设为相反的值。全局地图通常是静态的,因此我们通常会把这个参数设为true

rolling_window: false——当我们把这个参数设为false时,全局地图不会在机器人移动的时候更新

resolution: 0.01

transform_tolerance: 5.0——指定在tf树中框架之间的转换的最大延时,单位为秒。对于典型的工作站和机器人之间的无线网络来说,与1.0秒同一级别的都可以工作的很好

map_type: costmap

 

 

 

local_costmap_params.yaml本地代价地图文件(详细配置如下):

local_costmap:

global_frame: odom——对于本地代价地图来说,我们使用odometry框架来作为global框架

robot_base_frame: base_footprint——这个通常不是/base_link就是/base_footprint。对于TurtleBot应设为/base_footprint

update_frequency: 3.0——根据传感器数据,本地地图更新的频率,单位为次/秒。对于很慢的计算机,你可能需要减小这个值

publish_frequency: 1.0——我们想更新已经发布出去的本地地图,所以我们会把这个值设为非零。一秒一次应该足够了,除非你的机器人要移动得更快。

static_map: false——这个参数和笑一个参数通常会设为相反的值。当本地地图需要根据传感器数据动态更新的时候,我们通常会把这个参数设为false

rolling_window: true——当我们把这个参数设为true时,局部地图会随机器人移动的时候更新(下面几个参数定义了本地地图更新用的滑动窗口)

width: 6.0——滑动地图的x维长度是多少米

height: 6.0——滑动地图的y维长度是多少米

resolution: 0.01——滑动地图的分辨率,单位为米。这个参数应该与YAML文件设置的地图分辨率匹配(在后续部分会解释)

transform_tolerance: 5.0——指定在tf树框架之间的转换,或可能会暂时中止的地图绘制过程中两者的最大延时,单位为秒。在一台速度较快、直连到机器人的计算机上,把这个值设定为1.0就能很好地工作了。但是在通过无线网络连接的较慢计算机上,这个延时容忍参数需要增大。当容忍度太低的时候,你将会在屏幕上看到这样的信息:

[WARN][1339438850.439571557]:Costmap2DROS transform timeout. Current time:1339438850.4395,global_pose stamp:1339438850.3170,tolerance:0.0001

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS导航——配置机器人的导航功能(move_base包) 的相关文章

随机推荐

  • 基于netlink的Linux Network Monitor实现

    一 背景 来源于产品开发需求 xff0c 需要在linux系统下实现网络状类型查询及网络类型变更通知 xff0c 比如从Ethernet变为Wifi xff0c 从Wifi变为Ethernet等 二 设计方案 Linux系统提供了Netli
  • Altium Designer绘制一个stm32最小系统的电路原理图

    文章目录 一 Altium Designer二 新建工程文件三 绘制原理图库1 绘制元器件2 导入元器件库3 绘制模块 一 Altium Designer Altium Designer 是原Protel软件开发商Altium公司推出的一体
  • C++11面向切面编程(AOP)入门指南

    何为AOP 面向切面编程 xff08 AOP xff0c Aspect Oriented Programming xff09 是一种编程范式 xff0c 允许开发者在不修改原有代码的情况下 xff0c 为程序添加额外的功能 什么是面向切面编
  • 车道线识别/Opencv/传统方法

    车道检测 Advanced Lane Finding Project 实现步骤 使用提供的一组棋盘格图片计算相机校正矩阵 camera calibration matrix 和失真系数 distortion coefficients 校正图
  • 2019新买电脑必备软件

    都2019了 xff0c 怎么还要安装这些垃圾软件 xff01 群丫头买了个新电脑 xff0c 为了避免她踩到笔者曾今踩到的坑 xff0c 更舒心的使用电脑 xff0c 为此特写此文 作为一个电脑平凡使用者 xff0c 用过无数的软件 xf
  • Docker与anaconda+jupyter

    Arch docker的安装 pacman 安装docker sudo pacman S docker docker启动 sudo systemctl start docker 设置开机启动docker sudo systemctl ena
  • Opencv目标追踪

    参考 xff1a https www pyimagesearch com 2018 07 30 opencv object tracking 引言 Opencv作为图像处理开源库包含了Object Tracking目标追踪的一些API xf
  • 使用cmake编译,组织C++项目

    文章目录 前言例一例二例三 前言 这篇博客是我对cmake用法的一些经验总结 还很浅显 如果有错误或者更好的方案 欢迎指正 使用方法统一为在build目录中执行 cmake make 我觉得养成外部编译是一个好习惯 例一 目录结构为 lzj
  • Spring Security Oauth2.0认证授权

    基本概念 认证 用户认证就是判断一个用户的身份是否合法的过程 xff0c 用户去访问系统资源时系统要求验证用户的身份信息 xff0c 身份合法方可继续访问 xff0c 不合法则拒绝访问 常见的用户身份认证方式有 用户名密码登录 xff0c
  • C语言实现HTTP的GET和POST请求

    HTTP请求和IP TCP 所谓的HTTP协议是基于IP TCP协议的 xff0c 所以要获取远端的html数据只要创建socket对象就足够了 xff1b HTTP是基于IP TCP加上了网络请求的固定格式 get 请求 include
  • 英伟达GPU安装教程

    英伟达GPU安装教程
  • 四种插头类型:XH、VH、SM、HY

    PH1 25mm HY2 0mm XH2 5 2 54mm xff08 这两个其实是一样的 xff09 VH3 96mm 插头分成三种类型 xff1a XH xff1b VH xff1b SM xff1b HY XH 4Y 是插头 xff1
  • STM32F1C8T6Flash读取音频和DAC播放

    文章目录 一 Flash简介1 Flash原理2 STM32F1中的Flash 二 Flash地址空间的数据读取1 题目要求2 CUbeMX工程建立3 Keil工程修改4 STlink调试说明5 调试运行 三 基于片内Flash的提示音播放
  • C语言中的头文件为什么不能定义变量

    1 前提 在实际项目中 xff0c 会遇到这样的情况 xff0c 在链接阶段 xff0c 会提示定义在头文件中的变量 xff0c 重定义 xff0c 然后将将头文件中的变量定义成static类型 xff0c 然后 xff0c 不报错误了 例
  • Ubuntu16.04安裝ROS

    此文章在前人的基礎上 xff0c 並把安裝遇到的問題寫出來 Ubuntu16 04安装ROS Kinetic详细过程 https blog csdn net weixin 43159148 article details 83375218
  • B-spline的理解与路径规划中的应用及C++代码的实现

    研究项目 xff0c 无人机的路径规划 xff0c 需要用到B样条 xff0c 所以在此写下B spline的结合C 43 43 代码的理解以及在项目中的应用 一 阶数p 阶数 61 所有权重中t的最高次幂 61 控制点数量 1 xff1b
  • Jetson TX2 各个模式

    Jetson TX2 工作模式及相应的CPU和GPU频率 xff1a 上电的时候 xff0c 默认最低功耗模式1 xff0c 风扇不转 1 直接运行home下的jetson clocks sh xff0c 开启最大频率 sudo jetso
  • 网络通信基础知识—网络通信的发展历程

    网络通信基础知识 网络通信的发展历程 xff08 1 xff09 单机阶段 xff08 2 xff09 局域网阶段 xff08 3 xff09 广域网internet阶段 xff08 很多个局域网之间通信 xff09 xff08 4 xff
  • win7下装ubuntu双系统 硬盘安装详细教程

    本文转载自http www linuxidc com Linux 2014 10 108430 htm https jingyan baidu com article e4d08ffdace06e0fd2f60d39 html 在自己安装过
  • ROS导航——配置机器人的导航功能(move_base包)

    中间部分是整个导航的核心部分 xff0c 由move base功能包提供 配置如下 xff1a lt launch gt lt node pkg 61 34 move base 34 type 61 34 move base 34 resp