机器人调试系统与代码发布:NUbugger与2012 UT Austin Villa代码
1. 机器人调试的挑战与NUbugger的诞生
随着现代自主机器人在类人运动技能和推理能力方面的不断提升,其软件系统的规模和复杂性也呈指数级增长。例如,从2002年索尼AIBO ERS - 210的384 MHz RISC处理器,到2012年Robotis DARwIn - OP平台的1.6 GHz英特尔Atom处理器,处理器性能的提升推动了软件的发展,但也带来了调试难题。
传统的调试方法主要通过观察高层行为来推断底层编码问题,然而这种方法在面对日益复杂的系统时变得越来越难以实施。在典型的RoboCup研究环境中,团队成员少、任务多、时间紧,以及开发的分散性,都增加了底层错误出现的概率。
就像现代基因组学中,生物基因型的异常往往通过表型的复杂行为来识别,机器人系统中高层问题也常常由底层实现错误的非平凡组合导致。但与生物系统不同的是,机器人系统的“基因组”(底层软件行为和环境响应)可以实时直接观察。常见的调试方法有:
-
数据日志
:大多数机器人系统可通过设置调试详细参数在编译时生成调试日志。错误重现后,日志会记录传感器值、伺服位置值、图像信息、自我定位信念等随时间变化的数据,后续可手动或通过分类技术分析错误来源。
-
可视化监控
:数据日志存在内存限制、错误需可重现、调试方法偏纠正而非预防等缺点。可视化监控则将关键系统信息实时流式传输到图形化Web客户端,用户可实时监控。它具有网络通信成本低、能即时识别罕见问题、可在底层功能异常影响高层行为前进行纠正等优势。
NUbugger就是这样一个可视化、实时且开源的机器人调试工具,它解决了上述调试难题。
2. NUbugger的实现
NUbugger通过单个Web服务器实现了机器人与Web客户端之间的多对多服务。任意数量的机器人(如RoboCup人形足球联赛中的3 - 4个机器人)可将实时底层系统信息无线传输到Web服务器,服务器再将信息分发给任意数量的Web客户端,用户可监控关键的感官数据可视化和高层行为。
为了实现这一功能,使用了多个库来抽象底层网络和可视化机制:
| 库名称 | 作用 |
| ---- | ---- |
| ∅MQ | 高性能异步消息库,用于机器人到Web服务器的原始传输层,支持C++,提供多线程和自动重连抽象 |
| Protocol Buffers | 谷歌开发的语言无关、跨平台且可扩展的结构化数据序列化机制,用于添加应用层信息 |
| Socket.IO | JavaScript库,用于Web服务器到Web客户端的原始传输层,支持WebSocket、自动重连和回退传输方法 |
| Express | 轻量级灵活的node.js Web应用框架,用于Web服务器实现,易于与JavaScript客户端集成,计算开销低 |
| Three.js | 轻量级跨浏览器JavaScript库,用于主应用显示的3D渲染 |
| Ext JS | 纯JavaScript应用框架,用于创建交互式Web应用,提供可移动、可调整大小和配置的窗口 |
信息在这些网络包之间的流动如下:
graph LR
A[Robot] -->|ZMQ| B[Web Server]
B -->|SocketIO| C[Web Client]
A -->|Protocol Buffers| B
B -->|Protocol Buffers| C
3. NUbugger的功能
NUbugger实现了将关键系统信息从机器人(如Robotis DARwIn - OP)实时流式传输到Web客户端。目前,NUbots调试环境包含以下元素:
-
主显示界面
:提供机器人自我定位信念(渲染的3D模型的位置和方向)和误差(由透明紫色椭圆表示)的可视化,以及利用实时加速度计和伺服位置数据的当前姿态。
-
图像显示界面
:实时显示机器人看到的内容,并包含多个覆盖层,方便用户可视化图像分类或检测到的显著特征。
-
滚动图表显示界面
:可直接提供机器人多个传感器的实时数据,如加速度计、陀螺仪、压力传感器和温度监测器。
4. 2012 UT Austin Villa代码发布
2012年,UT Austin Villa队在US Open和墨西哥城举行的2012 RoboCup比赛的标准平台联赛中夺冠。此次代码发布包含了该团队的代码,为进入标准平台联赛的团队和使用Naos机器人的研究人员提供了坚实的基础。
4.1 代码的关键贡献
- 灵活且健壮的架构 :设计用于方便代码测试和调试,能适应不同的应用场景。
- 易于使用的视觉代码 :便于创建颜色表和调试问题,提高了视觉处理的效率。
- 自定义定位模拟器 :允许快速测试完整的团队场景,节省了测试时间。
- 踢球引擎 :通过一系列静态关节姿势运行,并根据球的当前位置进行调整,增强了机器人的踢球能力。
4.2 代码的应用价值
对于新的RoboCup团队和使用Naos机器人的研究人员来说,这些代码提供了一个可参考和扩展的基础。他们可以基于此架构进行开发,利用视觉代码和定位模拟器进行调试和测试,从而更快地实现机器人的智能行为。
综上所述,NUbugger和2012 UT Austin Villa代码发布都为机器人领域的研究和开发提供了重要的工具和资源,有助于推动机器人技术的发展。
5. NUbugger的实际应用成果
在开发后的短时间内,NUbugger已经在纽卡斯尔大学的NUbots RoboCup团队中取得了巨大成功,帮助解决了多个底层问题:
-
视频延迟问题
:之前的NUbots视觉系统维护着一个包含20个图像帧的缓冲区,以实现随机访问和线程安全执行。但视觉系统的重新开发移除了这一功能,导致缓冲帧无法与传感器数据同步访问,从而产生了高达0.6秒的图像处理延迟。这一问题严重影响了自我定位精度和整体系统性能,但直到通过NUbugger实时流式传输才被发现。
-
球检测精度问题
:视觉系统中的一个实现错误,使得机器人在将球定位坐标从图像投影到场地平面时,没有考虑机器人头部的俯仰和偏航角度。这导致当机器人不直接朝前时,球检测出现显著误差。在NUbugger的主显示界面中,通过旋转机器人头部可以观察到球位置信念的覆盖层出现弧线,而实际球是静止的,从而发现了这一问题。
-
相机固件问题
:Robotis DARwIn - OP机器人平台配备的Logitech C905相机,使用Linux UVC驱动。虽然该驱动可以控制大部分基本相机参数,但一些参数(如自动白平衡和某些罗技专有颜色校正值)无法访问。这导致在足球场上光线变化时,自动白平衡调整会显著降低分类精度和物体识别性能。通过NUbugger,用户可以立即检测到这一问题,并及时更换和重启机器人。
6. NUbugger的未来展望
尽管NUbugger仍在积极开发中,但有望被其他RoboCup团队成功采用,具体可能在以下几个层面实现:
-
完整系统采用
:团队可以采用完整的NUbugger系统(包括服务器和客户端应用程序),并根据不同的硬件平台对服务器 - 机器人接口进行必要的修改。
-
服务器应用采用
:团队可以采用NUbugger服务器应用程序,然后根据自身特定需求修改客户端的功能和布局。
目前,最新的NUbugger源代码可从https://github.com/nubots/NUbugger下载,开发者也愿意与其他RoboCup团队合作,进一步扩展该框架以满足他们的需求。
7. 总结与对比
7.1 总结
NUbugger作为一个可视化、实时且开源的机器人调试工具,通过多对多服务架构和多个实用库的结合,实现了从机器人到Web客户端的实时数据传输和可视化监控。它在实际应用中帮助解决了多个底层问题,提高了机器人系统的性能和稳定性。而2012 UT Austin Villa代码发布则为标准平台联赛的团队和使用Naos机器人的研究人员提供了一个坚实的基础,其灵活的架构、易于使用的视觉代码、自定义定位模拟器和踢球引擎等都具有重要的应用价值。
7.2 对比
| 项目 | NUbugger | 2012 UT Austin Villa代码 |
|---|---|---|
| 主要功能 | 机器人调试,提供底层信息可视化 | 提供机器人开发的架构、模块和工具 |
| 应用场景 | 解决机器人底层编码问题 | 帮助新团队和研究人员开展机器人开发工作 |
| 适用对象 | 所有需要调试复杂机器人系统的团队 | 标准平台联赛团队和使用Naos机器人的研究人员 |
通过对比可以看出,两者虽然侧重点不同,但都在机器人领域发挥着重要作用,共同推动着机器人技术的发展。无论是调试现有的机器人系统,还是开展新的机器人开发项目,这两个工具都为开发者提供了有力的支持。
graph LR
A[机器人开发] -->|调试需求| B[NUbugger]
A -->|开发基础需求| C[2012 UT Austin Villa代码]
B -->|解决问题| D[提高系统性能]
C -->|提供基础| E[加速开发进程]
总之,随着机器人技术的不断发展,类似NUbugger和2012 UT Austin Villa代码这样的工具和资源将越来越重要,它们将帮助开发者更高效地解决问题,推动机器人在更多领域的应用。
超级会员免费看
55

被折叠的 条评论
为什么被折叠?



