0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ROS编写参数配置文件示例程序

麦辣鸡腿堡 来源:古月居 作者:慕羽★ 2023-11-26 17:35 次阅读

ROS Motion Planning运动规划库采用了非常灵活和简易的方式来按照我们的需求去进行配置和使用,在我们对一些必要参数进行设定后,可使用库中的main_generate.py文件自动生成我们设定的参数对应的执行文件main.launch。

这些需要设定的参数,存放在user_config.yaml、pedestrians_config.yaml、obstacles _config.yaml这三个文件中,这三个文件均位于下图所示的目录下,下面依次进行详细的介绍

图片

1、编写user_config.yaml参数配置文件

首先,我们来看作者提供的示例程序,如下所示:

map: "warehouse"
world: "warehouse"
rviz_file: "sim_env.rviz"


robots_config:
  - robot1_type: "turtlebot3_waffle"
    robot1_global_planner: "theta_star"
    robot1_local_planner: "apf"
    robot1_x_pos: "0.0"
    robot1_y_pos: "0.0"
    robot1_z_pos: "0.0"
    robot1_yaw: "0.0"


# plugins:
  # pedestrians: "pedestrian_config.yaml"
  # obstacles: "obstacles_config.yaml"

接下来,我们对每个参数的作用以及可选的选项有那些进行逐个介绍

(1)、map

map参数用于设定运动规划所使用的静态地图的名字,也就是rviz界面看到的静态全局地图,这些可用的静态地图文件存放在该运动规划库的src/sim_env/map/文件夹下,目前该运动规划库中仅提供了名为warehouse的静态地图文件

如下图所示,当然,我们可以利用SLAM建图算法自行生成其他的静态地图文件,然后同样存放在src/sim_env/map/文件夹下,并将参数map设定为该静态地图的名字,即可进行调用。

注:该参数设为“ ”,则表示不使用静态地图

图片

(2)world

world参数用于设定要调用的Gazebo仿真环境的文件名,该文件存放在该运动规划库的src/sim_env/worlds/文件夹下,示例中调用的是warehouse.world。

当然,我们也可以在Gazebo中搭建自己的仿真环境,并导出对应的world文件,然后存放到该目录下,通过修改参数world来进行调用

注:需要注意的是参数map与world要对应起来,这里的对应是指环境内容的对应,一般是先在Gazebo中搭建仿真环境,保存为xxx.world文件,然后使用SLAM建图算法,比如最常用的gampping,对该仿真环境进行建图,将建好的图作为静态地图保存,然后使用。

图片

(3)rviz_file

rviz_file参数用于设定打开rviz时的配置文件,这些配置文件存放在src/sim_env/rviz/目录下,目前库中提供了cache.rviz、sim_env.rviz、view_multi.rviz这三个可选内容,同样我们可以在rviz中自行调整,并导出对应.rviz文件,存储在该目录下,然后通过对rviz_file参数进行修改来调用

图片

比如,我修改了全局路径的话题及线型等,可以直接save config覆盖原有设置,也可以导出新的.rviz配置文件,从而保留原有设置,如下图所示:

图片

(4)robot1_type

robot1_type用于设定编号为robot1的机器人所使用的机器人的模型,模型文件在库的src/sim_env/urdf/目录下库中提供了nanocar、turtlebot3_burger、turtlebot3_waffle 、turtlebot3_waffle_pi四种可选的机器人模型

当然,我们也可以自行创建或者从网上找其他的机器人模型的urdf或xacro文件,放到该目录下,通过修改参数robot1_type的值来进行调用。

图片

库中提供的这四种机器人模型如下图所示:

图片

(5)robot1_global_planner

robot1_global_planner用于设定编号为robot1的机器人所使用的全局路径算法,全局路径算法的实现文件在库的src/planner/global_planner/目录下,库中提供了三大类共同16个全局路径规划算法,对应三个全局路径规划器插件,详细如下:

① 基于图搜索的全局路径规划器插件graph_planner/GraphPlanner包含的算法有:

a_star、jps、gbfs、dijkstra、d_star、lpa_star、voronoi、d_star_lite、theta_star、lazy_theta_star

