ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

简历技术栈全面复习总结

简历技术栈全面复习总结 一、总目录整个技术栈本质上可以分成 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 / 验收 / 故障排查二、① 编程基础层这是所有上层技术的基础。CC17 │ ├── 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其中IgHMaster Domain PDO SDO Process Data Cyclic TaskEtherCATMaster Slave ESI PDO SDO DC AL StateCiA402Shutdown ↓ 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 日志 测试最终都是为了把软件真正交付到机器人上。十六、把你的简历压缩成一张“核心技术地图”你以后复习实际上只需要先看这一张我的机器人软件技术栈 │ ┌─────────────────────────┼─────────────────────────┐ │ │ │ 编程 系统 通信 │ │ │ C17 / 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
返回列表