当然,这是在竞争中的胜利!但是,我们在挪威海岸的一个船库中调试距离我们有2000公里的机器人也有有趣的经验。在切口下,发生了一个有关我们如何在远程隔离期间进行视觉观察并如何统治机器人的“云脑”的故事:
在春季,我们制作了整个远程控制系统的原型,该系统用于在两只手的YuMi上通过机器人进行3D流传输和培训,并遇到了一家挪威公司,该公司的解决方案对我们广播Realsense摄像机的3D流非常有用-Aivero。因此,在经历了一段艰难的工作之后,这些计划似乎变得万里无云:与家人一起飞往意大利度过一个月的冬天,然后从那里前往欧洲的机器人展览会,并在附近有美丽峡湾的城市斯塔万格停下了几周的一切-斯塔万格,在那里讨论3D集成编解码器进入我们的系统,并尝试说服Aivero将两个机器人放在一起。
在这个美好的计划中可能出了什么问题...
从意大利禁区返回后(并非毫无意外)坐在隔离区中两周,我不得不吹掉口头和书面英语上的灰尘,并已在Zoom中执行计划的第二部分,而不是在峡湾的随行人员中。
虽然,这是外观。隔离区迫使许多人认真地开始研究可能的方法,以在不难替换人员的地方实现自动化。对于最低工资高于1500欧元的西方国家而言,更是如此,即使没有当前的流行病学情况,简单的体力劳动的机器人化也很重要。
我们连接不同的机器人
让我提醒您,我们已经使用远程控制记录对机器人进行了培训。那些。机器人将连接到Internet,连接到我们的云并开始发送3D图片和传感器读数。接收回命令并执行它们。按照这种逻辑,我们的任务是教导ML处理器表现得像操作员一样。对于操作员而言,需要3D才能在虚拟现实中渲染场景。这很方便,并且在有深度图的情况下抓取对象时ML变得更加准确。
按照计划,我们可以将各种机器人连接到我们的云,但是自己创建所有各种机器人是一条非常棘手的道路。我们专注于他们的大脑,学习。
结果,我们与Aivero达成了一致意见,即通过他们的能力创建具有3D眼睛的通用单臂机器人,我们将其称为“单元”,然后我们便可以完成所有云机器人技术。
对于最终客户而言,首要任务是解决方案的简单性和成本。而且,当然还有多功能性。我们希望最小化准入门槛,以实现简单的手工劳动。理想情况下,即使是没有特殊技能的小企业主也可以购买或租用我们的“单元”,将其放在工作场所并运行。
我们考虑了几个星期,对假设进行了几个月的检验,这就是发生的情况(Jetson AGX的版本位于底部,而概览相机与标题相机不同)
和更近的探照灯:
组成:
- Jetson NX
- 2台3D Realsense摄像机(一个概述,另一个用于工作区域)
- 聚光灯
- 真空泵(如果需要)
- 具有真空或机械抓地力的机械手(Eva / UR / ABB YuMi)
- 无线网络或有线
这种带有计算器和底座真空泵的伸缩式支架被放置在机器人工作区域的旁边,并连接到互联网(例如,通过QR码连接到WiFi),并立即开始解决几乎没有任何配置的任务。
在这里您可以立即估算成本。最便宜的Eva机械臂是8000欧元(俄罗斯未提供),而UR10的价格将近5万欧元,但在这里应注意,UR声称具有更高的可靠性,因此从长远来看可能并不昂贵。而且最近它们越来越便宜。其余套件的价格约为2000欧元。
ABB YuMi IRB 14050
我们之前已经处理过两只手的YuMi,但是在这里我们尝试了新版本的IRB14050,它实际上只是一只被割断的手。
简而言之,我喜欢什么:
- 精密和机械工艺
- 对关节上的碰撞和阻尼敏感
并且不喜欢它:
- 难以远程解决冲突和紧急情况
- 对于某些看似简单的运动,某些关节的角度移动很小,因此轨迹相当困难,对于其他六坐标臂的运动学而言,这并不困难
- 与类似物相比承载能力低
- 另外还需要从ABB上传(有时调试)其自己的编程语言的程序,该程序可处理来自计算机的TCP命令
而且不是短暂的。
这是我们花费最多时间的地方。如何启动的诀窍一点都不简单:
- 选择Windows机器,因为 否则,您将无法安装ABB的RobotStudio。
- https://github.com/BerkeleyAutomation/yumipy RAPID ( ABB) ( , ), python API YuMi IRB 14050 IRB 14000.
- , IRB14000 urdf ROS moveit. IRB14000, IRB14050.
- ROS moveit Python API .
- FlexPendant for OmniCore, .
但是,当然,这只是如何使YuMi服从的可能轨迹,当然,这里没有提及您会绊脚的所有小事情。
伊娃
简而言之,我们喜欢:
- 价格当然
- API简洁明了
缺点:
- 没有碰撞检测(在秋季版本中宣布)
- 定位精度-制造商仍然需要努力,但是我们有足够的能力
当然,易于管理吸引了:
pip install evasdk
和
import evasdk
eva = evasdk.Eva(host_ip, token)
with eva.lock():
eva.control_wait_for_ready()
eva.control_go_to([0, 0, 0, 0, 0, 0])
而且机械臂伸出了!并执行。
不,当然,然后我们可以溢出手动控制器中的日志,然后停止监听。但是我们必须向制造商表示敬意-在他们的gita中创建一个问题足以使他们理解原因(并导致整个理事会就我们的问题进行了两次通话)。
一般来说,Automata(Eva的制作人)很棒!我希望他们能够在机器人市场上进一步发展壮大,使机器人比现在更便宜,更容易使用。
UR
喜欢:
- 优良的机械性能和高精度
- 大范围的关节角度,使轨迹规划变得更加容易
- 通过连接到机器人的计算机,可以在VNC Viewer中解决冲突
- 在ROS基础架构中进行了良好的调试
缺点:
- UR控制器上的操作系统已过时,大约一年半没有安全更新
- 尽管可用的开放库已经很好地覆盖了它,但它仍然不是最现代的通信方式
在python中,机械手可在两种主要情况下使用:
- 安装https://github.com/SintefManufacturing/python-urx并享受。该清单比evasdk的清单稍长,因此我不予赘述。根据问题跟踪器的判断,新机械手还存在已知的兼容性问题。tk,一些必须自己纠正的事情。并不是所有的移动方式都在库中实现,但是这些都是微妙的。
- “ROS-” (https://github.com/ros-industrial/universal_robot). , ROS , : UR moveit ( ROS, , , ).
我们尝试避免ROS,因为它的部分功能(消息代理)是由rabbitmq在我们的系统中执行的,并且所使用的技术堆栈非常复杂。因此,对于需要绕过障碍的情况,我们将ROS封装到服务器端的微服务中。
现在的把戏!
如您所知,UR是:
即。机器人的触摸屏上可以打喷嚏。为了避免每天5次从Aivero折磨我们的同事,开车去船库,您需要以某种方式远程到达那里。
原来,UR控制器已安装linux(顺便说一句,不是最弱的x86处理器)。
我们输入ssh IP ...用户:root,密码:easybot。
而且您正在使用Debian Wheezy。
因此,我们带上并安装了VNC服务器,并发现自己是机器人的完整主人!(这里仅需注意,Wheezy已有2年没有更新,由于寄存器过时,您将无法简单地安装和安装vnc服务器。但是有指向“魔术文件”的链接,您可以执行此操作。)
顺便说一句,当我们向他们展示我们的演示时,Universal Robots表示,这样的遥控器需要新的安全认证程序。很公平。总体来说,Smart Robotics如何做到这一点非常奇怪。我无法想象计算机视觉的目标变量对其他人可能是100%安全的。
是时候教机器人抓箱子了
让我提醒您,我们正在展示机器人在VR中应该做什么:
那些。对于每个动作,我们都记录了场景的外观以及它的指令类型,例如:
{“op": "pickup_putdown_box",
"pos1": [441.1884, -112.833069, 151.29303],
"pos2": [388.1267, 91.0179138, 114.847595],
"rot1": [[0.9954941, 0.06585537, -0.06822499], [0.0917332, -0.851038456, 0.517028868], [-0.0240128487, -0.52095747, -0.85324496]],
"rot2": [[0.992139041, 0.102700718, -0.07150351], [0.100485876, -0.99436, -0.0339238755], [-0.0745842, 0.026472155, -0.996863365]],
"calibration": [[-0.01462146, 0.9814359, -0.191232175, 551.115051], [0.9987302, 0.0051134224, -0.0501191653, -6.613386], [-0.0482108966, -0.191722155, -0.9802644, 771.933167]],
"box": [[474.331482, -180.079529, 114.765076], [471.436157, -48.88102, 188.729553], [411.868164, -180.27713, 112.670532], [476.105164, -148.54512, 58.89856]],
"source": "operator"}
通常,这足以让我们训练网格以确定对象在空间中的边界框以及在何处抓取它。
因此,我们坐了半个小时,向机器人展示了如何处理4种类型的盒子,我们获得了大约100个示例。我们按下魔术按钮...好吧,更准确地说,sudo docker run -e INPUT_S3_FOLDER = ... OUTPUT_S3_FOLDER = ... rembrain / train_all_stages:dev。让我们去睡觉。早晨,码头工人向ML处理器发送一条消息以更新重量,并喘口气(尽管制造商对机器人进行了免费测试,但它们花费了大笔钱),我们启动并...
OOPS ...我
必须说,在调试过程中没有一个机器人受到伤害。我认为完全是因为运气好。
有一天,我两岁的儿子走了出来,决定与VR追踪器一起玩。他爬上椅子,从窗台上拿走了……然后将UR10发送到一个难以想象的旅程中,将摄像头推到一边,并将机械臂置于一个相当棘手的位置。因此,我必须在控件上添加一些保险丝。第二台观察相机tk。否则,有时根本看不到手的位置以及是否可以移动它。
而且,如果这不是开玩笑的话,那么即使使用数百个示例的训练样本,我们测试中这种简单盒子的检测精度也超过了99.5%。问题的主要来源不再是计算机视觉,而是相关的复杂性:例如,对象初始排列中的某些异常情况,或框架中的意外干扰。但是随后,我们创建了一个学习系统,使操作员可以循环进行准备,以解决任何问题,而无需现场人员参与。
另外一种算法,关于我在后端,而在UI前端却错过了
bin-picking «bin-stuffing», .. . — . , .
, , . . .. , , . , .
, . , ( , ). - :
, .. , :
Backend
, websocket-, :
, Coordinator . , Rabbit mongoDB, , ( ). , .
, , backend- , ML .
UI
. , UI , . .
AWS console, Yandex console, , , , . .
, .
, -> -> , , , -> , .
, “”. , UX . — . UI robot Console .
bin-picking «bin-stuffing», .. . — . , .
, , . . .. , , . , .
, . , ( , ). - :
, .. , :
Backend
, websocket-, :
, Coordinator . , Rabbit mongoDB, , ( ). , .
, , backend- , ML .
UI
. , UI , . .
AWS console, Yandex console, , , , . .
, .
, -> -> , , , -> , .
, “”. , UX . — . UI robot Console .
下一步是什么
我们在2分钟内拍摄了有关机器人安装和设置的视频,并准备了用于宣传多种任务的材料。
同时,除了可以理解和流行的垃圾收集(我个人梦想在建筑工地使用机器人)之外,我们还在寻找新的实际应用。
我认为,几个月后,我们
所以隔离很好!