#创建虚拟机器人URDF模型
题外话:作业发布已有一两天了,之所以今天才编辑这篇博客,是因为我也遇到问题了,现在以及解决了。(小细节:创建功能包之前先编译工作空间确保里面已有的功能包没有错误!)
1、创建新的功能包
lzw08@ubuntu:~$ cd ros_ws/src
lzw08@ubuntu:~/ros_ws/src$ catkin_create_pkg xqrobot_description urdf xacro
首先进入到工作空间内的src目录下,然后创建一个名为xqrobot_description的功能包,urdf和xacro是这个功能包的依赖项。
2、进入功能包创建几个文件目录
lzw08@ubuntu:~/ros_ws/src$ cd xqrobot_description/
lzw08@ubuntu:~/ros_ws/src/xqrobot_description$ mkdir urdf
lzw08@ubuntu:~/ros_ws/src/xqrobot_description$ mkdir meshes
lzw08@ubuntu:~/ros_ws/src/xqrobot_description$ mkdir launch
lzw08@ubuntu:~/ros_ws/src/xqrobot_description$ mkdir config
这几个目录的作用分别是:
urdf:⽤于存放机器⼈模型的 URDF 或 xacro ⽂件。
meshes:⽤于放置 URDF 中引⽤的模型渲染⽂件。
launch:⽤于保存相关启动⽂件。
config:⽤于保存 rviz 的配置⽂件。
3、进入urdf目录创建.urdf文件
lzw08@ubuntu:~/ros_ws/src/xqrobot_description$ cd urdf/
lzw08@ubuntu:~/ros_ws/src/xqrobot_description/urdf$ touch xqrobot_base.urdf
lzw08@ubuntu:~/ros_ws/src/xqrobot_description/urdf$ gedit xqrobot_base.urdf
粘贴以下代码:
<?xml version="1.0" ?>
<robot name="xqrobot">
<link name="base_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<cylinder length="0.16" radius="0.20"/>
</geometry>
<material name="yellow">
<color rgba="1 0.4 0 1"/>
</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"/>
</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>
4、检查.urdf文件是否有误
lzw08@ubuntu:~/ros_ws/src/xqrobot_description/urdf$ check_urdf xqrobot_base.urdf
没错误会显示如下图:
图形化工具查看 URDF 模型的整体结构
lzw08@ubuntu:~/ros_ws/src/xqrobot_description/urdf$ urdf_to_graphiz xqrobot_base.urdf
lzw08@ubuntu:~/ros_ws/src/xqrobot_description/urdf$ evince xqrobot.pdf
5、进入launch目录创建.launch文件
lzw08@ubuntu:~/ros_ws/src/xqrobot_description/urdf$ cd ..
lzw08@ubuntu:~/ros_ws/src/xqrobot_description$ cd launch/
lzw08@ubuntu:~/ros_ws/src/xqrobot_description/launch$ touch display_xq.launch
lzw08@ubuntu:~/ros_ws/src/xqrobot_description/launch$ gedit display_xq.launch
粘贴以下代码:
<?xml version="1.0"?>
<launch>
<param name="robot_description" textfile="$(find xqrobot_description)/urdf/xqrobot_base.urdf" />
<!-- 设置 GUI 参数,显⽰关节控制插件 -->
<param name="use_gui" value="true"/>
<!-- 运⾏ joint_state_publisher 节点,发布机器⼈的关节状态 -->
<node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />
<!-- 运⾏ 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 xqrobot_description)/config/xqrobot_urdf.rviz" required="true" />
</launch>
6、运行.launch文件
lzw08@ubuntu:~/ros_ws/src/xqrobot_description/launch$ cd ~/ros_ws
lzw08@ubuntu:~/ros_ws$ source devel/setup.bash
lzw08@ubuntu:~/ros_ws$ roslaunch xqrobot_description display_xq.launch
(.launch文件运行不了的话回到工作空间source一下就行了。)
然后我就出现了以上错误,但是rviz是可以正常运行起来的,调整一下参数,发现我的urdf机器人没有轮子!
参数调整:
1、Fixed Frame 选择base_link(这里手动打上去先)。
2、点击“Add”添加“RobotModel”。
没有显示轮子的原因是,运行roslaunch时提示的错误信息:功能包没有安装。
解决方法:运行下面这句命令(联网操作)
lzw08@ubuntu:~$ sudo apt-get install ros-kinetic-joint-state-publisher-gui
安装完成后,把刚才运行roslaunch显示错误的命令终止(Ctrl + C),重新运行,就完成啦 ~
最终效果:
7、补充
1)保存键在这 ~(要先点击rviz那个窗口才会出现)
2)调这个小窗口可以urdf模型的轮子转起来