Franka Research3 FR3机器人

RIDE运行方式

PNP Robotics集智联机器人已经正式成为德国 Franka Robotics GmbH中国区金牌战略合作伙伴,负责Frank Robotics在中国区域的关于Franka机器人的销售、渠道拓展、技术支持等工作。

图片

本教程说明了如何使用RIDE进行编程,如第 III-B 部分的教程论文中所述。它由plug_in状态机、其相应的应用程序和服务的实现组成plug_in_vision。

安装

确保您的计算机中安装了RIDE和RaceCom ,您已连接到Arm底座或Control并登录到Core:

ride login <robot-ip>

2_RIDE通过在此存储库的根目录(不在文件夹中!)运行以下命令来创建构建文件夹:

mkdir build && cd build

使用以下标志运行 cmake 以构建 RIDE 教程

cmake -DBUILD_RIDE=ON -DBUILD_FCI=OFF -DBUILD_LEARNING=OFF ..

最后编译RIDE教程

make

将状态机和应用程序上传到机器人运行

make ride_tutorial_statemachines

安装捆绑包后,应用程序应出现在应用程序窗格中。除此之外,输入以下命令后应该会列出该捆绑包

ride bundle list

此外,当您输入时,应列出各个状态机和应用程序

ride node list

插入应用程序

插件应用程序位于目录ride-tutorial中的捆绑包中statemachines。每个包都包含一个manifest.json定义包、一个存储上下文菜单所有图标的资源文件夹和一个源文件夹,其中包含状态机和应用程序文件。本教程的插件应用程序是在三个不同的状态机文件中实现的,这些文件也可以视为层:

  1. 应用程序层plug_in_app.lf:
    此状态机实现上下文菜单,用户可以在其中设置Desk中所需的参数,例如插座和孔位姿。它也是“主”执行文件:在获取上下文菜单参数后,它运行plug_in_wrapper状态机,该状态机首先将收集的参数转换为状态机参数,然后执行插头插入。

  2. 包装层plug_in_wrapper.lf:
    该状态机从上下文菜单接收高级参数,并将它们转换为插入所需的实际参数,然后运行状态机plug_in。

  3. 执行层plug_in.lf:
    该状态机实现由以下状态流给出的插件任务的执行:

    1. move_to_socket_pose- 笛卡尔运动到socket_pose,具有高刚度,可实现高精度和灵敏度

    2. set_move_configuration- 设置插入的碰撞阈值和刚度

    3. insert-并行执行以下状态的屏障:

  • wiggle- 在 (x,y) 平面上执行摆动运动

  • press- 沿 z 轴施加并调节恒定力

  • monitor_pose- 监控当前末端执行器位姿并检查孔位姿是否已达到一定容差范围内

此实现假设当机器人在一定容差和最大时间内到达孔位姿时,插入成功。

这种多层实现的优点一方面是各个状态机(例如plug_in和plug_in_wrapper)的可重用性和清晰度(上下文菜单的实现、参数转换和执行被分成三个不同的文件)。

运行插件应用程序

如果安装成功,该ride_tutorial应用程序将出现在DeskPlug in的应用程序窗格中。 要运行它,请按照以下说明进行操作:

  1. 创建一个新任务

  2. 对任务进行编程:将Plug in应用程序拖到任务的时间轴中

  3. 参数化任务:单击Plug in应用程序并按照说明教导机器人。请注意,此步骤中出现的上下文菜单是在plug_in_app.lf文件中定义的。
    注意:专家参数已预先配置,无需更改。不过,您可以尝试一下它们,看看机器人的行为如何变化。

  4. 可选:Cartesian Motion在应用程序之前添加一个应用程序Plug in,以允许重复实验。Cartesian Motion以拔掉插头的方式教导它。

  5. 激活外部激活设备,点击运行按钮开始任务。这将使机器人移动!

您可以在 Linux 终端中跟踪执行情况

ride execution trace

并检查日志

ride log

关 注 PNP 机器人

具有视觉功能的插入式应用程序

上述插件应用程序能够执行通过Desk教授的插座和孔姿势的插入。现在让我们假设计算机视觉模块正在估计套接字位姿,并且我们希望在Plug in状态机中使用它。为了实现这一点,我们需要:(1)一个执行插件的状态机和(2)一个提供套接字姿势的服务。下图说明了系统架构中接口和所涉及的捆绑包的相互作用。

图片

  1. Socket-pose 服务
    该socket-pose服务位于services/src/socket_service.cpp。它实现getSocketPose返回套接字位姿的操作,并定期发布socket-info带有检测到的套接字数量的事件。操作类型在目录GetSocketPose.op中的文件中定义services/msg。它指定一个空操作调用,如果成功则返回一个 16 维浮点数组,如果出错则返回一个字符串。类似地,事件类型在文件中定义SocketInfo.ev,该文件指定由整数给出的消息。
    注意:插槽位姿和插槽数量是硬编码的。请根据您的设置进行调整。

  2. 状态机 状态机在捆绑包中的文件
    中实现。它由以下状态流组成:plug_in_vision.lfride_tutorial

    1. check_for_sockets- 订阅事件socket-info并检查是否检测到任何套接字。

    2. get_socket_posegetSocketPose- 调用返回姿势的操作。

    3. compute_hole_pose- 计算hole_pose自socket_pose

    4. plug_inplug_in_wrapper- 通过从上面调用转换参数并将插头插入检测到的插座

请注意,此示例重点介绍如何将外部服务与状态机连接。所有假设的视觉相关结果(例如插座姿势)都是硬编码的。

带着愿景运行插件应用程序

在运行演示之前,您可能希望使服务的硬编码姿势适应socket-pose您的设置。为此,请修改(l. 22)socket_pose中的硬编码services/src/socket_service.cpp并按照安装说明中的说明再次编译服务。要使插座姿势适应您的设置,请将机器人引导到所需的姿势并在终端中运行以下命令

ride service echo robot sensor_data

它回显所有机器人传感器数据。复制O_T_EE(末端执行器姿势)的输出并将其粘贴到services/src/socket_service.cpp文件中 (l. 22)。按照安装说明中所述重新编译后,服务应提供新的硬编码姿势。

要运行该应用程序,请执行以下操作:

  1. 运行服务:
    打开终端,转到存储库的根目录并运行

./build/2_RIDE/services/socket_service <robot-ip> 11511 <network-interface>

具有以下参数:

    1. <robot-ip>:是机器人的 IP 地址(robot.franka.de如果您已连接到底座或预配置的机器人 IP)。

    2. <network-interface>:是您的计算机用于连接机器人的网络接口。您可以使用该ip a命令检查您的网络接口。如果您使用以太网适配器,它将被命名为enpXXXX。无线适配器表示为wlpXXX。如果您无法确定网络接口,请询问您的系统管理员。

运行该服务后,当您输入以下命令时,它应该出现在列表中

ride service list

  1. 运行plug_in_vision状态机:
    要运行plug_in_vision状态机,首先激活外部激活设备,通过以下方式停止当前正在运行的任何执行(例如空闲状态机)

ride execution stop

进而

ride execution start plug_in_vision

这将使机器人移动!

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