☰
简历技术栈全面复习总结
2026/10/4 16:49:11 网站建设 项目流程

一、总目录

整个技术栈,本质上可以分成 8 层

机器人软件工程 │ ┌───────────────────────┼───────────────────────┐ ↓ ↓ ↓ ① 编程基础 ② Linux/构建 ③ 通信 │ │ │ C++ / Python Linux / CMake UDP/TCP/CAN OOP / RAII CTest / Git ZMQ/Protobuf 多线程 / 锁 SSH / systemd 设计模式 │ └───────────────────────┬───────────────────────┘ ↓ ④ 机器人软件中间层 │ ROS2 │ ros2_control / Controller │ ↓ ⑤ 机器人实时控制 │ Hardware Interface │ EthercatDriver │ IgH Master │ CiA402 / CSP │ ↓ 电机 / 编码器 │ ↓ ⑥ 动捕 / 运动控制 │ MotionInput / GMR / WBC │ MuJoCo验证 │ ↓ ⑦ 测试与工程化 │ pytest / Flask-SocketIO / SQLite │ 日志 / 报告 / SSH │ ↓ ⑧ 部署与交付 │ PyInstaller / Ubuntu SOP / 验收 / 故障排查

二、① 编程基础层

这是所有上层技术的基础。

C++

C++17 │ ├── OOP │ ├── 类 │ ├── 封装 │ ├── 继承 │ └── 多态 │ ├── Interface / Abstract Class │ ├── RAII │ ├── 智能指针 │ ├── unique_ptr │ ├── shared_ptr │ └── weak_ptr │ ├── 异常 │ ├── 生命周期 │ └── 并发 ├── Thread ├── Mutex ├── Condition Variable ├── Queue └── Backpressure

然后再往上:

设计模式 │ ├── Strategy ├── Adapter ├── Factory └── Observer

你已经不应该把这些看成独立知识点。

应该理解成:

C++负责把机器人软件组织成可靠、可扩展、可并发运行的程序。


三、② Linux + 构建系统

这是你的机器人软件真正运行的环境。

Linux │ ├── 文件系统 ├── 权限 ├── 用户 ├── 环境变量 ├── Bash ├── Process ├── Thread ├── PID ├── Signal ├── Pipe ├── Socket ├── File Descriptor ├── Log ├── SSH └── systemd

然后:

Linux ↓ gcc / g++ ↓ CMake ↓ 编译 ↓ Executable / Library ↓ CTest ↓ 测试 ↓ 部署

所以你以后看到:

CMakeLists.txt

不要只想到:

“这是编译配置文件。”

而应该想到:

项目组织 ↓ 依赖管理 ↓ 编译 ↓ 测试 ↓ 安装 ↓ 部署

四、③ 通信层

可以分成:

通信 │ ┌───────────┼───────────┐ ↓ ↓ ↓ UDP TCP CAN │ │ │ └───────────┼───────────┘ ↓ ZMQ ↓ Protobuf

但是要注意:

它们不是同一个层次。

UDP/TCP/CAN

属于:

底层通信/传输机制。

ZMQ

属于:

消息通信框架/通信模型。

Protobuf

属于:

数据序列化/消息格式。

所以:

MotionFrame ↓ Protobuf ↓ ZMQ ↓ TCP/UDP ↓ Socket ↓ Linux

这个结构你应该已经熟悉。


五、UDP

不是只记:

socket bind recvfrom sendto

而是:

UDP │ ├── IP ├── Port ├── Datagram │ ├── 丢包 ├── 乱序 ├── 重复 ├── 超时 ├── 心跳 └── Frame ID

再往你的项目连接:

双路UDP ↓ 帧号 ↓ 窗口重排 ↓ 跨路合并 ↓ 去重 ↓ 共同缺口判断 ↓ 完整MotionFrame

你简历中确实把双路容错、帧号重排、跨路合并去重以及 280,586 帧测试写进了项目。


六、④ ROS2层

ROS2不要再拆成一堆孤立概念。

你已经学过:

Node Topic Service Action Launch Parameter TF URDF RViz2 Gazebo Controller Manager ros2_control

现在应该把它们放进:

ROS2 │ ├── Application │ ├── Controller │ ├── Hardware Interface │ └── Communication

你真正需要记住的工程链:

上层应用 ↓ ROS2 ↓ Controller ↓ Hardware Interface ↓ 具体硬件

七、⑤ EtherCAT实时控制层

这是你简历的核心技术之一。

总结构:

ROS2 Controller ↓ Hardware Interface ↓ EthercatDriver ↓ IgH Master ↓ EtherCAT ↓ Slave / Drive ↓ CiA402 ↓ Motor

其中:

IgH

Master Domain PDO SDO Process Data Cyclic Task

EtherCAT

Master Slave ESI PDO SDO DC AL State

CiA402

Shutdown ↓ Switch On ↓ Enable Operation

运动模式:

CSP ↓ Target Position ↓ Motor ↓ Actual Position

这三个东西不要混:

EtherCAT → 网络 IgH → Linux Master实现 CiA402 → 驱动器控制规范

八、⑥ 动捕 + 运动控制层