② 基于采样的全局路径规划器插件sample_planner/SamplePlanner包含的算法有:

rrt、rrt_star、informed_rrt、rrt_connect

③、基于智能的路径规划器插件evolutionary_planner/EvolutionaryPlanner包含的算法有:

aco、ga

三大类共16种全局路径规划算法可供我们选择,上面的示例文件中使用的是theta_star算法,我们可以尝试修改为以上其他16种算法中的任意一个来测试其效果

当然,我们也可以编写自己的全局路径规划器算法,较容易的方式,是直接在以上16种算法中最接近的1种的源文件上进行修改,若创建自己的算法名和源文件,则还需要修改库的src/sim env/ launch /include /navigation/目录下的move base.launch.xml等文件

(6)robot1_local_planner

robot1_local_planner用于设定编号为robot1的机器人所使用的局部路径算法,局部路径算法的实现文件在库的src/planner/local_planner/目录下,库中提供了四个局部路径规划算法,对应四个局部路径规划器插件,详细如下:

①、插件dwa_planner/DWAPlanner对应的算法是:dwa

②、插件pid_planner/PIDPlanner对应的算法是:pid

③、插件apf_planner/APFPlanner对应的算法是:apf

④、插件static_planner/StaticPlanner对应的算法是:static

四个局部路径规划器插件对应4种局部路径规划算法可供我们选择,上面的示例文件中使用的是apf算法,我们可以尝试修改为以上其他4种算法中的任意一个来测试其效果

当然,我们也可以编写自己的全局路径规划器算法,较容易的方式,是直接在以上4种算法中最接近的1种的源文件上进行修改,若创建自己的算法名和源文件,则还需要修改库的src/sim env/ launch /include /navigation/目录下的move base.launch.xml等文件

(7)robot1_x_pos、robot1_y_pos、robot1_z_pos、robot1_yaw

robot1_x_pos、robot1_y_pos、robot1_z_pos、robot1_yaw分别用于设定编号为robot1的机器人的初始位置和姿态角,对于位置设定为地图中任意一个非障碍物点都行

经过我的测试,目前不支持任意修改初始姿态角robot1_yaw,其值保持为0即可,若修改为其他值rviz中显示的雷达坐标系将出现问题。

(8)行人插件 pedestrians

除了上述必备的配置参数外,库中还提供了行人插件pedestrians,若想启用该功能,则需要取消对该插件的注释

如下所示,该插件可以在仿真环境中添加动态的行人来充当动态障碍物,对规划算法的性能进行测试,使用该插件同样需要提供一个名为pedestrian_config.yaml参数配置文件,将在本文第三部分的第2小节,也就是下一小节中对该参数配置文件进行详细的介绍。

plugins:
  pedestrians: "pedestrian_config.yaml"

(9)新增障碍物插件 obstacles_config

除了行人插件,库中还提供了新增障碍物插件 obstacles_config,若想启用该功能,则需要取消对该插件的注释

如下所示,该插件可以在仿真环境中添加新的静态障碍物,新增的障碍物在SLAM建图产生的静态地图map中并不存在

因此,可以用来测试规划算法对新感知到的障碍物的避障能力,使用该插件同样需要提供一个名为obstacles_config.yaml参数配置文件,将在本文第三部分的第3小节中对该参数配置文件进行详细的介绍。

plugins:
  obstacles: "obstacles_config.yaml"
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真
    +关注

    关注

    50

    文章

    3903

    浏览量

    132590
  • 插件
    +关注

    关注

    0

    文章

    313

    浏览量

    22246
  • ROS
    ROS
    +关注

    关注

    1

    文章

    274

    浏览量

    16790
