设计服务机器人。 问题陈述,解决方案架构

我们与来自哈勃(Habr)志趣相投的团队( 您可以加入 )一起开发了一种机器人,用于在练习场上收集高尔夫球



Vladimir Goncharov Shadow_ru讨论了收集需求,制定工作任务,开发体系结构以及为运行软件创建原型的问题。



这个项目对我来说是开始的,包括需求的收集,概括以及子任务的后续分解。 乍一看,机器人的任务很简单,但是在计划阶段的错误会严重破坏工作结果,而且并不总是立即可见,因此跳过此阶段是无路可走的。

总结需求可以简化与其他团队成员的沟通-对问题的共识得以发展,不再出现每个机器人头脑中的情况。 另外,当新成员加入团队时,足以阅读类似的文档,从而减少了进入阶段的时间。

收集需求和概括之间总是有一个平衡-我想更详细地描述,但是如果您不是习惯于处理数百个相关段落的律师-这将无法解决一般的视觉问题。 当针对不同的团队成员以及外部客户和承包商提出多个要求时,当然是正确的方法。 但是目前,这显然是不必要的,因为 需求的每次更改都将导致大量时间用于更新此类片,这不会对启动效率产生太大影响。

就我自己而言,我决定分解为功能需求和非功能需求,并将其全部放在一个A4页中。 第一个版本如下所示:

阶段1.问题陈述


挑战:在困难的气候条件下,为了收集球,需要最大程度地连续绕道训练高尔夫球场。

问题:需要无人地面车辆( UGV )执行循环任务,以绕过周长定义的空间以及WGS-84标记中的点的坐标。

任务应包括以下行动:

  1. 从已知的原位正常启动
  2. 提前从未知位置紧急启动(WD操作,电源保护等后启动)
  3. 避免在至少1个或多个比赛中覆盖至少98%的空间的区域(在15分钟后填充加料斗后,无需再次绕开场地)
  4. 返回初始位置以填充料斗,排干电池,绕道而行
  5. 在发射平台上竞赛以重置球,给电池充电

算法的简化版



此外,UGV必须满足以下要求:

  1. 绕指定周长行驶时,请勿离开指定周长
  2. 起始位置可能在指定的范围之外。
  3. 监控电池消耗并根据用尽的电量计划退货。 移动装满的料斗比用空的料斗需要更多的电池电量。
  4. 保留遥测日志,包括但不限于平面上的坐标,6个旋转轴的值,遥测的信号级别和外部传感器。
  5. 拥有三个定位系统-GPS用于获取粗略坐标,IMU用于在平面上验证和校正坐标,光学系统用于通过标记进行精确定位。
  6. 有两个看门狗系统-软件和硬件。 软件验证状态
  7. 带有独立电源的远程紧急通信通道,当任务参数超过指定参数(坐标,事故,电源故障,设备故障)时使用
  8. 在家中可以更改任务参数
  9. 具有两个通信通道-低速遥测和高速用于传输视听信息。 高速应该能够通过遥测命令启用/禁用。


基于这些要求,选择了以下解决方案体系结构:

机器人综合体的结构包括:一个控制中心(地面站控制),以下称为GSC

允许用户执行以下操作:

  • 设定周长
  • 根据一天中的时间和法庭负荷计划任务
  • 能够监视至少1分钟的离散读数的高尔夫机器人
  • 有能力中止任务

GSC软件应该计划高尔夫机器人的动作,而机器人本身应该非常简单。 当然,该解决方案不是很灵活,但是自洽解决方案和网状网络并不是在短时间内就能解决的,甚至是廉价的。 另外-这是一种典型的方法,因此也是众所周知的问题。 一个或多个高尔夫机器人(高尔夫球车)-以下简称GR

执行以下典型操作:

  • 距地面站10米以内执行任务
  • 完成任务
  • 对于典型任务,在遥测通道上以每分钟至少1次的频率报告
  • 返回地面站
  • 等待新任务
  • 每个任务应由以下事件中断:

    • 料斗填充
    • 营养事故
    • 行动不便(政变,突如其来的障碍)
    • 紧急重启
    • 手动任务中断
  • 每个任务中断都必须通过常规遥测和备用信道进行传输
  • 中断后-如果条件允许,GR返回地面站

因为 可以有1个地面站,但是有很多GR-紧急情况是给球漏斗加油。 这立即解决了两个问题-GSC高度确定地知道机器人去了工作站并经常测试备用通道。 还假定在任务执行期间应进行球的填充,如果不是这样,则GSC的某个地方在计划中犯了一个错误,应对此进行修复。 凭直觉,我想将机器人释放在干净的地方,当它收集球时,它将返回。 但是在这里经济发挥了作用,如果有1-2人参与,最好让机器人站在车站上,并在球已经积聚后开始移动。 减少资源和能源消耗。

