DFRC-7A双臂机器人指南
TODOs:
- 机械臂 ROS 开发指南
- 机械臂上位机界面指南
- 双臂机器人介绍
快速使用概览
- 开关电源
- 打开移动底盘,电源开关位于底盘内陷沟回顶部。⻓按电源按钮,蜂鸣器短响两声,当第三声变⻓鸣后松开,等待机器开机,待移动底盘常亮白灯时,开机完成。
- 底盘开机后,会对机械臂供电,机械臂会进入初始化过程。机械臂控制器发出连续的提示音,机械臂关节进行松抱闸,待提示音停止,开机完成(大概需要25s)。
- 状态指示灯。机器人胸前状态指示灯,在运行及待机时显示为绿色,停止时,指示灯显示为红色。
- ⻓按电源按钮,蜂鸣器短响七声,当第⼋声变⻓鸣后松开,等待机器关机。
- 急停按钮
- 急停按钮安装于机器人背部,按钮拍下后机械臂将切断电源,移动底盘停于原地;
- 当需要恢复正常状态时,顺时针旋转按钮,按钮有明显弹起。
- 拖动示教与轨迹复现
- 拖动示教按钮位于机械臂末端,按钮指示灯颜色为绿色。长按机械臂末端绿色按钮,机械臂将处于可拖动状态,拖动机械臂末端进行轨迹记录,松开绿色按钮即完成轨迹记录。
- 轨迹复现按钮位于机械臂末端,按钮指示灯颜色为蓝色。点击机械臂末端蓝色按钮,机械臂自动回到轨迹起始位置,并进行一次轨迹复现(机械臂只复现最后一次记录的拖动轨迹)。
- 扩展通讯口 对外通讯口位于机器人背部下方位置,包含一个以太网口、两个USB接口、一个HDMI口。HDMI与USB口均与主控制器连接,以太网口连接机器人内部交换机。 ①号USB接口默认安装系统的增强通信模块,通信模块存在IP绑定,如更换通信模块,需要手动设置IP地址。 ②号USB接口默认适配系统的外置组网通信模块,适配情况详见组网通信模块上的标识。
ROS 开发指南
安装 Ubuntu
- 下载 Ubuntu 镜像。地址(清华镜像):ubuntu-18.04.6-desktop-amd64.iso
- 制作 Ubuntu 引导盘。这里使用 UltraISO。插入一张空白的 U 盘,打开 UltraISO,在菜单栏中选择“启动”,然后选择“写硬盘映像”,确保选择了正确的 U 盘,因为选中的磁盘会被格式化!选择下载好的 ISO 镜像,点击“写入”,等待完成之后弹出。
- 安装 Ubuntu 到物理机。插入 U 盘到要安装 Ubuntu 的物理机,重启进入 BIOS 设置,调整启动顺序使得 U 盘在首位,保持重启进入 Ubuntu 安装界面,选择“Install Ubuntu”,根据提示进行安装,完成之后拔出 U 盘重启。
常见问题:
- 自动安装失败。可能是磁盘内有其他系统分区导致的。如果该磁盘只用于安装 Ubuntu,可以在安装界面选择“其他选项”,然后删除所有分区,格式化磁盘,然后重新安装。如果要在一个磁盘上安装多系统,则需要手动分区,参考 Ubuntu 分区方案。
- 卡在登陆界面,重复要求输入密码。显卡驱动导致的,需要重新安装驱动。按下 Ctrl + Alt + F2 进入 tty 命令行界面,输入用户名和密码,然后执行以下命令:
sudo apt update sudo ubuntu-drivers autoinstall
安装完成之后,
sudo reboot
重启电脑后应该可以进入图形界面。
安装 ROS 开发环境
- 使用 鱼香ROS 的一键安装脚本,打开终端执行以下命令:
wget http://fishros.com/install -O fishros && . fishros
然后根据数字提示,先更换系统源,然后安装 ROS melodic、ROSdep、VSCode。 测试 ROS 安装成功的方法:
rosversion -d
如果成功运行并返回 ROS 的发行版本
melodic
,则表示ROS已安装。 - 安装 MoveIt!和 ROS Control:
sudo apt install ros-melodic-moveit sudo apt install ros-melodic-moveit-*
- 舵机控制需要依赖 serial 功能包,执行以下命令安装 serial 功能包:
sudo apt-get install ros-melodic-serial
源码安装编译
创建工作空间,执行如下命令可创建名称为 cakin_ws 的工作空间:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src/
将源码包拷贝到 catkin_ws 工作空间的 src 目录下,执行以下命令通过 rosdep 安装源码包依赖:
rosdep install -y --from-paths . --ignore-src --rosdistro melodic -r
成功安装提示:
#All required rosdeps installed successfully
使用 catkin 工具配置工作空间并编译双臂机器人相关 ROS 功能包,执行如下命令:
cd ~/catkin_ws
catkin init
catkin build dual_arm_robot
编译成功提示:
[build] Sunmmery: All 8 Packages succeeded!
在 rviz 中显示模型
打开终端进入工作空间执行以下命令启动该 launch 文件:
cd ~/catkin_ws
source devel/setup.bash
roslaunch dual_arm_description display_xacro.launch
如果 rviz 中未显示模型,则手动修改“Fixed Frame”为“base_link”,然后点击左侧下方的 Add 按钮在弹出的界面中找到“RobotModel”添加即可。
运行成功后,不仅启动了 rviz,而且出现了一个名为“joint_state_publisher_gui”的UI。这是因为我们在启动文件中启动了 joint_state_publisher_gui 节点,该节点可以发布每个joint(除 fixed 类型)的状态,而且可以通过 UI 对 joint 进行控制。所以在控制界面中用鼠标滑动控制条,rviz 中对应的机械臂关节、舵机、底盘轮子就会转动。
启动 MoveIt!
打开终端进入工作空间执行以下命令运行双臂机器人的MoveIt!演示demo:
cd ~/catkin_ws
source devel/setup.bash
roslaunch dual_arm_75_moveit_config demo.launch
通过 MoveIt!插件,可以控制机械臂完成拖动规划、随机目标规划、初始位姿更新、碰撞检测等功能。
-
拖动规划。在 Planning 标签页中的 Planning Group 下拉列表可选择是对左臂或右臂进行规划,选择后相应的机械臂末端变为可拖动的状态,拖动机械臂的末端,可以改变机械臂的姿态。然后在 Planning 标签页中点击“Plan & Execute”按钮,MoveIt!开始规划路径,并且控制机械臂向目标位置移动。
-
选择目标姿态规划。在 Planning 标签页中的 Planning Group 下拉列表选择是对左臂或右臂进行规划,然后在Planning 标签页中点击 Goal State 的下拉列表可以选择机械臂的目标姿态,然后点击“Plan&Execute”按钮,MoveIt!开始规划路径,并且控制机械臂向目标位置移动。
控制真实机械臂
在 ROS 下,控制 RM 真实机械臂运动有两种方式:
- 通过 MoveIt!控制:MoveIt!完成运动规划后,规划的结果会以一个action 的形式发布,其中包含了一系列规划好的路径点轨迹,action 的类型是 control_msgs/FollowJointTrajectory,arm_control 实现了接收规划结果并处理,然后通过 arm_driver 下发给真实机械臂进行控制;
- 通过发布相关 Topic 控制:RM 机械臂控制器程序内部自带实现了相关的运动规划算法并提供 API 接口供外部调用实现对机械臂的运动控制,我们可以通过发布相关topic给 arm_driver 节点,arm_driver 接收到控制消息进行处理后下发给机械臂进行控制并实时更新返回机械臂的状态。
相关功能包:
- 机械臂控制器 arm_control 功能包,通过添加一个 action server 订阅 MoveIt! 完成运动规划后输出的 action 信息,然后将Moveit规划的机械臂轨迹通过三次样条插补计算细分,按照20ms的控制周期发给 arm_driver 节点。
- 机械臂驱动 arm_driver 功能包实现与机械臂通过以太网口建立 socket 连接,订阅和发布机械臂的各 topic 信息,将控制机械臂的相关消息处理后通过 socket 发送至真实机械臂实现对真实机械臂的控制,同时接收机械臂返回的信息处理后通过 topic 发布。
- dual_arm_msgs 功能包定义了双臂机器人所用到的所有控制消息和状态消息,arm_control、arm_driver、servo_control 都使用到了相关的消息,另外用户后续开发时可根据需求发布对应的消息实现对相应设备的状态查询或控制。
通过 MoveIt!控制真实机械臂
首先确保机器人可达空间内没有人或其他物体!!!
在运行前,确保机械臂已上电并正常运行,确保上位机IP 与机械臂在同一局域网内,可以分别 ping 左右机械臂的 IP 确认是否能够连通,在终端执行ping 命令(左右机械臂IP以实际为准):
ping 192.168.10.18
ping 192.168.10.19
如果能 ping 通则可以继续以下操作。
修改 dual_arm_robot/dual_arm_75_moveit_config/launch/demo_realrobot.launch 文件中的 use_gui 和 use_rviz 参数(28-29行),将其设置为 true,如下所示:
<arg name="use_gui" default="true" />
<arg name="use_rviz" default="true" />
打开终端,执行以下命令启动 launch 运行双臂机器人的arm_control、arm_driver 节点和加载 MoveIt!的 rviz:
cd ~/catkin_ws/
source devel/setup.bash
roslaunch arm_driver dual_arm_driver.launch
运行成功后在 rviz 中可以看到双臂机器人的两条手臂与真实双臂机器人的两条手臂的状态保持一致。
在 rviz 中选择要控制的机械臂进行拖动规划然后点击“Plan & Execute”按钮,可以看到真实机械臂会按照 rviz 中 MoveIt!规划的路径运动。
ROS学习资源:【Autolabor初级教程】ROS机器人入门
机械臂示教界面
-
连接:本地网络(以太网模式)配置:设置示教器软件需要连接机械臂的IP与端口号,默认连接IP为192.168.1.18,端口号为8080(与机械臂出厂默认IP与端口号一致,机械臂未作更改时此处可不用设置)。
-
位置/姿态/关节控制:可控制机械臂工具末端沿选定的坐标系方向/关节方向进行直线、旋转运动。
-
工作模式:“仿真模式”下,运动控制只对仿真模型进行控制;“真实机械臂”模式,运动控制对仿真模型和连接的外部机械臂均起作用。
-
零位姿态/初始姿态:长按“零位姿态”按钮,机械臂各关节自动运行至零度位置;长按“初始姿态”按钮,机械臂各关节自动运行至初始位置;松开按钮,机械臂运动停止。机械臂初始位置支持用户自行创建。
-
速度:实现机械臂运动速度1%-100%的速度调节,参考速度为“安全配置”中设定的速度值。机械臂出厂时默认法兰盘中心处的线速度限制为0.1m/s,角速度限制为0.2rad/s。示教器打开时默认移动速度为50%,使用初期需要将速度调慢,以免发生碰撞,先将速度调节到10%以下。
在线编程
1.移动指令:即为move指令,用来指定机械臂的运动方式,包括MOVEJ、MOVEL、MOVEC指令。
- MOVEJ指令:指经过各个路点间时各个关节根据运行角度以最快的速度到达目标路点(始末速度均为零)。MOVEJ 指令机械臂在路点之间运动更快更流畅,但MOVEJ指令只保证目标点的位置,而不约束目标点与目标点之间的运动轨迹。
- MOVEL指令:MOVEL指令为直线移动命令,指机械臂从当前位置到达指定目标点的过程中,轨迹保持直线运动。
- MOVEC指令:MOVEC指令为圆周运动命令,MOVEC指令通过三点确定一个圆形轨迹。
2.路点指令:“路点”指令必须添加在“移动”指令下,作为机械臂工作运动点位。设置点位可通过关节控制、位置控制、姿态控制设置。
- 速度:设定路点运动速度,支持用户创建。实际运行速度 = 速度条 $\times$ 路点速度。
- 交融半径:轨迹规划平滑过渡距离。交融半径为0,机械臂准确运动到该点,并减速、停顿。
- 设置点位/编辑点位:设定路点运动位置。备注:“设置点位”为真实机械臂模式,“编辑点位”为仿真模式。
导出工程
单击“保存工程”按钮后,将弹出选择保存路径对话框,将工程名命后,单击“保存”按钮,完成保存。工程内容显示栏中的数据会被自动保存到用户指定的路径下,文档后缀为.txt,格式如下:
{"file":7}
{"num":1,"name":"MOVEJ","Cmd_Type":"MOVEJ","speed":20,"Frame":"World","Tool":"Arm_Tip","parent_number":0,"enabled":true}
{"num":2,"name":"Waypoint1","speed":20,"parent_speed":20,"is_use_speed":1,"r":0,"joint":[-535,90114,957,4,17,2,29391],"pose":[5690,-239210,609968,8,-3,2101],"parent_number":1,"enabled":true}
{"num":3,"name":"loop","Loop_Type":1,"number":4,"parent_number":1,"enabled":true}
{"num":4,"name":"MOVEJ","Cmd_Type":"MOVEJ","speed":20,"Frame":"World","Tool":"Arm_Tip","parent_number":3,"enabled":true}
{"num":5,"name":"Waypoint2","speed":20,"parent_speed":20,"is_use_speed":1,"r":0,"joint":[-537,101148,953,-1597,17,-1,29392],"pose":[5789,-132259,600229,93,136,2108],"parent_number":4,"enabled":true}
{"num":6,"name":"MOVEJ","Cmd_Type":"MOVEJ","speed":20,"Frame":"World","Tool":"Arm_Tip","parent_number":4,"enabled":true}
{"num":7,"name":"Waypoint3","speed":20,"parent_speed":20,"is_use_speed":1,"r":0,"joint":[-532,80216,953,-1593,17,0,44090],"pose":[5717,-353829,599289,-135,-144,2365],"parent_number":6,"enabled":true}
{"num":8,"name":"MOVEJ","Cmd_Type":"MOVEJ","speed":20,"Frame":"World","Tool":"Arm_Tip","parent_number":1,"enabled":true}
{"num":9,"name":"Waypoint4","speed":20,"parent_speed":20,"is_use_speed":1,"r":0,"joint":[-1,-90000,0,-1,-2,1,2],"pose":[-8,-240479,-610000,3141,0,-1570],"parent_number":8,"enabled":true}
其中 joint 为关节角度,单位为千分之一自然度。
双臂机器人基本介绍
双臂机器人概况:
- 机器人高度:1350mm。
- 双臂展开时宽度:2070mm。
- 单臂展开长度:610mm,带灵巧手时总长度:880mm,握拳时为800mm。
- 机器人重量:120kg。
- 左右方向的定义:面对机器人背部,左侧机械臂为左臂,右侧机械臂为右臂。
轻量7轴协作臂:
- 双协作臂配置,每臂7轴谐波减速机高精度协作臂。
- 关节包括肩部(关节1)、肩部(关节2)、肩部(关节3)、肘部(关节4)、腕部(关节5)、腕部(关节6)和腕部(关节7)。
- 臂展:610mm,本体重:7.8kg(包括控制器),有效负载:5kg,重复定位精度:±0.05mm。
- 供电:24V,综合功耗<100W,极限功耗<200W。
- 末端接口:5V/12V/24V电源输出、通讯功能、数字IO。
- 通信接口:Ethernet / WIFI / RS485 / USB串口 / 蓝牙。
- 操作方式和注意事项详见DFRC-7A双臂机器人-执行单元-7轴机械臂-用户手册。
主控模块信息
- X86工控机:主控模块是基于X86架构的工控机,具有以下硬件规格:
- 处理器:Intel Core i5 4200U
- 操作系统:Ubuntu 18.04.6
- 内存:4GB
- 存储:256GB SSD
- ROS版本:系统使用ROS Melodic,这是一种流行的机器人操作系统框架,用于开发和控制机器人应用程序。
- OpenCV库:系统安装了OpenCV库的版本为3.2.0。OpenCV是一个广泛用于计算机视觉任务的开源计算机视觉库。
- Realsense D435摄像头:您使用了Realsense D435深度摄像头,并安装了librealsense SDK(版本2.50.0)以及realsense-ros功能包(版本2.3.2)。这些组件用于实现深度感知和视觉SLAM等任务。
- Marker标记识别:使用Aruco功能包来进行标记识别。Aruco是一种常用的视觉标记,通常用于机器人视觉导航和姿态估计。
- 手眼标定:使用easy_handeye功能包进行手眼标定,这对于机器人的精确定位和操作非常重要。
- Moveit!:Moveit!是一个用于机器人运动规划和控制的ROS功能包,可帮助进行机器人的轨迹规划和控制。
- RM机械臂 ROS功能包:使用了适用于RM机械臂的ROS功能包,以实现机械臂的控制和运动。
机器人的拆箱、装箱和长途运输
- 拆箱准备:
- 两名成年男子必须协同操作,确保机器人的安全处理。
- 在拆箱后,要妥善保存包装箱和包装材料,以备后续需要。
- 机器人拆箱:
- 将机器人慢慢推出包装箱,注意避免突然的移动或颠簸。
- 在搬运机器人之前,必须安装机器人搬运手柄并确保锁紧。使用腰部左右两侧的搬运手柄抬起机器人,分离机器人与泡沫底座。
- 卸下搬运手柄并保存,以免与机械臂干涉。
- 装箱操作:
- 调整机器人的灵巧手至握拳手势,并放入专用包装箱中。
- 关闭机器人,包括关闭急停开关。
- 使用两名人员协作,将机器人稳固地移动到泡沫底座上。
- 妥善包装机器人并放入包装箱。
- 长途运输:
- 使用木架固定机器人,以确保在运输过程中不发生移动或摇晃。
- 绝对不允许倾斜或倒立机器人,以防止损坏。
机器人充电操作
- 充电桩摆放:
- 充电桩应靠墙放置,确保两侧各半米无障碍物,放置地面应平坦,不可在斜坡或地毯上安放。
- 固定充电桩位置,可以使用标志或双面胶,以避免意外移动。
- 多台机器人在同一场景使用时,充电桩之间的距离不得小于1.5米。
- 通过连接电源线,确保充电桩上的指示灯变绿。
- 手动对机器人充电:
- 稳固充电桩后,手动将机器人推至充电桩。
- 确保机器人的后部下方的充电触点与充电桩上的充电片接触,确保充电正常进行。
- 充电指示灯:
- 充电中指示红灯,当机器人电量大于90%时,指示灯将变为绿色。
- 自动充电:
- 如果地图正常,且充电桩点位已标定,可以发送任务使机器人自动返回充电桩位置,进行自动充电。
- 系统续航时间:
- 机器人的续航时间取决于底盘和机械臂的运动情况。
- 在待机状态下,机器人约能续航8小时。
- 当底盘慢速移动且两个机械臂也在慢速移动时,待机时间约为3~4小时。
人机协作前检查事项
- 检查机械臂运动速度
- 打开示教器软件,查看机械臂的运动速度设置。
- 通常在人机协作场景中,建议将运动速度设置为5%。
- 机械臂碰撞预警设置
- 可通过示教器软件设置碰撞预警。
- 默认情况下,碰撞预警为0档,即无碰撞预警。
- 在进行人机协作操作前,需要设置机械臂的碰撞预警。建议将碰撞预警设置为4档。
- 可根据实际需求自定义碰撞预警等级。
- 各模块IP及端口号
- 路由器: SSID: chuangze_XXX 密码:www.chuangze.cn
-
主控制器-工控机: 用户名:realman 密码:realman
组件 IP 地址 端口号 左臂 192.168.10.18 8080 右臂 192.168.10.19 8080 控制单元 192.168.10.11 运动单元 192.168.10.10 9001