
如下所示:


urdf模型的根标签是


创建机器人模型的功能包
cd ~/catkin_ws/src
catkin_create_pkg robot_description urdf xacro //ros约定俗称的将机器人描述文件命名为:机器人名字_description
我们创建的机器人模型功能包需要依赖urdf功能包和xacro功能包. urdf函数包用于解析机器人模型.
然后在功能包中创建几个具有不同功能的文件夹. urdf文件夹用于存储机器人模型的urdf文件或xacro文件,meshes文件夹用于放置urdf中引用的模型渲染文件,launch文件夹用于放置相关的启动文件,而config文件夹用于放置rviz配置文件.

创建机器人模型urdf文件
在urdf文件夹中创建一个新文件,此处名为myrobot_base.urdf. 然后编写以下代码以添加正文链接:
<?xml version="1.0" ?> <!-- 声明这是一个xml文件 -->
<robot name="myrobot"> <!-- 根标签,同时定义机器人名称 -->
<link name="base_link"> <!-- 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"/> <!-- 设置连杆颜色的rgba数值,a表示透明度,从0到1透明度逐渐下降 -->
</material>
</visual>
</link>
</robot>
设置rviz配置文件
在rviz中移动机器人系统:建模,您可以使用其工具栏中的工具来保存用作配置文件的配置信息,或者可以通过将配置文件添加到config文件夹来使用现有的配置文件. 选择此处使用现有的配置文件.
创建启动文件以显示模型
一般格式为:
<launch>
<!-- 设置模型文件路径参数,其中myrobot_base.urdf为机器人模型文件-->
<param name="robot_description" textfile="$(find myrobot_description)/urdf/myrobot_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可视化界面,其中myrobot_urdf.rviz 为rviz的配置文件-->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find myrobot_description)/config/myrobot_urdf.rviz" required="true" />
</launch>
其中,joint_state_publisher节点发布每个关节的状态(固定类型除外),例如关节的当前角度. robot_state_publisher节点将发布tf关系.
让我们运行启动文件以查看模型的效果:

roslaunch myrobot_description display_myrobot_base_urdf.launch
效果如下:

其中,图中的每个网格都是边长为1m的正方形,对应于模型文件中坐标位置1的单位. 接下来,使用圆柱体基于车身创建车轮. 添加车轮链接和两个链接之间的关节,如下所示:
<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"/> <!-- 指定旋转轴线,这里是y轴 -->
</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>
重新运行启动文件以查看新添加的轮子:

为了直观地看到新添加的关节零件的坐标系与车身坐标系之间的关系,我们在rviz坐标模型列表栏中取消选择RobotModel. 效果如下:

我们还可以随意修改模型文件中的参数,以查看其效果. 例如,将在关节定义中初始化的坐标位置的x轴值修改为0.3. 去外面. 换句话说,在urdf文件中为每个零件定义的参数是相对参数,并且每个零件的坐标系都相对于上一个零件进行了转换.
![]()

以同样的方式,我们可以将右轮添加到购物车中.
<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>
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-179123-1.html
喜欢支持你