【RM2020-机器人上位机-项目简介开源】华南理工大学 华南虎
![huww98](https://hz-rm-bbs-web-prod.oss-cn-hangzhou.aliyuncs.com/avatar/pre/v1/000047487_avatar_big.jpg)
了解你的机器人,想它所想。GitHub仓库
一、概述
为何要有上位机
在实验室众多硬件和软件工程师的不懈努力之下,一个个精巧而有个性的机器人诞生了。虽然是我们创造了它们,但就像人类的家长和孩子们一样,我们和机器人之间也普遍存在沟通问题:我们经常会问,我的机器人为何会有这样的举动,也就是我们说的debug。这时候,我们就需要一个工具,来让我们了解机器人的想法(内部状态),并最终以此为依据,调教出更好的机器人。
除了上位机以外,我们也有不少其他的调试手段,但与上位机相比,它们都有一些不足:
我们的上位机有何不同
上位机的概念也不是我们的首创,但我们的实现非常与众不同。我们采用B/S架构,前端是一个网页,可以运行于各种设备中,如PC、iPad、手机等。后端则直接运行于机器人上。前后端之间采用标准的Web协议进行通信。这给我们带来了几个重要的优势:
如上图是我们的上位机的系统架构图,同时也表明了其中的数据流向。目前,我们主要针对最难以观测的单片机中的数据进行了设计,但同时我们的后端也保留了未来接入更多数据源的扩展性,并可对前端屏蔽不同数据来源的差异。
三、基于WebGL的图表渲染
为了在前端展示高频率的来自机器人的数据,我特意构建了一个基于WebGL的图表渲染组件。利用现代高性能GPU,它可以流畅渲染数十倍于现有组件的数据点,并支持用户进行缩放平移等操作。在软件设计上,该组件具有良好的模块化构造,性能敏感的地方采用WebGL渲染,其他部分则使用更加灵活的SVG和HTML渲染,兼具性能和表现力。具体请见GitHub仓库以及在线demo。
一、概述
为何要有上位机
在实验室众多硬件和软件工程师的不懈努力之下,一个个精巧而有个性的机器人诞生了。虽然是我们创造了它们,但就像人类的家长和孩子们一样,我们和机器人之间也普遍存在沟通问题:我们经常会问,我的机器人为何会有这样的举动,也就是我们说的debug。这时候,我们就需要一个工具,来让我们了解机器人的想法(内部状态),并最终以此为依据,调教出更好的机器人。
除了上位机以外,我们也有不少其他的调试手段,但与上位机相比,它们都有一些不足:
- 断点调试:在构建软件的时候,我们经常在代码中设置断点,让程序暂停,以检查其中的状态。但物理世界是不能暂停的,暂停机器人上的程序可能导致机器人不可预料的行为。
- 日志调试:使用日志的时候,通常收集日志和查看日志在时间上是分离的。但在调试机器人的时候,不光要了解程序的状态,还要观察当时的物理环境,了解操作手的输入等。这种时间上的分离将导致我们更难对机器人的行为进行归因。
我们的上位机有何不同
上位机的概念也不是我们的首创,但我们的实现非常与众不同。我们采用B/S架构,前端是一个网页,可以运行于各种设备中,如PC、iPad、手机等。后端则直接运行于机器人上。前后端之间采用标准的Web协议进行通信。这给我们带来了几个重要的优势:
- 跨平台:前端可以在几乎所有设备上运行,不管是在实验室还是在其他测试场地,不管手头上有怎样的设备,都能游刃有余。
- 使用灵活:前后端使用标准的网络协议通信,这意味着它们之间可以很灵活地连接,比如直接使用以太网线,连接同一个WLAN,甚至跨越互联网,在世界的任何地方互相访问。
- 界面美观:众所周知,Web技术能更容易地做出更加美观,用户友好的界面。
如上图是我们的上位机的系统架构图,同时也表明了其中的数据流向。目前,我们主要针对最难以观测的单片机中的数据进行了设计,但同时我们的后端也保留了未来接入更多数据源的扩展性,并可对前端屏蔽不同数据来源的差异。
三、基于WebGL的图表渲染
为了在前端展示高频率的来自机器人的数据,我特意构建了一个基于WebGL的图表渲染组件。利用现代高性能GPU,它可以流畅渲染数十倍于现有组件的数据点,并支持用户进行缩放平移等操作。在软件设计上,该组件具有良好的模块化构造,性能敏感的地方采用WebGL渲染,其他部分则使用更加灵活的SVG和HTML渲染,兼具性能和表现力。具体请见GitHub仓库以及在线demo。
请问这篇文章对你有用吗?
【RM2020-机器人上位机-项目简介开源】华南理工大学 华南虎