前面我们使用的是已有的机器人模型进行仿真,这一节我们将建立一个简单的智能车机器人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. 省略setget方法

    可以装一下这个插件再引入一个jar包实体类里不需要再写get/set方法了 maven坐标:<dependency> <groupId>org.projectlombok< ...

  2. fastadmin学习文档

    https://doc.fastadmin.net/docs/index.html 介绍 FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架. 主要特性 基于Auth ...

  3. Codeforces Round #271 (Div. 2)D(递推,前缀和)

    很简单的递推题.d[n]=d[n-1]+d[n-k] 注意每次输入a和b时,如果每次都累加,就做了很多重复性工作,会超时. 所以用预处理前缀和来解决重复累加问题. 最后一个细节坑了我多次: print ...

  4. mysql数据库优化。(强力推荐)

    本文转自:https://m.aliyun.com/yunqi/articles/38809 一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善 ...

  5. Tomcat设计模式分析(转) 2

    Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析 这个分为两个部分的系列文章研究了 Apache Tomcat 服务器的系统架构以及其运用的很多经典设计模式.第 1 部分 分析了 Tom ...

  6. Eclipse jar包源码下载

    在使用intelliJ的时候,可以在IDE中直接下载jar包: Eclipse也可以!就是插件Java Source Attacher 这个插件是放在eclipse安装目录的dropins目录下.重启 ...

  7. linux上安装gitolite和windows上安装tortoisegit及msysgit

    1 quick install+setup for experts If your Unix-fu and ssh-fu are good, just copy your ssh public key ...

  8. Java基础--单例类创建和测试

    单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在.单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间:能够避免由于操作多个实例导致 ...

  9. Servlet3.0之八:基于Servlet3.0的文件上传@MultipartConfig

    在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileupload组件,在Servlet3.0中提供了对文件上传的原生支持,我们不 ...

  10. POJ 3624 Charm Bracelet(01背包模板)

    Charm Bracelet Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 45191   Accepted: 19318 ...