今天的目标是在Gazebo安装我们的ur5机器人。Gazebo是一个流行的模拟工具,它不仅可以让你像在Rviz中一样可视化你的机器人,而且还内置了一个物理引擎。这样你就可以在更真实的环境中测试你的机器人应用程序。我们将查看我们需要的属性 添加对我们的机器人——我们的order的描述,以模拟它以及如何在Gazebo中生成我们的机器人。

文章目录

  • Gazebo
  • 添加中间体
  • 碰撞属性
  • 极限和动态
  • 将机器人绑在地面上(一个固定的世界关节)
  • 快速开始

Gazebo

如果您缺少Gazebo(如果您选择完全安装ROS,它应该已经安装好了),只需在您的Linux终端中运行以下命令:

curl -sSL http://get.gazebosim.org | sh

这已经允许我们生成Gazebo环境,例如通过运行:

roslaunch gazebo_ros empty_world.launch


一个空的世界,当然,是一件无聊的事情,所以让我们把机器人放进去吧。我们使用Rviz的前一个教程已经浏览了UR5机器人的描述文件,以理解URDFs。

Gazebo可以使用URDF描述文件来模拟我们的机器人。在引擎盖下,它将URDF转换为另一种更适合模拟的格式SDF。然而,为了使Gazebo能够与我们的URDF一起工作,我们需要添加一些线条。Gazebo需要一些额外的属性,这基本上是影响机器人如何精确移动的所有属性,以获得正确的模拟。你可以找到修改后的URDF与Gazebo一起使用。

添加中间体

Gazebo必须知道机器人部件(即链接)的重量以及它们的惯性,惯性是衡量这些重量如何分布的标准。该信息应包含在URDF内在那之后和章节。这是基础接头的一个示例:

</collision><inertial><mass value="2.275"/><origin rpy="0 0 0" xyz="0.0 0.0 0.25"/><inertia ixx="0.049443313556" ixy="0.0" ixz="0.0" iyy="0.049443313556" iyz="0.0" izz="0.004095"/></inertial>

对于三维转动的刚体,一般的惯性矩阵定义在标签看起来像这样:


这标签分别定义了我们的链接的质量中心或重心。这是我们系统中所有部件的平均位置,这些部件根据它们的质量进行加权。在计算加速度时,这是一个有用的属性。

碰撞属性

为了进行适当的模拟,Gazebo必须知道机器人何时会撞到东西,尤其是它自己。因此,我们需要告诉它我们的链接的几何形状。为简单起见,我们使用。stl文件直接来自我们机器人的CAD模型,它只描述了链接的几何形状,没有任何颜色或材料的定义。通常,这些详细的几何模型通过定义近似几何或降低模型的分辨率来简化,以便更快地计算碰撞。

<collision><geometry><mesh filename="package://ur_description/meshes/ur5/collision/shoulder.stl"/></geometry>
</collision>

极限和动态

此外,我们将为接头特性定义一些限制。这必须添加到标签。

<limit effort="28.0" lower="-3.14159265" upper="3.14159265" velocity="3.2"/>
<dynamics damping="0.0" friction="0.0"/>

这effort决定可以施加到机器人上的最大力(或扭矩),这主要取决于电机的功率。与lower和upper极限我们定义关节可以在径向移动的范围。通过限制最大值velocity,我们限制单个关节可以移动的速度。在里面标签,damping和friction是进一步定义关节动力学的附加参数。我们现在将它们设置为零,因为我们没有它的准确数据,但是为了让你的模拟更加真实,你会希望在你的URDF中有这些。

请注意,限制和动态的定义是可选的,不是使用带Gazebo的URDF的先决条件。

将机器人绑在地面上(一个固定的世界关节)

最后一步,为了将机器人与我们的Gazebo环境连接起来,我们在URDF上增加了一个额外的关节。这个关节——我们称之为世界关节——是固定的,它的唯一目的是将我们的机器人固定在模拟世界中。这就是为什么我们定义world作为父链接,并且base_link作为子链接。

