在机器人操作系统(ROS)中,经常需要模拟机器人运动,那么首先需要新建一个机器人。
创建简单的机器人模型的步骤如下:
(1)创建硬件描述包
(2)建立urdf文件
(3)建立launch命令文件
(4)效果演示

详细步骤如下:

(1)在工作区创建硬件描述包,使用如下命令

mkdir ~/smartcar_description/src -p
cd ~/smartcar_description/src
catkin_create_pkg smartcar_description

(2)新建模型的描述文件smartcar.urdf

urdf的全称为(Unified Robot Description Format),此文件是对机器人的描述,下面的代码表示smartcar有机身和四个轮子。

cd ~/smartcar_description/src/smartcar_description/
mkdir urdf
cd urdf
touch smartcar.urdf

此代码参考http://blog.csdn.net/hcx25909/article/details/8904292
编辑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>

(3)建立launch命令文件

.launch文件的作用是:同时启动多个节点,使用roslaunch命令运行.launch文件中指定的节点。
建立launch命令文件步骤如下,在smartcar_description文件夹下建立launch文件夹,

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

编辑文件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" />
</launch>

分析以上代码可以看出,有3个标签,表示启动了ros中的3个节点,。其实如果在命令行输入3次输入启动节点的命令和使用roslaunch也是一样的效果。

(4)在rviz中显示小车

文件都编辑好了,首先编译一下smartcar_description包
如下

cd ~/smartcar_description/
catkin_make
source devel/setup.bash

其中source devel/setup.bash让ros找的到这个包

此时运行base.urdf.rviz.launch文件中的命令

roslaunch  smartcar_description  base.urdf.rviz.launch

roslaunch的语法为
Usage: roslaunch [options] [package] [arg_name:=value…]
roslaunch 包名 文件名 参数名:=值

注意,如果没有安装robot_description包和robot_state_publisher包会提示roslaunch启动错误

再启动rviz来显示

rosrun rviz rviz

启动后是没有模型的,需要增加模型,点左边的add,选择RobotModel如图

此时左边还是红色,在Global Options中的Fixed Frame中选择head就可以加载机器人模型了

运行结果如图

5.其他注意:

注意如果运行了roscore,后仍然提示以下错误

显然是提示找不到这个包,不符合roslaunch的语法,解决方案是将这个包加入到环境变量ROS_PACKAGE_PATH中去。
方法1:
重新编译这个包

cd ~/smartcar_description/
catkin_make
source devel/setup.bash

其中source devel/setup.bash就是将这个包加入到环境变量中,这个是临时的.

方法2:
永久方法
1)输入pwd打印当前工程的路径,例如返回当前工程的路径如下
/root/dev/workspace/cartest/smartcar_description
2)使用命令

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/root/dev/workspace/cartest/smartcar_description

将包的路径加入到ROS包路径中。
3)使用
echo $ROS_PACKAGE_PATH
查看包的路径是否在全局变量ROS_PACKAGE_PATH中。如果成功,则重新执行roslaunch smartcar_description base.urdf.rviz.launch gui:=true就能显示小车了。

那么为什么一定要将包的路径加入ROS_PACKAGE_PATH中去呢?
我的理解是由于在ROS的计算图级中,由于ROS 会创建一个连接到所有进程的网络。你不告诉ROS你是谁?ROS怎么对包进行连接和管理?

延伸一下,如果在网上下的例子运行时出现同样的错误提示,可以用同样的方法进行解决。
最后我上传了该工程的包,需要的话可以下载
https://download.csdn.net/download/ktigerhero3/10553390

