科大讯飞机器人软件开发实习:KDL 逆解、ROS2 架构与机械臂抖振
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 自我介绍。
- KDL 运动学求解器的底层原理是什么?
- ROS2 的架构是怎样的?
- ROS2 有哪些通信接口?
- 介绍一下智能指针。
- 封装、继承、多态、抽象分别是什么?
- vector 的内存分配机制是怎样的?
- 机械臂运动时出现抖振,如何优化?
- ACT 的示范数据集有哪些类型?
- 用过什么 skill?
- 你对 skill 的理解是什么?
《参考解析》
KDL 运动学求解:KDL 用关节链描述机械臂,每段是 Segment,含关节类型、关节轴和相对变换,正解是各段变换依次相乘。逆解没有解析解时走牛顿-拉夫森迭代:算当前末端与目标的误差,用雅可比把任务空间误差映射成关节增量,迭代到收敛;工程上要加步长限制、阻尼和关节限位检查,否则会发散或跳到奇异点附近乱跳。
ROS2 架构与通信:相比 ROS1 去掉了中心化 master,节点通过 DDS 自动发现、直接建连,没有单点故障。通信分四类:topic 异步、适合传感器流;service 请求响应、适合配置查询;action 带反馈可取消、适合导航抓取这类长任务;parameter 管节点参数。执行模型是 executor 调度回调,单线程 executor 里一个回调阻塞会卡住整个节点,耗时任务要用多线程 executor 或 callback group 拆开。
机械臂抖振:先分清来源是控制增益过高、轨迹不平滑、机械间隙与柔性,还是传感器噪声进了闭环。常用手段是加加速度受限的轨迹规划、用 S 曲线或五次多项式替代梯形速度、对反馈做低通或卡尔曼滤波、做重力与摩擦补偿、整定 PID 并给积分项限幅;机械层面是提高刚度、减小背隙。
C++ 与 ACT:智能指针按所有权选型,unique_ptr 独占,shared_ptr 共享但有引用计数开销,weak_ptr 只观察不持有、用来打破循环引用。多态靠虚表和动态绑定,抽象是把共性抽成接口;vector 连续内存、按倍数扩容并搬元素,扩容会让迭代器失效。ACT 用遥操作示范数据训练,一次预测一段动作而非单步,缓解复合误差,数据一般是多视角画面加关节位置和动作序列,按 episode 存 hdf5。