urdf_Notes

urdf_Notes

<!---balabala-->是xml中的注释

<?xml version="1.0"?>
<robot name="origins">
  
  <material name="white">	<!--事先定义好颜色,定义名字,后面直接写一句直接引用-->
    <color rgba="1 1 1 1"/>
  </material>
    
    
  <link name="base_link">
    <visual>
      <geometry>
        <cylinder length="0.6" radius="0.2"/>
      </geometry> <!--此标签下同级别可以添加属性,比如物体的旋转,平移,颜色-->
    </visual>
  </link>

  <link name="right_leg">
    <visual>
      <geometry>
        <box size="0.6 0.1 0.2"/> <!-- 在三轴上居中延展 -->
      </geometry>
      <origin rpy="0 1.57075 0" xyz="0 0 -0.3"/> <!-- rpy表示顺时针绕3轴的角度,						pi/2 = 1.57075 xyz表示物体沿着坐标轴的特定方向移动多少-->
    </visual>
  </link>

  <joint name="base_to_right_leg" type="fixed">
    <parent link="base_link"/> <!--依附于base_link?-->
    <child link="right_leg"/> <!--被right_leg依附?-->
    <origin xyz="0 -0.22 0.25"/>
  </joint>

  <link name="head">
    <visual>
      <geometry>
        <sphere radius="0.2"/> <!--添加球体-->
      </geometry>
      <material name="white"/> <!--由于上文定义好了颜色参数,所以这里直接调用,注意后面的/不要丢-->
    </visual>
  </link>
  
    <link name="left_gripper">
    <visual>
      <origin rpy="0.0 0 0" xyz="0 0 0"/>
      <geometry> <!--引入网格,要写好文件位置-->
        <mesh filename="package://urdf_tutorial/meshes/l_finger.dae"/>
      </geometry>
    </visual>
  </link>
    
</robot>

joints: continuous, revolute and prismatic.

关节类型:连续关节,转动关节,移动关节

  <joint name="head_swivel" type="continuous">
    <parent link="base_link"/>
    <child link="head"/>
    <axis xyz="0 0 1"/>
    <origin xyz="0 0 0.3"/>
  </joint>

连续关节continuous,可以一直转,就像轮子一样。与固定关节不同的是,要添加旋转轴axis,例如001表示绕z轴旋转

  <joint name="left_gripper_joint" type="revolute">
    <axis xyz="0 0 1"/>
    <limit effort="1000.0" lower="0.0" upper="0.548" velocity="0.5"/>
    <origin rpy="0 0 0" xyz="0.2 0.01 0"/>
    <parent link="gripper_pole"/>
    <child link="left_gripper"/>
  </joint>

转动关节revolute,类似连续关节,但是有限制,不能无限转。比如角度限制,lower->upper,也要指定力effort和速度velocity

  <joint name="gripper_extension" type="prismatic">
    <parent link="base_link"/>
    <child link="gripper_pole"/>
    <limit effort="1000.0" lower="-0.38" upper="0" velocity="0.5"/>
    <origin rpy="0 0 0" xyz="0.19 0 0.2"/>
  </joint>

移动关节prismatic,在父子link上伸缩,要制定力和速度,也有限制,与转动关节的角度限制不同,移动关节的限制体现在伸缩的距离上,单位是米

 此外本教程还用了两个关节,平面关节planar joints,浮动关节floating joint

Notes: GUI与rviz的信息交互

当您在GUI中移动滑块时,模型在Rviz中也会移动。这是怎么做到的?首先,GUI解析URDF并找到所有的非固定连接及其限制。然后,它使用滑块的值发布sensor_msgs/JointState消息。然后,robot_state_publisher使用它们来计算不同部分之间的所有转换。然后使用生成的转换树来显示Rviz中的所有形状。

【应该是launch文件中生成的GUI界面吧】

  <link name="base_link">
    <visual>
      <geometry>
        <cylinder length="0.6" radius="0.2"/>
      </geometry>
      <material name="blue"/>
    </visual>
    <collision> <!--碰撞属性-->
      <geometry>
        <cylinder length="0.6" radius="0.2"/>
      </geometry>
    </collision>
    <inertial> <!--惯性-->
      <mass value="10"/>
      <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
    </inertial> <!--单位是kg-->
  </link>

碰撞属性和惯性都与visual平级

关节如何运动是由关节的动力学标签定义的。这里有两个属性:

摩擦力friction-物理静摩擦。对于移动关节,单位是牛顿。对于旋转关节,单位是牛顿·米。

-物理阻尼值damping。对于移动关节,单位是牛顿秒每米。对于旋转关节,牛顿米秒每弧度。

如果没有指定,这些系数默认为零。

Xacro

使用xacro开头一定要引入第二行中的xmlns:xacro="xacro - ROS Wiki"

<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="firefighter">

<xacro:property name="width" value="0.2" /><xacro:property name="bodylen" value="0.6" /><link name="base_link">    <visual>        <geometry>            <cylinder radius="${width}" length="${bodylen}"/>        </geometry>        <material name="blue"/>    </visual>    <collision>        <geometry>            <cylinder radius="${width}" length="${bodylen}"/>        </geometry>    </collision></link>

上面两行类似于变量定义,后面使用的时候类似shell的变量用法,用${变量名}的形式来表示变量

<xacro:property name=”robotname” value=”marvin” />
<link name=”${robotname}s_leg” />

<link name=”marvins_leg” />

也可以在${变量名}前后加字符串进行组合,上两行与下面一行作用一致

当然,${}内也可以放表达式,四则运算以及sin, cos都可以使用

<xacro:macro name="default_origin">
    <origin xyz="0 0 0" rpy="0 0 0"/>
</xacro:macro>
<xacro:default_origin />

<origin rpy="0 0 0" xyz="0 0 0"/>

类似颜色的定义,第四行的使用,会被xacro标签中夹的内容替换,作用与最后一行一致

    <xacro:macro name="default_inertial" params="mass">
        <inertial>
                <mass value="${mass}" />
                <inertia ixx="1.0" ixy="0.0" ixz="0.0"
                     iyy="1.0" iyz="0.0"
                     izz="1.0" />
        </inertial>
    </xacro:macro>

可以添加参数,在第一行指定参数变量名,中间写参数具体使用的标签

使用的时候:

<xacro:default_inertial mass="10"/> <!--质量为10kg-->

代码块也可以作参数

<xacro:macro name="blue_shape" params="name *shape">
    <link name="${name}">
        <visual>
            <geometry>
                <xacro:insert_block name="shape" />
            </geometry>
            <material name="blue"/>
        </visual>
        <collision>
            <geometry>
                <xacro:insert_block name="shape" />
            </geometry>
        </collision>
    </link>
</xacro:macro>

<xacro:blue_shape name="base_link">
    <cylinder radius=".42" length=".01" />
</xacro:blue_shape>

gazebo

gezebo urdf的接触参数

mu:摩擦系数 mu1,mu2代表两个不同的摩擦力方向

kp:刚度系数

kd:阻尼系数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值