首页 > 其他分享 >franka ros2

franka ros2

时间:2024-07-29 10:19:31浏览次数:13  
标签:franka gripper launch 机器人 controller ros2

franka_ros2在 Windows 上不受支持。

franka_ros2 repo包含libfranka的 ROS 2 集成 。

 

警告: franka_ros2 正在快速开发中。预计会出现重大变化。在 GitHub上报告错误。

先决条件

  • ROS 2 Humble 安装( ros-humble-desktop)或带有 DevContainer 的 VSCode IDE。

  • PREEMPT_RT 内核(可选,但强烈推荐)。

  • 对于cartesian_posejoint_positionelbow_position命令接口来说,实时内核是绝对必要的。

  • 系统范围的libfranka 安装。libfranka 的最低支持版本是 0.13.2。这是一个最小示例:

  • sudo apt install -y libpoco-dev libeigen3-dev
    git clone https://github.com/frankaemika/libfranka.git --recursive
    cd libfranka
    git checkout 0.13.2
    mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF  ..
    cmake --build . -j$(nproc)
    cpack -G DEB
    sudo dpkg -i libfranka-*.deb
    

      

    1. 建立一个 ROS 2 工作空间:

      mkdir -p ~/franka_ros2_ws/src

       

    2. 克隆存储库并构建包:

      source /opt/ros/foxy/setup.bash
      cd ~/franka_ros2_ws
      git clone https://github.com/frankaemika/franka_ros2.git src/franka_ros2
      colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
      source install/setup.sh

      Moveit

      要查看是否一切正常,可以尝试在机器人上运行 MoveIt 示例:

      ros2 launch franka_moveit_config moveit.launch.py robot_ip:=<fci-ip>

      然后激活 MotionPlanning 在 RViz 中的显示。

      如果没有机器人,仍然可以通过在虚拟硬件上运行来测试设置:

      ros2 launch franka_moveit_config moveit.launch.py robot_ip:=dont-care use_fake_hardware:=true

      等待直到可以在终端内看到来自 MoveIt 的绿色消息 You can start planning now! 。然后取消框选 PlanningScene 并再次框选打开。之后框选打开 MotionPlanning

      示例控制器

      这个 repo 附带了一些位于 franka_example_controllers 包中的示例控制器。

      默认情况下,使用夹爪执行以下 launch 文件。如果没有连接夹爪,则可以在 launch 文件中使用 load_gripper:=false.

       

      移动到起始点

      该控制器将机器人移动到其初始配置。

      ros2 launch franka_bringup move_to_start_example_controller.launch.py robot_ip:=<fci-ip>

      重力补偿

      这是我们拥有的最简单的控制器,也是编写自己的控制器的一个很好的起点。它将零作为扭矩命令发送到所有关节,这意味着机器人只补偿自己的重量。

      ros2 launch franka_bringup gravity_compensation_example_controller.launch.py robot_ip:=<fci-ip>

      关节阻抗示例

      该示例以非常柔性的周期性移动方式移动关节 4 和 5。可以尝试在运行时移动关节。

      ros2 launch franka_bringup joint_impedance_example_controller.launch.py robot_ip:=<fci-ip>

      包说明

      本节包含对每个包的作用的更详细描述。一般来说,包结构需要遵守 此处 提出的结构。

      franka_bringup

      该软件包包含示例的 launch 文件以及基本的 franka.launch.py launch 文件,可用于在没有任何控制器的情况下启动机器人。

      当启动机器人时:

      ros2 launch franka_bringup franka.launch.py robot_ip:=<fci-ip> use_rviz:=true

      除了 joint_state_broadcaster 之外,没有任何控制器在运行。然而,与机器人的连接仍然被建立,并且当前机器人位姿可在 RViz 中可视化。在这种模式下,当用户按下 stop 按钮时,机器人可以被示教。但是,一旦使用了 effort_command_interface 的控制器被启动,机器人将使用来自 libfranka 的扭矩接口。例如,可以启动 gravity_compensation_example_controller 通过运行:

      ros2 control load_controller --set-state start  gravity_compensation_example_controller

      这相当于运行在 重力补偿 中提到的 launch 文件:gravity_compensation_example_controller.launch.py

      当控制器通过使用以下命令被停止时:

      ros2 control set_controller_state gravity_compensation_example_controller stop

      机器人将停止扭矩控制并仅通过 FCI 发送其当前状态。

      现在可以选择再次启动同一个控制器:

      ros2 control set_controller_state gravity_compensation_example_controller start

      或加载并启动另一个:

      ros2 control load_controller --set-state start joint_impedance_example_controller

      当机器人因错误停止时,ros2_control_node 节点即死亡。这也将关闭所有其他节点。要从中恢复,必须先切换用户停止按钮(灰色),然后才能重新启动 launch 文件。

      franka_description

      该软件包包含用于可视化机器人的 xacro 文件和 meshes。此外,它包含一个 launch 文件,可以在不访问真实机器人的情况下可视化机器人模型:

      ros2 launch franka_description visualize_franka.launch.py load_gripper:=<true|false>

      franka_example_controllers

      这个包包含一些控制器,可以看作是如何在 ROS 2 中编写控制器的示例。目前,控制器只能访问测量的关节位置和关节速度。基于此信息,控制器可以发送扭矩命令。目前无法使用例如关节位置接口等其他接口。

      与 franka_ros 相比,目前无法直接访问质量矩阵、科氏力扭矩或雅可比矩阵等属性。

      franka_gripper

      此包包含 franka_gripper_node 用于与 Franka Hand 交互。

      franka_gripper_node 提供以下操作:

      • homing - 将夹爪归零并根据已安装的手指更新最大宽度。

      • move - 以定义的速度移动到目标宽度。

      • grasp - 尝试在以给定速度闭合的同时以所期望的力在所期望的宽度抓取。如果夹爪两指之间的距离 d 处于 width - epsilon.inner < d < width + epsilon.outer 的范围,则该操作是成功的。

      • gripper_action - 一个 MoveIt 的特殊抓取 action。

      此外,还有一项 stop service 可以中止抓取 action 并停止抓取。

      使用以下 launch 文件启动夹爪:

      ros2 launch franka_gripper gripper.launch.py robot_ip:=<fci-ip>

      在另一个标签中,现在可以执行归零并发送抓取命令。

      ros2 action send_goal /panda_gripper/homing franka_msgs/action/Homing {}
      ros2 action send_goal -f /panda_gripper/grasp franka_msgs/action/Grasp "{width: 0.00, speed: 0.03, force: 50}"

      默认情况下,内部和外部 epsilon 为 0.005 米。还可以显式设置 epsilon:

      ros2 action send_goal -f /panda_gripper/grasp franka_msgs/action/Grasp "{width: 0.00, speed: 0.03, force: 50, epsilon: {inner: 0.01, outer: 0.01}}"

      要停止抓取,可以使用 stop service。

      ros2 service call /panda_gripper/stop std_srvs/srv/Trigger {}

      franka_hardware

      该软件包包含 ros2_control 所需的 franka_hardware 插件。该插件从机器人的 URDF 加载,并通过机器人描述传递给控制器​​管理器。它为每个关节提供:

      • 一个包含测量的关节位置的 position state interface

      • 一个包含测量的关节速度的 velocity state interface

      • 一个包含测得的连杆侧包括重力的关节扭矩的 effort state interface

      • 一个包含期望的无重力的关节扭矩的 effort command interface 。

      机器人的 IP 通过来自 URDF 的参数读取。

      franka_moveit_config

      此软件包包含 MoveIt2 的配置。有一个名为 panda_manipulator 的新移动规划组 ,其尖端位于夹爪的指尖,并且其 Z 轴旋转了 -45 度, 因此 X 轴现在朝前,使其更易于使用。移动组 panda_arm 仍可用于向后兼容。新的应用程序应该使用新的 panda_manipulator 移动组替换。

       

      franka_msgs

      这个包包含不同夹爪 action 的定义。

      重要

      与 franka_ros 相比,不再有 FrankaState 类型消息,因为目前无法从硬件类进行通信。

      joint_effort_trajectory_controller

      这个包包含一个修改过的 joint_trajectory_controller,它可以使用 franka_hardware::FrankaHardwareInterface 扭矩接口. 它基于此 Pull request 并向后移植到了Foxy。它提供了 MoveIt 所需的 FollowJointTrajectory

      franka_ros 和 franka_ros2 的区别

      本节概述了 franka_ros 和 franka_ros2 之间的基本变化。

      franka_gripper

      • 所有 topics和 actions 之前都以 franka_gripper 作为前缀。此前缀已重命名为 panda_gripper,以便在未来启用所有前缀都基于 arm_id 的工作流程,从而轻松启用多臂设置。

      • 该 stop action 现在是一个 service action,因为它不可抢占。

      • 所有 actions(除了 gripper_action)都以当前夹爪宽度作为反馈。

      franka_gazebo

      目前,我们不提供 Gazebo 与 franka_ros2 集成。但是,我们提供了 franka_ros

      franka_visualization

      这个包已经不存在了。但是, franka_description 提供了一个launch文件来可视化机器人模型,而无需连接到机器人

      franka_control

      这个包已经不存在了。与机器人的连接由 franka_hardware 包中的硬件插件提供。它提供的 actions 和 services 目前未出现在 franka_ros2

      编写控制器

      与 franka_ros 相比我们目前提供了简化版的控制器接口:

      • 关节位置

      • 关节速度

      • 测量扭矩

      原因是硬件接口目前只支持 doubl 数据类型,无法暴露于例如 franka::RobotState

      可以将自己的控制器基于列出的 franka_example_controllers 其中之一。要计算机器人的运动学和动力学,可以在 KDL 等库中使用机器人的关节状态和 URDF(其中还有一个可用的 ROS 2 包)。

      已知的问题

      • 当使用 fake_hardware 和 MoveIt 时,需要一些时间直到默认位置被应用。

       