收藏 人收藏

    评论

    相关推荐

    为什么配置文件中的参数值突然全部变成0

    程序中需要用到很多参数,每次调用前从配置文件(.ini)读取参数,需要修改这些参数时,再用写.ini文件
    发表于 11-29 09:53

    使用用于MCS-51的IAR嵌入式平台编写的一个示例程序程序免费下载

    本文档的主要内容详细介绍的是使用用于MCS-51的IAR嵌入式平台编写的一个示例程序程序免费下载。
    发表于 08-15 17:32 1次下载
    使用用于MCS-51的IAR嵌入式平台<b class='flag-5'>编写</b>的一个<b class='flag-5'>示例程序</b><b class='flag-5'>程序</b>免费下载

    Python使用示例程序和工程文件免费下载

    本文档的主要内容详细介绍的是Python使用示例程序和工程文件免费下载。
    发表于 06-15 08:00 6次下载
    Python使用<b class='flag-5'>示例程序</b>和工程<b class='flag-5'>文件</b>免费下载

    《我和 LabVIEW》示例程序分享

    《我和 LabVIEW》示例程序分享
    发表于 12-07 17:30 17次下载

    配置文件例程文件的使用

    上期讲述了AMetal平台驱动框架中的硬件层,介绍了硬件层的驱动是如何实现及其硬件层接口的定义,逐渐深入了解AMetal平台。接下来向大家介绍配置文件例程文件的使用,以此可灵活使用相应外设的资源。
    的头像 发表于 04-07 11:49 1818次阅读
    <b class='flag-5'>配置文件</b>和<b class='flag-5'>例程</b><b class='flag-5'>文件</b>的使用

    SpringBoot配置文件application

    ("#{${sys-num.mymap}}") private MapString, String numMap;} cron表达式 YML配置文件: schedule: 0 0 / 1 * * * ? 代码示例
    的头像 发表于 01-13 15:28 471次阅读

    教程 2:自定义配置文件示例

    教程 2:自定义配置文件示例
    发表于 03-13 19:33 0次下载
    教程 2:自定义<b class='flag-5'>配置文件</b><b class='flag-5'>示例</b>

    教程 3:自定义配置文件 gatt cmd 示例

    教程 3:自定义配置文件 gatt cmd 示例
    发表于 03-15 19:40 0次下载
    教程 3:自定义<b class='flag-5'>配置文件</b> gatt cmd <b class='flag-5'>示例</b>

    教程 2:自定义配置文件示例

    教程 2:自定义配置文件示例
    发表于 07-04 20:50 1次下载
    教程 2:自定义<b class='flag-5'>配置文件</b><b class='flag-5'>示例</b>

    教程 3:自定义配置文件 gatt cmd 示例

    教程 3:自定义配置文件 gatt cmd 示例
    发表于 07-06 18:50 0次下载
    教程 3:自定义<b class='flag-5'>配置文件</b> gatt cmd <b class='flag-5'>示例</b>

    linux修改网卡ip配置文件

    、子网掩码、网关等参数。本文将详细介绍如何修改Linux的网卡ip配置文件。 首先,在Linux中,网络接口的配置文件一般位于/etc/sysconfig/network-scripts/目录下,
    的头像 发表于 11-17 10:51 1519次阅读

    springboot的全局配置文件有几种

    Spring Boot是一种快速开发框架,其通过提供配置文件来实现对应用程序配置。全局配置文件在Spring Boot中起着非常重要的作用,可以用于
    的头像 发表于 12-03 15:28 693次阅读

    springboot的核心配置文件有哪些

    的工作量。 Spring Boot的核心配置文件主要有以下几个: application.properties:Spring Boot应用程序的主要配置文件。它使用Java的键值对格式来定义各种
    的头像 发表于 12-03 15:30 755次阅读

    php的配置文件是什么

    PHP的配置文件是一种用于配置PHP解释器的文本文件。它包含了一系列的指令和选项,用于影响PHP的行为和性能。通过修改配置文件,可以改变PHP解释器的默认行为,从而满足不同的需求。 在
    的头像 发表于 12-04 15:55 1097次阅读

    支持CiA402驱动器配置文件示例程序用于通过EtherCAT®通信进行电机控制

    电子发烧友网站提供《支持CiA402驱动器配置文件示例程序用于通过EtherCAT®通信进行电机控制.pdf》资料免费下载
    发表于 02-21 14:21 1次下载
    支持CiA402驱动器<b class='flag-5'>配置文件</b>的<b class='flag-5'>示例程序</b>用于通过EtherCAT®通信进行电机控制