注:本文利用roboware studio工具建立urdf模型

创建机器人描述功能包

右键单击工作空间catkin_ws/src文件夹,点击新建ROS包,将功能包命名为mrobot_description,如下:
在这里插入图片描述

手动添加功能包依赖项,打开CMakeLists.txt文件,如图所示添加urdf、xacro
在这里插入图片描述

在功能包中新建四个文件夹,分别为
urdf:用于存放机器人模型的urdf或者xacro文件。
meshes:用于放置urdf中引用的模型渲染文件。
launch:用于保存相关启动文件。
config:用于保存rviz的配置文件。
在这里插入图片描述

创建机器人底盘描述文件mrobot_chassis.urdf


这个机器人底盘模型有7个link和6个joint。7个link包括1个机器人底板、2个电机、2个驱动轮和2个万向轮;6个joint负责将驱动轮、万向轮、电机安装在底板上,并设置相应的连接方式。
在mrobot_description/urdf文件夹下新建mrobot_chassis.urdf文件,如下:

<?xml version="1.0" ?>
<robot name="mrobot_chassis">

    <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 name="base_left_motor_joint" type="fixed">
        <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" />
            <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="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>

    <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_caster_joint" type="fixed">
        <origin xyz="0.1135 0 -0.0165" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="front_caster_link"/>
    </joint>

    <link name="front_caster_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文件之前,需要先对工作空间进行编译:

cd ~/catkin_ws
catkin_make

rdf提供了一些命令行工具,可以帮助我们检查、梳理模型文件,需要在终端进行独立安装,命令如下:
$ sudo apt-get install liburdfdom-tools
安装完成后,检查并解析上述新建的urdf文件的命令如下(注:在check_urdf命令之前,需要进入urdf所在文件夹):

cd ~/catkin_ws
source ./devel/setup.bash
cd
cd ~/catkin_ws/src/mrobot_description/urdf
check_urdf mrobot_chassis.urdf

若一切正常,会出现如下信息
在这里插入图片描述

建立launch命令文件

在mrobot_description/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节点,发布机器人的关节状态  -->
	<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 mrobot_description)/config/mrobot_urdf.rviz" required="true" />

在这里插入图片描述

在rviz中显示机器人底盘模型

打开ros,编译一下mrobot_description功能包,然后设置环境变量,运行launch文件,命令如下:

roscore

cd ~/catkin_ws
catkin_make
source ./devel/setup.bash
roslaunch mrobot_description display_mrobot_chassis_urdf.launch

运行成功后,显示如下。这里不仅启动了rviz,还出现了一个叫joint_state_publisher的UI,这是因为我们在启动文件中启动了joint_state_publisher节点,该节点可以发布每个joint(除了fixed)的状态,拖动控制条可以改变轮子的运动状态。
在这里插入图片描述

不过此时并没有出现模型,并且还有错误,修改如下:
在Global Options中的Fixed Frame下拉菜单中选择base_link,点击Add选项,添加RobotModel,如图
在这里插入图片描述
修改后如下

在这里插入图片描述