目录
一、简介
二、环境版本
三、Gazebo仿真
1.gazebo使用
2. 仿真遨博机械臂
四、ROS控制真实机器人
1. 网络配置
2. 真实机器人控制
3. 真实机器人运动速度调节
五、小结
大家好,欢迎关注遨博学院带来的系列技术分享文章(协作机器人ROS开发),在上一篇中,我们介绍了协作机器人ROS环境的安装与初步运行测试,可以通过Moveit!进行机械臂的运动规划,当然上述操作的最终目的还是要控制机器人按照预想的轨迹进行运动,控制机器人运动有两种模式,分别是控制仿真机器人和真实机器人,下面介绍这两种模式的使用方法。
(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”面板中选择模型导入,查看效果。
(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中,运动同步发生,达到联合仿真的目的。无论仿真环境多么符合现实,也需要在实际的机械臂中进行测试,下面看一下如何控制真实的机器人。
(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,并且较为稳定,如下图所示。
(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中提供,后续的文章中会介绍到。
(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,功能分别如下:
关于机械臂的轨迹路径的计算,目前使用的是MoveIt!中默认的运动学插件KDL(Kinematics and Dynamics Library)进行运动学解算的,当然,也有很多其他的运动学算法,每种运动学算法在运算时间、运算精度、运算结果等方面都有不同的优势,您可以尝试更换其他运动学插件甚至自己编写一个运动学插件,从而在具体的运动场景中符合自己的需求。
使用ROS控制真实机械臂,实际上除了ROS原生的功能外,还使用了机械臂SDK接口,将MoveIt!计算的轨迹路径通过透传接口实时发送给机械臂,这也是机械臂能按照ROS规划的轨迹进行运动的原因,关于SDK的详细内容,我们会在其他文章中介绍,欢迎持续关注。
关注遨博教育生态公众号,获取更多资讯
遨博方源(北京)科技有限公司--为工业增智,为教育赋能!