(一)ROS中新建机器人模型(urdf格式)并用rviz显示相关推荐

  1. ROS中的机器人模型控制——ros_control

    ros_control就是ROS为开发者提供的机器人控制中间件,可以在丰富的机器人应用中通用,包含一系列控制器接口.传动装置接口.硬件接口.控制器接口.控制器工具箱等,可以帮助机器人应用功能包快速落地 ...

  2. ROS入门七 机器人建模——URDF

    ROS入门七 机器人建模--URDF urdf ufdf介绍 语法 创建机器人URDF模型 创建机器人描述功能包 创建URDF模型 在rviz中显示模型 改进URDF模型 添加物理和碰撞属性 使用xa ...

  3. (二)ROS中控制机器人运动(示例运行)

    ROS中让机器人运动的步骤如下: (1)新建机器人模型 (2)运行.launch文件加载模型 (3)加载rviz的配置文件 (4)发布消息使用机器人运动 首先使用<ROS_by_example& ...

  4. 一种从Robotstudio环境中导出机器人模型并在MATLAB下使其可视化的研究记录

    1.前记:回到学校反而没时间记录了自己瞎折腾的东西了,允我长长的叹一口气   '_' // 先提一下,在这篇MATLAB机器人可视化博客中提到了如何使CAD模型的机器人在MATLAB环境下可视化的问题 ...

  5. 6.5 Rviz中控制机器人模型运动

    ROS入门 6.5 Rviz中控制机器人模型运动 <ROS入门-理论与实践>视频教程镇楼 通过 URDF 结合 rviz 可以创建并显示机器人模型,不过,当前实现的只是静态模型,如何控制模 ...

  6. 在Tina中新建元器件模型

    在Tina中新建元器件模型 作者:liyuanlnx 邮箱:liyuanlnx@163.com 目录 SPICE模型文件长什么样 第一,厂商描述等模型无关信息 第二,模型开头结尾 第三,参数部分 第四 ...

  7. latex参考文献中修改指定作者的格式来突出显示

    latex参考文献中修改指定作者的格式来突出显示 1.引言 在撰写学位论文过程中,特别是在附作者在学期间的研究或工作成果的时候,往往需要突出显示文献列表作者的信息方便他人看到(假设研究成果以文献表的形 ...

  8. 【ROS】—— 机器人系统仿真 —Rviz中控制机器人模型运动与URDF集成Gazebo(十五)

    文章目录 前言 1. Arbotix使用流程 1.1 安装 Arbotix 1.2 创建新功能包,准备机器人 urdf.xacro 文件 1.3 添加 Arbotix 配置文件 1.4 编写 laun ...

  9. Rviz中控制机器人模型运动(arbotix)

    前言: 通过 URDF 结合 rviz 可以创建并显示机器人模型,不过,当前实现的只是静态模型,如何控制模型的运动呢?在此,可以调用 Arbotix 实现此功能. 简介: Arbotix:Arboti ...

  10. 【从kitti开始自动驾驶】--3.1 机器人模型,相机视野可视化(RVIZ)

    "愿世界和平无战争" 1. 本节内容 2. 加入相机视野 2.1 python文件新增代码 2.2 执行,查看视野效果 3. 加入机器人模型 3.1 下载3D模型 3.2为pyth ...

最新文章

  1. SQL Mon 介绍
  2. 图解weblogic安装
  3. ibatis 操作返回值
  4. VS Code 即将迎来再一次的 logo 更新!已可在 Insiders 版本尝鲜
  5. java从端口获取数据库_Java之通过接口获取数据并用JDBC存储到数据库中
  6. 1315B. Homecoming
  7. Docker中的Nginx搭建HTTPS环境
  8. weblogic简单介绍
  9. mysql主从配置错误_mysql主从配置常见错误处理
  10. 持续集成工具集之二 Jenkins安装
  11. Centos7没有ip地址
  12. 程序员总被坑?这是GitHub上的一篇防骗指南
  13. 搭建DNS服务,正向解析域名
  14. php mysqli查询实例,php mysqli查询语句返回值类型实例分析
  15. 从OpenGL ES 2.0到Direct3D 11.1之路
  16. 计算机网络 IP:ABC类地址与 子网掩码(ABC类网络均有属于自己的私有IP段 节省32位IP资源 ) 网络地址 主机地址 子网 与子网掩码之间的关系换算 IP和子网掩码相互依存
  17. 计算机地图制图的点状符号制作,计算机地图制图地图符号库系统建立..doc
  18. 即使有一天没有属于我的天,我也要一步一步往上爬
  19. java输入日期判断这天是周几
  20. 朱西产:智能网联汽车与未来出行变革

热门文章

  1. 一文读懂 12种卷积方法
  2. 当前最新it技术了解
  3. 弘辽科技:97年农村娃拼多多上卖大虾,带领全村人致富!
  4. U盘winpe启动盘的制作
  5. Cygwin安装教程【超详细】
  6. 五笔86版字根图程序
  7. 毕业设计总结与展望、致谢-“完工总结会”-08
  8. php格式文件怎么改成mp4,dat视频文件如何打开 dat格式文件怎样转换成MP4或其它视频格式...
  9. 【MLDL】logistics regression理解
  10. html罗马字母怎么打,怎么打罗马数字二 罗马数字 在电脑上怎么打出来呢?