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。