这是你现在机器人方向最有特色的一层。

动捕设备 │ ├── Xsens ├── Axis ├── Noitom └── PNLink ↓ MotionInput ↓ MotionFrame ↓ GMR ↓ Retargeting ↓ Robot Joint Targets ↓ ROS2

这里的核心软件架构:

MotionInput ↑ ┌──┼───────────┐ │ │ │ Xsens Axis Noitom

再配:

Factory Strategy Adapter Observer

形成完整的多源输入框架。


九、GMR之后连接到什么?

你不要把 GMR 当成孤立算法。

应该记成:

Human Motion ↓ Motion Capture ↓ MotionFrame ↓ GMR / Retargeting ↓ Robot Joint Target ↓ Controller ↓ Hardware

也就是说:

GMR负责“人体动作 → 机器人动作”。

而:

ROS2 + ros2_control + EtherCAT负责“机器人动作 → 电机执行”。

这是两个不同层。


十、MuJoCo在这里是什么位置?

MuJoCo不是控制链里的硬件。

它是:

验证环境。

所以:

GMR ↓ Robot Joint Target ├──────────────→ MuJoCo │ └──────────────→ Real Robot

先在仿真中验证:

动作是否正确 关节范围是否合理 运动是否稳定

再进入实机。


十一、⑦ 测试工程层

这一层把前面的所有东西串起来。

需求 ↓ 测试点 ↓ 测试用例 ↓ 自动执行 ↓ 数据采集 ↓ 判断 ↓ 日志 ↓ 结果 ↓ SQLite ↓ 报告 ↓ 回归

测试对象:

通信 │ ├── UDP ├── CAN ├── ZMQ └── Protobuf 机器人 │ ├── ROS2 ├── Controller ├── EtherCAT └── CiA402 系统 │ ├── 正常 ├── 异常 ├── 边界 ├── 超时 ├── 断连 └── 恢复

十二、pytest在这里的位置

pytest │ ├── assert ├── fixture ├── parametrize ├── Mock ├── monkeypatch └── exception test

然后:

pytest ↓ 测试执行 ↓ 结果 ↓ 日志 ↓ SQLite ↓ PDF

你的简历中实际写到了 pytest、Mock/monkeypatch、SocketIO 测试客户端,以及 34 项测试中的通过情况。


十三、Flask-SocketIO在哪里?

它属于:

测试平台的人机交互层。

结构:

浏览器 ↕ SocketIO ↕ Flask ↕ Python Test Framework ↕ Robot

可以实现:

开始测试 停止测试 查看进度 查看状态 异常通知 结果显示

十四、SQLite在哪里?

测试执行 ↓ Test Result ↓ SQLite

保存:

测试名称 时间 输入参数 实际结果 Pass/Fail 错误信息 统计数据

然后:

SQLite ↓ 统计 ↓ PDF报告

十五、⑧ 部署与交付

最终不是:

代码写完

而是:

开发 ↓ 编译 ↓ 测试 ↓ 打包 ↓ 部署 ↓ 验收 ↓ SOP ↓ 故障排查

相关工具:

CMake CTest Git SSH PyInstaller Ubuntu Shell

所以你之前学的:

Linux CMake Python SSH 日志 测试

最终都是为了:

把软件真正交付到机器人上。


十六、把你的简历压缩成一张“核心技术地图”

你以后复习,实际上只需要先看这一张:

我的机器人软件技术栈 │ ┌─────────────────────────┼─────────────────────────┐ │ │ │ 编程 系统 通信 │ │ │ C++17 / Python Linux UDP / TCP OOP / RAII CMake CAN Smart Pointer CTest ZMQ Thread / Lock SSH Protobuf Queue / Backpressure Log │ │ │ └─────────────────────────┼─────────────────────────┘ ↓ ROS2 │ ┌──────────┴──────────┐ ↓ ↓ 动捕/算法 控制 │ │ MotionInput Controller ↓ ↓ GMR Hardware Interface ↓ ↓ Joint Target EthercatDriver │ ↓ │ IgH │ ↓ │ EtherCAT │ ↓ │ CiA402/CSP │ ↓ └────────────→ Motor ↓ Feedback ↓ 测试工程 │ ┌─────────────┼─────────────┐ ↓ ↓ ↓ pytest Flask SQLite ↓ SocketIO ↓ Mock/自动化 Web Report └─────────────┼─────────────┘ ↓ 部署 / 验收 / SOP

十七、再进一步:你真正的“能力主线”

如果不看技术名词,你这套简历实际上是在证明6种能力:

① 底层能力

Linux C/C++ Socket CAN EtherCAT

↓

② 实时并发能力

Thread Mutex Condition Variable Queue Backpressure Frame processing

↓

③ 机器人系统能力

ROS2 ros2_control Hardware Interface EtherCAT CiA402

↓

④ 算法/运动能力

Motion Capture GMR Retargeting WBC/Policy相关调试 MuJoCo

↓

⑤ 软件工程能力

Interface Strategy Adapter Factory CMake CTest pytest Mock

↓

⑥ 测试与交付能力

自动化测试 日志 SQLite Web测试平台 SSH 部署 报告 SOP

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询