franka_hw
该包包含基于 libfranka API 的 ROS control 控制框架的机器人硬件抽象。硬件类 franka_hw::FrankaHW 在这个包中实现,为控制器提供以下接口:
接口 | 功能 |
|---|---|
| 读取关节状态 |
| 给关节速度指令并读取关节状态。 |
| 给关节角度指令并读取关节状态。 |
| 给关节级扭矩指令并读取关节状态。 |
| 读取整个机器人状态 |
| 给笛卡尔位姿指令并读取整个机器人状态 |
| 给笛卡尔速度指令并读取整个机器人状态 |
| 读取机器人的动力学和运动学模型 |
要使用 ROS control 控制接口,必须通过名称检索资源句柄:
接口 | 资源句柄名称 |
|---|---|
| “<arm_id>_joint1” 到 “<arm_id>_joint7” |
| “<arm_id>_joint1” 到 “<arm_id>_joint7” |
| “<arm_id>_joint1” 到 “<arm_id>_joint7” |
| “<arm_id>_joint1” 到 “<arm_id>_joint7” |
| “<arm_id>_robot” |
| “<arm_id>_robot” |
| “<arm_id>_robot” |
| “<arm_id>_robot” |
提示
默认情况下, <arm_id> 被设置为 “panda”.
franka_hw::FrankaHW 类还实现了控制器的启动、停止和切换。
FrankaHW 类还用作 FrankaCombinableHW 的基类,FrankaCombinableHW 是一个硬件类,可以与其他类结合以从单个控制器控制多个机器人。由任意数量的,基于为 ROS control 框架 https://github.com/ros-controls/ros_control 设计的 FrankaCombinableHW 类的 Panda 机器人的组合(数量由参数配置),在 FrankaCombinedHW 类中得到实现。 FrankaHW 和 FrankaCombinedHW 之间的主要区别在于后者仅支持扭矩控制。
重要
FrankaCombinableHW 类从 0.7.0 版开始提供,仅允许扭矩控制。
ROS 参数服务器用于在运行时确定在组合类中加载了哪些机器人。有关如何在相应硬件节点中配置 FrankaCombinedHW 的示例,请参阅 franka_control。
备注
FrankaHW 的方法最适合控制单个机器人。因此,我们建议仅将 FrankaCombinableHW/FrankaCombinedHW 类用于控制多个机器人。
FrankaCombinableHW/FrankaCombinedHW 类提供的接口如下:
接口 | 功能 |
|---|---|
| 给关节级扭矩指令并读取关节状态。 |
| 读取关节状态 |
| 读取整个机器人状态 |
| 读取机器人的动力学和运动学模型 |
唯一可接受的命令接口声明是 EffortJointInterface,它可以与任何一组只读接口(FrankaModelInterface、JointStateInterface、FrankaStateInterface)结合使用。所有接口提供的资源句柄均按名称声明,并遵循与 FrankaHW 所述相同的命名约定。FrankaCombinableHW 的每个实例都提供完整的 service 和 action 接口集(请参阅 franka_control )。
备注
FrankaCombinedHW 类在控制节点命名空间中提供了一个额外的动作服务器来恢复所有机器人。如果任何一个机器人发生反射 reflex 或错误 error,所有机器人的控制回路都会停止,直到它们恢复。
重要
FrankaHW 利用 ROS joint_limits_interface 来 执行位置、速度和力度的安全限制。下面列出了使用的接口:
joint_limits_interface::PositionJointSoftLimitsInterface
joint_limits_interface::VelocityJointSoftLimitsInterface
joint_limits_interface::EffortJointSoftLimitsInterface
接近极限将导致(未经宣布的)修改命令。