/DaC

Primary LanguageCMake

单一机械臂控制

遥控系统

原文&目前-思路对比

原文的部署与遥控系统

  1. ACT原文使用WindowX遥控操作关节更大的ViperX机械臂,其余的设置包括一个机器人笼,通过交叉钢电缆加固。总共有四个罗技C922x网络摄像头,每个设置480×640RGB图像。其中两个网络摄像头安装在跟随者机器人的手腕上,可以近距离观察抓持器。其余的两个摄像机分别安装在前面和顶部。远程操作和数据记录频率都为50HZ。

  2. 原文考虑过使用VR控制器或摄像机捕捉到的手姿势映射到机器人的末端执行器姿势,即任务空间映射,最后没有采用的原因是精细操作需要在奇点处进行,反向运动学会出错。另一方面,联合空间映射保证了在联合限制范围内的高带宽控制,同时也需要更少的计算和减少延迟。原文只提及到通过关节角度同步来进行远程操控,但是根据视频可以看出关节同步效果好,延迟低。

目前的部署与遥控系统

  1. 设备部署:

    使用两台大象pro600机械臂,位于操作者面向方向,摄像头位于操作者左手边,正中间为机械臂工作区间(),follower机械臂旁边搭配一盏台灯,可以有效消除上方灯光影响(),leader机械臂上方用胶带捆绑一硬质物体用来保持自由移动

  2. 末端执行器:

    leader机械臂采用手柄加按钮,手柄为3d打印材料,按钮为自锁按钮。follower机械臂末端执行器目前有两种,用来完成推动任务的长木棍末端,和用来抓取的夹爪末端。

  3. 遥控系统:

    前六个关节角度:leader机械臂-->python-get_angles-->python-write_angle-->socket-->树莓派-->控制follower机械臂,读取需要时间,运动也需要时间,但是读取和运动并不同步。(即读取完并传递信号给follower机械臂为程序内进程,此时程序结束,之后树莓派控制机械臂不属于程序内,就会导致可叠加的延迟)因此如果只用while循环,不断进入循环会导致延迟不断增加,所以同步过程修改代码为等待程序运行完毕之后进入下一个while循环,即等待树莓派控制机械臂完成(动作彻底完成)再获得下一个动作。

    夹爪(第七个电机): 通过计算机通过leader机械臂的树莓派in端口的点位变化来控制舵机的旋转。首先按钮到计算机,线路为 树莓派GND---自锁按钮---树莓派in端口,当自锁按钮按下,电路导通,in端口获得1的输入,按钮打开线路断开,in端口状态转0。 之后计算机到舵机,大象机械臂带有读取树莓派in端口的api,计算机重复调用方法读取端口,当端口状态变化后连接u2d2旋转舵机指定角度。最后舵机到夹爪,夹爪通过3d打印,预留固定舵机的孔位,将舵机的砝码盘固定在夹爪主动件的圆盘上,舵机转动带动主动盘转动,之后带动连接件以及夹爪末端开合。

算法原理

数据采集&真机部署

原文的数据采集

  1. 安装两个机械臂并校准验机,保证机械臂不会相互影响
  2. 划分任务区间与目标区域
  3. 实验区域标定:follower机械臂工作区间在黑色胶带范围内,推魔方任务为在黑色区域内把魔方推到黑色小框内,抓取为在黑色区域内将快递盒子抓取到黑色小框内
  4. 修改训练代码
  5. 摄像头安装

采集数据

action: leader 的joint position

observations: follower 的 joint position and picture

动作采集 --推动物体到达指定区域

具体动作: 夹爪推动快递盒,并将快递盒推动到规定黑色区域内

任务:使用摄像头获得动作照片,关节角度等信息并打包,采集50次用于后续训练

动作采集 --夹取放置

具体任务: 夹爪快递盒,放置于黑色标线的位置

任务:使用摄像头获得动作照片,关节角度等信息并打包,采集50次用于后续训练