需要安装Franka-ros https://blog.csdn.net/philthinker/article/details/103457758
franka_ros将libfranka集成到ROS和ROS控制。在这里,我们将介绍它的包,并简要介绍如何编写控制器。
本节中传递给启动文件的所有参数都带有默认值,因此如果使用默认网络地址和ROS名称空间,则可以省略这些参数。确保源命令是用设置脚本从你的工作空间调用的
franka_description:
这个包包含了运动学方面的机器人和末端执行器的描述,关节限制,视觉表面和碰撞空间。碰撞空间是可视化描述的简化版本,用于提高碰撞检查的性能。这些描述基于URDF XML文档中的URDF格式。
franka_gripper:
这个包针对夹爪进行操作
franka_gripper::MoveAction(width, speed)以定义的速度移动到目标宽度
franka_gripper::GraspAction(width, epsilon_inner, epsilon_outer, speed, force)在给定的速度下,试图以所需的力度抓住所需的宽度,,距离需要满足此条件。
可以用
roslaunch franka_gripper franka_gripper.launch robot_ip:=<fci-ip>
运行可执行文件。
franka_hw
这个包包含了基于libfranka API的ROS控制框架的机器人的硬件。硬件类
franka_hw::FrankaHW是在这个包中实现的,这个包为控制器提供了以下接口:

要使用ROS控制接口,必须按名称检索资源句柄

默认情况下,<arm_id>被设置为" panda "。
franka_hw::FrankaHW这个类还实现了控制器的启动、停止和切换;
FrankaHW类还充当FrankaCombinableHW的基类,FrankaCombinableHW是一个硬件类,可以与其他类组合,从一个控制器控制多个机器人,FrankaHW与FrankaCombinedHW的关键区别是后者只支持转矩控制。 FrankaHW方法是单机器人控制的最优方法。因此我们建议仅在控制多个机器人时使用 FrankaCombinableHW/FrankaCombinedHW类。

唯一可接受的命令接口声明是EffortJointInterface,可以与任何一组仅读接口(FrankaModelInterface、JointStateInterface、FrankaStateInterface)组合。所有接口提供的资源句柄都是通过名称声明的,并且遵循与FrankaHW中描述的相同的命名约定。FrankaCombinableHW的每个实例都提供了一组完整的服务和操作接口(请参阅franka_control)。
franka_control
ROS节点franka_control_node和franka_combined_control_node是ROS控制的硬件节点,它们根据来自franka_hw的硬件类使用。
有关基于硬件类加载参数的更多信息,请参考https://github.com/ros-controls/ros_control的官方文档combined_robot_hw::CombinedRobotHW。
franka_visualization
这个包包含连接到机器人并发布机器人和夹具联合状态,以便在RViz中可视化。要运行这个包:
roslaunch franka_visualization franka_visualization.launch robot_ip:=<fci-ip> \
load_gripper:=<true|false>franka_example_controllers
在这个包中,一组通过ROS控制机器人的示例控制器被实现。控制器描述了franka_hw::FrankaHW类所提供的各种接口以及它们的用法。每个示例都附带一个独立的启动文件,用于启动机器人上的控制器并对其进行可视化。
要启动关节阻抗示例,请执行以下命令:
roslaunch franka_example_controllers joint_impedance_example_controller.launch \
robot_ip:=<fci-ip> load_gripper:=<true|false>dual_arm_cartesian_impedance_example_controller展示了在基于FrankaCombinedHW的基础上,使用一个实时控制器实现基于阻抗的笛卡尔任务的控制。可以启动示例控制器:
roslaunch franka_example_controllers \
dual_arm_cartesian_impedance_example_controller.launch \
robot_id:=<name_of_the_2_arm_setup> \
robot_ips:=<your_robot_ips_as_a_map> \
rviz:=<true/false> rqt:=<true/false>这个示例假设机器人配置是根据dual_panda_example.urdf.xacro进行的,其中两个Panda机器人被放置在距离1米的盒子顶部。请随意将此机器人描述替换为与您的设置相匹配的描述。rviz选项允许选择是否启动可视化。
franka_msgs
这个包包含消息、服务和操作类型,这些类型主要使用包franka_hw和franka_control来发布机器人状态或在ROS生态系统中公开libfranka API。有关此包中提供的服务和操作的更多信息,请参阅franka_control。
panda_moveit_config
这个包被转移到 ros_planning repos,更多细节,文档和教程,请查看MoveIt! tutorials website
Writing your own controller
......................................................................