<link name="world"/>
<joint name="world_joint" type="fixed"><parent link="world"/><child link="base_link"/><!-- TODO: check base_link name of robot --><origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0"/>
</joint>

由于我们现在添加了Gazebo要求的所有内容,我们可以生成机器人了。首先,将Gazebo的URDF文件的内容复制到一个文本文件中,并将其存储在文件系统中的任意位置ur5_gazebo.urdf。其次,如果您还没有安装上一教程中的ur_description包,请运行下面的命令并像往常一样替换 使用您的ROS版本:

~/catkin_ws/src$ git clone -b <distro>-devel https://github.com/ros-industrial/universal_robot.git $
$ rosdep update
$ rosdep install --rosdistro $ROS_DISTRO --ignore-src --from-paths src

然后构建您的工作空间:

~/catkin_ws/src$ cd ..
~/catkin_ws$ catkin_make
$ source $HOME/catkin_ws/devel/setup.bash

现在让我们像以前一样在Gazebo中开始一个空的世界:

$ roslaunch gazebo_ros empty_world.launch

在新的终端中,我们可以使用spawn_model命令生成机器人:

$ rosrun gazebo_ros spawn_model -file /<path-to-your-gazebo-urdf-file>/ur5_gazebo.urdf -urdf -x 0 -y 0 -z 0.1 -model ur5


在上图中,为了更好的可视性,阴影被禁用。你可以通过点击世界标签中的场景并取消阴影选项中的勾号来实现。当你现在看着凉亭里的机器人时,它可能看起来有点可怜,只是软绵绵地躺在地上。这是因为我们现在无法控制机器人上的任何东西,所以模拟中发生的一切都是一个机器人,定义了一堆重量,关节中没有力或摩擦力,只是由于重力而落到地面。这就是为什么我们需要机器人控制器来移动机器人和做一些很酷的事情。

快速开始

和往常一样,对于忙碌的人来说,这些是您需要的命令:

如果需要,安装Gazebo:

$ curl -sSL http://get.gazebosim.org | sh

如果之前的教程中没有安装,请安装universal_robot软件包:

~/catkin_ws/src$ git clone -b <distro>-devel https://github.com/ros-industrial/universal_robot.git $
$ rosdep update
$ rosdep install --rosdistro $ROS_DISTRO --ignore-src --from-paths src

然后构建您的工作空间:

~/catkin_ws/src$ cd ..
~/catkin_ws$ catkin_make
$ source $HOME/catkin_ws/devel/setup.bash

现在复制Gazebo的URDF到您的本地文件系统中的一个名为ur5_gazebo.urdf。然后运行以下两个命令在Gazebo中生成机器人:

$ roslaunch gazebo_ros empty_world.launch
$ rosrun gazebo_ros spawn_model -file <path-to-your-gazebo-urdf/ur5_.urdf -urdf -x 0 -y 0 -z 0.1 -model ur5

或者,您可以简单地从ur5_gazebo包中的一个启动文件开始模拟,它也启动一个控制器:

$ roslaunch ur_gazebo ur5.launch

