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模型

设计好

原文地址:https://www.cnblogs.com/tanshengjiang/p/12271541.html

时间: 2024-10-12 19:20:42

ROS中的3D机器人建模(二)的相关文章

在ROS中开始自主机器人仿真 - 3 让turtlebot自主导航

我们已经在gazebo中实现了机器人的仿真,而且能够控制机器人的运动, 查看机器人所感知到的信息, 包括lasercan, 图像信息, 深度信息, 点云, 也包括没有提到的速度信息. 这里,我们建立用ROS navigation stack 导航功能包ROS navigation stack 导航功能包 , 进行机器人地图构建与导航. part 2.1: 让turtlebot自主导航 1 创建地图 使用下面的命令,借助键盘遥控机器人创建精确详尽的地图. 加载Gazebo仿真环境 roslaunc

在ROS中开始自主机器人仿真 - 1 概述

建立自主机器人是很难的,特别是在刚开始的时候. ROS 仿真有助于帮助我们从宏观上对机器人系统进行把握,帮助我们学习如何可以让机器人学会自己去适应环境. 明白机器人从测量和激光数据采集到转变为电机运动的过程. 机器人如何利用传感器进行感知, 找出好的路径, 应该执行什么样的命令. 这不是一套完整的自主机器人仿真的指导内容,但希望是一个好的开始. 所介绍的是小项目的一部分, 主要集中于如何开始自己的自主机器人仿真. 首先, 我们用ROS自带的turtlebot库,让机器人跑起来,这样我们有了直观的

在ROS中开始自主机器人仿真 - 4 建立自己的自主机器人URDF模型

要建立自己的自主机器人,首先,必须要建立自己的机器人模型,URDF(Unified Robot Description Format)模型. part 3 建立自主机器人URDF模型 机器人URDF模型主要由两个文件组成:.xacro 是主文件,包含URDF项,包括关节,连杆:.gazebo包含gazebo的具体信息以便在gazebo中仿真. 例子请见:How to Build a Differential Drive Simulation 以下工程的源码下载地址请见: http://downl

在ROS中开始自主机器人仿真 - 2 让turtlebot跑起来

借助ROS的工具箱让turtlebot在gazebo中运行起来. part 1.1: 让turtlebot跑起来 1. 在gazebo中显示机器人 roslaunch turtlebot_gazebo turtlebot_world.launch 默认加载了一个playground 的world文件. 2. 用键盘进行控制机器人 roslaunch turtlebot_teleop keyboard_teleop.launch --screen Moving around: u i o j k

ROS和Gazebo进行机器人仿真(二)

一.在Gazebo中使用ROS控制器 在本节中,我们将讨论如何在Gazebo中让机器人的每个关节运动. 为了让关节动起来,我们需要分配一个ROS控制器,尤其是,我们需要为每个关节连上一个与transmission标签内指定的硬件接口兼容的控制器. ROS控制器主要由一套反馈机构组成,可以接受某一设定点,并用执行机构的反馈控制输出. ROS控制器使用硬件接口与硬件交互,硬件接口的主要功能是充当ROS控制器与真实或仿真硬件之间的中介,根据ROS控制器生成的数据来分配 资源控制它. 在本机器人,我们定

对比几种在ROS中常用的几种SLAM算法

在此因为要总结写一个文档,所以查阅资料,将总结的内容记录下来,欢迎大家指正! 文章将介绍使用的基于机器人操作系统(ROS)框架工作的SLAM算法. 在ROS中提供的五种基于2D激光的SLAM算法分别是:HectorSLAM,Gmapping,KartoSLAM,CoreSLAM和LagoSLAM.当然最后还有比较经典的google开源的cartographer,虽然不是基于ROS的但是大牛们已经将它修改为基于ROS的版本的cartographer_ros, ROS(Robot Operating

ROS中利用V-rep进行地图构建仿真

V-rep中显示激光扫描点  在VREP自带的场景中找到practicalPathPlanningDemo.ttt文件,删除场景中多余的物体只保留静态的地图.然后在Model browser→components→sensors中找到SICK TiM310 Fast激光雷达,拖入场景中: 打开脚本参数修改器,可以修改雷达扫描范围(默认为270°),是否显示雷达扫描线(true),以及最大探测距离(默认为4m)这三个参数.地图大小为5m×5m,我们将雷达最大探测距离改为2m 将激光雷达放到地图中任

基础篇:3.2)规范化:3d零件建模

本章目的: 3.零件建模: 3.1建模流程: 零件建模流程,如下: 注:这是国标<GB/T 26099-2010 机械产品三维建模通用规则>中的流程,具有一定的权威性,新手请严格按照流程来建模,老手可以查漏补缺. 3.1.1 环境参数设置. 在建模前应对软件系统的基本量纲进行设置,这些量纲通常包括模型的长度.质量.时间.力.温度等. 以下是国标的设置方法: ①在3d图的主界面选择:工具-选项-文档属性-总绘图标准-GB: ②文档属性选项卡--尺寸--找到“置于延伸线中间”--打钩--确定:(这

ROS和Gazebo进行机器人仿真(一)

Gazebo是一种多机器人仿真器,可用于室内外机器人仿真.Gazebo在ROS中有良好的接口,包含ROS和Gazebo的所有控制. 若要实现ROS到Gazebo的通信,我们必须安装ROS-Gazebo接口. 应该安装以下软件包: $ sudo apt install ros-melodic-gazebo-ros-pkgs  ros-melodic-gazebo-msgs  ros-melodic-gazebo-plugins  ros-melodic-gazebo-ros-control *ga