前面我们使用的是已有的机器人模型进行仿真,这一节我们将建立一个简单的智能车机器人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. 图片文件和Bitmap之间的转换

    图片文件转为Bitmap对象String filePath="c:/01.jpg";  Bitmap bitmap=BitmapFactory.decodeFile(filePat ...

  2. 关于设置UITableView的背景图片

    在UITableViewController中,要设置UITableView的背景图片,以前常用的方法是使用backgroundcolor属性,这个属性可以通过UIImage来获取,但最近发现这个方法 ...

  3. Jfinal整合百度富文本编辑器ueditor

    ueditor配置文件ueditor.config.js修改参数serverUrl:(改为要调用的action) 后台代码 package com.sandu.mega.admin.ueditor; ...

  4. 通过例子深入理解javascript中的new操作符

    1.首先看一道题目 function Cat(name,age){ this.name=name; this.age=age; } console.log(new Cat('miaomiao',18) ...

  5. hdoj-1046-Gridland(规律题)

    题目链接 #include <algorithm> #include <iostream> using namespace std; int main() { int t; c ...

  6. codeforces C. Pearls in a Row map的应用

    C. Pearls in a Row time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  7. uva11609(组合数学,快速幂)

    先选人,再从这些人里选一个队长,方案总数:C(i,1)*C(n,i)(其中i从1到n)的总和. 这个公式显然不能在时限内暴力算出来,需要变形和推导出更简单的来. 用到组合数里面这个公式:C(n,k)* ...

  8. unity3d IO操作

             前几天有个朋友问我为什么在IOS平台中可以正常的读写文件可是在Android平台中就无法正常的读写.当时因为在上班所以我没时间来帮他解决,晚上回家后我就拿起安卓手机真机调试很快就定位 ...

  9. mysql Replication机制

      从上图可以看见MySQL 复制的基本过程如下: Slave 上面的IO线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容: Master 接收到来自 Sl ...

  10. STL空间配置器解析和实现

    STL空间配置器的强大和借鉴作用不言而喻,查阅资料,发现了Dawn_sf已经对其有了极其深入和详细的描述,所以决定偷下懒借用其内容,只提供自己实现STL空间配置器的源码,具体解析内容参考:(一)STL ...