篇首语:本文由小编为大家整理,主要介绍了《ROS理论与实践》学习笔记URDF机器人建模相关的知识,希望对你有一定的参考价值。
《ROS理论与实践》学习笔记(四)URDF机器人建模
- 课程内容
- 1.URDF建模方法
- 2.机器人建模功能包创建
- 3.检查urdf模型结构
- 本讲作业
- 创建一个自己的机器人模型
- 结语
在学习《ROS理论与实践》课程时,记录了学习过程中的编程练习,课后作业以及发现的问题,后续会对尚未解决的问题继续分析并更新,纯小白,仅供参考。
本次学习笔记关于课程中的第五讲:URDF机器人建模 。主要学习了ROS的URDF建模方法。
课程内容
1.URDF建模方法
- < link >
描述机器人某个刚体部分的外观和物理属性 - < joint >
描述两个link之间的关系,包括关节运动的位置和速度限制
关节类型 | 描述 |
---|---|
continuous | 旋转关节 ,可绕单轴无限旋转 |
rebolute | 旋转关节,有旋转角度极限 |
prismatic | 滑动关节,右位置极限 |
planar | 平面关节,允许在平面正交方向上平移或旋转 |
floating | 浮动关节,允许平移、旋转运动 |
fixed | 固定关节 |
- < robot >
机器人模型顶层标签<robot name="xxx"><link> ... link><link> ... link><joint> ... joint><joint> ... joint>robot>
2.机器人建模功能包创建
$ catkin_create_pkg mybot_description urdf xacro
文件夹名称 | 功能 |
---|---|
urdf | 存放机器人模型的urdf或xacro文件 |
meshes | 放置urdf中引用的模型渲染文件 |
launch | 保存相关启动文件 |
config | 保存rviz的配置文件 |
3.检查urdf模型结构
$ urdf_to_graphiz mybot_base.urdf
本讲作业
创建一个自己的机器人模型
urdf模型文件如下:
<robot name="mybot"> <link name="base_link"> <visual> <origin xyz=" 0 0 0" rpy="0 0 0" /> <geometry> <cylinder length="0.05" radius="0.20"/> geometry> <material name="yellow"> <color rgba="1 0.4 0 1"/> material> visual> link> <joint name="left_motor_joint" type="fixed"> <origin xyz="-0.1 0.11 0" rpy="0 0 0"/> <parent link="base_link"/> <child link="left_motor_link"/> <axis xyz="0 1 0"/> joint> <link name="left_motor_link"> <visual> <origin xyz="0 0 0" rpy="1.5707 0 0" /> <geometry> geometry> <material name="white"> <color rgba="1 1 1 0.9"/> material> visual> link> <joint name="left_wheel_joint" type="continuous"> <origin xyz="0 0.1025 0" rpy="0 0 0"/> <parent link="left_motor_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> geometry> <material name="white"> <color rgba="1 1 1 0.9"/> material> visual> link> <joint name="right_motor_joint" type="fixed"> <origin xyz="-0.1 -0.11 0" rpy="0 0 0"/> <parent link="base_link"/> <child link="right_motor_link"/> <axis xyz="0 1 0"/> joint> <link name="right_motor_link"> <visual> <origin xyz="0 0 0" rpy="1.5707 0 0" /> <geometry> 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.1025 0" rpy="0 0 0"/> <parent link="right_motor_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> 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.025" 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.025" rpy="1.5707 0 0"/> <geometry> geometry> <material name="black"> <color rgba="0 0 0 0.95"/> material> visual> link> <link name="camera_link"> <visual> <origin xyz=" 0 0 0 " rpy="0 0 0" /> <geometry> <box size="0.03 0.04 0.04" /> geometry> <material name="black"> <color rgba="0 0 0 0.95"/> material> visual> link> <joint name="camera_joint" type="fixed"> <origin xyz="0.17 0 0.025" rpy="0 0 0"/> <parent link="base_link"/> <child link="camera_link"/> joint> <link name="kinect_link"> <visual> <origin xyz="0 0 0" rpy="0 0 1.5708"/> <geometry> <mesh filename="package://mybot_description/meshes/kinect.dae" /> geometry> visual> link> <joint name="kinect_joint" type="fixed"> <origin xyz="0.11 0 0.06" rpy="0 0 0"/> <parent link="base_link"/> <child link="kinect_link"/> joint>robot>
launch文件代码如下:
<launch><param name="robot_description" textfile="$(find mybot_description)/urdf/mybot_all.urdf" /><param name="use_gui" value="true"/><node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" /><node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" /><node name="rviz" pkg="rviz" type="rviz" args="-d $(find mybot_description)/config/mybot_urdf.rviz" required="true" />launch>
运行效果:
$ roslaunch mybot_description display_mybot_all_urdf.launch
结语
本讲主要学习了urdf的建模方法,并完成了自己的机器人模型的建模。
以上是关于《ROS理论与实践》学习笔记URDF机器人建模的主要内容,如果未能解决你的问题,请参考以下文章