本页面整理自 HKU Robocon Team — Necessary Information for Software Trainees,供 NEC 软件组/电控组新人参考。完整实验细节请访问原站点。如果你是第一次接触机器人软件开发,建议按照下面的路径逐步学习。核心目标是:能够在 Linux 环境下使用 Git 协作,理解 ROS 2 节点、话题、服务,最终写出可以控制真实机器人的代码。
学习目标
完成本指南后,你应该能够:- 使用 Linux 常用命令操作机器人上位机;
- 通过 SSH 远程登录机器人,使用
tmux管理会话; - 使用 Git 与队友协作开发;
- 理解 ROS 2 的核心概念(Node、Topic、Service、Launch);
- 在 turtlesim 中完成手柄控制、路径跟随等基础作业;
- 将所学迁移到 NEC 的真实机器人项目中。
第一步:必备工具
C / C++
机器人底层控制、ROS 2 节点开发的主要语言。建议先掌握基础语法、指针、面向对象和 STL 常用容器。
Linux
机器人运行的操作系统。需要熟悉文件系统、权限管理、进程控制和常用命令行工具。
Git
团队协作的版本控制工具。必须掌握克隆、提交、分支、合并、解决冲突和 Pull Request 流程。
ROS 2
Robot Operating System,机器人应用开发框架。核心包括节点通信、消息类型、launch 文件和工具链。
第二步:Linux 与远程开发
常用命令速查
SSH 与 tmux 要点
- SSH 密钥:使用
ssh-keygen生成密钥对,公钥(id_rsa.pub)放到机器人~/.ssh/authorized_keys中,避免每次输入密码。 - 远程机器人无显示器:比赛中机器人通常没有外接屏幕,所有操作都通过 SSH 完成。
- tmux 作用:
- 一个 SSH 窗口中同时运行多个终端;
- 断网后程序继续在后台运行;
- 多人共享同一会话调试。
- 常用快捷键:
Ctrl+B然后":上下分屏Ctrl+B然后%:左右分屏Ctrl+B然后d:分离会话tmux a:重新附加会话
详细内容:HKU SSH 教程
第三步:Git 协作
Git 是团队开发的基础。建议遵循以下流程:1
克隆仓库
将 NEC 主仓库克隆到本地:
2
创建功能分支
不要在
main 或 master 上直接修改:3
提交并推送
4
发起合并请求
在 Gitee/GitHub 上创建 Pull Request,邀请队友 review 后再合并。
第四步:ROS 2 核心概念
Node(节点)
节点是 ROS 2 中最小的执行单元,一个节点通常负责一项具体任务,例如:- 读取手柄输入
- 发布电机速度指令
- 处理视觉识别结果
Topic(话题)
节点之间通过话题发布/订阅消息。例如:- 手柄节点发布
/input/joy_data - 控制节点订阅该话题,转换为
/cmd_vel速度指令 - 底盘节点订阅
/cmd_vel,驱动电机
Service(服务)
服务用于请求-响应式通信,适合一次性调用,例如:- 清除 turtlesim 轨迹
- 修改画笔颜色
- 重置机器人状态
Launch 文件
ros2 launch 可以一次性启动多个节点,省去手动开多个终端的麻烦。
第五步:动手实验
实验 1:turtlesim + PS4 手柄
目标:用 PS4 手柄控制 turtlesim 中的小乌龟。 关键练习点:- 订阅
/input/joy_data话题,解析手柄输入; - 发布
geometry_msgs/msg/Twist到/turtle1/cmd_vel; - 实现变速、清屏、改颜色等功能;
- 理解 launch 文件如何组织多个节点。
原题:Assignment 1 — Manual Controller with m2_joy
实验 2:自动路径跟随
目标:让 turtlesim 沿预定义路径移动。 关键练习点:- 自定义 service 定义路径点;
- 编写路径管理节点;
- 修改
CMakeLists.txt、package.xml; - 通过
ros2 service call测试功能。
原题:Assignment 2 — Automatic Path
实验 3:RViz 可视化
目标:学会使用 RViz 调试机器人软件。 关键练习点:- 添加 TF、LaserScan、Marker 等显示插件;
- 理解坐标系和传感器数据的可视化;
- 将可视化用于后续真实机器人调试。
原教程:Lab 6.3 — Visualizations in ROS with RViz
第六步:嵌入式与通信基础
Arduino 入门
digitalWrite()/analogWrite()控制 GPIO;- 串口打印调试信息;
- 配合传感器读取模拟量与数字量。
编码器
增量式编码器用于测量电机转速和位置,关键参数是分辨率(每转脉冲数 PPR)。无刷电机与 CAN 通信
- 无刷电机(BLDC)通常配合电子调速器(ESC)使用;
- ESC 通过 CAN 总线接收目标速度/位置/电流指令;
- 作为程序员,重点是掌握 CAN 帧的封装与解析,以及与 ESC 的通信协议。
I2C 与传感器
I2C 是连接多种传感器(IMU、距离传感器、OLED 等)的常用总线,需理解主从设备、地址、读写时序。推荐学习顺序
Linux 基础
常用命令 + SSH + tmux
Git 工作流
分支、提交、PR、解决冲突
C/C++ 复习
基础语法、指针、面向对象
ROS 2 基础
节点、话题、服务、launch
turtlesim 作业
手柄控制 + 路径跟随
真实机器人迁移
在 NEC 项目代码中实践
资源汇总
HKU 原站点
Necessary Information for Software Trainees 原始页面
NEC 快速开始
官方文档快速入口与新人导航
NEC 培训资源中心
会议记录、培训视频与资料库
NEC Gitee 仓库
查看项目代码与赛季仓库
友链
LocoWiki 官网
项目官方网站
LocoWiki 仓库
GitHub 开源仓库
LocoWiki 飞书
对应飞书知识库
5065-2006 低成本大功率舵轮底盘
中南大学 EK 战队开源报告
机器人工程师本科学习计划
机器人工程师本科阶段学习路线与资料
最后整理:基于 HKU Robocon Team 培训材料翻译与重组,仅供 NEC 内部学习参考。