tag 标签: RemoteLab

相关博文
  • 热度 1
    2024-9-3 16:35
    303 次阅读|
    0 个评论
    面向大学的树莓派 RemoteLab 机器人开发!
    ​大学生远程机器人开发并非痴人说梦--在弗罗茨瓦夫科技大学,这已成为现实。在最新一期的《The MagPi》中,Rob Zwetsloot 与 RemoteLab 进行了交流。作为 #MagPiMonday 的特别节目,在此与您分享。 几期前,我们采访了 Wojciech Domski 关于他的遥控飞机 OSD 的故事,这是一个很酷的小项目,可以让他看到遥控飞机的飞行位置以及一些 HUD 信息。在令人印象深刻的同时,他还与弗罗茨瓦夫大学合作了一个项目,并一直热衷于与我们分享。 遥控飞机 OSD: 可通过 RemoteLab 访问各种开发板,包括 ST 的 Nucleo 板和 Discovery 板 Wojciech 解释说:“RemoteLab 被称为硬件即服务(Hardware-as-a-Service),它通过服务方式提供对开发板等资源的远程访问。它位于弗罗茨瓦夫科技大学 ,用于机器人控制器和高级机器人控制课程"。 RemoteLab 的出现是必要的--2020 年,由于新冠疫情大流行,弗罗茨瓦夫科技大学与世界其他地方一样暂停了面授课程。由于学生无法访问真正的开发板(以及他们所在的实验室),Wojciech 开始构建一种通过 Raspberry Pi 远程访问开发板的方法。 Wojciech 说:"2020 年底,我在家里开发并运行了第一个版本。2021 年,我建立了环境并推出了服务。如果没有我所在大学的支持以及 ST 提供开发板的人员的支持,这一切都不可能实现。” 网络界面包括一个摄像头,您可以监控电路板 最初的构建使用的是 Raspberry Pi 3,它兼顾了低功耗和高硬件性能,再加上支持良好的 Linux 发行版,使其成为理想的选择。 Wojciech 告诉我们:"它的性能足以同时为十几名学生提供服务。不过,提供开发板视图的视频流效果并不好。我需要解决这个问题,并决定使用基于静态图像的视频预览。下一代产品包括升级到 Raspberry Pi 4。现在,甚至可以直接在 Raspberry Pi 上工作和开发代码,因为它提供了足够的计算能力。最后,在 2024 年又进行了一次升级。三台服务器换成了 Raspberry Pi 5。此外,网络界面也有了新的更新版本。根据我的实验,Raspberry Pi 5 甚至可以向全班学生传输真实的视频反馈"。 充满挑战的发展 我们喜欢问每个制作者制作过程如何。Wojciech 的回答很直白:“太可怕了 :D”,还配了一个表情符号。 RemoteLab 使用的开发板之一 Wojciech 承认:"我不想计算晚上花在硬件安装上的时间。准备软件是一回事,你可以逐步添加新功能,必要时还可以修改。我印象最深的是将额外的硬件(如传感器)连接到开发板上。我花了大约三天的时间进行设置和测试"。 我们都经历过组装失败的挫折。不过最终,他还是成功地完成了所有工作。用户只需通过 SSH 连接到 RemoteLab 服务器,就能通过网络界面查看实验室中开发板的状态并对其进行控制。对了,由于升级到了 Raspberry Pi 5,现在还能获得视频反馈。 远程学习 对于任何这样的项目,从最终用户那里获得反馈也很重要,而它似乎很受学生们的欢迎。 Wojciech说:"一些学生非常喜欢RemoteLab,说它对他们帮助很大。具有突破性意义的是,该系统可以全天候使用。我收到很多反馈,说学生们能够更好地备课,而且他们不受任何时间限制。 原型设计是一项费力的工作,布线是一项繁琐而细致的工作 Wojciech 仍在开发这个系统,过去几年来一直如此,并在不断改进,例如刚刚增加了通过网络界面的串行控制台,下一步他将考虑实时绘图。他还在考虑扩展到第四台 Raspberry Pi 服务器,并增加对 Raspberry Pi Pico 和 Pico 2 的支持。 Wojciech 最后说道:“我认为 RemoteLab 完全代表了 Raspberry Pi 基金会的宗旨,它这完全是为了支持教育并鼓励人们进行创新。” 工作原理 1. 用户与服务器之间通过 SSH 传输两个端口,其中一个端口为网络用户界面。在这里,你可以查看开发板的状态、调试器是否正在运行以及其他功能。 2. 第二个端口专用于调试器(openocd 或 st-link),通过 SWD 接口连接,就像 Raspberry Pi Pico 上一样。远程调试允许将新固件上传到开发板,或调试开发板上的源代码。 3. 管理员方面要复杂一些,需要网络服务器来管理上述功能。我们创建了一套 Python 脚本,用于在任何特定 RemoteLab 设置的一台或所有服务器上自动执行重复任务(如更新代码)。 ​