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

一、创建硬件描述包

  1. roscreat-pkg  smartcar_description  urdf

二、智能车尺寸数据

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

三、建立urdf文件

在urdf文件夹下创建文件 smartcar.urdf,标签属性如下:

<link> 一个link对应模型的一个模块,可以通过标签 joint 让子模块与 base_link 进行关联

|——<visual> 描述一个link的外观,大小,颜色,材质纹理等

|——|——<geometry>   定义该link的几何模型,包含该几何模型的尺寸,单位:米

|——|——|——<box>   矩形,定义属性:size(包含长宽高,数据用空格隔开)

|——|——|——<cylinder>   圆柱体,定义属性:1、length,2、radius

|——|——|——<sphere>   球体,定义属性:radius

|——|——<material>   定义颜色和透明度(RGBA),取值区间 [0,1]

|——<collision>   描述碰撞检测属性

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

  1. <?xml version="1.0"?>
  2. <robot name="smartcar">
  3. <link name="base_link">
  4. <visual>
  5. <geometry>
  6. <box size="0.25 .16 .05"/>
  7. </geometry>
  8. <origin rpy="0 0 1.57075" xyz="0 0 0"/>
  9. <material name="blue">
  10. <color rgba="0 0 .8 1"/>
  11. </material>
  12. </visual>
  13. </link>
  14. <link name="right_front_wheel">
  15. <visual>
  16. <geometry>
  17. <cylinder length=".02" radius="0.025"/>
  18. </geometry>
  19. <material name="black">
  20. <color rgba="0 0 0 1"/>
  21. </material>
  22. </visual>
  23. </link>
  24. <joint name="right_front_wheel_joint" type="continuous">
  25. <axis xyz="0 0 1"/>
  26. <parent link="base_link"/>
  27. <child link="right_front_wheel"/>
  28. <origin rpy="0 1.57075 0" xyz="0.08 0.1 -0.03"/>
  29. <limit effort="100" velocity="100"/>
  30. <joint_properties damping="0.0" friction="0.0"/>
  31. </joint>
  32. <link name="right_back_wheel">
  33. <visual>
  34. <geometry>
  35. <cylinder length=".02" radius="0.025"/>
  36. </geometry>
  37. <material name="black">
  38. <color rgba="0 0 0 1"/>
  39. </material>
  40. </visual>
  41. </link>
  42. <joint name="right_back_wheel_joint" type="continuous">
  43. <axis xyz="0 0 1"/>
  44. <parent link="base_link"/>
  45. <child link="right_back_wheel"/>
  46. <origin rpy="0 1.57075 0" xyz="0.08 -0.1 -0.03"/>
  47. <limit effort="100" velocity="100"/>
  48. <joint_properties damping="0.0" friction="0.0"/>
  49. </joint>
  50. <link name="left_front_wheel">
  51. <visual>
  52. <geometry>
  53. <cylinder length=".02" radius="0.025"/>
  54. </geometry>
  55. <material name="black">
  56. <color rgba="0 0 0 1"/>
  57. </material>
  58. </visual>
  59. </link>
  60. <joint name="left_front_wheel_joint" type="continuous">
  61. <axis xyz="0 0 1"/>
  62. <parent link="base_link"/>
  63. <child link="left_front_wheel"/>
  64. <origin rpy="0 1.57075 0" xyz="-0.08 0.1 -0.03"/>
  65. <limit effort="100" velocity="100"/>
  66. <joint_properties damping="0.0" friction="0.0"/>
  67. </joint>
  68. <link name="left_back_wheel">
  69. <visual>
  70. <geometry>
  71. <cylinder length=".02" radius="0.025"/>
  72. </geometry>
  73. <material name="black">
  74. <color rgba="0 0 0 1"/>
  75. </material>
  76. </visual>
  77. </link>
  78. <joint name="left_back_wheel_joint" type="continuous">
  79. <axis xyz="0 0 1"/>
  80. <parent link="base_link"/>
  81. <child link="left_back_wheel"/>
  82. <origin rpy="0 1.57075 0" xyz="-0.08 -0.1 -0.03"/>
  83. <limit effort="100" velocity="100"/>
  84. <joint_properties damping="0.0" friction="0.0"/>
  85. </joint>
  86. <link name="head">
  87. <visual>
  88. <geometry>
  89. <box size=".02 .03 .03"/>
  90. </geometry>
  91. <material name="white">
  92. <color rgba="1 1 1 1"/>
  93. </material>
  94. </visual>
  95. </link>
  96. <joint name="tobox" type="fixed">
  97. <parent link="base_link"/>
  98. <child link="head"/>
  99. <origin xyz="0 0.08 0.025"/>
  100. </joint>
  101. </robot>

四、建立launch命令文件

        在smartcar_description文件夹下建立launch文件夹,创建智能车的描述文件 base.urdf.rviz.launch,描述代码如下:

  1. <launch>
  2. <arg name="model" />
  3. <arg name="gui" default="False" />
  4. <param name="robot_description" textfile="$(find smartcar_description)/urdf/smartcar.urdf" />
  5. <param name="use_gui" value="$(arg gui)"/>
  6. <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>
  7. <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
  8. <node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/urdf.vcg" />
  9. </launch>

