Franka 科研版机器人二次开发和研究案例——卡内基梅隆大学机器人研究所
本次系列介绍Franka科研版机器人FR3在科学研究中的案例。本文为中文翻译,请参考原文,论文解释权和所有权属于原作者。
一个模块化的机器人臂臂控制堆栈
研究方向:Franka-Interface和FrankaPy
智能自主操作实验室
https://labs.ri.cmu.edu/iam/arXiv:2011.02398v1 【cs.2020年11月4日】
摘要我们设计了一个模块化的机器人控制堆栈,为Franka科研机器人提供了一个可定制和可访问的Interface。该框架将高级机器人控制命令抽象为技能,并将其分解为轨迹生成器、反馈控制器和终止处理程序的组合。low level控制在C++中实现,并在1 kHz下,高级命令在Python中公开。此外,外部传感器反馈,如估计的物体姿态,可以实时传输到低级控制器。这种模块化的方法允许我们快速原型新的控制方法,这对研究应用是必不可少的。我们已经在超过5篇发表的研究论文中将这个框架应用于各种现实世界的机器人任务。该框架目前已与卡内基梅隆大学的其他机器人实验室在内部共享,我们计划在不久的将来公开发布。
1介绍
为了方便机器人编程,商业协作机器人臂(协同机器人)通常会提供简单的拖动编程接口或示教器。这些接口允许操作员执行远程操作、动觉教学或拖动路径点来编程机器人的行为,并且它们允许机器人以最小的设置时间在制造等领域执行任务。然而,这种机器人Interface往往非常依赖GUI和操作员,这不能很好地符合科学研究开发的要求,因为科研需要Python, C++等高级编程接口和结合外部传感器反馈的能力,这对科学和教育是非常需要的。

图1。使用Franka-Interface和FrankaPy来整理机器人任务。从左到右从上到下,包括用钥匙打开门,移液,切蔬菜,拿起3d打印的工业部件版本,打开番茄酱瓶盖,用煎饼面糊写信,打开门,从烧杯里喝水,以及在孔内插入。
一些机器人例如UR机器人,通过开发一种简单的方法,让研究人员使用机器人操作系统Robot Operating System (ROS)和Moveit,能够发送他们机器人的关节位置和速度命令。然而,这种机器人的ROS包无法支持访问机器人的全部功能,如UR5e的力控制模式,就无法实现。
在这份技术报告中,我们描述了Franka-Interface和FrankaPy,这是一个使用C++和Python的模块化机器人控制软件,允许研究人员在Franka科研版机器人研究的机器人控制。Franka-Interface使用 libfranka作为与Franka机器人的接口,Frankapy为Franka-Interface提供Python API。我们的软件堆栈允许用户,在维护一个易于使用的Python接口情况,快速实现控制方案,如C++中的笛卡尔阻抗和LQR控制器。此外,我们的软件允许方便地访问机器人的状态,并在技能执行期间向控制器提供传感器反馈。最后,我们确保了控制1 kHz的Franka的能力,并在不同的控制器之间快速变化。
2比较Franka_ROS和Franka_Control
Franka已经开发出了franka ros包使用ros_control,显示了他们的大部分libfranka FrankaAPI 在在1 kHz频率下来控制他们的Franka科研版的机器人
Ros原有的功能包,有两个主要的限制.第一,该软件包严重依赖于ROS and ros control,这意味着机器人控制器必须符合ros 控制指南。这使得它可以在机器人控制器上添加额外的功能,比如实时接受外部传感器输入来指导机器人的运动轨迹。第二,ROS and ros control的多接口控制器类一次只允许加载4个机器人硬件控制器,而libfranka共有9个机器人控制器可以用来控制机器人。例如,如果软件最初加载一个Interface控制器中的关节位置、关节速度、关节扭矩和笛卡尔姿态机器人控制器,但用户也需要使用笛卡尔速度机器人控制器作为任务的另一部分的适合,则需要完全停止之前的控制器,才能启动新的控制器。这为切换机器人控制器造成了不需要的时间间隔。
相比之下,我们的Franka-interface接口允许我们在libfranka系统中的9个机器人控制器之间切换。我们的控制器能够处理来自ROS和Python客户端的实时传感器反馈。我们的软件堆栈还允许异步联合位置和笛卡尔姿态输入从一个传感器发布者,允许MoveIt集成。最后,我们能够在技能执行过程中记录1 kHz的机器人状态。我们将在下面的章节中解释我们的整个系统管道。
3系统概述

