ROS kinetic URDF机器人建模

本文档介绍了如何在ROS Kinetic中使用urdf和xacro创建机器人模型。首先,通过`catkin_create_pkg`命令创建了一个名为`mbot_description`的包,接着在该包下创建了`urdf`、`meshes`、`launch`和`config`目录,分别用于存放URDF文件、模型渲染文件、启动文件和配置文件。`display_mbot_base_urdf.launch`文件用于加载并显示机器人模型,而`mbot_base.urdf`是机器人的URDF描述。通过`roslaunch`命令运行launch文件,并使用`urdf_to_graphviz`将URDF转换为图形进行查看。最后,提供了相关教程链接作为参考。
摘要由CSDN通过智能技术生成
创建一个功能包
kinetic@vm:~$ cd catkin_ws/src/
kinetic@vm:~/catkin_ws/src$ ls
CMakeLists.txt 

kinetic@vm:~/catkin_ws/src$ catkin_create_pkg mbot_description urdf xacro
Created file mbot_description/package.xml
Created file mbot_description/CMakeLists.txt
Successfully created files in /home/kinetic/catkin_ws/src/mbot_description. Please adjust the values in package.xml.
kinetic@vm:~/catkin_ws/src$ ls
CMakeLists.txt   mbot_description

kinetic@vm:~/catkin_ws/src$ cd mbot_description/
kinetic@vm:~/catkin_ws/src/mbot_description$ ls
CMakeLists.txt  package.xml
kinetic@vm:~/catkin_ws/src/mbot_description$ mkdir urdf meshes launch config
kinetic@vm:~/catkin_ws/src/mbot_description$ ls
CMakeLists.txt  config  launch  meshes  package.xml  urdf

urdf         存放机器人模型的URDF或xacro文件
meshes         放置URDF中引用的模型渲染文件
launch         保存相关启动文件
config         保存rviz的配置文件

kinetic@vm:~/catkin_ws/src/mbot_description/launch$ cat display_mbot_base_urdf.launch 

<launch>
	<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 可视化界面 -->
	<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_urdf.rviz" required="true" />
</launch>

param    加载ros参数, 参数名为 robot_description,textfile是参数的信息,robot_description中保存了一条路径信息。

joint_state_publisher
        
发布每个joint(除fixed类型)的状态,而且可以通过UI界面对joint进行控制

robot_state_publisher

将机器人各个links、joints之间的关系,通过TF的形式,整理三维姿态信息发布

创建机器人模型
kinetic@vm:~/catkin_ws/src/mbot_description/launch$ cat display_mbot_base_urdf.launch

<launch>
	<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 可视化界面 -->
	<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_urdf.rviz" required="true" />
</launch>

kinetic@vm:~/catkin_ws/src/mbot_description/urdf$ cat mbot_base.urdf

<?xml version="1.0" ?>	
<robot name="mbot">	<!-- 小车模型 机器人的名称 mbot  -->

    <link name="base_link">		<!-- 一般机器人的主体部分称为base_link,机体的一个概念 -->
        <visual>	<!-- 可视化的效果 -->
            <origin xyz=" 0 0 0" rpy="0 0 0" /> <!-- xyz描述坐标的位置的,rpy在xyz方向上的旋转 -->
            <geometry>	<!-- 这里用圆柱体描述机器人的一个主体部分 -->
                <cylinder length="0.16" radius="0.20"/>	<!-- 圆柱体的高和半径 -->
            </geometry>
            <material name="yellow">	<!-- 圆柱体的颜色 -->
                <color rgba="1 0.4 0 1"/>	<!-- 用rgb来描述,a透明度从0到1,1是不透明,0透明 -->
            </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"/>	<!-- 指定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>

    <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>

运行
        kinetic@vm:~$ roslaunch mbot_description display_mbot_base_urdf.launch

检查URDF模型整体结构
kinetic@vm:~/catkin_ws/src/mbot_description/urdf$ urdf_to_graphiz mbot_base.urdf
Created file mbot.gv
Created file mbot.pdf

参考
HRMRP机器人的设计:    http://www.guyuehome.com/275
创建简单的机器人模型smartcar:    http://www.guyuehome.com/234
ROS URDF Tutorials:      http://wiki.ros.org/urdf/Tutorials
ARM端安装ROS:    http://wiki.ros.org/indigo/Installation/UbuntuARM

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值