Universal Robot——在Gazebo中模拟UR5机器人相关推荐

  1. ROS(Robot Operating System)笔记 : 1.使用launch file在gazebo中生成urdf机器人

    ROS(Robot Operating System) 1.使用launch file在gazebo中生成urdf机器人 最近接触了ROS(Robot Operating System),发现单单学习 ...

  2. 用KDL在C++中控制UR5机器人的TCP位置——逆向运动学解释

    文章目录 克隆.构建和执行TCP位置控制器 代码:功能和接口 发布和订阅 KDL库的运动学解算器 控制关节 KDL正向/反向运动学 在之前的教程中,我们控制了机器人关节的位置.然而,机器人手臂的最终目 ...

  3. ROS中在gazebo中模拟GPS数据

    前面的文章写过了在robot_pose_ekf中添加GPS的方法,但是GPS在gazebo中使用会有两个问题: 1.GPS使用需要经过UTM包进行坐标转换,转换完成之后会出现一个GPS坐标很大的问题, ...

  4. 机器人在gazebo中使用四轮差速仿真模型时,转向不明显?

    在gazebo中仿真四轮差速模型 首先,直接查看以下的xacro四轮机器人描述文件. <?xml version="1.0"?> <robot name=&quo ...

  5. Ubuntu18.04+ROS melodic 控制UR5机器人(持续更新)

    目录 0 前言 1 前置准备工作 1.1 环境配置 1.1.1 使用虚拟机安装Ubuntu系统 1.1.2 ROS melodic安装 1.2 工作空间配置 1.2.1 创建工作空间 1.2.2 导入 ...

  6. Gazebo中针对Gazebo软件或生成模型出现process has died问题的参考方案

    在基于ROS机器人仿真时,打开Gazebo经常出现一些问题,比如Gazebo窗口打开了,终端却显示gazebo进程已死.本文记录了一次遇到的类似问题,并给出了在部分情况下能够适用的参考方案. 问题描述 ...

  7. ROS学习记录(二)阿克曼转向车运动学模型及在gazebo中搭建仿真环境

    前言:该篇是ROS学习记录的第二篇,如果还没关注过之前文章的读者,如有需要可以通过下方传送门去看之前的文章: ROS学习记录(一) Plugin插件 这两天关注了古月老师的公众号,看到了其中一篇课程推 ...

  8. 【ROS Gazebo专题】四、将Fetch机器人放到Gazebo中进行玩耍

    Gazebo的了解请看我前两篇博客: [ROS学习笔记]二.Gazebo的使用上 [ROS学习笔记]三.Gazebo的使用下 系统环境介绍: 操作系统:Ubuntu 14.04 LTS ROS版本:I ...

  9. gazebo中给机器人添加16线激光雷达跑LIO-SAM

    目录: 前言 1.下载雷达仿真包 2.添加雷达支架描述文件 3.添加雷达描述文件 4.启动仿真 5.添加IMU模块 6.添加RGB-D相机 7.LIO-SAM仿真 安装依赖 安装GTSAM 编译LIO ...

最新文章

  1. JVM内存溢出分析-实战JVM(二)
  2. CFX计算报错和相应解决办法(浮点错误等-持续更新)
  3. 数据结构---邻接表的BFS
  4. 90% 程序员都吃亏在这门技术上了,你呢!
  5. 文章用图的修改和排版 (一)
  6. js基础之函数递传参数与作用域(5下)
  7. 权威解读 GitHub、Apache 疑云:主流开源软件究竟是否会被闭源?| CSDN 独家
  8. 苏州FreeNAS+ESXi5数据恢复案例
  9. linux用Vim上传.sql,真的有(很多)linux大牛用vim写项目吗?
  10. 非谓语动词: 不定式, 动名词, 现在分词, 过去分词
  11. 力度更大的当当购书优惠来了!实付满200-50!
  12. 关于使用response.addCookie 添加失败
  13. __raw_writel, writel_relaxed 和 writel的区别
  14. [论文阅读笔记]DeepFool: a simple and accurate method to fool deep neural networks
  15. Windows​服务器添加单IP不同段IP和整段IP
  16. 通达信版弘历软件指标_弘历软件指标源码
  17. JavaSE基础笔记(全)
  18. 图像开运算、闭运算、形态学梯度、“礼帽”和“黑帽”
  19. winlogon 之 WlxLoggedOutSAS
  20. iOS第三方插件与App Demo地址总览

热门文章

  1. 十人面试就我通过,只因我答对了这题TCP协议为什么需要三次握手
  2. 蓍草占卜Python法
  3. redis持久化机制,深入分析redisAOF和RDB模式的利弊
  4. plotly绘制简单图形10--金字塔图
  5. vue 音乐进度条拖拽
  6. 手机经常收到回复TD退订,回还是不回?今天总算是弄清楚了
  7. win10pin不可用进不去系统_人脸识别门禁控制系统+安检通道
  8. 重装正版Windows系统
  9. 分类计数原理与分步计数原理_分类加法计数原理与分步乘法计数原理的解题策略之一...
  10. 如何使用aircrack破解wifi密码