创建机器人URDF模型

古月居ROS教程笔记整理

一、创建机器人功能描述包

在工作空间下创建功能包mrobot_description

catkin_create_pkg mrobot_description urdf xacro
记得编译工作空间,设置环境变量
二、创建机器人URDF模型
模型文件 mrobot_description/urdf/mrobot_chassis.urdf:
<?xml version="1.0" ?>
<robot name="mrobot_chassis">      
#声明该文件使用XML描述,
#使用<robot>根标签定义一个机器人模型,模型的名称是“mrobot_chassis”。

#描述机器人的底盘link
    <link name="base_link">
        <visual>                                          #定义底盘的外观属性
            <origin xyz="0 0 0" rpy="0 0 0" />            #设置起点坐标为界面的中心坐标
            <geometry>    #几何标签
                <cylinder length="0.005" radius="0.13"/>  #定义为圆柱且半径和高分别为
            </geometry>
            <material name="yellow">                      #设置机器人底盘的颜色
                <color rgba="1 0.4 0 1"/>
            </material>
        </visual>
    </link>

#定义第一个关节joint,连接机器人底盘和左边驱动电机
    <joint name="base_left_motor_joint" type="fixed">  #joint名字和类型
        <origin xyz="-0.055 0.075 0" rpy="0 0 0" />    #起点设置在需要安装电机的底盘位置。
        <parent link="base_link"/>
        <child link="left_motor" />
    </joint>

#描述了左侧电机的模型
    <link name="left_motor">
        <visual>             #定义底盘的外观属性
            <origin xyz="0 0 0" rpy="1.5707 0 0" />        #设置起点坐标
            #电机的坐标位置是相对于joint计算的,由于这个joint的坐标上述确定过,所以此处电机模 
            #型就放置于原点
            #由于圆柱体默认是垂直地面创建的,需要把圆柱体围绕x轴旋转90°(使用弧度约为1.5707)
            <geometry>
                <cylinder radius="0.02" length = "0.08"/>  #定义为圆柱半径和高
            </geometry>
            <material name="gray">
                <color rgba="0.75 0.75 0.75 1"/>           #设置颜色
            </material>
        </visual>
    </link>

#定义电机和轮子之间的joint,类型是continuous,可以绕着一个轴旋转
    <joint name="left_wheel_joint" type="continuous">
        <origin xyz="0 0.0485 0" rpy="0 0 0"/>  #将起点设置到安装轮子的位置,即电机的一端
        <parent link="left_motor"/>
        <child link="left_wheel_link"/>
        <axis xyz="0 1 0"/>       #定义该joint的旋转轴是正y轴,轮子在运动时就会围绕y轴旋转
    </joint>

#描述了左侧轮子的模型
    <link name="left_wheel_link">
        <visual>            #定义底盘的外观属性
            <origin xyz="0 0 0" rpy="1.5707 0 0" />          #设置起点并旋转
            <geometry>
                <cylinder radius="0.033" length = "0.017"/>  #定义圆柱半径和高
            </geometry>
            <material name="white">                          #设置颜色
                <color rgba="1 1 1 0.9"/>
            </material>
        </visual>
    </link>

#下同左侧对称
    <joint name="base_right_motor_joint" type="fixed">
        <origin xyz="-0.055 -0.075 0" rpy="0 0 0" />
        <parent link="base_link"/>
        <child link="right_motor" />
    </joint>

    <link name="right_motor">
        <visual>
            <origin xyz="0 0 0" rpy="1.5707 0 0" />
            <geometry>
                <cylinder radius="0.02" length = "0.08" />
            </geometry> <material name="gray">
                <color rgba="0.75 0.75 0.75 1"/>
            </material>
        </visual>
    </link>

    <joint name="right_wheel_joint" type="continuous">
        <origin xyz="0 -0.0485 0" rpy="0 0 0"/>
        <parent link="right_motor"/>
        <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.033" length = "0.017"/>
            </geometry>
            <material name="white">
                <color rgba="1 1 1 0.9"/>
            </material>
        </visual>
    </link>

    <joint name="front_castor_joint" type="fixed">
        <origin xyz="0.1135 0 -0.0165" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="front_castor_link"/>
        <axis xyz="0 1 0"/>
    </joint>

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

</robot>
URDF 提供了一些命令行工具,可以帮助我们检查、梳理模型文件
sudo apt-get install liburdfdom-tools
然后使用 check_urdf 命令对 mrobot_chassis.urdf 文件进行检查(在该文件所在文件夹)
check_urdf mrobot_chassis.urdf
还可以使用 urdf_to_graphiz 命令查看 URDF 模型的整体结构:
$ urdf_to_graphiz mrobot_chassis.urdf

三、在rviz中显示模型

在mrobot_description 功能包 launch 文件夹中已经创建 launch文件display_mrobot_chassis_urdf.launch
<launch> 
<param name="robot_description" textfile="$(find mrobot_description)/urdf/mrobot_chassis.urdf" /> 
<!-- 设置GUI参数,显示关节控制插件 --> 
<param name="use_gui" value="true"/>
<!-- 运行joint_state_publisher节点,发布机器人的关节状态(notic版本此处加上_gui) -->
<node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher" /> 
<!-- 运行robot_state_publisher节点,发布TF --> 
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" /> <!-- 运行rviz可视化界面 --> 
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mrobot_description)/config/mrobot_urdf.rviz" required="true" /> 
</launch>

运行launch文件

$ roslaunch mrobot_description display_mrobot_chassis_urdf.launch

弹出rviz窗口和轮子控制窗口

初步完成! 

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要在Gazebo启动机器人URDF模型,需要使用以下步骤: 1. 配置好机器人的URDF文件,确保模型和关节描述正确。 2. 创建一个启动文件(launch file),并导入必要的ROS包和参数。 3. 在启动文件添加一个Gazebo节点,指定需要加载的URDF模型文件,以及其他参数,例如仿真器的时间步长和模型的起始位置。 以下是一个简单的启动文件的示例,可以用来启动一个URDF模型在Gazebo: ``` <launch> <!-- Load URDF model --> <arg name="urdf_file" default="$(find my_robot_description)/urdf/my_robot.urdf" /> <param name="robot_description" command="$(find xacro)/xacro $(arg urdf_file)" /> <!-- Launch Gazebo with URDF model --> <include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="world_name" value="$(find my_robot_gazebo)/worlds/my_robot_world.world" /> </include> <!-- Set initial robot pose --> <node name="set_initial_pose" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen" args="-urdf -param robot_description -model my_robot -x 0 -y 0 -z 0 -Y 0" /> </launch> ``` 其,第一个参数`urdf_file`指定了URDF模型文件的路径。第二个参数`robot_description`使用ROS参数服务器来存储URDF模型的描述。接下来,使用Gazebo的`empty_world.launch`节点来加载仿真器,同时指定需要加载的URDF文件。最后,使用`spawn_model`节点来设置模型的初始位置和姿态。 注意,这只是一个示例启动文件,并且需要根据你的具体情况进行修改。同时,需要确保已经安装了必要的ROS包和Gazebo。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值