遨博协作机器人ROS开发 - Gazebo仿真与控制真实机器人

2023-05-16

目录

一、简介

二、环境版本

三、Gazebo仿真

1.gazebo使用

2. 仿真遨博机械臂

四、ROS控制真实机器人

1. 网络配置

2. 真实机器人控制

3. 真实机器人运动速度调节

五、小结


一、简介

大家好,欢迎关注遨博学院带来的系列技术分享文章(协作机器人ROS开发),在上一篇中,我们介绍了协作机器人ROS环境的安装与初步运行测试,可以通过Moveit!进行机械臂的运动规划,当然上述操作的最终目的还是要控制机器人按照预想的轨迹进行运动,控制机器人运动有两种模式,分别是控制仿真机器人和真实机器人,下面介绍这两种模式的使用方法。

二、环境版本

  1. 主机系统版本:Windwos10 64位
  2. 处理器型号:Intel-i7
  3. 虚拟机版本:VMware Workstation 16 Pro
  4. 虚拟机系统:Ubuntu 18.04.6 LTS
  5. ROS版本:Melodic

三、Gazebo仿真

1.gazebo使用

(1)Gazebo是一个机器人仿真工具和模拟器,也是一个独立的开源机器人仿真平台,他的功能很强大,最大的优点是对ROS支持的很好,首先启动安装好的ROS环境系统,由于已经在上一篇文章中介绍了如何安装Gazebo,这里启动终端,输入下面的指令,运行Gazebo测试。

roslaunch gazebo_ros empty_world.launch

(2)如果发现启动界面加载过程中闪退,可能是由于在虚拟机中使用时开启了图形加速,在终端中输入如下指令关闭硬件加速。

echo " export SVGA_VGPU10=0" >> ~/.bashrc

source ~/.bashrc

(3)然后关闭虚拟机的3D图形加速,需要关闭虚拟机中的Ubuntu系统,编辑虚拟机设置,选择显示器,取消加速3D图形选项,如下图所示,然后重新启动虚拟机一般就可以解决。

(4)如果发现启动Gazebo过程中,在终端出现如下红色报错信息。

 

(5)需要修改.ignition/fuel/config.yaml文件,将文件中的url: https://api.ignitionfuel.org改为url: https://api.ignitionrobotics.org,运行如下指令打开文件进行修改,再次运行Gazebo即可正常使用。

sudo gedit ~/.ignition/fuel/config.yaml

(6)由于gazebo默认是使用某一个模型时从互联网下载模型,如果要脱机使用模型库,是需要提前下载好的,可以在Gazebo模型库下载,将下载好的压缩包复制到~/.gazebo/models下并解压(注意下载的模型文件要在Models下,而不是在解压后的文件夹下),再次打开Gazebo便可以加载我们下载好的模型了,如下图所示,在“insert”面板中选择模型导入,查看效果。

2. 仿真遨博机械臂

(1)为了方便各个终端的使用,将上一篇中建立的工作空间环境变量增加到.bashrc文件中,输入如下指令即可。

echo "source ~/aubo_ws/devel/setup.bash" >> ~/.bashrc

source ~/.bashrc

(2)首先在终端中运行以下两条指令,分别启动moveit功能包和Gazebo仿真,需要说明的是,这两条指令需要运行在不同的终端(在仿真时,IP地址需要是127.0.0.1)。

roslaunch aubo_e5_moveit_config moveit_planning_execution.launch robot_ip:=127.0.0.1

roslaunch aubo_gazebo aubo_e5_gazebo_control.launch

(3)在运行第二条指令时,会报出如下错误,这是ROS会要求在配置文件中需要配置PID参数,在系统耦合中,找到合适的PID是比较困难的,如果仿真环境中不指定任何PID参数,机器人仍可以正常工作,切记不可输入错误的值,反而会导致更多的问题,所以一般在ROS开发中,这部分的错误是可以忽略的。

(4)之后回到rviz界面,试着拖动轨迹球,并点击【Plan & Execute】按钮,即可看到规划执行效果,此时控制信号将同时输入到Gazebo中,运动同步发生,达到联合仿真的目的。无论仿真环境多么符合现实,也需要在实际的机械臂中进行测试,下面看一下如何控制真实的机器人。 

四、ROS控制真实机器人

1. 网络配置

(1)使用网线连接AUBO E5真实机械臂的控制柜与电脑,最好不要使用路由器、交换机等设备进行转接,因为ROS需要将控制的轨迹实时发送给机械臂,如果网络不稳定,会造成机器人运动卡顿等情况。

(2)打开示教器,点击【设置】-【网络】进入网络配置界面,点击【网卡】下拉菜单,选择默认网卡以示教器显示为准,IP地址输入【192.168.1.40】(可设置为其他可用IP,必须要和网关设置的网段保持一致),掩码设置为【255.255.255.0】,网关设置为【192.168.1.1】,点击【保存】,重启机械臂完成网络配置。

