ROS中 mpc_local_planner 局部路径规划器参数配置文件中参数含义

news2024/12/28 3:02:30

         mpc_local_planner与我们比较熟悉的teb_local_planner出自同一研究所(多特蒙德大学-控制理论与系统工程研究所),所以参数配置文件中的参数有很多相似之处,很多参数的含义也是相同的,所以熟悉teb_local_planner的参数含义,对于理解mpc_local_planner的参数有很大的帮助,这一点在官方介绍中也提到了

 

源码包下载链接:

rst-tu-dortmund / mpc_local_plannericon-default.png?t=N5F7https://github.com/rst-tu-dortmund/mpc_local_planner

       使用方法看源码页介绍即可,推荐使用以下指令安装相关依赖,简单快捷

rosdep install mpc_local_planner

      若rosdep不能正常使用,可以参考我之前写的博客,链接如下:

ROS Noetic版本 rosdep找不到命令 不能使用的解决方法icon-default.png?t=N5F7http://t.csdn.cn/CJKv8

一、参数含义解释

odom_topic:机器人的里程计话题名称。

robot:机器人相关设置。

type:机器人类型,这里是simple_car。
simple_car:简单车辆类型的机器人参数。
wheelbase:轴距。
front_wheel_driving:前轮是否驱动。
max_vel_x:前进的最大线速度。
max_vel_x_backwards:后退的最大线速度。
max_steering_angle:最大转角。
acc_lim_x:前进的线性加速度限制。
dec_lim_x:前进的线性减速度限制。
max_steering_rate:最大转角速率。
footprint_model:用于避免碰撞的足迹模型。

type:足迹模型的类型,可以是point、circular、two_circles、line或polygon。
radius:当足迹模型类型为circular时的半径。
line_start:当足迹模型类型为line时的起点坐标。
line_end:当足迹模型类型为line时的终点坐标。
front_offset:当足迹模型类型为two_circles时前圆心偏移量。
front_radius:当足迹模型类型为two_circles时前圆半径。
rear_offset:当足迹模型类型为two_circles时后圆心偏移量。
rear_radius:当足迹模型类型为two_circles时后圆半径。
vertices:当足迹模型类型为polygon时的顶点坐标。
is_footprint_dynamic:足迹是否是动态的。
collision_avoidance:碰撞避免相关设置。

min_obstacle_dist:障碍物的最小安全距离。注意,此参数必须与足迹模型相匹配。
enable_dynamic_obstacles:是否启用动态障碍物。
force_inclusion_dist:强制包含距离。
cutoff_dist:截断距离。
include_costmap_obstacles:是否包括代价地图中的障碍物。
costmap_obstacles_behind_robot_dist:机器人后方的代价地图障碍物距离。
collision_check_no_poses:碰撞检查的位姿数量。
grid:规划网格相关设置。

type:规划网格的类型,这里是fd_grid。
grid_size_ref:参考网格大小。
dt_ref:参考时间间隔。
xf_fixed:是否固定终点状态。
warm_start:是否使用热启动。
collocation_method:插值方法,这里是forward_differences。
cost_integration_method:成本积分方法,这里是left_sum。
variable_grid:可变网格设置。
enable:是否启用可变网格。
min_dt:最小时间间隔。
max_dt:最大时间间隔。
grid_adaptation:网格自适应设置。
enable:是否启用网格自适应。
dt_hyst_ratio:时间间隔滞后比率。
min_grid_size:最小网格大小。
max_grid_size:最大网格大小。
planning:规划选项。

objective:目标函数设置。
type:目标函数类型,这里是minimum_time,表示最小化时间。
terminal_cost:终端成本设置。
type:终端成本类型,这里是none,表示没有终端成本。
terminal_constraint:终端约束设置。
type:终端约束类型,这里是none,表示没有终端约束。
controller:控制器选项。

