指点成金-最美分享吧

登录

《ROS理论与实践》学习笔记URDF机器人建模

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了《ROS理论与实践》学习笔记URDF机器人建模相关的知识,希望对你有一定的参考价值。

《ROS理论与实践》学习笔记(四)URDF机器人建模

  • 课程内容
    • 1.URDF建模方法
    • 2.机器人建模功能包创建
    • 3.检查urdf模型结构
  • 本讲作业
    • 创建一个自己的机器人模型
  • 结语

在学习《ROS理论与实践》课程时,记录了学习过程中的编程练习,课后作业以及发现的问题,后续会对尚未解决的问题继续分析并更新,纯小白,仅供参考。
本次学习笔记关于课程中的第五讲:URDF机器人建模 。主要学习了ROS的URDF建模方法。


课程内容

1.URDF建模方法

  1. < link >
    描述机器人某个刚体部分的外观和物理属性
  2. < joint >
    描述两个link之间的关系,包括关节运动的位置和速度限制
关节类型描述
continuous旋转关节 ,可绕单轴无限旋转
rebolute旋转关节,有旋转角度极限
prismatic滑动关节,右位置极限
planar平面关节,允许在平面正交方向上平移或旋转
floating浮动关节,允许平移、旋转运动
fixed固定关节
  1. < 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机器人建模的主要内容,如果未能解决你的问题,请参考以下文章