2.图Franka机器人系统示图
我们的系统,如图所示2、由三个主要部分组成:Franka机器人,一个实时Ubuntu内核的服务器计算机,以及一个具有强大的CPU和GPU的客户端计算机,它可以处理传感器处理和高级规划。虽然服务器和客户端可以是同一台计算机,但在涉及深度神经网络的用例中,它们是分开的。这是因为在服务器上的libfranka需要一个实时内核,而神经网络所需的英伟达驱动程序则不兼容实时内核。如果服务器和客户端是单独的计算机,则您可以通过以太网或通过wifi连接它们。我们将从左边的客户端开始走过整个系统,然后慢慢地移动到机器人上正确的。
3.1 Client
在客户端上,我们有高级的机器人规划器、传感器处理服务器和FrankaPy,其中包括一个机器人状态客户端和一个ROS操作客户端。. 此外,客户端连接到各种摄像机和其他传感器的机器人设置首先,高级规划者通常是一个Python程序,作为一个有限的状态机,它需要处理传感器信息以及当前机器人状态作为输入命令机器人。接下来,传感器处理服务器通常由正在执行对象识别或姿态跟踪的神经网络组成,其结果被连续发布。服务器上的传感器客户端和高级规划器都可以订阅结果。
客户端上的FrankaPy机器人状态客户端读取机器人当前关节位置、末端运动姿态、经验扭矩、当前技能执行情况等信息。最后,FrankaPy ROS操作客户端是一个Python API,它包含了我们可以让机器人执行的所有技能。Frankapy包装器中包含的一些示例函数是“go” 向 姿势,“去” 向 关节”、“开放” 抓地力和执行 dmp' .这些函数包含了标准的ROS操作服务器目标,这些目标包含了使用协议推断序列化的每个技能的参数[8].它们通过ROS网络协议发送到接收和接收的实时服务器上的ROS操作服务器解析参数。
3.2服务器
. 实时服务器上的ROS操作服务器与1 kHz实时控制循环共享一个公共内存程序。这允许我们在这两个进程之间e伍ciently传递数据,比如控制器参数,而不需要昂贵的序列化和反序列化。实时控制循环不断查询共享内存数据库,以查看是否存在新技能的参数。当它看到一项新技能可用时,它就开始执行该技能。技能参数包括5个主要领域:技能的类型、轨迹发生器、反馈控制器、终止处理程序和要订阅的传感器主题。Franka-Interface允许我们混合和匹配轨迹发生器、反馈控制器、终止处理器和传感器数据管理器。图3说明了每个字段的一些常用类型,但这并不是我们的框架定义者的广泛列表。
技能类型的例子是:使用机器人的内部关节控制器到关节位置,使用机器人的内部姿势控制器到机器人姿势,使用阻抗控制到机器人姿势,向特定方向施加力,移动夹子,等等,我们实现了几个不同的轨迹.

图3。在Franka-Interface中实现的技能、轨迹发生器、反馈控制器、终止处理程序和传感器类型的例子。
针对每种技能类型的生成器。例如,我们实现了最小抖动关节和机器人姿态轨迹发生器,以减少对机器人的磨损。此外,我们实现了一个特殊的动态运动原语(DMP)轨迹发生器,我们用来让机器人模仿人类的动觉演示。对于反馈控制器,我们实现了一个笛卡尔阻抗反馈控制器,通过弹簧阻尼系统命令机器人末端矢姿态。否则,大多数其他反馈控制器只需设置内部机器人控制器的笛卡尔阻抗和关节阻抗。然而,其他使用这个框架的人也能够实现一个LQR控制器。最后,我们有了终止处理程序和传感器的主题参数。有基于时间的终止处理程序在指定的时间过去后停止技能,基于目标的终止处理程序在机器人在最终期望目标姿态或关节配置的阈值内时告诉技能停止,以及基于力反馈的接触停止。传感器主题参数告诉传感器ROS客户端要订阅哪些主题,并将消息数据存储在共享内存中,以便对实时控制回路进行查询。
该系统的最后一个也是最重要的部分是实时控制回路,它以1 kHz的频率直接与机器人通信。这个循环处理命令机器人在libFrankaC++ API上的命令,并将机器人状态存储到日志和共享内存中,可以由机器人状态发布者访问和发布。我们通过使用多个互变量和共享内存分区来确保实时控制循环的可靠性。
3.3附加功能
我们已经实现的一些其他特性是:同时控制多个机器人的能力,作为安全屏障的可重构虚拟墙,以及简单的碰撞。Franka ros还可以同时发射多个机器人;然而,它们目前只支持关节扭矩控制器。我们利用法兰卡 该系统的机器人配置文件,以实时可视化机器人的运动[2].
3.4相关性
我们的FrankaInterface和fran卡py确实依赖于几个软件包,如Autolab 核心[9]用于刚性转换,谷歌协议提供了[8]串行化
技能参数、机器人状态数据,以及ROS[2]之间的通信客户端和服务器。在未来,为了便于使用,我们正计划逐步取消ROS依赖关系,并切换到ZeroMQ用[10]来处理通信-连接在客户端和服务器之间。
4影响
图4。Franka机器人用于CMU RI课程。
自2018年10月以来,我们一直在智能自主操作实验室的内部使用Franka-Interface和FrankaPy。到目前为止,我们实验室已发表的5篇论文使用该软件进行机器人实验,如图所示1[11,12,13,14,15,16].最近,我们与CMU机器人研究所的其他实验室共享了该软件。此外,我们已经能够成功地使用我们的包在机器人自治类。在班上,50名学生使用了如图所示的8个共享机器人4用于实验室实验,比如带有避障功能的运动规划。一旦我们解决了未决的许可问题和改进了代码文档,我们计划将公开发布该软件。