outer_ocp_iterations:外层最优控制迭代次数。
xy_goal_tolerance:xy坐标目标容差。
yaw_goal_tolerance:偏航角目标容差。
global_plan_overwrite_orientation:全局路径是否覆盖机器人当前姿态。
global_plan_prune_distance:全局路径修剪距离。
allow_init_with_backward_motion:是否允许使用向后运动初始化。
max_global_plan_lookahead_dist:全局路径最大预瞄距离。
force_reinit_new_goal_dist:强制重新初始化新目标的距离。
force_reinit_new_goal_angular:强制重新初始化新目标的角度。
prefer_x_feedback:是否优先使用x反馈。
publish_ocp_results:是否发布OCP结果。
solver:求解器设置。

type:求解器类型,这里是ipopt。
ipopt:Ipopt求解器设置。
iterations:迭代次数。
max_cpu_time:最大CPU时间。
ipopt_numeric_options:Ipopt的数值选项。
tol:容差。
ipopt_string_options:Ipopt的字符串选项。
linear_solver:线性求解器,这里是mumps。
hessian_approximation:Hessian矩阵近似方法,这里是limited-memory。
lsq_lm:Levenberg-Marquardt方法设置。
iterations:迭代次数。
weight_init_eq:等式初始权重。
weight_init_ineq:不等式初始权重。
weight_init_bounds:边界初始权重。
weight_adapt_factor_eq:等式权重自适应因子。
weight_adapt_factor_ineq:不等式权重自适应因子。
weight_adapt_factor_bounds:边界权重自适应因子。
weight_adapt_max_eq:等式权重自适应最大值。
weight_adapt_max_ineq:不等式权重自适应最大值。
weight_adapt_max_bounds:边界权重自适应最大值。

二、参考参数

MpcLocalPlannerROS:

  odom_topic: odom
    
   ## Robot settings
  robot:
    type: "simple_car"
    simple_car:
      wheelbase: 0.4
      front_wheel_driving: False
      max_vel_x: 0.4
      max_vel_x_backwards: 0.2
      max_steering_angle: 1.4
      acc_lim_x: 0.5 # deactive bounds with zero
      dec_lim_x: 0.5 # deactive bounds with zero
      max_steering_rate: 0.5 # deactive bounds with zero

  ## Footprint model for collision avoidance
  footprint_model: # types: "point", "circular", "two_circles", "line", "polygon"
    type: "line"
    radius: 0.2 # for type "circular"
    line_start: [0.0, 0.0] # for type "line"
    line_end: [0.4, 0.0] # for type "line"
    front_offset: 0.2 # for type "two_circles"
    front_radius: 0.2 # for type "two_circles"
    rear_offset: 0.2 # for type "two_circles"
    rear_radius: 0.2 # for type "two_circles"
    vertices: [ [0.25, -0.05], [0.18, -0.05], [0.18, -0.18], [-0.19, -0.18], [-0.25, 0], [-0.19, 0.18], [0.18, 0.18], [0.18, 0.05], [0.25, 0.05] ] # for type "polygon"
    is_footprint_dynamic: False


  ## Collision avoidance
  collision_avoidance:
    min_obstacle_dist: 0.27 # Note, this parameter must be chosen w.r.t. the footprint_model
    enable_dynamic_obstacles: False
    force_inclusion_dist: 0.5
    cutoff_dist: 2.5 
    include_costmap_obstacles: True
    costmap_obstacles_behind_robot_dist: 1.0
    collision_check_no_poses: 5
    

  ## Planning grid 
  grid:
    type: "fd_grid"
    grid_size_ref: 20
    dt_ref: 0.3
    xf_fixed: [True, True, True]
    warm_start: True
    collocation_method: "forward_differences"
    cost_integration_method: "left_sum"
    variable_grid:
      enable: True  
      min_dt: 0.0;
      max_dt: 10.0;
      grid_adaptation:
        enable: True
        dt_hyst_ratio: 0.1
        min_grid_size: 2
        max_grid_size: 50

  ## Planning options
  planning:
    objective:
      type: "minimum_time" # minimum_time requires grid/variable_grid/enable=True and grid/xf_fixed set properly
    terminal_cost:
      type: "none"
    terminal_constraint:
      type: "none"

  ## Controller options
  controller:
    outer_ocp_iterations: 1
    xy_goal_tolerance: 0.2
    yaw_goal_tolerance: 0.1
    global_plan_overwrite_orientation: True
    global_plan_prune_distance: 1.0
    allow_init_with_backward_motion: True
    max_global_plan_lookahead_dist: 1.5 
    force_reinit_new_goal_dist: 1.0
    force_reinit_new_goal_angular: 1.57
    prefer_x_feedback: False
    publish_ocp_results: False
    
  ## Solver settings
  solver:
    type: "ipopt"
    ipopt:
      iterations: 100
      max_cpu_time: -1.0
      ipopt_numeric_options:
        tol: 1e-4
      ipopt_string_options:
        linear_solver: "mumps" 
        hessian_approximation: "limited-memory" # exact/limited-memory, WARNING 'exact' does currently not work well with the carlike model
    lsq_lm:
      iterations: 10
      weight_init_eq: 2
      weight_init_ineq: 2
      weight_init_bounds: 2
      weight_adapt_factor_eq: 1.5
      weight_adapt_factor_ineq: 1.5
      weight_adapt_factor_bounds: 1.5
      weight_adapt_max_eq: 500
      weight_adapt_max_ineq: 500
      weight_adapt_max_bounds: 500


         


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/652356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚马逊认证考试系列 - 知识点 - 安全组介绍

