前面我们使用的是已有的机器人模型进行仿真,这一节我们将建立一个简单的智能车机器人 smartcar,为后面建立复杂机器人打下基础。

一、创建硬件描述包.

cd ~/catkin_ws/src
roscreat-pkg smartcar_description urdf

因为建立的是一个非常简单的机器人,所以我们尽量使用简单的元素:使用长方体代替车模,使用圆柱代替车轮,具体尺寸如下:

三 、 建 立 urdf 文 件

在 smartcar_description 文件夹下建立 urdf 文件夹,创建智能车的描述文件smartcar.urdf

cd smartcar_description
mkdir urdf
cd urdf
touch smartcar.urdf

描述代码如下:

<?xml version="1.0"?>
<robot name="smartcar"> <link name="base_link">
<visual> <geometry>
<box size="0.25 .16 .05"/>
</geometry> <origin rpy="0 0 1.57075" xyz="0 0 0"/>
<material name="blue">
<color rgba="0 0 .8 1"/>
</material>
</visual>
</link> <link name="right_front_wheel"> <visual> <geometry>
<cylinder length=".02" radius="0.025"/>
</geometry> <material name="black">
<color rgba="0 0 0 1"/>
</material> </visual>
</link> <joint name="right_front_wheel_joint" type="continuous">
<axis xyz="0 0 1"/>
<parent link="base_link"/>
<child link="right_front_wheel"/>
<origin rpy="0 1.57075 0" xyz="0.08 0.1 -0.03"/>
<limit effort="100" velocity="100"/>
<joint_properties damping="0.0" friction="0.0"/>
</joint> <link name="right_back_wheel">
<visual>
<geometry>
<cylinder length=".02" radius="0.025"/>
</geometry> <material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
</link> <joint name="right_back_wheel_joint" type="continuous">
<axis xyz="0 0 1"/>
<parent link="base_link"/>
<child link="right_back_wheel"/>
<origin rpy="0 1.57075 0" xyz="0.08 -0.1 -0.03"/>
<limit effort="100" velocity="100"/>
<joint_properties damping="0.0" friction="0.0"/>
</joint> <link name="left_front_wheel"> <visual> <geometry>
<cylinder length=".02" radius="0.025"/>
</geometry>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
</link> <joint name="left_front_wheel_joint" type="continuous">
<axis xyz="0 0 1"/>
<parent link="base_link"/>
<child link="left_front_wheel"/>
<origin rpy="0 1.57075 0" xyz="-0.08 0.1 -0.03"/>
<limit effort="100" velocity="100"/> <joint_properties damping="0.0" friction="0.0"/>
</joint> <link name="left_back_wheel">
<visual> <geometry> <cylinder length=".02" radius="0.025"/>
</geometry>
<material name="black"> <color rgba="0 0 0 1"/> </material>
</visual>
</link> <joint name="left_back_wheel_joint" type="continuous">
<axis xyz="0 0 1"/>
<parent link="base_link"/>
<child link="left_back_wheel"/>
<origin rpy="0 1.57075 0" xyz="-0.08 -0.1 -0.03"/>
<limit effort="100" velocity="100"/>
<joint_properties damping="0.0" friction="0.0"/>
</joint> <link name="head">
<visual>
<geometry>
<box size=".02 .03 .03"/>
</geometry> <material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
</link> <joint name="tobox" type="fixed">
<parent link="base_link"/>
<child link="head"/>
<origin xyz="0 0.08 0.025"/>
</joint>
</robot>

四 、 建 立 launch 命 令 文 件
在 smartcar_description 文件夹下建立 launch 文件夹,创建智能车的描述文件base.urdf.rviz.launch

cd ../smartcar_description
mkdir launch
cd launch
touch base.urdf.rviz.launch

描述代码如下:

<launch>
<arg name="model"/>
<arg name="gui" default="False"/>
<param name="robot_description" textfile="$(find smartcar_description)/urdf/smartcar.urdf"/>
<param name="use_gui" value="$(arg gui)"/>
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
</node> <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher"/> <node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/urdf.rviz"/>
</launch>

五、效果演示
在终端中输入显示命令:

roslaunch smartcar_description base.urdf.rviz.launch gui:=true

显示效果如下图所示,使用 gui 中的控制 bar 可以控制四个轮子单独旋转。

最新文章

  1. js事件模型与自定义事件
  2. 160809208沈昊辰c语言程序设计实验选择结构设计
  3. 安卓开发:DateUtils
  4. SQL Server 2008 R2——VC++ ADO 操作 重复利用_CommandPtr
  5. 创建一个最简单的Linux随机启动服务
  6. hdu 4606 Occupy Cities
  7. 中国区常用ubuntu源
  8. mysql merge
  9. Unity3d 协程、调用函数、委托
  10. GetJsonByDataTable
  11. S3C6410嵌入式应用平台构建(四)&mdash;&mdash;linux-3.14.4移植到OK6410-(初步启动)
  12. C#中利用双缓冲技术解决绘图闪屏问题。
  13. FFmpeg AVPacket
  14. 邓_php面试【003】——完整版
  15. Cocos2D v3.4.9粒子效果不能显示的原因分析及解决办法
  16. GIEC2019第六届全球互联网经济大会北京站震撼来袭!
  17. Java日志框架Slf4j+Log4j入门
  18. 枚举子窗口EnumChildWindows()的应用
  19. Log4j中conversionPattern的含义
  20. 关于VS+ImageWatch在线调试问题

热门文章

  1. SharePoint 解决打开浏览器自动登录
  2. XMPP学习&mdash;&mdash;2、用户登录
  3. 操作系统开发系列—12.f.在内核中添加中断处理 ●
  4. mac ERROR 2002 (HY000): Can&#39;t connect to local MySQL server through socket &#39;/var/lib /mysql/mysql.sock&#39; (111)
  5. 【代码笔记】iOS-将图片处理成圆的
  6. Swfit 字符与字符串
  7. nodejs get/request
  8. js:插入节点appendChild insertBefore使用方法
  9. Java集合的10个最常见问题
  10. SAM4E单片机之旅——24、使用DSP库求向量数量积