差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
机器人:franka:libfranka:libfranka的捕获和重放:1.libfranka的捕获和重放的技术路线 [2025/11/10 09:50] – [表] ctbots机器人:franka:libfranka:libfranka的捕获和重放:1.libfranka的捕获和重放的技术路线 [2025/11/10 11:33] (当前版本) – [别人的项目是如何完成libfranka的位姿读取和重放控制的?] ctbots
行 1: 行 1:
 +{{htmlmetatags>metatag-robots=(index, follow)
 +metatag-keywords=(libfranka, 机器人控制, Motion Model, Control Model, Franka机械臂, 关节位置控制, 关节速度控制, 笛卡尔姿态控制, 笛卡尔速度控制, openvla, 机器人运动仿真)
 +metatag-description=(了解如何使用libfranka进行机器人控制数据的捕获和重放,包括不同类型的Motion Model和Control Model,及其应用场景和技术细节。)
 +metatag-media-og:image=(:wiki:libfranka-motion-control.jpg)
 +metatag-og:description=(探索libfranka库中实现的Motion Model和Control Model,掌握如何通过不同的控制模式录制和回放Franka机械臂的动作。)
 +metatag-og:any=(获取深入的技术指南和开源项目链接,加速您在机器人编程领域的学习和发展。)
 +}}
 ====== 1.libfranka的捕获和重放的技术路线 ====== ====== 1.libfranka的捕获和重放的技术路线 ======
  
行 43: 行 50:
 镜像地址: 镜像地址:
 https://gitee.com/ctbots/mirror-franka_ros_interface https://gitee.com/ctbots/mirror-franka_ros_interface
 +
 +其中,franka_interface/src/franka_interface/arm.py 相关的代码,主要涉及到位姿的设置,看到可以支持不同的位姿模式
 +
  
 https://github.com/frankarobotics/franka_ros https://github.com/frankarobotics/franka_ros
 镜像地址: 镜像地址:
 https://gitee.com/ctbots/mirror-franka_ros https://gitee.com/ctbots/mirror-franka_ros
 +
 +一个franka的fci 跟 ros 中间的桥接项目;
  
 https://github.com/eric-heiden/panda-force https://github.com/eric-heiden/panda-force
 镜像地址: 镜像地址:
 https://gitee.com/ctbots/mirror-panda-force https://gitee.com/ctbots/mirror-panda-force
 +
 +  * experiments/echo_robot_state.cpp 可以看到对数据的保存,但是这里是对基本所有的字段的保存:experiments/state_recorder.hpp 可以看到用json几乎存储了所有数据
 +  * experiments/zmq_control_server.cpp 文件可以看到支持的各种命令,录制和重放的模式;可以看到 也是提供2种重放功能:根据点位的(follow_qs),根据加速度的(follow_cartesian_vel)。
 +
 +^ 命令 ^ 功能描述 ^ 参数 ^
 +| connect | 连接到Franka机器人,建立与指定IP地址Franka机器人的连接,并加载机器人模型 | 机器人IP地址 |
 +| disconnect | 断开机器人连接,重置机器人连接指针,释放资源 | 无 |
 +| error_recovery | 尝试从机器人错误状态中恢复 | 无 |
 +| set_knife | 设置末端执行器(刀具)属性,根据配置文件设置不同刀具的末端执行器属性 | 刀具类型("edc"或"slicing") |
 +| get_knife | 获取当前选中的刀具,返回当前已设置的刀具类型 | 无 |
 +| set_joint_impedance | 配置机器人各关节的阻抗控制参数 | 7个关节的阻抗值数组 |
 +| set_collision_behavior | 配置机器人在碰撞情况下的响应行为 | 扭矩阈值和力阈值数组 |
 +| record | 以指定间隔记录指定数量的机器人状态数据,保存为JSON文件 | 步数、采样间隔(毫秒) |
 +| retrieve | 读取指定路径的JSON日志文件内容并返回 | 日志文件路径 |
 +| move_to_q | 控制机器人在指定时间内平滑移动到目标关节位置,可选记录运动过程 | 目标关节角度数组、移动时长、确认标志、记录标志、记录频率 |
 +| interpolate | 对给定的关节位置点进行插值,生成新的更密集或更稀疏的路点序列 | 路点数、关节角度数据、源时间步长、目标时间步长 |
 +| follow_qs | 根据给定的关节位置点序列和时间步长,控制机器人按照插值后的平滑轨迹运动 | 路点数、关节角度数据、源时间步长、记录频率 |
 +| follow_cartesian_vel | 根据给定的笛卡尔速度序列和时间步长,控制机器人执行相应的笛卡尔空间运动 | 路点数、笛卡尔速度数据、源时间步长、记录频率 |
 +
 +
 +
  
 https://github.com/nbfigueroa/easy-kinesthetic-recording https://github.com/nbfigueroa/easy-kinesthetic-recording
行 56: 行 89:
 https://gitee.com/ctbots/mirror-easy-kinesthetic-recording https://gitee.com/ctbots/mirror-easy-kinesthetic-recording
  
 +  * 依赖于https://github.com/nbfigueroa/franka_interactive_controllers,在ROS上发布了franka的节点的信息
 +  * launch/franka_record_demonstrations.launch 录制并保存到本地 可视化
 +  *  launch/franka_replay_bag_demonstrations.launch 实现了录制数据的重放
  
 ===== Motion的类型和具体源代码 ===== ===== Motion的类型和具体源代码 =====
 +
 +我们后续,可能会主要考虑 使用 Joint Velocity 和  Cartesian Velocity 的方式进行录制和回放 
 +
 +但是考虑到使用openvla进行配置,那么应该最推荐  Cartesian Velocity 的方式,毕竟 openvla 自己输出的就是 末端执行器的偏移速度,那么比较合适,不用再运动学计算。
  
 ^ Motion Generator类型  ^ 文件位置                        ^ 类名                 | 应用场景                                                    | 优势                                                                                                                                                                                                                                                                                        | 劣势                                                                                                                                                                                         | ^ Motion Generator类型  ^ 文件位置                        ^ 类名                 | 应用场景                                                    | 优势                                                                                                                                                                                                                                                                                        | 劣势                                                                                                                                                                                         |