系统与软件 · D1
现代 C++
机器人控制侧几乎全是 C++:ROS 2 的 rclcpp、控制器的实时线程、驱动、中间件。写不好 C++,实时性从第一行代码就开始漏。
要学什么
- 值/引用/移动语义,RAII,智能指针的所有权模型(unique 优先,shared 慎用)
- 模板与编译期计算:够读别人的代码、够写泛型接口即可
- 并发原语:thread、mutex、condition_variable、atomic,以及优先级反转
- 实时场景的禁忌:运行期动态分配、异常、无界锁竞争、隐式拷贝
四条路线需要多深
算法精通
系统软件精通
嵌入式电控用过
机械结构不需要
「精通」= 能从零推导 / 能手写实现 / 能判断别人的方案对不对;「用过」= 能调起来、能改参数;「知道」= 能听懂、能提问。
怎么算学会了
能写一个不分配堆内存的 1kHz 回调,能用 RAII 管资源,能解释为什么实时线程里不能用 std::mutex 的普通版本。
常见错误
- 在 1kHz 回调里 new/delete,抖动直接飙到毫秒级,查了一周才发现在分配内存
- 到处 shared_ptr,引用计数的原子操作成了隐藏瓶颈,CPU 占用莫名其妙