ROS中的3D机器人建模(二)
一,创建我们的第一个URDF模型
我们设计的第一个机器人模型是pan-and-tilt机械结构,代码如下
pan_tilt.urdf:
1 <?xml version="1.0"?>
2 <robot name="pan_tilt">
3
4 <link name="base_link">
5
6 <visual>
7 <geometry>
8 <cylinder length="0.01" radius="0.2"/>
9 </geometry>
10 <origin rpy="0 0 0" xyz="0 0 0"/>
11 <material name="yellow">
12 <color rgba="1 1 0 1"/>
13 </material>
14 </visual>
15
16 <collision>
17 <geometry>
18 <cylinder length="0.03" radius="0.2"/>
19 </geometry>
20 <origin rpy="0 0 0" xyz="0 0 0"/>
21 </collision>
22 <inertial>
23 <mass value="1"/>
24 <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
25 </inertial>
26 </link>
27
28 <joint name="pan_joint" type="revolute">
29 <parent link="base_link"/>
30 <child link="pan_link"/>
31 <origin xyz="0 0 0.1"/>
32 <axis xyz="0 0 1" />
33 <limit effort="300" velocity="0.1" lower="-3.14" upper="3.14"/>
34 <dynamics damping="50" friction="1"/>
35 </joint>
36
37 <link name="pan_link">
38 <visual>
39 <geometry>
40 <cylinder length="0.4" radius="0.04"/>
41 </geometry>
42 <origin rpy="0 0 0" xyz="0 0 0.09"/>
43 <material name="red">
44 <color rgba="0 0 1 1"/>
45 </material>
46 </visual>
47 <collision>
48 <geometry>
49 <cylinder length="0.4" radius="0.06"/>
50 </geometry>
51 <origin rpy="0 0 0" xyz="0 0 0.09"/>
52 </collision>
53 <inertial>
54 <mass value="1"/>
55 <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
56 </inertial>
57 </link>
58
59 <joint name="tilt_joint" type="revolute">
60 <parent link="pan_link"/>
61 <child link="tilt_link"/>
62 <origin xyz="0 0 0.2"/>
63 <axis xyz="0 1 0" />
64 <limit effort="300" velocity="0.1" lower="-4.64" upper="-1.5"/>
65 <dynamics damping="50" friction="1"/>
66 </joint>
67
68 <link name="tilt_link">
69 <visual>
70 <geometry>
71 <cylinder length="0.4" radius="0.04"/>
72 </geometry>
73 <origin rpy="0 1.5 0" xyz="0 0 0"/>
74 <material name="green">
75 <color rgba="1 0 0 1"/>
76 </material>
77 </visual>
78 <collision>
79 <geometry>
80 <cylinder length="0.4" radius="0.06"/>
81 </geometry>
82 <origin rpy="0 1.5 0" xyz="0 0 0"/>
83 </collision>
84 <inertial>
85 <mass value="1"/>
86 <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
87 </inertial>
88
89 </link>
90
91
92 </robot>
详解URDF文件
<?xml version= "1.0"?>
<robot name = "pan_tilt">
<robot>标签定义了我们将要创建的机器人的名称。在这里,我们将机器人命名为pan_tilt.
如果我们查看<robot>标签定义之后的部分,我们可以看到pan-and-tilt机器结构中连杆和关节的定义:
<link name ="base_link">
<visual>
<geometry>
<cylinder length= "0.01" radius = "0.2"/>
</geometry>
<origin rpy= "0 0 0" xyz="0 0 0"/>
<material name = "yellow">
<color rgba>="1 1 0 1"/>
</material>
</visual>
</link>
前面的这段代码是pan-and-tilt机械结构的base_link的定义。<visual>标签描述了连杆的可见外观,它将在机器人仿真中显示出来。我们就可以用这个标签来定义连杆的几何形状(圆柱、立方体、球体、网络模型)以及连杆的材质(颜色和纹理)。
<joint name="pan_joint " type ="revolute">
<parent link = "base_link"/>
<child link="pan_link"/>
<origin xyz="0 0 0.1"/>
<axis xyz ="0 0 1"/>
</joint>
在前面的代码片段中,我们定义了一个具有唯一名称和关节类型的关节。在这里我们使用的关节类型是旋转关节(revolute),父连杆和子连杆分别是base_link和pan_link。在此标签内还指定了关节原点。
然后检查urdf是否包含错误,命令如下:
$ check_urdf pan_tilt.urdf
check_urdf命令将解析urdf标签并显示错误(如果有的话),如果一切正常,他将输出如下内容:
robot name is: pan_tilt
---------- Successfully Parsed XML ---------------
root Link: base_link has 1 child(ren)
child(1): pan_link
child(1): tilt_link
如果我们想以图形化的方式查看机器人连杆和关节的结构,我们可以使用一个名为urdf_to_graphiz的命令行工具:
$ urdf_to_graphiz pan_tilt.urdf
这个命令将生成两个文件:pan_tilt.gv和pan_tilt.pdf.
我们可以使用以下命令来查看此机器人的结构:
$ evince pan_tilt.pdf
如图所示:
二,在RViz中可视化机器人3D模型
设计好URDF后,可以在RViz上查看它。我们可以创建一个view_demo.launch启动文件,代码如下:
1 <launch>
2 <arg name="model" />
3 <param name="robot_description" textfile="$(find mastering_ros_robot_desc ription_pkg)/urdf/pan_tilt.urdf" />
4 <param name="use_gui" value="true"/>
5
6 <node name="joint_state_publisher" pkg="joint_state_publisher" type="join t_state_publisher" />
7 <node name="robot_state_publisher" pkg="robot_state_publisher" type="stat e_publisher" />
8 <node name="rviz" pkg="rviz" type="rviz" args="-d $(find mastering_ros_ro bot_description_pkg)/urdf.rviz" required="true" />
9
10 </launch>
11
我们使用如下命令来启动模型:
$ roslaunch mastering_ros_robot_description_pkg view_demo.launch
如果一切正常,我们将在RViz中看到这个pan-and-tilt机械结构,如图所示
ROS中的3D机器人建模(二)的更多相关文章
- ROS中的3D建模机器人(三)
一.利用xacro理解机器人建模 当我们创建复杂的机器人模型时,URDF的灵活性将会降低,URDF缺少的主要特性是简单的.可重用性,模块化和可编程性. URDF是一个单独的文件我们不能在它里面包含其他 ...
- ROS中3D机器人建模(五)
一.创建一个差速驱动移动机器人模型 前面我们已经创建了一个7-DOF机械臂机器人模型,接下来我们将创建一个差速机器人模型,差速轮式机器人在机器人底盘的两端安装两个轮子, 整个底盘由一个或两个脚轮支撑. ...
- ROS中3D机器人建模(四)
一.创建一个7-DOF机械臂机器人 创建一个名为seven_dof_arm.xacro的文件,写入相应的代码,其关节名称如下: bottom_joint shoulder_pan_joint shou ...
- ROS中3D机器人建模(一)
一,机器人建模的ROS软件包 *urdf : 机器人建模最重要的ros软件包是urdf软件包.这个软件包包含一个用于统一机器人描述格式(URDF)的C++解析器,它是一个表示机器人模型的XML文件,还 ...
- ROS学习笔记十二:使用gazebo在ROS中仿真
想要在ROS系统中对我们的机器人进行仿真,需要使用gazebo. gazebo是一种适用于复杂室内多机器人和室外环境的仿真环境.它能够在三维环境中对多个机器人.传感器及物体进行仿真,产生实际传感器反馈 ...
- ROS_Kinetic_07 ROS中机器人三维物理引擎高保真仿真利器gazebo 7.0
ROS_Kinetic_07 ROS中机器人三维物理引擎高保真仿真利器gazebo 7.0 ROS kinetic中的gazebo版本是7.0,有很多新的特性. 首先,启动gazebo: ~$ gaz ...
- ROS和Gazebo进行机器人仿真(二)
一.在Gazebo中使用ROS控制器 在本节中,我们将讨论如何在Gazebo中让机器人的每个关节运动. 为了让关节动起来,我们需要分配一个ROS控制器,尤其是,我们需要为每个关节连上一个与transm ...
- ROS和Gazebo进行机器人仿真(一)
Gazebo是一种多机器人仿真器,可用于室内外机器人仿真.Gazebo在ROS中有良好的接口,包含ROS和Gazebo的所有控制. 若要实现ROS到Gazebo的通信,我们必须安装ROS-Gazebo ...
- ROS中发布激光扫描消息
激光雷达工作时会先在当前位置发出激光并接收反射光束,解析得到距离信息,而后激光发射器会转过一个角度分辨率对应的角度再次重复这个过程.限于物理及机械方面的限制,激光雷达通常会有一部分“盲区”.使用激光雷 ...
随机推荐
- 洛谷$P$3293 美味 $[SCOI2016]$ 主席树
正解:主席树 解题报告: 传送门! 挺有趣的,至少我不会$QAQ$(虽然我不会的多了去了$QAQ$ 如果没有这个所谓美味度限制可以直接线段树水过去嘛$QwQ$ 然后现在问的是个异或运算后的结果,关于异 ...
- 洛谷$P$2235 $Kathy$函数 $[HNOI2002]$ 数位$dp$
正解:数位$dp$ 解题报告: 传送门$qwq$ $HNOI$的题从02年就这么神了嘛$QAQ$,,, 嗷对了这题如果看出了一个结论就是个数位$dp$板子,,,?但是结论很神我$jio$得挺难看出来的 ...
- 小白学 Python 爬虫(32):异步请求库 AIOHTTP 基础入门
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- Flink入门(五)——DataSet Api编程指南
Apache Flink Apache Flink 是一个兼顾高吞吐.低延迟.高性能的分布式处理框架.在实时计算崛起的今天,Flink正在飞速发展.由于性能的优势和兼顾批处理,流处理的特性,Flink ...
- llinux重启、用户切换、注销命令
一.指令 shutdown命令 shutdown -h now //立即关机 shutdown -h 2 //分钟后关机 shutdown -r now //立即重启 shutdown -r 1 // ...
- spring boot学习笔记(1)
一.构建springboot项目 可以通过idea的springboot initialization来创建, idea的功能很强大,可以自己选择需要集成的插件. 完整的项目结构是这样的: DemoA ...
- GitHub 标星 2.4w+,最适合编程新手入门的宝藏项目推荐
照惯例这周给大家推荐几个Github上高星的优秀项目,我的github:图灵的猫 ,也欢迎大家follow~ 下面这是第一个,也是首推的新手入门项目,以前我入门的时候如果有这样一个项目,知识广度和 ...
- cogs 49. 跳马问题 DFS dp
49. 跳马问题 ★ 输入文件:horse.in 输出文件:horse.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 有一只中国象棋中的 “ 马 ” ,在半张 ...
- 【UEFI&BIOS】---BIOS开机串口报"ERROR: C2:V1050007 IO 93B80003-9FB3-11D4-9A3A-0090273FC14D 6413FA18"的分析
intel的X86 CPU对运行错误的处理已经做的非常完善了,一般即使是开机卡死,跑飞等各种问题也会丢给你相关的提示信息,那么掌握这种错误的分析手段就显得至关重要.在实际开发的过程中,我遇到了一个错误 ...
- 数字任意组合 - gcd
链接:https://www.nowcoder.com/acm/contest/160/A来源:牛客网 题目描述有一个计数器,计数器的初始值为0,每次操作你可以把计数器的值加上a1,a2,...,an ...