第 3 节

嵌入式组与软件算法组公共路线

作者
董佳辉的头像董佳辉
协作者
张长飞的头像张长飞林沼君的头像林沼君孔德玮的头像孔德玮崔功岩的头像崔功岩房梓豪的头像房梓豪尚凡兴的头像尚凡兴李澳的头像李澳孙江辉的头像孙江辉刘浩林的头像刘浩林
发布于 2023/09/29更新于 2026/08/20

路线定位

本路线面向准备进入嵌入式组或软件算法组的成员,只说明共同基础、学习顺序、实践目标和分流要求。具体技术内容位于与“Vinci机器人队培养计划”同级的独立教程中,本路线通过链接引用,不在本目录下新建C++、Linux、STM32或ROS2技术教程。

历史上曾使用“电控组”“控制组”“电路组”“视觉算法组”等称谓。现行职责不是简单改名:

  • 嵌入式组由原电路组及原控制组中的嵌入式开发、底层驱动、实时闭环、电机控制和嵌入式通信职责整合而来。

  • 软件算法组由原视觉算法组及原控制组中的Linux/ROS、运动学、里程计、状态估计、机器人运动控制和上位机软件职责整合而来。

两组协作边界

软件算法组负责感知结果、目标位姿、运动学、轨迹、期望速度或位置、状态估计、导航和任务决策;嵌入式组负责接收指令、MCU实时任务、传感器与执行器底层驱动、电机速度环和位置环、嵌入式协议以及安全保护。两组应共同约定消息字段、单位、坐标系、更新频率、超时策略、故障码和反馈内容。

公共学习阶段

第一阶段:C/C++基础

学习目标:

  • 能独立编写、编译和调试简单的C/C++程序。

  • 掌握变量、数据类型、流程控制、数组、函数、指针、引用、结构体、枚举和联合体。

  • 理解头文件、源文件、声明、定义、作用域、生命周期和多文件工程。

  • 掌握类与对象、封装、继承、多态、模板和常用STL容器。

  • 理解基本内存管理、RAII和智能指针,避免未初始化、越界和悬空指针等问题。

推荐教程:

第二阶段:Git与协作

学习目标:

  • 能完成仓库克隆、分支创建、提交、拉取、合并和冲突处理。

  • 提交前能检查差异,不提交编译产物、密钥或无关文件。

  • 能编写清晰的提交说明、README和问题复现步骤。

推荐教程:

第三阶段:Linux基础

学习目标:

  • 理解目录、用户、权限、软件包和进程等基本概念。

  • 会使用终端完成文件管理、软件安装、日志查看和远程连接。

  • 能使用SSH、SCP和常见Shell命令完成开发环境维护。

嵌入式组需要掌握交叉编译、串口设备、调试器和构建工具所需的Linux基础;软件算法组需要进一步掌握Linux部署、服务、设备权限、网络和性能诊断。

推荐教程:

第四阶段:CMake与工程基础

学习目标:

  • 理解编译、链接、静态库、动态库、头文件搜索路径和依赖关系。

  • 能组织包含src、include和多个模块的C/C++工程。

  • 能阅读并修改基础CMakeLists.txt,定位常见编译和链接错误。

推荐教程:

第五阶段:调试与工程习惯

学习目标:

  • 能根据错误信息、日志、断点和最小复现定位问题。

  • 能阅读数据手册、官方文档和现有工程,而不是只复制代码片段。

  • 统一使用明确的单位、类型、命名和错误处理方式。

  • 修改公共接口前主动与另一组确认兼容性。

公共实践与考核

建议公共实践至少包含:

  1. 创建一个多文件C/C++工程,使用CMake构建。

  2. 使用Git分支完成一次功能开发、代码检查和合并。

  3. 在Linux下完成编译、运行、日志记录和问题排查。

  4. 编写README,说明环境、构建方法、运行方法和已知限制。

公共基础考核覆盖C/C++、Git、Linux基础、CMake基础和基本工程能力。完成公共路线后再进入专项分流:

公共能力检查表

以下检查表由原控制路线和原综合路线迁移,用于检查是否真正掌握公共基础,而不是要求死记概念:

C/C++

  • 基本类型、常量、运算符、作用域、生命周期和内存分区。

  • if、switch、while、do-while和for等流程结构。

  • 一维与多维数组、字符串、数组与指针。

  • 函数声明、定义、调用、参数传递、默认参数、重载和函数模板。

  • 指针、引用、结构体、枚举、联合体和类型别名。

  • 头文件、源文件、自定义库、C与C++混合编译。

  • 命名空间、类与对象、构造与析构、封装、友元和运算符重载。

  • 继承、多态、类模板和常用STL容器与算法。

  • 动态内存、RAII、智能指针、移动语义和基础错误处理。

  • 基础并发、文件操作和常用标准库能力根据项目逐步学习。

Linux与工程工具

  • 安装和维护常用Linux开发环境,理解系统目录和启动过程的基本概念。

  • 文件与目录、用户与用户组、权限、磁盘和软件包管理。

  • ssh、scp、编辑器、Shell脚本和日志查看。

  • Git分支、提交、合并、冲突处理和远程仓库协作。

  • CMake目标、包含目录、链接库、依赖和构建目录。

  • 使用调试器、编译器错误、运行日志和最小复现定位问题。

教程状态说明

  • 完整:队内教程能够支持从入门到实践。

  • 基础可用:基础部分可以自学,进阶或实机内容仍需补充。

  • 在建:已有正文,但缺少关键章节。

  • 待建设:暂无对应队内教程,只在路线中记录,不创建空Markdown文件。

  • 待更新:现有内容存在版本或平台更新需求。

  • 项目选修:根据当年赛题和项目需求学习。