(3)设置电脑主机的IP地址与ROS虚拟机中的IP地址,保证和真实机械臂处于同一网段,然后在真实机械臂的网络设置界面,使用ping功能测试ROS虚拟机的IP地址,要求延迟越低越好,最高也要低于1ms,并且较为稳定,如下图所示。

 

2. 真实机器人控制

(1)在ROS环境的终端中,输入如下指令,这里的IP地址需要填入真实机械臂的IP地址。

roslaunch aubo_e5_moveit_config moveit_planning_execution.launch robot_ip:=192.168.1.40

(2)启动完成后在Rviz界面会观察到机械臂姿态和真实机械臂姿态保持一致。 

(3)在Rviz中拖动机械臂上方的蓝色小球,或者通过设置goal state到随机位置,即可设置机械臂的目标位置,请设置时尽可能考虑真实机器人周围物理环境,防止碰撞,如图所示,其中黄色机械臂为目标位姿的机械臂,与真实机械臂颜色一致的是机械臂真实位姿。

 

(4)点击plan按钮,如图所示,可以查看机械臂从现在真实位姿到目标位姿的路径运动过程。

(5)确保控制器在实验人员的附近,可以随时拍到机器人的急停旋钮,防止对周围设备造成意外损失,点击【Excute】按钮,将上述规划的路径发送到真实机械臂,可以看到真实机械臂按照规划路径进行运动,同时在Moveit中也实时显示真实机械臂的实时位置。

 

(6)当机械臂运动完成后,Rviz软件中的目标位姿和真实位姿重合。可观察到真实机械臂最终的位置和设置的目标位姿相同。

   

 

(7)在机械臂运动过程中,可以点击Rviz中的Stop按钮,机器人会平滑的停止下来,点击停止到真正停止下来的一小段轨迹的规划过程我们已经在aubo_driver中提供,后续的文章中会介绍到。

3. 真实机器人运动速度调节

(1)在终端中输入如下指令,打开机械臂关节速度参数文件。

roscd aubo_e5_moveit_config/

gedit config/joint_limits.yaml

(2)在这个文件中,可修改foreArm_joint、shoulder_joint、upperArm_joint、wrist1_joint、wrist2_joint、wrist3_joint六个关节的最大速度和最大加速度的限制,默认的值在一般情况下无需修改,如果有更高速度和加速需求,可修改这个参数文件,最好每次适当增加速度,防止速度超出预期造成不必要的损失,特别是在调试开发阶段,同时也请放心,在ROS控制下,机械臂的碰撞停止等安全功能依然有效。

(3)每个关节有四个参数,分别是has_velocity_limits、max_velocity、has_acceleration_limits、max_acceleration,功能分别如下:

  1. has_velocity_limits代表速度限制是否生效,true代表生效,false代表不生效,生效时才能控制最大速度;
  2. max_velocity最大速度限制值,单位为弧度/s;
  3. has_acceleration_limits代表加速度限制是否生效,true代表生效,false代表不生效,生效时才能控制最大加速度;
  4. max_acceleration最大加速度限制值,单位为弧度/s^2。

五、小结

关于机械臂的轨迹路径的计算,目前使用的是MoveIt!中默认的运动学插件KDL(Kinematics and Dynamics Library)进行运动学解算的,当然,也有很多其他的运动学算法,每种运动学算法在运算时间、运算精度、运算结果等方面都有不同的优势,您可以尝试更换其他运动学插件甚至自己编写一个运动学插件,从而在具体的运动场景中符合自己的需求。

使用ROS控制真实机械臂,实际上除了ROS原生的功能外,还使用了机械臂SDK接口,将MoveIt!计算的轨迹路径通过透传接口实时发送给机械臂,这也是机械臂能按照ROS规划的轨迹进行运动的原因,关于SDK的详细内容,我们会在其他文章中介绍,欢迎持续关注。


关注遨博教育生态公众号,获取更多资讯

遨博方源(北京)科技有限公司--为工业增智,为教育赋能!

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

遨博协作机器人ROS开发 - Gazebo仿真与控制真实机器人 的相关文章

