#创建虚拟机器人URDF模型

#创建虚拟机器人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模型的轮子转起来
在这里插入图片描述

下期见咯 ~

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值