标签:franka,gripper,launch,机器人,controller,ros2
From: https://www.cnblogs.com/ai-ldj/p/18329478

相关文章

  • ros2 自定义一个控制器
    在ROS2中,自定义一个控制器并进行使用涉及几个步骤,包括编写控制器代码、配置控制器参数、编写控制器启动文件以及在运行时加载和使用控制器。以下是一个详细的步骤指南:1.编写控制器代码首先,创建一个控制器类,该类继承自controller_interface::ControllerInterface。下面是一......
  • ROS2对比ROS
    ROS(RobotOperatingSystem)和ROS2(RobotOperatingSystem2)是两个广泛使用的机器人软件框架,它们由OpenRobotics组织维护和开发。尽管名称中包含“操作系统”,但ROS和ROS2实际上是一组工具、库和约定,用于帮助开发机器人软件。下面列出了ROS2相对于ROS的一......
  • 在ROS2 - humble 中做一个节点
    ROS2(RobotOperatingSystem2)中的节点(Node)是ROS2系统中的一个核心概念,它代表了执行特定任务的进程或程序模块。节点定义:    在ROS2中,节点是系统中最小的处理单元,负责执行特定的任务或功能。每个节点都具有独立的处理能力和通信能力,可以与其他节点进行交互。功能: ......
  • ROS2小乌龟案例话题通信
    1.案例需求需求:启动两个turtlesim_node节点,节点2中的乌龟自动调头180°,我们可以通过键盘控制节点1中的乌龟运动,但是不能控制节点2的乌龟,需要自实现功能:可以根据乌龟1的速度生成并发布控制乌龟2运动的速度指令,最终两只乌龟做镜像运动。2.案例分析在上述案例中,主要需要关注的......
  • Franka - Robot - Ros - Customization(定制)
    franka_gazebo的启动文件包含大量参数,您可以使用这些参数自定义行为的模拟。例如,要在一个模拟中生成两只熊猫,您可以使用以下方法:<?xmlversion="1.0"?><launch><includefile="$(findgazebo_ros)/launch/empty_world.launch"><!--Startpaused,simulationwillb......
  • Franka Robot 如何理解机器人的笛卡尔阻抗运动
    在笛卡尔阻抗模式下,用手将机器人移动到一个新位置后,机器人的行为取决于其控制参数(刚度、阻尼、质量)的设定和外部力的作用。当你将机器人移动到一个新位置并释放它时,以下是可能的情况:高刚度情况下如果机器人的刚度(Stiffness)参数设置较高,意味着机器人对位置偏差有很强的恢复力。当......
  • Franka Robot - FAQ - rviz可视化问题
    在VMware中运行Ubuntu20.04并使用ROSNoetic和Gazebo时,如果遇到Gazebo无法显示的问题,可能有以下几个原因及对应的解决方案:1.硬件加速和3D图形设置VMware的3D图形加速设置可能会影响Gazebo的显示。确保在VMware中启用了3D加速。检查和启用3D加速:打开VMware并选择你的Ubuntu......
  • Franka Robot 独占控制权限设计
    FrankaEmika机器人通过其libfranka库和FrankaControlInterface(FCI)实现了一种独占的权限控制机制,确保在任何时候只能有一个程序能够控制机器人。这种机制通过权限cookie(permissioncookie)来实现。权限控制机制唯一连接限制:libfranka库设计为一次只能有一个实例连接到Fr......
  • ros2,功能包下使用自定义的msg,msg文件在定义在当前文件下
    1.创建功能包,参考ros官方方式Writingasimplepublisherandsubscriber(C++)—ROS2Documentation:Humbledocumentationros2pkgcreate--build-typeament_cmake--licenseApache-2.0cpp_pubsub2.创建msg在cpp_pubsub功能包下创建msg文件夹 ros2_ws/cpp_pubsub......
  • 已解决——ROS2开发环境搭建,亚博智能小车
    在实现多机通讯时,官方教程讲的很模糊,具体细节实现主机(ROS2小车),从机(自己的电脑上的Ubuntu系统)首先打开两个terminal,左边的负责连接小车,右边的负责实现从机的接受话题主机terminal输入[email protected]进入后再输入./run_docker.sh然后就进入小车的docker了然后输入sud......