一个或多个地面站(地面站)-以下为GS。

  • 充电中
  • 球漏斗
  • 与GR的沟通

整个建筑群的方案如下:


第二阶段是对整个综合体的风险和可能存在的问题进行评估


永远来说,您需要提供一张风险及其评估表,但恐怕三张A4​​纸只会引起打哈欠。 我只给出一个有趣的挤压:

所有自主爬行漫游车的主要问题是获得其精确位置的任务。 而且,位置应该真正准确-最好在10-15厘米之内,正是由于无法在小型移动平台上真正解决此问题,因此没有廉价且庞大的农用/运输/军用无人机。

尽管似乎有解决无人机问题的方法,但可以重用地面上的所有东西。 但这在掉头处向左或向右10至15米的空中几乎无法解决任何问题,但在地面上却可能导致事故和灾难。 此外,石头不会在空中改变位置,动物也不会越过马路。 鸟类,是的,但是空气中有更多的空间。

定位由GPS / GLONASS模块执行,这立即导致两个后果:定位精度不太高以及获取坐标的速度。 用于固定测试的uBlox M8N模块的坐标:在良好接收条件下为2-3米,在恶劣天气条件下和能见度下为7-10米。 通常,这种收集球的错误甚至更好-几次任务中的漫游车捕获的球要比在轨道上行驶多。 然而,在这种情况下,事实证明不可能将其引导到障碍物附近,例如墙壁或大石头,并且这些球会在这些区域积聚。 对光学和超声导航系统进行了分析,但结果发现,需要大量具有复杂场几何形状的信标/摄像机,能见度区域存在问题(视场并不总是像机库中的地板一样平坦)以及此类系统在恶劣天气条件下的稳定性(雨,雾)。 因此,就目前而言,我们的GPS就是一切,但有所保留。 而且,您可以相当便宜地提高GPS的精度-RTK,但无法解决墙面问题。

显然,当流动站沿负载点以左右5至10米的精度爬行时,所选择的方法需要进行验证。 爬上一条带腿的SLAM火车来完成简单的任务似乎是不必要的。 如果通过光亮的物体(Aruco编码)进入车站是清楚的,并且也需要多少资源,那么解决将现场所有可能物体分类或寻找边界的问题是完全不同的任务。

现在是第3阶段的时间-概念证明


有必要建立一个系统模型,在现场进行测试,并评估其适用性。 根据已开发的需求,事情变得更加有趣:

作为软件流动站,选择了Ardurover-一种积极开发的软件,该软件开始作为Arduino上四轴飞行器的固件。 但是,到目前为止,它支持带有RTL内核的Linux板,并且可以进行改进。 顺便说一下,将来我必须完成它,但是要加快工作速度,而不是必要的话。

作为流动站的大脑, BeagleBone Blue被选中-一种高度集成的机器人技术系统。


一个独特的功能是使用TI Sitara / Octavo芯片,与同一个Raspberry相比,它具有可编程实时单元-PRU。 这是两个独立的200 MHz内核,可以实时控制熨斗,而不会因中断,线程和其他技术问题而分散主内核的注意力。

此外,该平台立即具有WiFi,蓝牙,用于平衡电缆的焊接连接器,用于为Li-Po电池充电的控制器,用于连接遥测和计算机的USB连接器,用于伺服电机的连接器,5伏和3.3伏的电源稳定器,ADC立即以每个电池一个通道缠绕在一起,多个UART。 通常,带一个机器人。

Ardurover并没有遇到任何问题-目前只有4.4 LTS内核才可以使用软件中的PRU。 在较新的内核中,通过用户软件对PRU进行编程会导致SIGBUS错误,在与ardublue分支的开发人员交谈后,我订购了JTAG适配器,然后我将找出原因。 这辆流浪者根本不会干扰生活,但我想清楚地了解问题所在。

该软件可以满足您几乎所有的要求,除了到达底座时的位置,这里我使用JeVois-A33相机。 他不会发送有关事件的警报信号,但这是具有独立电源的独立模块的任务,因为 电源模块可能因电源故障或故障而无法幸免。

仍然需要购买GPS接收器,遥测无线电发射器,超声波距离传感器并连接机器视觉相机。 焊接后,连接连接器并进行测试运行,结果如下:


作为控制中心,使用了Mission Planner


该软件不是无可争议的,应该做一个像样的Web界面,而不是为直升机爱好者安装带有100500+个按钮的瑞士刀,但是出于调试目的,它是非常合适的。 为了与流动站进行通信,使用了用于Java / JS的适配器和应用程序软件的MAVLINK协议,已经编写了很多文章。 当然,我希望协议中的数据包较小,并保持标准参数引用,但这太好了。

作为流动站的基础,使用了比例为1/18的模型机,带有独立的接收器和发动机控制器。

接收器被扔掉,伺服和电机控制器的连接器直接连接到BeagleBone Blue,就像电池一样。