随机推荐

  • Docker安装图形界面Shipyard

    Shipyard xff08 github xff09 是建立在docker集群管理工具Citadel之上的可以管理容器 主机等资源的web图形化工具 包括core和extension两个版本 xff0c core即shipyard主要是把
  • # 转载chmod+X与chmod777

    chmod 43 X与chmod777 原文 xff1a https blog csdn net qq 42982742 article details 103690119 chmod 43 x 是将文件状态改为可执行 xff0c 而chm
  • C++几个适合的OJ刷题网站

    RQNOJ VIJOS 这两个还比较基本 xff0c 题目也是中文的 对于准备NOI或者省选的话 xff0c BZOJ是不错的 ACM什么的 xff0c 最好就做POJ xff0c SGU xff0c Codeforces等题库 xff0c
  • Android系统深度游

    项目原因 xff0c 让我们必须深入探索Android系统 xff0c 完成对之前的我们来说比较艰巨的任务 这样 xff0c 我们开启了Android深度游 Android这个系统 xff0c 应用层开发还是比较舒服的 xff0c Goog
  • IT痴汉的工作现状56-耳鸣

    自从这个项目启动 xff0c 与客户方的沟通就逐渐多了起来 xff0c 沟通的方式是语音会议 也不知从什么时候起 xff0c 每天的会议时间变得很长很长 尤其是定位复杂问题时 xff0c 一个会议就要4个小时 张伟是从项目开始买的耳机 xf
  • 我的2020---熬过去

    恰逢周末 xff0c 本人自认为过了一个美好的圣诞节之后 xff0c 在深圳图书馆开始思考我的第十一个年终总结了 提笔之前 xff0c 我翻看了去年的总结 xff0c 想到了我还有一套书没有读完 xff0c 那就是 大败局 2020结束还有
  • 我的2022-工程师文化的思考

    没有想到 xff0c 今年大环境的变化可谓是大开大合 xff0c 超出想象 各行各业都遭到强大的挑战 xff0c 是泯灭还是苟活 xff0c 亦或是再创辉煌 xff0c 时也命也 在此情况下的个人 xff0c 最好的选择是跟公司抱团取暖 x
  • 我的2013---全速前行

    一晃 xff0c 自己也步入了而立之年 在IT这个行业 xff0c 而立 xff0c 意味着很多事情 现实的骨感不得不让自己想得更多 xff0c 但是到头来发现自己能做的仍只有继续好好工作 其实年龄是IT行业永恒的话题 xff0c 但我还是
  • 用户名 不在 sudoers文件中,此事将被报告。

    继续昨天的故事 话说昨天新建了一个帐号linc xff0c 今天在执行sudo时回显一个很吓人的信息 xff1a sudo password for linc linc 不在 sudoers 文件中 此事将被报告 这是要去哪儿报告呢 xff
  • Git冲突:commit your changes or stash them before you can merge.

    今天用git pull来更新代码 xff0c 遇到了下面的问题 xff1a error Your local changes to the following files would be overwritten by merge xxx
  • Android问题集锦之二十八:You need to use a Theme.AppCompat theme (or descendant) with this activity.

    错误描述为 xff1a java lang IllegalStateException You need to use a Theme AppCompat theme or descendant with this activity 起因
  • Docker实践6:Cannot connect to the Docker daemon.

    正在免费适用着Aliyun主机 xff0c 当然要用docker来部署我的服务器啦 但是今天碰到了题目的问题 xff0c 细节如下 xff1a span class hljs comment docker info span FATA sp
  • 一个简单的自定义通信协议(socket)

    转自 xff1a http vtrtbb javaeye com blog 849336 这是转自javaeye的一篇文章 xff0c 作者是vtrtbb 按照网络通信的传统 xff0c 我们都会自定义协议 xff0c 这有很多好处 xff
  • ImageView 设置图片

    android doc中是这样描述的 xff1a public void setImageResource int resId 这是其中的一个方法 xff0c 参数resld是这样 xff1a ImageView setImageResou
  • Android问题集锦之八:调用其他程序中的activity和Permission Denial: starting Intent 错误解决办法

    今天想调试多个task中栈的情况 xff0c 在测试程序中调用另一个程序的activity xff0c 代码片段如下 xff1a btnStartX 61 Button findViewById R id btnStartX btnStar
  • VB.NET串口通信例子--我的回忆录

    这是我3年前的一个例子 xff0c 最近翻出来回忆一下 串口是计算机上一种非常通用设备通信的协议 大多数计算机包含两个基于RS232的串口 xff0c 现在配电脑好像只有一个 串口同时也是仪器仪表设备通用的通信协议 xff1b 很多GPIB
  • TiDB-部署(tiup方式)

    一 环境 ip xff08 非真实 xff09 功能配置192 168 1 1中控机 xff08 监控等位置所在 xff09 最低192 168 1 2TIDB PD TIFLUSH 如果机器多可以分开 高192 168 1 3TIKV 1
  • 信号量

    信号量的数据类型为结构sem t xff0c 它本质上是一个长整型的数 函数sem init xff08 xff09 用来初始化一个信号量 它的原型为 xff1a extern int sem init P sem t sem int ps
  • 【51为例】单片机编程技巧(一)——写自己的库

    前言 为什么要写自己库呢 xff1f 因为随着项目的越来越复杂 xff0c 如果代码都堆再一个main c文件里的话管理起来会比较难 你出现想找到某部分的代码得上下翻找 因此把各部的代码建立一个独立的库会使代码管理起来相对容易 想找到某部分
  • 遨博协作机器人ROS开发 - Gazebo仿真与控制真实机器人

    目录 一 简介 二 环境版本 三 Gazebo仿真 1 gazebo使用 2 仿真遨博机械臂 四 ROS控制真实机器人 1 网络配置 2 真实机器人控制 3 真实机器人运动速度调节 五 小结 一 简介 大家好 xff0c 欢迎关注遨博学院带