(一)ROS中新建机器人模型(urdf格式)并用rviz显示
在机器人操作系统(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显示相关推荐
- ROS中的机器人模型控制——ros_control
ros_control就是ROS为开发者提供的机器人控制中间件,可以在丰富的机器人应用中通用,包含一系列控制器接口.传动装置接口.硬件接口.控制器接口.控制器工具箱等,可以帮助机器人应用功能包快速落地 ...
- ROS入门七 机器人建模——URDF
ROS入门七 机器人建模--URDF urdf ufdf介绍 语法 创建机器人URDF模型 创建机器人描述功能包 创建URDF模型 在rviz中显示模型 改进URDF模型 添加物理和碰撞属性 使用xa ...
- (二)ROS中控制机器人运动(示例运行)
ROS中让机器人运动的步骤如下: (1)新建机器人模型 (2)运行.launch文件加载模型 (3)加载rviz的配置文件 (4)发布消息使用机器人运动 首先使用<ROS_by_example& ...
- 一种从Robotstudio环境中导出机器人模型并在MATLAB下使其可视化的研究记录
1.前记:回到学校反而没时间记录了自己瞎折腾的东西了,允我长长的叹一口气 '_' // 先提一下,在这篇MATLAB机器人可视化博客中提到了如何使CAD模型的机器人在MATLAB环境下可视化的问题 ...
- 6.5 Rviz中控制机器人模型运动
ROS入门 6.5 Rviz中控制机器人模型运动 <ROS入门-理论与实践>视频教程镇楼 通过 URDF 结合 rviz 可以创建并显示机器人模型,不过,当前实现的只是静态模型,如何控制模 ...
- 在Tina中新建元器件模型
在Tina中新建元器件模型 作者:liyuanlnx 邮箱:liyuanlnx@163.com 目录 SPICE模型文件长什么样 第一,厂商描述等模型无关信息 第二,模型开头结尾 第三,参数部分 第四 ...
- latex参考文献中修改指定作者的格式来突出显示
latex参考文献中修改指定作者的格式来突出显示 1.引言 在撰写学位论文过程中,特别是在附作者在学期间的研究或工作成果的时候,往往需要突出显示文献列表作者的信息方便他人看到(假设研究成果以文献表的形 ...
- 【ROS】—— 机器人系统仿真 —Rviz中控制机器人模型运动与URDF集成Gazebo(十五)
文章目录 前言 1. Arbotix使用流程 1.1 安装 Arbotix 1.2 创建新功能包,准备机器人 urdf.xacro 文件 1.3 添加 Arbotix 配置文件 1.4 编写 laun ...
- Rviz中控制机器人模型运动(arbotix)
前言: 通过 URDF 结合 rviz 可以创建并显示机器人模型,不过,当前实现的只是静态模型,如何控制模型的运动呢?在此,可以调用 Arbotix 实现此功能. 简介: Arbotix:Arboti ...
- 【从kitti开始自动驾驶】--3.1 机器人模型,相机视野可视化(RVIZ)
"愿世界和平无战争" 1. 本节内容 2. 加入相机视野 2.1 python文件新增代码 2.2 执行,查看视野效果 3. 加入机器人模型 3.1 下载3D模型 3.2为pyth ...
最新文章
- SQL Mon 介绍
- 图解weblogic安装
- ibatis 操作返回值
- VS Code 即将迎来再一次的 logo 更新!已可在 Insiders 版本尝鲜
- java从端口获取数据库_Java之通过接口获取数据并用JDBC存储到数据库中
- 1315B. Homecoming
- Docker中的Nginx搭建HTTPS环境
- weblogic简单介绍
- mysql主从配置错误_mysql主从配置常见错误处理
- 持续集成工具集之二 Jenkins安装
- Centos7没有ip地址
- 程序员总被坑?这是GitHub上的一篇防骗指南
- 搭建DNS服务,正向解析域名
- php mysqli查询实例,php mysqli查询语句返回值类型实例分析
- 从OpenGL ES 2.0到Direct3D 11.1之路
- 计算机网络 IP:ABC类地址与 子网掩码(ABC类网络均有属于自己的私有IP段 节省32位IP资源 ) 网络地址 主机地址 子网 与子网掩码之间的关系换算 IP和子网掩码相互依存
- 计算机地图制图的点状符号制作,计算机地图制图地图符号库系统建立..doc
- 即使有一天没有属于我的天,我也要一步一步往上爬
- java输入日期判断这天是周几
- 朱西产:智能网联汽车与未来出行变革