2019年11月27日 物联网/ M2M

灵感来自机器学习,ROS 2,Turtlebot3和Ruleex

由国王Dragusu

机器学习(ML)解决方案的最大挑战之一是能够解释为什么训练模型给出了给定输入所做的输出。人们可以追踪激活的神经元网络或判别函数的价值,但仍然难以向人类的决定解释。

我被介绍给Wind River Partner Ruleex,这是一家涉及ML解决方案的公司,专注于解决ML模型的解释性。它们通过使用逻辑学习机(LLM)算法来执行此操作,该算法能够输出描述输入输出关系与更传统的非线性数学方程的规则;然后,这些规则可以帮助创建否则否定。

这个想法

我有一个小型机器人平台(Turtlebot3)坐在我的书架,我没有灵感去做什么,所以当Rulex伸出来测试他们的解决方案我使用规则生成为了使机器人避开障碍物使用激光雷达传感器的读数配备。所以灵感来了,我想用ROS 2, Turtlebot3, LIDAR和Rulex做实验。

机器人和罗斯2

Turtlebot3是一种小型机器人,经常作为ROS和ROS 2实验平台出售。我选择ROS 2是因为从之前的经验中我已经知道ROS是如何操作的,所以为了实验,我选择了第二次迭代。

本实验

首先需要完成的事情是启动和运行海龟,并被证明不必要地比预期更困难。

机器人被组装后,我期待以下内容:

1.我会上网下载ROS 2设置ROS节点的ROS 2安装程序上的ROSP图像

2.在主机上设置另一个ROS 2(服务器)

3.拥有或安装和脚本以使机器人带键盘就绪

4.使用ROS 2消息使用遥控器使用远程控制驱动机器人

然而,这些都没有被证明是正确的。我了解到,在组装了Turtlebot之后,你必须遵循一个自述文件来安装和/或手动编译所有的东西……这是一个小的,但易于管理的不便。

只有一个问题,自述文件并没有完全反映现在的现实,因为你必须克隆一个存储库而没有提交的ID,那么快照地写的时间和整个系统在工作中,我最终学习了一些ROS 2组件比其他组件更快地移动,并且几乎不可能对齐它们。

我最终在风河Linux上安装了一个工作的ROS 2,我终于能够移动机器人并读取激光雷达数据。

数据集

为了给Rulex提供一个数据集来训练他们的ML,我必须移动机器人并记录激光雷达读数,以及我在驾驶时所做的决定。格式是csv (Angle1, Angle2,…Angle360决定)。

在我能够驾驶机器人之后,我必须对ROS Python脚本进行一些微小的更改,以记录LIDAR读数和决定(按下键)。只要通过查看LIDAR读数,我能够看到数据中存在一些不一致,事实证明LIDAR容易出现一些噪音,并且您从驾驶员获得的数据非常生气。

激光雷达的射程应该是3.5米,但在测试后,1米似乎是良好的精度限制。另一个问题是,如果你在LIDAR前持有一些东西,并不是所有的值都会读取适当的值,例如,其中一些会随机下降到0。

为了有一个干净,准确的数据集,我决定将范围减少到80厘米,因为它足够好,我的测试足够好。并且0滴通过制作不像相邻值的值来解决邻居值的任何值。

最初的阅读
过滤后的读数

我对Turtlebot的初步思考是它是一个很好的娱乐/爱好者实验平台,但不能期待它比它更多。

规则和最终测试

通过构建数据集,我联系Rulex来构建规则集,该规则集将在类似于训练过程中所做的场景中驱动机器人。

与我建立的数据集是小于我估计就足够了,但是我想测试算法(强调这一点)和物流运行机器人有点麻烦,所以我发送~ 2400过滤和策划条目,一会儿之后,我得到了一些结果与洞察数据。

事实证明,RULEX有一个能够构建ML型号/规则的GUI,并分析输入数据,以便数据科学家可以理解噪音的创造和冗余,以及识别什么因素为a贡献决定等

在接下来的一次会议中,我看到了其中一些功能:

拖放模型训练界面
规则查看器、输入和规则之间的依赖关系及其重要性
特征排名,这描述了什么输入值与给定的操作更相关。"a"表示"向左" "d"表示"向右"

但更重要的是输出:

使用regexp我转换为python,因为这就是我在第一个地运行的东西来控制机器人

虽然典型的ML算法将输出描述具有等式和等式参数的大型等式和二进制文件的配置文件,但是Rulex输出描述该行为的可读C代码。从我的角度来看,这是最重要的功能,使这个解决方案比传统的解决方案更加重要。

这样的格式将ML算法的逻辑暴露给开发人员,这在系统的可用性和解释性非常关键的情况下特别相关。控制ML逻辑并能够解释为什么输出具有特定值对于ML开发人员来说非常刷新,并且在一些域中是强制性的。

另一个有趣的事实,在我的测试期间,我注意到在某些情况下,在地板太滑过的情况下,或者它具有缺陷,它会影响转弯,所以从机器人都不会失控。如果它开始这样做,我就可以添加自己的简单规则来停止机器人。

以下是使用该组规则运行的机器人的一些示例:

因为我有一个小型数据集,所以测试必须简单,否则机器人不会根据需要表现。但是,在视频中,您可以看到避免盒子的机器人,海岸清晰后,直线转回,因为它进入狭窄的走廊。

结论

由于输入和输出之间的关系,它不能替代深度学习或图像识别算法,因为输入太大,大量的if语句会扼杀性能。

然而,它实际上提供了作为古典ML算法(决定树,支持向量机等)的替代品的价值,以专业,安全为导向,工业或医疗环境,它可能提供涵盖控制和解释性的最佳解决方案之一模型。

在我们的具体情况下,它还为在我们的情况下提供了一个软件依赖性解决方案VxWorks实时操作系统。由于模型的推理部分仅通过if语句完成,因此没有理由移植ML库,它还与VxWorks的安全、小占用空间的核心价值以及它的目标领域(工业、医疗等)保持一致。

虽然使用Rulex来做决策的自主Turtlebot机器人的实验取得了成功,但它甚至还没有触及到可以利用一组复杂规则解决的各种能力和/或挑战的表面。请继续关注我的下一个实验!

以前的Windows 7支持结束:确保未来
下一个First Ascent - Wind River和Collins Aeropace的现场更新