AWS的安全组是一种虚拟防火墙,可以用于控制进入和离开AWS虚拟私有云(VPC)的流量。安全组是一种网络访问控制列表(NACL)的补充,因为安全组是在实例级别上进行管理的,而NACL是在子网级别上进行管理的。 AWS的安全组可以通过以下方式保护您的资源…

自然语言处理: 第一章N-Gram

一. 理论基础 定义: 语言模型在wiki的定义是统计式的语言模型是一个几率分布,给定一个长度为 m 的字词所组成的字串 W1 , W2 , ,Wn ,派几率的字符串P(S) P(W1 , W2 , ,Wn , )而其中由条件概率公式我们可以…

风景类Midjourney prompt提示词

稳定输出优美风景壁纸的Midjourney prompt提示词。 1\在夏夜,有淡蓝色的星空,海边,流星,烟花,海滩上全是蓝色的玫瑰和绿色的植物,由Ivan Aivazovsky和Dan Mumford,趋势在cgsociety,…

CAN转串口设备在使用时可能遇到的问题和解决方案

上位机软件通过232串口发送数据经过CAN转232设备转换成CAN数据发送到仪表中,仪表接收到指定的数据后,返回特定的CAN数据。 使用过程中可能遇到的问题 1、串口按照规则发送数据后,设备端没有数据返回 遇到这种情况,先检查发送的数…

STM32 Proteu直流电机正反转控制系统限位开关-0035

STM32 Proteu直流电机正反转控制系统限位开关-0035 Proteus仿真小实验: STM32 Proteu直流电机正反转控制系统限位开关-0035 功能: 硬件组成:STM32F103C6单片机 L298N电机控制电路直流电机3个按键(正转、反转、停止)L…

AM62X+FPGA+AD+vxworks实时操作系统数据采集处理解决方案

Specification Description 处理器 AM6231 at up to 1.2GHz 操作系统 VXWORKS 存储 DDR4,8GB EMMC 接口 •PrPMC接口 •1个USB2.0 •3路RMII •1路RS485 •1路IRIGB •1路RS232 调试接口 JTAG / COP debug port 工业环境监测设备: Specification Desc…

常见优化器详解

优化器 目前有两种主流优化器:随机梯度下降系(Stochastic Gradient Descent, SGD)和Adam系。 应该认识到的是,优化器并不是某类数学上的优化算法,而是梯度下降(一阶迭代法)的工程实现方案和包…

VALSE2023-内容总结(正在更新)

博文为精选内容,完整ppt请留言索取 一周内更新完毕,敬请期待 2023年度视觉与学习青年学者研讨会 (Vision And Learning SEminar, VALSE)于6月10日至12日在无锡太湖国际博览中心召开,由中国人工智能学会、中国图象图形学学会主办,…

Transformer与注意力机制

