这是本文档旧的修订版!
1.libfranka的捕获和重放的技术路线
我们想要录制和重放,必须事先对基本概念有理解,不然可能是在乱搞。
libfranka的控制数据的基本概念
如下都是我个人的理解,如果有错误的表述,请评论更正。
我们先用白话的方式介绍 libfranka的控制链。
外部的操作 → FCI接口 → Motion Model → Control Model → 机械臂本体运动
其中 Motion Model 表示:我们的目标是什么? 【实现:人与Franka的控制器互联】
Control Model 表示:我们应该让机械臂如何运动。 【实现:Franka的控制器到具体关节的互联】
那么 Motion Model 主要有如下几种模式:
| Motion Generator类型 | 作用 |
|---|---|
| Joint Position | franka::JointPositions 关节位置轨迹 |
| Joint Velocity | franka::JointVelocities 关节速度轨迹 |
| Cartesian Position | franka::CartesianPositions 末端位置轨迹 |
| Cartesian Velocity | franka::CartesianVelocities 末端速度轨迹 |
Motion我们可以看到,主要是联系Franka和人的操作意图。从操作目标上,就2类:不是控制末端就是控制关节;从操作方式上:不是通过加速度控制,就是通过位置直接控制。
Control 控制方式主要分为如下几种:
| Control模式类型 | 描述 |
|---|---|
| Joint Velocity Control | 关节速度模式 |
| Joint Position Control | 关节位置模式 |
| Joint Impedance Control | 关节阻抗模式 |
| Cartesian Impedance Control | 笛卡尔/末端阻抗模式 |
| Torque Control | 扭矩控制模式 |
从 Motion到 Control的转换,我们能直接控制的部分是Motion部分,所以主要把注意力集中在这里; 这块转换代码如果要看,主要集中在libfranka的 convertMotion函数
评论