面灵AI→

科大讯飞机器人软件开发实习:KDL 逆解、ROS2 架构与机械臂抖振

时间
2026-10
来源
牛客网

《面试题目》

  1. 自我介绍。
  2. KDL 运动学求解器的底层原理是什么?
  3. ROS2 的架构是怎样的?
  4. ROS2 有哪些通信接口?
  5. 介绍一下智能指针。
  6. 封装、继承、多态、抽象分别是什么?
  7. vector 的内存分配机制是怎样的?
  8. 机械臂运动时出现抖振,如何优化?
  9. ACT 的示范数据集有哪些类型?
  10. 用过什么 skill?
  11. 你对 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。