从有趣的事情开始-我记得我小时候根本无法焊锡,锡鼻涕一直挂在焊点上,我拿起烙铁时也没有内心的恐惧。 但是,一旦刀,电线和烙铁落入我的手中,我就将针脚缝合好,在不接触内芯的情况下切断了绝缘层,我的手扭曲了电缆的末端,对其进行了辐照并密封了连接。 然后我想起了我开始从事嵌入式开发工作的过程,几个月后我开始与烙铁进行交流。 我认为,这句话很好地说明了“您不会喝酒的经历”。

此刻,架子看起来像这样:


如您所见-控制器没有外壳和紧固件。 不幸的是,我命令在SLS 3D打印机上用尼龙打印伪造的伪钞箱,但他们还没有做到这一点。 为了在没有船体的纯净地带出流动站-这样的维京人可以在新鲜的空气中行走半小时。 然后,要么完成电化学腐蚀,要么在发生一次政变后将其完全释放出来。 因此,我们正在等待符合所有减震和减振规则的外壳,压力密封件和紧固件。

Aruco Code Rover检测视频



结果,我在家中测试了pokatushki的手动控制功能。 原来,选择的底座不太正确-加速太快,我不得不学习中国发动机控制器的编程。 第二个-在这个中国思想奇迹上的倒车档通过两个“后退”信号打开-第一个打开刹车,第二个已经倒档。 如果信号太快,可以忽略它-节省了齿轮和发动机的资源。 我必须完成ardurover,tk。 这些技巧没有被考虑在内。

以下操作-将路线回滚5-7次,删除路线的遥测日志和GPS轨迹。 我发现了一个足球场,球场很热,所以如果下雪,也可以。 流动站显然不会钻雪堆,否则Faina Ranevskaya应该将高尔夫球沿着雪堆添加到曲棍球和冰上芭蕾之外的变态列表中。 当然,这不是最便宜的娱乐活动,但是在俄罗斯其他地方也是如此,在11月,您可以找到绿草。 履带底盘的实施工作也已开始,速度要低得多(当前模型在15秒内加速到20 km / h),并且有一个U形转弯,而不是贴片上的三角形。 在几周之内,两个机箱很可能会同时磨合,以测试障碍物检测器和the回算法的运行情况。

最后,我想指出的是,在全尺寸模型上检查解决方案既快速又便宜。 在很早就发现了很多麻烦,此外,有足够的时间在大型机器人仍处于设计阶段或原型设计时对其设计进行更改。 然后,它将变得更昂贵,更长,并且某些东西会破坏链接节点中的某些东西。 而且,在这样的模型上,几乎所有用于任务的必要软件都易于开发和验证。 理想情况下,切换到另一种模型所需要做的就是用新的协议替换引擎控制器协议。 好吧,可以更改动态模型。

此外,使用经过验证的专业解决方案可以大大节省时间和能源。 发明自己的高密度电路板,自己的通信协议,基于地面的软件和软件流动站,调试避障算法以及与中国发动机控制器的通信固然非常令人兴奋,但在这种情况下,您可以立即在漫长而坎bump的道路上增加半年的时间。 已经有人通过了。

我需要你的帮助:


  • 如果您准备使用ROS版本。
  • 需要为树莓派和橙色pi版本准备模块连接板
  • 帮助进行行驶里程测试,尤其是当您居住在活跃打高尔夫球的国家时;
  • 法律问题,机器人从该国的出口,专利法,立法设计要求;
  • 在启动包装,投资搜索方面需要帮助。 我们发展良好,没有投资,我们有一个行动计划,正在组建团队。 在开发商业上成功的项目中,我们需要更多的经验和能力,而不是投资者的钱。

项目现状


我们正在准备第二版车身。 在一周之内,可以通过真空成型准备好箱子,为此,我们将另外撰写一篇文章。



主体的下部是通过铣削复合材料制成的。



车身和力学由NikitaKhvoryk设计。 我们一直在等待很长一段时间才能为n12eq3的raspberry pi和orange pi版本连接模块付费 。 版本与Ardupilot Vladimir Goncharov Shadow_ru

我们感谢Process0169Triftersurenvasimvvovaekb90 ,Vyacheslav Soldatov,Levon Zakaryan,Sergey Pomazkin,Vladi Kuban,Karen Musaelyan,Alexey Platonov所提供的帮助和建议。 如果您想提供帮助-请通过LAN或VKFB给我写信。

计划:


我们已就在俄罗斯,德国,拉丁美洲和新西兰的高尔夫球杆中放置用于测试的机器人的初步协议。 在不久的将来,我们将最终确定算法和设计,在莫斯科进行测试并进行改进。 创建5个机器人并将其免费放置在高尔夫球杆中,以进行新赛季的长时间测试。



感谢您的阅读,询问和完全批评我们。

Source: https://habr.com/ru/post/zh-CN429522/


All Articles