五、效果演示

        在终端中输入显示命令:

  1. roslaunch  smartcar_description  base.urdf.rviz.launch  gui:=true
        显示效果如下图所示,使用gui中的控制bar可以控制四个轮子单独旋转。
 

----------------------------------------------------------------

欢迎大家转载我的文章。

转载请注明:转自古-月

http://blog.csdn.net/hcx25909

ROS探索总结(五)——创建简单的机器人模型smartcar的更多相关文章

  1. 【kinetic】操作系统探索总结(五)创建简单的机器人模型smartcar

    p { margin-bottom: 0.1in; direction: ltr; line-height: 120%; text-align: justify } a:link { color: r ...

  2. 创建简单的机器人模型smartcar

    前面我们使用的是已有的机器人模型进行仿真,这一节我们将建立一个简单的智能车机器人 smartcar,为后面建立复杂机器人打下基础. 一.创建硬件描述包. cd ~/catkin_ws/srcroscr ...

  3. ROS学习记录(一)————创建简单的机器人模型smartcar

    这是我在古月居上找的(http://www.guyuehome.com/243),但直接运行的话,没办法跑起来,我也是查了好多博客和日志,才实现最后的功能的,所以,记录下来,以备后用吧,也欢迎其他和我 ...

  4. Robot Operating System (ROS)学习笔记---创建简单的机器人模型smartcar

    搭建环境:XMWare  Ubuntu14.04  ROS(indigo) 转载自古月居  转载连接:http://www.guyuehome.com/243 一.创建硬件描述包 已创建catkin_ ...

  5. Melodic 使用URDF创建简单的机器人模型

    本人Linux版本:Ubuntu 18.04LTS ROS版本:Melodic URDF代码 <?xml version="1.0" ?> <robot name ...

  6. ROS探索总结(十九)——如何配置机器人的导航功能

    1.概述 ROS的二维导航功能包,简单来说,就是根据输入的里程计等传感器的信息流和机器人的全局位置,通过导航算法,计算得出安全可靠的机器人速度控制指令.但是,如何在特定的机器人上实现导航功能包的功能, ...

  7. ROS探索总结(十九)——怎样配置机器人的导航功能

    1.概述 ROS的二维导航功能包.简单来说.就是依据输入的里程计等传感器的信息流和机器人的全局位置,通过导航算法,计算得出安全可靠的机器人速度控制指令. 可是,怎样在特定的机器人上实现导航功能包的功能 ...

  8. ROS探索总结(十七)——构建完整的机器人应用系统

           上一篇博客介绍了HRMRP机器人平台的设计,基于该平台,可以完成丰富的机器人应用,以较为典型的机器人导航为例,如何使用HRMRP来完成相应的功能?本篇博客将详细介绍如何将HRMRP应用到 ...

  9. ROS探索总结(十八)——重读tf

    在之前的博客中,有讲解tf的相关内容,本篇博客重新整理了tf的介绍和学习内容,对tf的认识会更加系统. 1 tf简介 1.1 什么是tf tf是一个让用户随时间跟踪多个参考系的功能包,它使用一种树型数 ...

随机推荐

  1. python中的excel操作

    一. Excel在python中的应用 存测试数据 有的时候大批量的数据,我们需要存到数据库中,在测试的时候才能用到.测试的时候就从数据库中读取出来.这点是非常重要的! 存测试结果 二. Excel中 ...

  2. uva10910 背包

    https://vjudge.net/problem/UVA-10910 给出N,T,P,表示N门考试考了T分,问有多少种不同的得分方案,已知每门课的得分不低于P. 令f[i][j]表示考了i门得了j ...

  3. 51nod 1257 01分数规划/二分

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1257 1257 背包问题 V3 基准时间限制:3 秒 空间限制:1310 ...

  4. python reload(sys)找不到,name 'reload' is not defined

    在操作数据库的时候遇到这个问题,为什么会出现这种原因?查询如下: python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDeco ...

  5. vs 2005/2008/2010 ATL ActiveX控件显示XP风格

    vs 2005/2008/2010 ATL ActiveX控件在IE浏览器中控件显示的是原始的风格,要显示XP风格只要进行以下操作 一.在Stdafx.h中增加下以内容 #if defined _M_ ...

  6. Idea_学习_10_Idea远程debug

    一.前言 二.远程debug 1.在远程机器启动java调试模式. 需要在启动时添加如下jvm参数,来以java调试模式运行项目. java -Xdebug -Xrunjdwp:server=y,tr ...

  7. 【剑指offer】删除链表中重复的节点,C++实现(链表)

    0.简介       本文是牛客网<剑指offer>笔记. 1.题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针.例如,链表1-> ...

  8. HttpServletRequest获取请求得URL信息

    request对象中包含的是请求信息,当我们在浏览器地址栏上输入:http://localhost:8080/Example/AServlet?username=zhangsan,这段地址也会作为请求 ...

  9. 消息队列mq总结(重点看,比较了主流消息队列框架)

    转自:http://blog.csdn.net/konglongaa/article/details/52208273 http://blog.csdn.net/oMaverick1/article/ ...

  10. 超时 CS-8610 中性笔

    超时 CS-8610 中性笔 最初觉得这款笔很简单,而且还认为有点丑,因为笔头比较短. 比较特别提这款中性笔比一般的中性笔要粗一点. 使用后才发现比其它的中性笔好用,因为笔杆粗,手感好,笔杆上并没有特 ...