{"id":15149272,"url":"https://github.com/vmaxcoding/romidevdoc","last_synced_at":"2026-02-06T21:31:17.216Z","repository":{"id":52745529,"uuid":"515080631","full_name":"VMAxCoding/RomiDevDoc","owner":"VMAxCoding","description":"Romi Robot Kit (for FIRST) 快速入门指南","archived":false,"fork":false,"pushed_at":"2023-05-10T07:55:35.000Z","size":67,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T05:42:38.467Z","etag":null,"topics":["document","first","first-frc","robot","robotics","romi"],"latest_commit_sha":null,"homepage":"https://vmaxcoding.github.io/RomiDevDoc/","language":"Markdown","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VMAxCoding.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-18T07:35:36.000Z","updated_at":"2023-05-10T07:50:49.000Z","dependencies_parsed_at":"2025-02-13T10:01:40.113Z","dependency_job_id":null,"html_url":"https://github.com/VMAxCoding/RomiDevDoc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/VMAxCoding/RomiDevDoc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VMAxCoding%2FRomiDevDoc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VMAxCoding%2FRomiDevDoc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VMAxCoding%2FRomiDevDoc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VMAxCoding%2FRomiDevDoc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VMAxCoding","download_url":"https://codeload.github.com/VMAxCoding/RomiDevDoc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VMAxCoding%2FRomiDevDoc/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267962315,"owners_count":24172634,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["document","first","first-frc","robot","robotics","romi"],"created_at":"2024-09-26T13:43:26.989Z","updated_at":"2026-02-06T21:31:17.186Z","avatar_url":"https://github.com/VMAxCoding.png","language":"Markdown","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Romi Robot Kit (for FIRST) 快速入门指南\n\n### —— by [GitHub@Mehver|这水怎么没味儿啊](https://github.com/Mehver)\n\n# 1 简介\n\n### 1.1 Pololu\n\nPololu 是一个教学\u0026DIY电路硬件器材供应商，类似国内的矽递科技。他们把一些常用的开发板和教学电路等组件产品化，提供给业余开发者和学生。也算是创客教育的一类。\n\n- Pololu 官网: https://www.pololu.com/\n- Pololu GitHub: https://github.com/pololu\n- 矽递科技官网: https://www.seeedstudio.com/\n- 矽递科技 GitHub: https://github.com/Seeed-Studio/\n\n### 1.2 Romi\n\nRomi 是 Pololu 的产品。Pololu 作为 FIRST 竞赛中的第三方，其产品 Romi 也只是部分还原了 FIRST 竞赛套件的开发流。因此在下文中学习和理解 Romi 的时候，建议把它当做一个**机器人开发套件**而不是 **FIRST 机器人开发套件**，以提醒这两者间的独立性。\n\n- Romi官方详情: https://www.pololu.com/product/4022\n- Romi主板官方详情: https://www.pololu.com/product/3544\n- 开发文档: https://www.pololu.com/docs/0J69\n- FRC版开发文档: https://docs.wpilib.org/en/stable/docs/romi-robot/index.html\n\n#### 1.2.1 学Romi的理由\n\n**Romi 作为一个简易版的机器人，可以帮助小白快速掌握硬件编程和开发。**\n\nRomi 和 FIRST 机器人在代码层面存在可复用性，但都在基础层面。这就类似于，学习了伪代码后，会发现各编程语言的基本逻辑是相同的。因此 Romi 确实适合从未接触过硬件编程的人用来入门 FIRST 竞赛的软件开发。但对于已经有过 Arduino 等单片机开发经验的人来说，学习 Romi 对 FIRST 竞赛帮助有限。\n\n#### 1.2.2 不学Romi的理由\n\n**哪怕是不同的 FIRST 竞赛之间，其技术流程也存在较大的差异。这注定了 Romi 套件和 FIRST 竞赛间仍存在较大的独立性。**\n\n就像 `1.2.1` 中说的，如果你已经入门了单片机和编程，或者你希望专注于 FIRST 竞赛的硬件部分，Romi 并不能教会你什么。由于 Romi 是一个来自第三方的开发套件，其自由度远大于 FIRST 竞赛，后者需要的更多是对官方指定硬件的熟悉。更何况，FIRST 竞赛在机械工程方面的难度和发挥空间更是 Romi 所不具备的。\n\n#### 1.2.3 本文立场\n\n本文将着重于明晰 Romi 开发平台本身的概念，而不是侧重于 FIRST 竞赛相关的模拟。**如果仅为使 Romi 模拟FRC机器人，可以参看官方文档，按步骤操作即可，并不需要过度学习该平台的技术细节。**\n\n因此，综合 `1.2.1` 和 `1.2.2` 所述，**如果你的目标是参加 FIRST 竞赛，请自行考虑是否应该学习本文。**\n\n## 2 上手\n\n### 2.1 知识储备\n\n在继续阅读本文之前，有一些硬件开发的基础知识需要了解。此处将罗列必要的相关概念，以及推荐的学习资料。请在进入下一步之前了解相关概念。\n\n#### 2.1.1 基本的计算机知识\n\n**此项非必须，但可以大大降低后续学习时的抽象度。**\n\n时间充裕的话，建议先了解计算机结构以及基本的编程原理。建议可以先从基础的软件编程入手。或者动手组装一台电脑，了解CPU、内存等结构的作用。\n\n- 【强烈推荐】《计算机速成课 [40集全/精校] - Crash Course Computer Science》B站: https://www.bilibili.com/video/BV1EW411u7th\n\n**注: 如果你是万科梅沙书院VMA的学生，可以选择 CSE202 / CSE302 / CSE304 (2022) 的课程学习 `2.1.1` 的相关概念*\n\n#### 2.1.2 Arduino / 单片机开发板\n\n\u003cu\u003e**Arduino**\u003c/u\u003e 是目前最流行的\u003cu\u003e**单片机开发平台**\u003c/u\u003e，其中包含 **\u003cu\u003eArduino 开发板\u003c/u\u003e**、**\u003cu\u003eArduino 固件\u003c/u\u003e**、**\u003cu\u003eArduino 编译器\u003c/u\u003e**等。\n\n- 【推荐】《Arduino极速入门教程——两篇文章让你会用Arduino（上）》CSDN: https://yunwuhai.blog.csdn.net/article/details/113528255\n- 【推荐】《Arduino极速入门教程——两篇文章让你会用Arduino（下）》CSDN: https://yunwuhai.blog.csdn.net/article/details/113558575\n- 《Arduino IDE使用教程-超详细》CSDN: https://blog.csdn.net/as480133937/article/details/105331315\n\n- 《单片机开发板》百度百科: https://baike.baidu.com/item/%E5%8D%95%E7%89%87%E6%9C%BA%E5%BC%80%E5%8F%91%E6%9D%BF\n\n**注: 如果你是万科梅沙书院VMA的学生，可以选择 EGR309 (2022) 的课程学习 `2.1.2` 的相关概念*\n\n#### 2.1.3 树莓派 / Linux 开发板\n\n**\u003cu\u003e树莓派\u003c/u\u003e**是目前最流行的 \u003cu\u003e**Linux on ARM 开发平台**\u003c/u\u003e。其级别从微波炉都在用的单片机，升级到了手机级别的ARM处理器。从运行 Arduino 固件，升级到了 Linux 系统。但其本质都是运行程序。此处不用过多的学习，但至少需要会给树莓派安装操作系统，并且配置开发环境。\n\n- 【推荐】《第一课：什么是树莓派》CSDN: https://blog.csdn.net/qq_27320195/article/details/105215305\n- 【推荐】《第二课：基于树莓派的10个经典项目(树莓派能做什么)》CSDN: https://blog.csdn.net/qq_27320195/article/details/105444549\n- 【推荐】《第三课：购买您的第一个树莓派》CSDN: https://blog.csdn.net/qq_27320195/article/details/108877481\n- 【推荐】《树莓派折腾指南之系统安装及远程登陆（无头安装、无显示器系统安装）》CSDN: https://blog.csdn.net/suool/article/details/105218395\n- 《树莓派如何完全无头(无屏无网线无键盘鼠标)安装》CSDN: https://blog.csdn.net/weixin_34321753/article/details/88986145\n- 《Linux 教程》RUNOOB: https://www.runoob.com/linux/linux-tutorial.html\n- 《Linux基本指令》博客园: https://www.cnblogs.com/xiaxiangming/p/15096542.html\n\n### 2.2 准备 Romi\n\nRomi Robot Kit for FIRST 小车可以被拆分为车底盘部分以及树莓派开发板。其中，不带树莓派的底盘本身就是一块 Arduino 主板，熟悉 Arduino 的人看到 Romi 32U4 时 就能马上想到 Arduino UNO R3 使用的单片机 ATMEGA328PU4。而树莓派在 Romi 的运行中并不是必需品，但是是作为上位机，通过 I²C 提供更复杂的控制。\n\n因此，不需要树莓派做上位机，Romi 也能作为一个 Arduino 机器人正常的运行。而安装树莓派后则可以进行更复杂的控制，甚至模拟 FIRST 的开发环境。\n\n**如果仅为模拟 FIRST 竞赛的环境，可以直接参看下方的开发文档。而本文会提供非FRC版，更全面的配置介绍。**\n\n- 开发文档: https://www.pololu.com/docs/0J69\n- FRC版开发文档: https://docs.wpilib.org/en/stable/docs/romi-robot/index.html\n- Romi Robot Kit for FIRST: https://www.pololu.com/product/4022\n- Romi 32U4 Control Board: https://www.pololu.com/product/3544\n- Romi包库开发文档: https://pololu.github.io/romi-32u4-arduino-library/\n- 【推荐】Romi + 树莓派4B文档 (非官方): https://github.com/czbeatty/FRC-Romi-Programming-Course/tree/main/Lessons\n- Romi + 树莓派4B示范视频 (非官方): https://www.youtube.com/watch?v=mop51tpWWcA\n\n#### 2.2.1 硬件组装\n\n直接参看官方文档:\n\n- 开发文档-硬件组装: https://www.pololu.com/docs/0J69/4\n- FRC版开发文档-硬件组装: https://docs.wpilib.org/en/stable/docs/romi-robot/hardware.html\n\n#### 2.2.2 Romi 32U4 Control Board 底盘 (主板) Arduino 部分\n\n##### 2.2.2.1 Arduino IDE 配置\n\n安装 Arduino IDE:\n\n- 【推荐】《Arduino极速入门教程——两篇文章让你会用Arduino（上）》CSDN: https://yunwuhai.blog.csdn.net/article/details/113528255\n- 【推荐】《Arduino极速入门教程——两篇文章让你会用Arduino（下）》CSDN: https://yunwuhai.blog.csdn.net/article/details/113558575\n- 《Arduino IDE使用教程-超详细》CSDN: https://blog.csdn.net/as480133937/article/details/105331315\n\n直接参看官方文档:\n\n- 开发文档-ArduinoIDE: https://www.pololu.com/docs/0J69/5.2\n- 库管理器安装 `Pololu A-Star Boards`\n\n测试代码:\n\n```c++\n/*\n  Blink\n\n  Turns an LED on for one second, then off for one second, repeatedly.\n\n  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO\n  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to\n  the correct LED pin independent of which board is used.\n  If you want to know what pin the on-board LED is connected to on your Arduino\n  model, check the Technical Specs of your board at:\n  https://www.arduino.cc/en/Main/Products\n\n  modified 8 May 2014\n  by Scott Fitzgerald\n  modified 2 Sep 2016\n  by Arturo Guadalupi\n  modified 8 Sep 2016\n  by Colby Newman\n\n  This example code is in the public domain.\n\n  https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink\n*/\n\n// the setup function runs once when you press reset or power the board\nvoid setup() {\n  // initialize digital pin LED_BUILTIN as an output.\n  pinMode(LED_BUILTIN, OUTPUT);\n}\n\n// the loop function runs over and over again forever\nvoid loop() {\n  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)\n  delay(1000);                       // wait for a second\n  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW\n  delay(1000);                       // wait for a second\n}\n```\n\n###### 2.2.2.1.1 Arduino IDE 安装错误和不识别问题排查\n\n- 《arduino usb串口驱动_Arduino开发环境的搭建与编程入门基础教程》CSDN: https://blog.csdn.net/weixin_39844590/article/details/111197427\n\n- 《arduino usb串口驱动_正确安装驱动的姿势》CSDN: https://blog.csdn.net/weixin_39734399/article/details/111205281\n\n##### 2.2.2.2 Arduino IDE 使用 Romi 32U4 包库\n\n直接参看官方文档:\n\n- 开发文档-ArduinoIDE 使用 Romi 库: https://www.pololu.com/docs/0J69/6\n- 库管理器安装 `Romi32U4`\n- Romi包库开发文档: https://pololu.github.io/romi-32u4-arduino-library/\n\n测试代码:\n\n```c++\n/*\n  2022.5.14 new file\n  This example code is written by:\n  https://github.com/SynthesisDu\n*/\n\n#include \u003cRomi32U4.h\u003e\n\nRomi32U4Motors motors;\nRomi32U4ButtonA buttonA;\n\nvoid setup()\n{\n  // Wait for the user to press button A.\n  buttonA.waitForButton();\n  // Delay so that the robot does not move away while the user is\n  // still touching it.\n  delay(1000);\n}\n\nvoid loop()\n{\n  // Run forward.\n  ledYellow(1);\n  for (int speed = 0; speed \u003c= 400; speed++)\n  {\n    motors.setLeftSpeed(speed);\n    motors.setRightSpeed(speed);\n    delay(2);\n  }\n  for (int speed = 400; speed \u003e= 0; speed--)\n  {\n    motors.setLeftSpeed(speed);\n    motors.setRightSpeed(speed);\n    delay(2);\n  }\n\n  // Run backward.\n  ledYellow(0);\n  for (int speed = 0; speed \u003e= -400; speed--)\n  {\n    motors.setLeftSpeed(speed);\n    motors.setRightSpeed(speed);\n    delay(2);\n  }\n  for (int speed = -400; speed \u003c= 0; speed++)\n  {\n    motors.setLeftSpeed(speed);\n    motors.setRightSpeed(speed);\n    delay(2);\n  }\n\n  delay(500);\n}\n```\n\n##### 2.2.2.3 Romi 32U4 Control Board 底盘配置为下位机\n\n使用树莓派控制 Arduino 下位机时使用 I²C 信号传输，此时 Arduino 需要烧录专门的程序用以接收上位机的控制。\n\n**FRC版不需要此步骤，其定制版树莓派系统会自行烧录程序，跟随FRC版文档即可。**\n\n直接参看官方文档: \n\n- 开发文档-I²C 信号规范: https://www.pololu.com/docs/0J69/3.7\n- 开发文档-将 Arduino 配置为下位机: https://www.pololu.com/blog/577/building-a-raspberry-pi-robot-with-the-a-star-32u4-robot-controller\n- 官方包库-Romi 32U4 下位机包库: https://github.com/pololu/pololu-rpi-slave-arduino-library\n\n#### 2.2.3 树莓派上位机部分\n\n##### 2.2.3.1 树莓派系统安装\n\nFRC版系统安装教程:\n\n- FRC版开发文档-树莓派系统安装: https://docs.wpilib.org/en/stable/docs/romi-robot/imaging-romi.html\n\n普通系统安装教程:\n\n- 《树莓派折腾指南之系统安装及远程登陆（无头安装、无显示器系统安装）》CSDN: https://blog.csdn.net/suool/article/details/105218395\n- 《树莓派如何完全无头(无屏无网线无键盘鼠标)安装》CSDN: https://blog.csdn.net/weixin_34321753/article/details/88986145\n\n###### 2.2.3.1.1 系统安装的错误排查\n\n- **系统盘烧录不成功**\n\n  1. 如果教程中使用的软件无法排故，可以尝试 Rufus，我目前用过最强大的系统烧录软件。市面上有和没有的系统，家用主板到服务器我基本都试过，没遇到过 Rufus 造成的问题。\n     - Rufus 发布页: https://rufus.ie/zh/\n     - Rufus 微软商城版: https://apps.microsoft.com/store/detail/rufus/9PC3H3V7Q9CH\n     - Rufus GitHub: https://github.com/pbatard/rufus\n\n  2. 如果 Rufus 无法解决，接下来考虑下载的系统镜像不完整，尝试重新下载或更换镜像。\n  3. 如果还有问题，基本可以怀疑是硬件的问题，可以尝试更换读卡器、更换SD/TF卡。因为这类存储卡转接USB也依靠一个桥主控芯片，便宜货确实容易有兼容性问题。\n\n- **系统盘不引导**\n  1. 如果新烧录的系统盘无法运行树莓派系统，直接重试一遍烧录系统的步骤。\n  2. 上一步无效的话尝试以其他文件格式格式化存储介质。例如切换 GPT/MBR 分区表，修改 NTFS/FAT32 文件系统。\n  3. 如果依然不行，换个系统镜像试试，否则为硬件问题。其实第二步和第三步概率相近，基本不分先后。\n  4. 此处硬件问题就比较杂了，如果缺乏经验，也没什么好的建议了。\n\n##### 2.2.3.2 连接树莓派\n\n此处多提一嘴，如果使用树莓派4B等有无线网卡的型号，是可以直接连接树莓派的 WiFi 的。不同版本的操作系统可能有不同的 WiFi 密码，可以在 GitHub 下载的位置查看。\n\n###### 2.2.3.2.1 首次启动故障排查\n\n- **通电红灯常亮，绿灯不亮**\n  按理说刚通电时，红灯常亮，绿灯会闪烁。红灯表示通电，绿灯表示读盘。绿灯闪烁说明树莓派开始加载操作系统了。而我本人就遇到通电后绿灯完全不亮的情况。\n  - 我的排查结果是 Romi 提供的供电不足，树莓派无法开机。在更换电池前我直接给树莓派外接了 TypeC 的充电器，直接正常开机。\n  - 后续扒掉外接线，更换电池，同样正常开机。\n  - 此故障的原因大概是化学电池的电压波动超限，其电压依然能够点亮 Romi 的 LED 但无法让树莓派开机。\n\n## 3 使用\n\n### 3.1 FIRST 开发模式\n\n#### 3.1.1 安装软件开发环境\n\n安装 WPILib 模组版 VSCode，之后便可和其他 FIRST 机器人一样在 VSCode 中开发。\n\n- 官方安装包 GitHub 下载: https://github.com/wpilibsuite/allwpilib/releases\n\n##### 3.1.1.1 Windows 系统\n\nWindows 版本的安装包以 .iso 文件的形式打包。安装的部分可以参考这个视频:\n\n- Romi + 树莓派4B示范视频 (非官方): https://www.youtube.com/watch?v=mop51tpWWcA\n\n###### 3.1.1.1.1 Windows 安装注意事项\n\n- 直接用压缩软件解压此 .iso 文件可能会提示文件损坏，其实无需解压，只需要右键文件 --\u003e 打开方式 --\u003e 文件资源管理器，直接运行安装程序即可。\n- 运行安装程序后，偶尔会有命令行窗口弹出。\n- 建议在能访问外网的网络环境下安装。\n- 有 VPN 的情况下，包含在线下载，总安装时常一般不超过10分钟。\n\n##### 3.1.1.2 Linux 系统\n\nLinux 版本的安装包以 .tar.gz 文件的形式打包。\n\n##### 3.1.1.3 MacOS 系统\n\nMacOS 版本的安装包以 .dmg 文件的形式打包。\n\n### 3.2 Arduino 开发模式\n\n直接参看官方文档:\n\n- 开发文档-ArduinoIDE 使用 Romi 库: https://www.pololu.com/docs/0J69/6\n- Romi包库开发文档: https://pololu.github.io/romi-32u4-arduino-library/\n\n### 3.3 树莓派 -- I²C -\u003e Arduino 开发模式\n\n直接参看官方文档:\n\n- 开发文档-I²C 信号规范: https://www.pololu.com/docs/0J69/3.7\n- 开发文档-将 Arduino 配置为下位机: https://www.pololu.com/blog/577/building-a-raspberry-pi-robot-with-the-a-star-32u4-robot-controller\n- 官方包库-Romi 32U4 下位机包库: https://github.com/pololu/pololu-rpi-slave-arduino-library\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmaxcoding%2Fromidevdoc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvmaxcoding%2Fromidevdoc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmaxcoding%2Fromidevdoc/lists"}