franka_matlab包

开发环境

  • MATLAB2019aMATLAB2021a 上经过测试

  • 在带有 PREEMPT_RT 内核补丁Intel CPU的 Ubuntu Linux 18.04, 20.04 中经过测试

  • 支持libfranka版本 0.9.0 (系统版本 4.2.1)

!! 重要 !!

  • franka_matlab 项目是基于 libfranka 的。强烈建议,为了评估配置以及最为重要的以太网通信质量,在尝试使用 Simulink 之前,请先尝试构建和运行 libfranka 的 C++ 例程。请确保以太网通信质量正常( 推荐测试 ),请 特别注意 禁用任何可能的电脑 CPU 节能模式

  • 如果 libfranka 的 C++ 例程运行良好,但同时 Simulink 的同一例程却无法运行,请向我们反馈!

  • 为了在外部模式下使用库,我们建议使用 franka_emika_panda.tlc 或 franka_emika_panda_shrlib.tlc,其中包含能够正确处理 1ms 实时循环的 ExtMode 版本。

指南

  • 请确保您完全按照 libfranka 安装说明 ,以正确配置您的环境。

  • 使用 >> addpath(franka_matlab 路径); 将 franka_matlab 的路径添加到您的项目中

  • 使用 >> init_franka_matlab(); 初始化项目(推荐)或者如果您已经安装了 libfranka 并希望使用 >> init_franka_matlab(libfranka_文件夹路径); 进行初始化。在后一种情况下,libfranka 构建时应该使用与位置无关的选项 ON!(-fPIC)

  • (可选)默认情况下,代码生成的系统目标是自定义的 ‘franka_emika_panda.tlc’ 。您还可以设置为’ert.tlc’或’grt.tlc’,例如 >> set_code_gen_target('ert');。请注意, 在 ert 和 grt 的情况下,外部模式可能会破坏实时过程’franka_emika_panda.tlc’是专门为避免这种情况而设计的

  • 只有第一次使用时,须使用 >> mex_franka_simulink_library();>> mex_franka_matlab_library(); 来MEX Simulink和Matlab库。

运行示例程序

在 demos 文件夹中,您会找到一组和 libfranka 一样效果的示例,这些示例在 Simulink 中通过 Franka Simulink 库实现。您可以随意尝试、调整和扩展它们以满足您的项目需求。

请注意,示例会自动在“work”文件夹中生成代码。 如果您继续处理另一个项目,生成的代码仍将在work文件夹中生成。 如果你有自己的目标文件夹,您需要手动更改它。 我们为此提供了帮助脚本 set_code_gen_target_path(<您想要的新代码生成路径>)

  • 在文件demos_common_configs.m中,有一组建立和运行模型所需的默认参数。当模型被打开时,它们会被自动加载。这样,仅须定义 robot_ip 即可。我们建议直接在demos_common_configs.m文件中定义robot_ip。

  • 点击模型底部的第一个白色 UI按键 就可以将模型构建为独立的可执行文件。

  • 成功构建后,您就可以通过终端运行可执行文件了(推荐执行,以便能够检查任何潜在的异常)。要先确保已经导出了 libfranka.so $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<放 libfranka 构建文件夹路径>

  • 可执行文件现在应该等待与外部模式的连接。您现在可以通过 Simulink 模型与外部模式连接。

  • 或者,要执行独立可执行文件并连接外部模式,您可以双击模型底部的绿色 UI按键。在这种自动执行的情况下,由于可执行文件在后台运行,因此无法直接观察到抛出的异常情况。

  • 在Simulink模型中,“Play”按钮现在应该已经变成了绿色。确保刹车是打开的、用户按钮被释放、机器人处于空闲状态。

  • 你现在可以按Play按钮了! 这样该模型就会被执行。

示例:不使用外部模式以编程方式生成笛卡尔速度演示。

首先,确保您已经在 demos_common_configs.m 中更改了机器人的ip。 还要确保在执行 set_up_franka_simulink_model() 命令后,参数已正确加载到工作区中。

>> set_up_franka_simulink_model('generate_cartesian_velocity_motion');
>> build_standalone('generate_cartesian_velocity_motion');
  • 在终端执行: $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<place the local libfranka build folder path>

  • 执行位于工作文件夹中的可执行文件!

示例:使用外部模式以编程方式生成笛卡尔速度演示。

首先,确保您已经在 demos_common_configs.m 中更改了机器人的ip。 还要确保在执行 set_up_franka_simulink_model() 命令后,参数已正确加载到工作区中。

>> set_up_franka_simulink_model('generate_cartesian_velocity_motion', 'external_mode_on');
>> build_standalone('generate_cartesian_velocity_motion', '-DON_TARGET_WAIT_FOR_START=1', 'your target path for generated code');
  • 在终端导出动态链接的 libfranka 路径: $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<place the libfranka folder build path>

  • 执行您模型生成的可执行文件,该可执行文件位于您提供的目标路径中!

  • 通过您的 Simulink 模型连接到外部模式。 点击播放开始控制!

注意事项

  • 在同一个系统中,“Apply Control”模块的 多个实例不允许的 (多个实例可以插入到相应的启用的子系统中)。

  • 在 Franka Simulink 库中使用模块的 多个实例允许的。 有且只有一个“Apply Control”模块是所有其他模块工作所必需的。

  • 对于参数的设置,强烈建议参考Matlab文件demos_common_configs.m

  • 通过 Matlab 函数,实验性地部分支持 Matlab 功能。尝试使用 >>automatic_error_recovery(robot_ip) 命令来自动脱离错误状态。

所有的故障排除请参考 Franka控制接口的故障排除页面 。请特别注意 由于不连续或违反通信约束(communication_constraints_violation)的问题而导致的运动停止 !请参考故障排除中的相应部分。