学习笔记34-- 在urdf里面引用yaml文件参数来定义link的位置样式

环境:ubuntu16.04 ros-kinetic gazebo7.16

来源:
urdf里面有些link的位置参数是可调的,希望可以从一个yaml文件里面统一读取.

下面介绍如何把yaml文件参数加载到urdf里面.要注意,这里假设urdf采用的是xacro格式是编写的

<?xml version="1.0"?>

  <robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="robot">
..........
<xacro:property name="a_params"
			value="${load_yaml('/xxx/a_params.yaml')}" />//把指定路径上面的a_params.yaml文件加载进来
<xacro:property name="urdf_params"
			value="${a_params['urdf_params']}" />//读取a_params.yaml文件内的urdf_params这一节的内容
......................
<xacro:property name="link_a_xyz_x"
			value="${urdf_params['link_a_xyz_x']}" />//读取yaml文件中urdf_params这一节下面的link_a_xyz_x成员对应的参数0.5,
			//相应的link位置定义时,需要用该这个link_a_xyz_x的参数值时,直接使用${link_a_xyz_x}引用即可(基本的xacro操作)
.......................
<!--robot_link_description-->
..........
</robot>

或者这么说可能有点迷糊,对比一下yaml文件,可能会很清晰了.下面给出的是a_params.yawl内部文件分布的样式:

bb_params: //bb_params节
  type: "velocity_controllers/JointPositionController"//bb_params节内的参数type以及对应的量值"velocity_controllers/JointPositionController"
  joint: bbbb_link//bb_params节内的参数joint以及对应的量值bbbb_link,下面以此类推
  pid: {
    
    p: 100.0, i: 0.01, d: 1.0}

urdf_params://urdf_params节
  link_a_xyz_x: 0.5//urdf_params节的link_a_xyz_x参数以及对应的量值0.5
  link_a_xyz_y:: 0.06

cc_params:
  cc_x: 1
  cc_y: 2

yanl文件的内容布局,一定要注意,否则,运行时,无法将目标参数读进urdf里面的.

如果对yaml文件的编写方式不理解的话,可以查一下yaml-cpp相关资料查看;这里展示的是,将一个编写规范的yanl文件参数读取到urdf的.

###################
好记性不如烂笔头
'–20200729

猜你喜欢

转载自blog.csdn.net/qq_45701501/article/details/107669222
今日推荐