有多少人工,就有多少智能

Franka Robot franka_hw 与franka_control 是什么关系

franka_hw 和 franka_control 是 ROS 中两个不同但相关的软件包,它们共同为 Franka Emika 的 Panda 机器人提供控制功能。

franka_hw:

  • 这个软件包负责与 Panda 机器人的硬件进行底层接口。
  • 它提供了 franka_hw_node 节点,用于建立与 Panda 机器人的通信,并发布机器人的状态信息。
  • franka_hw 处理原始的硬件交互,如读取传感器数据、发送控制命令等。

franka_control:

  • 这个软件包提供了更高层次的机器人控制功能。
  • 它建立在 franka_hw 之上,提供了诸如关节控制、力控制、卡尔曼滤波等功能。
  • franka_control 包含了 franka_control_node,负责接收来自上层应用的控制指令,并将其转换为发送给 franka_hw 的低级命令。

franka_hw 负责与 Panda 机器人硬件的直接交互,而 franka_control 则构建在此基础之上,提供更高级别的控制功能。

在使用 Panda 机器人时,通常需要同时启动 franka_hw_node 和 franka_control_node,以便上层应用程序可以利用完整的控制栈。这种分层设计使得开发和使用 Panda 机器人控制更加灵活和可扩展。

具体而言:

与 libfranka 库进行交互的是 franka_hw 软件包。

  1. libfranka 是 Franka Emika 提供的一个 C++ 库,用于与 Panda 机器人进行底层通信和控制。

  2. franka_hw 软件包内部使用了 libfranka 库,并在其之上提供了一个 ROS 接口。

  3. franka_hw_node 就是通过调用 libfranka 库,与 Panda 机器人的硬件进行交互的 ROS 节点。它负责:

    • 建立与 Panda 机器人的网络连接
    • 读取机器人的状态信息
    • 向机器人发送控制命令
  4. 其他需要访问 Panda 机器人的 ROS 节点,比如 franka_control 中的 franka_control_node,都会通过 franka_hw 软件包间接调用 libfranka 库的功能。

总之,franka_hw 软件包充当了 libfranka 库与 ROS 环境之间的桥梁,为上层 ROS 应用程序提供了一个标准化的接口来访问 Panda 机器人的底层硬件。这种分层设计有利于提高代码的可重用性和可维护性。

 

上位机指令下发后, 具体会经过哪些节点,详细交互过程:

franka_msgs::SetJointImpedance 指令下发后,会经过以下几个节点,最终影响 Panda 机器人的关节阻抗控制:

  1. 上层应用节点:

    • 这个节点发送 franka_msgs::SetJointImpedance 服务请求,设置期望的关节�impedance参数。
  2. franka_control_node:

    • 这个节点接收来自上层应用的 franka_msgs::SetJointImpedance 服务请求。
    • 它会解析请求中的关节阻抗参数,并将其转换为 libfranka 库能够理解的格式。
    • 然后,它会调用 franka_hw 提供的服务接口,将这些参数设置到 Panda 机器人上。
  3. franka_hw_node:

    • 这个节点实现了 franka_hw 中的服务接口,用于设置 Panda 机器人的关节阻抗参数。
    • 当接收到 franka_control_node 的服务请求时,它会调用 libfranka 库中的相应函数,将阻抗参数下发到 Panda 机器人的底层驱动器。
  4. libfranka 库:

    • franka_hw_node 内部会使用 libfranka 库提供的 API,向 Panda 机器人发送控制命令,包括设置关节阻抗参数。
    • libfranka 库会负责构造正确格式的网络数据包,并通过网络协议将其发送到 Panda 机器人的驱动器上。
  5. Panda 机器人驱动器:

    • Panda 机器人的底层驱动器会接收来自 libfranka 库的数据包,并将关节阻抗参数应用到实际的关节控制中。
    • 驱动器会根据这些阻抗参数,调整关节电机的扭矩输出,从而影响关节的刚度和阻尼特性。

总之,franka_msgs::SetJointImpedance 指令会经过上层应用、franka_control_nodefranka_hw_nodelibfranka 库,最终影响到 Panda 机器人驱动器中的关节阻抗控制。这个过程体现了 ROS 中分层控制的设计思想。

posted @ 2024-07-12 17:07  lvdongjie-avatarx  阅读(3)  评论(0编辑  收藏  举报