开始之前:提问与环境
请仔细阅读《提问的智慧》和《别像弱智一样提问》,遇到问题先尝试自己解决;遇到无法解决的问题,也欢迎来提问,但不要问在网络上可以轻易搜索到结果的问题。
- 安装 Ubuntu 24.04 或 22.04,建议安装物理双系统,不要使用虚拟机。
- 配置能正常访问 Google、ChatGPT、Github 等网络服务的环境;建议使用 Bing、Google,不要把百度作为主要搜索引擎。
- 建议使用 VSCode、Clion,安装配置 git、ssh、gcc、g++、cmake。
学习 C / C++
建议学习 C++,尤其是有 C 语言基础的同学。仓库推荐通过教程完成基础学习,并在代码训练仓库中持续练习;这些练习会尽量与后续控制或视觉组的工作有关。
完成环境配置后,可以在 home 目录创建自己的工作空间,例如 mkdir ~/GKD_WorkSpace,然后从 HelloGKD、第一个工程的编译和运行开始。
电控组原文路线
对于控制组而言,最重要的就是如何控制电机。首先需要掌握:主控与电机之间使用的 CAN 通信、理解机器人各部分之间的走线拓扑,以及控制电机的主要控制算法 PID。
电机驱动依赖库是学习如何驱动电机的第一手资料;在此基础上,再进入 GKD 电控仓库,学习真实工程中的代码结构和调试方式。
算法组原文路线
为了熟悉机器人的构造,算法组同学也先学习控制组中的走线拓扑,然后根据兴趣选择导航或自瞄。
- 自瞄:阅读 GKD 自瞄算法库和视觉组教程。
- 导航:学习 AutoSentry,以及 FAST-LIO、Livox SDK、PCL、ndt_omp、Eigen、OpenCV、A*、路径平滑等相关工具和算法。
完成之后
如果这些任务都做完了,就已经具有了在 GKD 进行工作的能力。可以来线下聊一聊,向我们展示这段时间的学习和工作。
基础较强的同学
如果基础足够强大,可以跳过前面的学习路径,直接完成仓库中的考核题目。通过考核后,将正式加入 GKD。
从基础到能交付。
建议按顺序推进,每一阶段都留下代码、板卡、结构或实验记录,方便后续考核和面试时展示。
01 · C++ 与工程环境
先把 C++ 的语法放进实际工程里学习:类与对象、指针和引用、模板、编译链接、日志和调试都要能用。建议从一个小程序开始,练习用 Git 管理修改,用 Linux 工具定位编译错误,而不是直接复制一整套工程。
02 · 嵌入式基础
理解 STM32 的主循环、中断、定时器和 DMA,能独立配置串口、CAN、IMU 等常用接口。阶段目标是读懂一个最小控制工程,改动一个功能后能说明数据从哪里来、经过哪些处理、最后发给了哪个执行器。
03 · 电机与控制
先用单电机实验理解编码器反馈、速度环、位置环和 PID 参数变化,再处理坐标系、底盘运动学和云台控制。调参时记录目标值、反馈值和输出量,区分机械问题、采样问题与控制器参数问题。
04 · 状态机与整车联调
最后把遥控器输入、传感器状态、模式切换、输出限幅和失联保护组织成清晰的状态机。与视觉联调时要明确接口、时间戳和异常行为,完成后留下配置说明和一份能够复现问题的日志。
建议的阶段产出:一个可编译的 C++ 小项目、一份 STM32 外设实验记录、单电机 PID 曲线,以及一次能在真实机器人上复现的联调日志。