当前位置:   article > 正文

【嵌入式应用学习笔记 04】ROS-URDF机器人建模_urdf 质量分布

urdf 质量分布

1.URDF简介

URDF,全称为统一机器人描述格式(Unified Robot Description Format),是一个基于XML的语法框架,用于在机器人操作系统(ROS)中描述和定义机器人模型。

1.1 URDF标签

既然我们知道URDF是一种基于XML的语法框架,那必然是会使用到标签去描述和定义机器人模型,下面是关于URDF所使用的标签的介绍
URDF内容:

  • link 连杆
  • joint 关节
  • axis 运动学参数
  • dynamics 动力学参数
  • visual 可视化模型
  • collision 碰撞检测模型

1.1.1 link标签

link 标签说明
link标签它定义了机器人的各个刚体部分,如底座、轮子、激光雷达和摄像头等。这些实体部件都是机器人模型中可见的部分,每个部件都对应一个link标签。以下是link标签的一些关键属性:

  • 形状和尺寸:通过指定几何特征,如立方体、圆柱体或自定义的3D模型,来定义部件的形状。尺寸则通过几何特征的参数,如长度、宽度和高度来确定。
  • 颜色:可以设置部件的颜色,这在视觉呈现上很重要,有助于区分不同的部件或高亮显示特定的部件。
  • 惯性矩阵:这个属性描述了部件的质量分布,对于动力学仿真和碰撞效果的准确计算非常关键。
  • 碰撞参数:定义了部件在物理仿真中如何与其他物体发生相互作用,包括摩擦系数和弹性系数等。
    xml的格式的描述
<link name="<link name>">
<!-- 描述机器人link部分的外观参数, 尺寸、颜色、形状等的外观信息 -->
	<inertial>......</inertial>
	<!-- 描述link的惯性参数,主要用到机器人动力学的运算部分 -->
	<visual>......</visual>
	<!-- 描述link的碰撞属性 -->
	<collision>......</collision>
</link>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.1.2 joint标签

在URDF(Unified Robot Description Format)中,joint标签用于描述机器人关节的运动学和动力学属性。
以下是joint标签的xml表示

<joint name="joint1" type="revolute">
    <parent link="base_link"/> <!-- 父链接的名称 -->
    <child link="link1"/> <!-- 子链接的名称 -->
    <origin xyz="0 0 0" rpy="0 0 0"/> <!-- 关节的原点位置 -->
    <axis xyz="0 0 1"/> <!-- 关节的运动轴 -->
    <limit lower="-1.57" upper="1.57" effort="10" velocity="1"/> <!-- 运动的限制范围、力矩限制和速度限制 -->
  </joint>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

1.1.3 robot标签

robot标签在URDF中作为根标签使用,以确保XML语法的完整性。
以下是robot标签的XML的格式表示

<robot name="name of the robot">
	<link>......</link>
	<link>......</link>
	<joint>......</joint>
	<joint>......</joint>
</robot>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.URDF的建模实现

首先我们建立一个用来描述机器人建模的功能包,首先创造一个ros的工作空间

mkdir -p ~/catkin_ws/src
  • 1

初始化工作空间

cd ~/ctakin_ws/src
catkin_init_spacework
  • 1
  • 2

初始化完成之后会在catkin_ws/src中创建一个CMakeLists.txt文件
在这里插入图片描述
回到刚刚创建的工作空间中,对工作空间进行编译

cd ~/catkin_ws
catkin_make
  • 1
  • 2

在这里插入图片描述
编译完成之后,catkin_ws中会出现build文件夹和devel文件夹
在这里插入图片描述
进入src文件中,建立一个新的功能包

cd ~/catkin_ws/src
catkin_create_pkg mbot_description urdf xacro
  • 1
  • 2

在这里插入图片描述
进入我们新建的功能包,创建四个文件夹

