机器人的惯性、视觉、碰撞特征计算与表示

在URDF中,机器人模型由连接件(link)和连接件的关节(joint)、传感器(sensor)传动件(transmission)等部件组成。
1.连接件
在urdf支持连接件的标签为link,link标签用于描述具有惯性和视觉特征的刚体,也即机器人的物理部件。link标签通过name属性描述连接件的名称。
link标签可包含inertial(惯性特征),visual(视觉特征),collision(碰撞特征)等标签
(1)惯性特征
物体的惯性和物体的质量,形状,以及质量分布有关,出于计算复杂性和刚体特征考虑,通常默认质量是均匀分布的。

对于三维空间中任意以参考点K,一次参考点为原点的直角坐标系Kxyz,一个刚体的惯性张量I 可以表示为3X3的矩阵。

矩阵的对角元素Ixx、Iyy、Izz 分别对应x、y、z轴的转动惯量。

设定(x,y,z)为微小质量dm对于点K的相对位置。则这些转动惯量以方程式定义为

Ixx=∫(y*y+z*z)dm

Iyy=∫(x*x+z*z)dm

Izz=∫(x*x+y*y)dm

矩阵的非对角元素,称为惯性积, 以方程式定义为(在计算中通常将惯性积取负值),
 

Ixy=Iyx=∫x*y dm

Ixz=Izx=∫x*z dm

Iyz=Iyz=∫y*z dm

对于半径r和质量为m的实心球体,其选红钻惯性矩阵为:

\begin{bmatrix} \frac{2}{5}mr^{2} & 0 & 0\\ 0& \frac{2}{5}mr^{2} &0 \\ 0& 0 & \frac{2}{5}mr^{2} \end{bmatrix}

球体:

    <!-- Macro for inertia matrix -->
    <xacro:macro name="sphere_inertial_matrix" params="m r">
        <inertial>
            <mass value="${m}" />
            <inertia ixx="${2*m*r*r/5}" ixy="0" ixz="0"
                iyy="${2*m*r*r/5}" iyz="0" 
                izz="${2*m*r*r/5}" />
        </inertial>
    </xacro:macro>

球体矩阵模块使用:

<sphere_inertial_matrix  m="${caster_mass}" r="${caster_radius}" />
扫描二维码关注公众号,回复: 9794826 查看本文章

对于宽度w、高h、长为d、质量为m的实心立方体,其旋转惯性矩阵为:

\begin{bmatrix} \frac{1}{12}m\left ( h^{2} +d^{2}\right )& 0 & 0\\ 0& \frac{1}{12}m\left ( w^{2} +d^{2}\right ) &0 \\ 0& 0 & \frac{1}{12}m\left ( h^{2} +h^{2}\right ) \end{bmatrix}

立方体惯性矩阵模块:

   <xacro:macro name="Box_inertial_matrix" params="m l w h">
       <inertial>
               <mass value="${m}" />
               <inertia ixx="${m*(h*h + l*l)/12}" ixy = "0" ixz = "0"
                   iyy="${m*(w*w + l*l)/12}" iyz= "0"
                   izz="${m*(w*w + h*h)/12}" />
       </inertial>
   </xacro:macro>


对于半径r、高为h、质量为m、的实心圆柱体,其旋转惯性矩阵为:

\begin{bmatrix} \frac{1}{12}m(3r^{2}+h^{2}) &0 &0 \\ 0& \frac{1}{12}m(3r^{2}+h^{2}) &0 \\ 0 & 0 & \frac{1}{2}mr^{2} \end{bmatrix}

圆柱体定义:
 

    <xacro:macro name="cylinder_inertial_matrix" params="m r h">
        <inertial>
            <mass value="${m}" />
            <inertia ixx="${m*(3*r*r+h*h)/12}" ixy = "0" ixz = "0"
                iyy="${m*(3*r*r+h*h)/12}" iyz = "0"
                izz="${m*r*r/2}" /> 
        </inertial>
    </xacro:macro>


圆柱体惯性矩阵使用:

<cylinder_inertial_matrix  m="${wheel_mass}" r="${wheel_radius}" h="${wheel_length}" />


(2)视觉特征
visual标签定义了连接件的视觉特征,可包含的子标签有origin、geometry、material、mesh等。其中origin标签定义了连接件的位姿;geometry定义了连接件的几何特征。
目前支持立方体(box),圆柱体(cylinder)、球体(sphere)等。material定义了连接件的材料特征,支持颜色(color),纹理(texture)等;mesh定义了导入三维建模文件,格式为dae,stl等
视觉特征定义使用RGB色表

    <!-- Defining the colors used in this robot -->
    <material name="blue">
        <color rgba="0 0 0.8 1"/>
    </material>
    <material name="black">
        <color rgba="0 0 0 0.95"/>
    </material>
    <material name="green">
        <color rgba="1 0 0 1"/>
    </material>

     <material name="white">
        <color rgba="1 1 1 1"/>
    </material>


(3)碰撞特征
collision标签定义了连接件的碰撞特征,可包含的子标签有origin,geometry等。其中origin标签定义了连接件的位姿检测区相对于link的偏移位置;geometry定义了连接件的几何特征,目前支持立方体(box),圆柱体(cylinder)、球体(sphere)等。
需要注意的是,origin标签是利用空间笛卡尔直角坐标系和欧拉角来描述位姿,其中xyz属性描述了连接件X,Y,Z轴上的偏移;rpy属性描述了连接件X,Y,Z轴上的旋转角度,即欧拉角中的滚转角(Roll)、俯仰角(Pitch),偏航角(Yaw),顺时针为正,逆时针为负

<collision>
     <origin xyz="0 0 0" rpy="${M_PI/2} 0 0" />
     <geometry>
     <cylinder radius="${wheel_radius}" length = "${wheel_length}"/>
     </geometry>
</collision>

发布了45 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42005898/article/details/103883229