Franka MATLAB 库 - 参考

FrankaRobot 类

FrankaRobot 构造函数用于初始化与 Franka 机器人的连接。它可以配置为两种主要场景:在本地网络(主机 PC)连接机器人,或通过外部的 AI companion 计算机(如 Jetson)连接机器人。

本地主机 PC 作为目标 PC

fr = FrankaRobot('RobotIP', '172.16.0.2');

通过 AI Companion/NVIDIA Jetson 连接

当使用外部目标 PC 控制机器人时,您必须提供该计算机的连接信息,包括其 IP 地址和用户名。

警告

在尝试通过外部 AI companion 或 NVIDIA Jetson 连接机器人之前,请确保已将您的 SSH 密钥复制到目标 PC,例如在 Linux 上使用 ssh-copy-id 命令。此步骤对于建立无需每次输入密码的 SSH 连接至关重要。

fr = FrankaRobot('RobotIP', '172.16.0.2', ...
                 'Username', 'jetson_user', ...
                 'ServerIP', '192.168.1.100');

所有构造函数参数都是可选的,并具有默认值。

参数:
  • RobotIP:Franka 机器人的 IP 地址(默认值:’172.16.0.2’)

  • Username:AI companion 上的服务器用户名(默认值:’franka’)

  • ServerIP:AI companion 上服务器的 IP 地址(默认值:’172.16.1.2’)

  • SSHPort:用于连接服务器的 SSH 端口(默认值:’22’)

  • ServerPort:用于通信的服务器端口(默认值:’5001’)

自动错误恢复

fr.automatic_error_recovery();

尝试对机器人进行自动错误恢复。

获取关节角度

jp = fr.joint_poses();

返回一个包含机器人当前关节位姿的 7 元数组。

获取机器人状态

rs = fr.robot_state();

返回一个包含机器人当前状态的结构体。

关节点对点运动

fr.joint_point_to_point_motion(joints_target_configuration, speed_factor);

将机器人移动到目标关节配置。

参数:
  • joints_target_configuration:包含目标关节配置的 7 元 double 数组

  • speed_factor:取值在 0 到 1 之间的标量(默认值:0.5)

关节轨迹运动

fr.joint_trajectory_motion(positions);

根据给定的目标关节轨迹移动机器人。

参数:
  • positions:7×N 的 double 数组,表示目标关节轨迹

警告

请确保机器人的当前配置与传入函数的初始轨迹元素 q(1:7,1) 相匹配!另外,确保给定的轨迹足够平滑且连续。

碰撞阈值

fr.setCollisionThresholds(thresholds);
thresholds = fr.getCollisionThresholds();

设置或获取机器人的碰撞阈值。

参数:
  • thresholds:包含碰撞阈值参数的结构体

负载惯量

fr.setLoadInertia(loadInertia);
inertia = fr.getLoadInertia();

设置或获取机器人的负载惯量参数。

参数:
  • loadInertia:包含质量、质心和惯性矩阵的结构体

机器人归位

result = fr.robot_homming();

使用点到点运动将机器人移动到其初始位姿。

返回值:
  • 如果运动成功则返回 true,否则返回 false

重置设置

fr.resetSettings();

将机器人所有设置重置为默认值

夹爪控制

FrankaRobot 类通过以下属性提供对标准夹爪和真空夹爪的访问:

fr.Gripper        % Standard gripper interface
fr.VacuumGripper  % Vacuum gripper interface

有关可用方法,请参阅各夹爪类的文档。

FrankaGripper 类

可以通过 FrankaRobot 实例的 Gripper 属性访问 FrankaGripper 类。

获取夹爪状态

state = fr.Gripper.state();

返回一个包含当前夹爪状态的结构体。

夹爪归位

result = fr.Gripper.homing();

执行夹爪归位操作,如果成功则返回 true。

抓取物体

result = fr.Gripper.grasp(width, speed, force, epsilon_inner, epsilon_outer);

以指定宽度抓取物体。

参数:
  • width:目标宽度(单位:米)

  • speed:运动速度(默认值:0.1)

  • force:抓取力(单位:N,默认值:50)

  • epsilon_inner:抓取的 Inner epsilon(默认值:0.1)

  • epsilon_outer:抓取的 Outer epsilon(默认值:0.1)

返回值:
  • 如果抓取成功则返回 true,否则返回 false。

移动夹爪

result = fr.Gripper.move(width, speed);

将夹爪移动到指定宽度。

参数:
  • width:目标宽度(单位:米)

  • speed:运动速度(默认值:0.1)

返回值:
  • 如果运动成功则返回 true,否则返回 false。

停止夹爪

result = fr.Gripper.stop();

停止夹爪运动。如果成功则返回 true。

FrankaVacuumGripper 类

可以通过 FrankaRobot 实例的 VacuumGripper 属性访问 FrankaVacuumGripper 类。

获取真空夹爪状态

state = fr.VacuumGripper.state();

返回包含当前真空夹爪状态的结构体,包括真空度和物体存在信息

施加真空

result = fr.VacuumGripper.vacuum(control_point, timeout, profile);

对夹爪施加真空。

参数:
  • control_point:真空控制点(默认值:0)

  • timeout:超时时间(单位:毫秒,默认值:5000)

  • profile:生产配置文件(默认值:0)

返回值:
  • 如果真空施加成功则返回 true,否则返回 false。

放下

result = fr.VacuumGripper.dropOff(timeout);

放下当前抓取的物体

参数:
  • timeout:超时时间(单位:毫秒,默认值:5000)

返回值:
  • 如果放下成功则返回 true,否则返回 false。

停止真空夹爪

result = fr.VacuumGripper.stop();

停止真空夹爪。如果成功则返回 true。