cd ./catkin_ws/src/mbot_description
mkdir urdf
mkdir meshes
mkdir launch
mkdir config
  • 1
  • 2
  • 3
  • 4
  • 5
  • urdf :存放机器人模型的URDF或xacro文件
  • launch:保存相关启动文件
  • config:保存rviz的配置文件、功能包的配置文件
  • meshes:放置URDF中引用的模型渲染文件,机器人外观纹理,让外观和实际更相似

创建我们的launch启动文件

cd ./catkin_ws/src/mbot_description/launch
sudo gedit display_mbot_base_urdf.launch
  • 1
  • 2

写入以下内容

<launch>
   <!-- 加载的参数名字叫robot_description,具体内容是urdf相关模型的路径 -->
	<param name="robot_description" textfile="$(find mbot_description)/urdf/mbot_base.urdf" />
	<!-- 设置GUI参数,显示关节控制插件 -->
	<param name="use_gui" value="true"/>
	<!-- 运行joint_state_publisher节点,发布机器人的关节状态  -->
	<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
	<!-- 运行robot_state_publisher节点,发布tf  -->
	<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
	<!-- 运行rviz可视化界面,保存每次打开之后的相关插件,保存到config文件夹下面 -->
	<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_urdf.rviz" required="true" />
</launch>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

接下来创建我们的URDF模型
我们创建一个原型底盘的小车

cd ./catkin_ws/src/mbot_description/urdf
sudo gedit mbot_base.urdf
  • 1
  • 2

写入以下内容

<?xml version="1.0" ?>
<robot name="mbot">
    <link name="base_link">
        <visual>
            <origin xyz=" 0 0 0" rpy="0 0 0" />

            <geometry>
                <cylinder length="0.16" radius="0.20"/>
            </geometry>

            <material name="yellow">
                <color rgba="1 0.4 0 1"/>
            </material>

        </visual>

    </link>
    <joint name="left_wheel_joint" type="continuous">
    
        <origin xyz="0 0.19 -0.05" rpy="0 0 0"/>
        
        <parent link="base_link"/>
        <child link="left_wheel_link"/>
        
       
        
        <axis xyz="0 1 0"/>
        
    </joint>
     
    <link name="left_wheel_link">
        <visual>
            <origin xyz="0 0 0" rpy="1.5707 0 0" />
            <geometry>
                <cylinder radius="0.06" length = "0.025"/>
            </geometry>
            <material name="white">
                <color rgba="1 1 1 0.9"/>
            </material>
        </visual>
    </link>
 
    <joint name="right_wheel_joint" type="continuous">
        <origin xyz="0 -0.19 -0.05" rpy="0 0 0"/>

        <parent link="base_link"/>
        <child link="right_wheel_link"/>
        <axis xyz="0 1 0"/>
    </joint>
    <link name="right_wheel_link">
        <visual>
            <origin xyz="0 0 0" rpy="1.5707 0 0" />
            <geometry>
                <cylinder radius="0.06" length = "0.025"/>
            </geometry>
            <material name="white">
                <color rgba="1 1 1 0.9"/>
            </material>
        </visual>
    </link>

    <joint name="front_caster_joint" type="continuous">
        <origin xyz="0.18 0 -0.095" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="front_caster_link"/>
        <axis xyz="0 1 0"/>
    </joint>

    <link name="front_caster_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <sphere radius="0.015" />

            </geometry>
            <material name="black">
                <color rgba="0 0 0 0.95"/>
            </material>
        </visual>
    </link>

    <joint name="back_caster_joint" type="continuous">
        <origin xyz="-0.18 0 -0.095" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="back_caster_link"/>
        <axis xyz="0 1 0"/>
    </joint>

    <link name="back_caster_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <sphere radius="0.015" />
            </geometry>
            <material name="black">
                <color rgba="0 0 0 0.95"/>
            </material>
        </visual>
    </link>




</robot>


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106

保存,我们查看一下模型

roslaunch mbot_description display_mbot_base_urdf.launch

  • 1
  • 2

如果没有模型显示,可以进行以下步骤
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
就会出现我们刚刚设计好的模型了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/671536
推荐阅读
相关标签
  

闽ICP备14008679号