使用urdf创建机器人模型,并在rviz中显示
实现中参考啦这篇博客:https://blog.csdn.net/qq_26565435/article/details/8820646
感谢开源的力量。
第一步,新建一个功能包:
catkin_create_pkg mrobot_description urdf xacro
第二步,在功能包mrobot_description 里面新建4个文件夹,命名为urdf,meshes,launch,config
第三步,在urdf文件夹里面新建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>
第四步:使用check_urdf mrobot_chassis.urdf 命令检查模型,以下为没有错误时候到输出:
robot name is: mrobot_chassis
---------- Successfully Parsed XML ---------------
root Link: base_link has 3 child(ren)
child(1): left_motor
child(1): left_wheel_link
child(2): right_motor
child(1): right_wheel_link
child(3): front_caster_link
第五步:生成pdf文件,urdf_to_graphiz mrobot_chassis.urdf,使用evince命令查看pdf文件。
第六步:编写launch文件,命名为 dispaly_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" />
</launch>
第七步:编译和运行
cd ~/catkin_ws
catkin_make
source ./devel/setup.bash
roslaunch mrobot_description display_mrobot_chassis_urdf.launch
当打开之后,首先看到啦错误如下:
看到错误,是有个功能包没有安装,但是不影响打开到模型。如果看不到模型,把在Global Options中的Fixed Frame下拉菜单中选择base_link,点击Add选项,添加RobotModel,便可以成功显示啦。
因为上述没有功能包,使用命令安装:sudo apt-get install ros-kinetic-joint-state-publisher-gui
安装完成之后,再一次运行模型。可以看到右上角多了一个ui界面,可以控制*转动。