这是本文档旧的修订版!


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函数

别人的项目是如何完成libfranka的位姿读取和重放控制的?

Motion的类型和具体源代码

Motion Generator类型 文件位置 类名
Joint Position include/franka/control_types.h JointPositions
Joint Velocity include/franka/control_types.h JointVelocities
Cartesian Pose include/franka/control_types.h CartesianPose
Cartesian Velocity include/franka/control_types.h CartesianVelocities

Joint Position

我们可以看到,主要关注 std::array<double, 7> q - 7 个关节的目标位置(弧度)

因为这种运动模式就是直接设定7个关节的最终位置

展开代码

/**
 * 存储用于关节位置运动生成的值。
 */
class JointPositions : public Finishable {
 public:
  /**
   * 创建一个新的JointPositions实例。
   *
   * @param[in] joint_positions 期望的关节角度,单位为[rad]。
   */
  JointPositions(const std::array<double, 7>& joint_positions) noexcept;

  /**
   * 创建一个新的JointPositions实例。
   *
   * @param[in] joint_positions 期望的关节角度,单位为[rad]。
   *
   * @throw std::invalid_argument 如果给定的初始化列表参数数量无效,则抛出此异常。
   */
  JointPositions(std::initializer_list<double> joint_positions);

  /**
   * 期望的关节角度,单位为[rad]。
   */
  std::array<double, 7> q{};
};

Joint Velocity

Cartesian Pose

Cartesian Velocity

评论

请输入您的评论. 可以使用维基语法:
 
机器人/franka/libfranka/libfranka的捕获和重放/1.libfranka的捕获和重放的技术路线.1762767208.txt.gz · 最后更改: 2025/11/10 09:33