Transformer与注意力机制 1. RNN基础 循环神经网络(RNN)是专门用来处理自然语言、金融信息等时序数据的一种神经网络。它的结构和运作方式如下图所示,基于马尔可夫决策模型。 图1 循环神经网络的结构和运作方式 应该注意到以下几个性质&a…

周四见 | 物流人的一周资讯

菜鸟618推出“小件3元发全国”服务 6月12日消息,针对美妆商家618期间轻小件的发货需求,菜鸟推出“极致小件3元发全国”服务,利用全国6大基地,100%自营的仓配供应链能力,支持订单高爆发,并提供破损包赔、时…

开源、跨平台安卓摸鱼(投屏)软件 Scrcpy 中文使用指南

废话不说,先上链接:GitHub上的Scrcpy 介绍: Scrcpy 可以将手机画面投射到电脑上,让你可以在电脑上对手机进行操控。Scrcpy 通过 USB 或 Wi-Fi 与安卓手机相连,不需要在手机上安装任何 app,也不需要取得 R…

Vue-插件(plugin)

插件(plugin) 插件是vue中特别强大并且特别简单的一个东西,它可以帮助我们增强vue 插件本质来说就是一个对象,但是这个对象必须包含install(安装)方法,由vue帮助我们调用 只要插件写的足够的好,就可以帮助我们实现很多的功能&a…

一些常用linux命令

系列文章目录 文章目录 系列文章目录一、常用linux命令1. lsof介绍2.查看进程的几种命令3.查看inode号的几种命令4.查看Linux系统负载的命令一般常用的有4种:5.iostat 主要用于输出磁盘IO 和 CPU的统计信息。 总结 一、常用linux命令 1. lsof介绍 lsof可以查看你所打开的文件…

工具篇--5 WIndow/Linux--Mysql binLog日志监听Canal安装

前言:作为一个中间件canal,可以实时的监听到mysql 中表结构及数据的变化, 项目中只需要接入canal ,不需要我们在业务中进行aop 或者接口的编写就可以及时的收到数据的变化。 1 介绍: Canal是阿里巴巴开源的一款基于M…

想要用好ChatGPT,首先得学会用提示词!

用好ChatGPT,可以辅助学习~ 期末季,一年中体验过最多地区时差的一段时期,懂的都懂😲 放下essay刷个小红薯也都是“赶due病友”…几周内5-6个essay ddl的经历相信不少同学都深有体会。 而今年的一大不同就是有了“哆啦C梦”——…

PostgreSQL行转列

管理拓展 启用拓展 -- 启用拓展 create extension tablefunc; --tablefunc扩展模块包含一系列返回记录表的函数。 create extension "uuid-ossp";--uuid扩展函数拓展启动后,可以在public空间下查看到crosstab函数 卸载函数 drop extension tablefunc…

信创办公–基于WPS的PPT最佳实践系列 (使用母版进行有效设计)

信创办公–基于WPS的PPT最佳实践系列 (使用母版进行有效设计) 目录 应用背景相关知识操作步骤1、认识母版2、在每页幻灯片底部添加logo图片3、第一张幻灯片和最后一张幻灯片出现logo图片,其他页面不出现4、除了封面封底之外,其他页…

硬件速攻-ATK1218正点原子GPS模块

效果演示(注意室内是没有数据) 模块实物图与接线方法 SPP 可不接(这个连到了模块上的灯) RXD 接单片机TXD TXD 接单片机串口RXD GND 接单片机GND VCC接单片机5V IPEX一定要接送的天线 而且天线要放到室外 再次说明提醒 精简代码与说明 如果你只想获取经纬度而已 你可用屏…

原来C语言计算的数只要低过4个字节就要整型提升!

C的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换被称为整型提升。 比如: char a 3; char b 127; char c a b; printf("%d&q…

Vue中如何进行地图轨迹展示与追踪?

Vue中如何进行地图轨迹展示与追踪? 随着移动互联网技术的快速发展,位置数据的应用越来越广泛。在许多应用程序中,地图轨迹展示和追踪功能已经成为了基本功能之一。在Vue中,我们可以使用许多不同的地图API和库来实现这些功能。本文…