Novint Falcon】开发日志

  • 【Novint Falcon】开发日志
    • Novint Falcon
    • 开发思路
  • 开发目的
  • windows环境下falcon的识别与通讯
  • falcon运动学
  • 按键、LED及力反馈功能
  • VREP场景文件的建立及通讯
  • 重力补偿
  • 【FRANKA】从端执行器开发
    • 配置及安装
    • 测试官方demo
    • panda(从端)模式测试

在这里插入图片描述


【Novint Falcon】开发日志


之前用ps4手柄基于pygame制作了一个可以控制机器人末端的主手(计划将开发过程也整理出来上传github),这次获得了一个Novint Falcon(下简称falcon),falcon最大的特点就是增加了力反馈功能,但缺点也显而易见,那就是falcon只有三个自由度。
个人认为这种使用游戏手柄(joystick)来对机器人的控制的方式将越来越流行,特别是在医疗和服务领域。

Novint Falcon

Novint 应该是一家公司的名字,目前这家公司的官网在谷歌上已经打不开了。在维基百科上可以看到wiki.

Falcon意为“隼”,是一种鸟类。

关于falcon的具体性能将在下面的章节体现。

售卖链接 亚马逊或者haptic house

PS:据说谷歌二手的只要600rmb…有实力的可以入一个玩玩。


在这里插入图片描述

开发思路
本次开发的目的就是基于windows平台制作一个用户操作的操作杆实现用户对远端机械臂的控制。因此,

开发平台:windows 10

IDE:CMake、VS2019 community

仿真平台:V-REP EDU

从手:Franka Emika Panda

值得一提的是V-REP上具有现成的falcon的场景以供实现力和虚拟的交互。VREP中的力触觉设备接口(CHAI3D)

开发目的

功能项:

 实现falcon firmware和windows 10 的识别与通信。
 

搭建和VREP通信的仿真平台;
 

通过falcon实现位置控制;

 通过falcon实现力感知。

在功能开发过程中不断补充。

性能项:

 实现离合功能;
 

通过LED形成提示;(需要优化代码结构已实现正确的LED提示)

 实现报错功能

力矩保护

速度保护

报错码


 加入相机坐标系;

 增加重力配平功能(主手不会自己掉下来);
 

机械臂稳定不发生抖动

 设环境为spring-damer模型

力信号进行滤波
 

限幅


 主手自动回零功能(保证工作空间)->力矩控制;

windows环境下falcon的识别与通讯

话休絮烦

安装falcon官方驱动下载链接包含了可以体验各种材质(硬度、粘滞、表面粗糙度)的功能。

使用libnifalcon下载链接包含了examples和一些关于这种“斯图尔特”平台的论文,非常受用!

其中1中的falcon的力反馈操作手感,观看链接

在这里插入图片描述

falcon运动学


两篇参考论文:

PJZsomborMurray- Descriptive Geometric Kinematic Analysis Of Clavels Delta Robot

REStamper-A Three DOF Parallel Manipulator With Only Translational DOFs

其他的一些参考资料

维基百科中可知,falcon其实是一种名为delta-robot的机器人。

QUARC Targets Library(其中的末端坐标系建系错误,正确的坐标系建立如下图XYZ坐标系)

在这里插入图片描述

基于Matlab的仿真结果,见
libnifalcon已经将其封装成库,直接在编程时调用即可(falcon/kinematic/FalconKinematicStamper.h)

按键、LED及力反馈功能


参考资料

VREP场景文件的建立及通讯


场景文件的建立->user manual
通讯的建立->user manual
visual studio平台->csdn
cmake编译
CMake实践.pdf (其中存在一些错误需要注意)
参考在ubuntu下编程使用。
重力补偿
在实际操作主手过程中,虽然增加了保护的离合功能且主手教轻,但是在医生操作完毕后,由于没有重力配平,主手会自己掉下来。因此如果从一个产品的角度出发考虑的话需要增加重力配平以提升产品性能。 参考资料:

libralis库,自动校准重力补偿->autocalibrated gravity compensation
其重力补偿思路

在这里插入图片描述

这个程序包含了所有的辨识以及测试程序。
这个程序是基于Haptik Library来访问falcon的,并且这个程序已经停止维护很久了,因此我们继续选择使用libnifalcon进行开发,并且我们要做的仅仅就是将辨识好的参数读取出来即可。
同样存在的问题是,libnifalcon和haptiklibrary对falcon的位置计算方式是不同的,因此并不能简单的将haptiklibrary的重力补偿数据给libnifalcon下开发的东西读就可以了。

【FRANKA】从端执行器开发

配置及安装


官方配置文档->Link

网友总结的安装步骤,翻译的很棒,搭配官方使用更佳->Link

疑难杂症解决,从ubuntu装机、ros安装到内核安装,各种问题解决。->DM me。

测试官方demo

在example选择上最好直接使用franka_ros而不是libfranka,libfranka相对较老并且不稳定。


注意其中一些demo并没有考虑到机器人实际的操作空间,因此在执行之前一定要将机器人摆在qr的位置。

panda(从端)模式测试


在这里我们将直接使用panda的接口来实现力反馈功能以及主从控制功能。参考论文如下

Position and Velocity Control for Telemanipulation with Interoperability Protocol Bukeikhan Omarali

在这里插入图片描述

但是,经过实际操作会出现 cartesian_motion_generator_joint_acceleration_discontinuity

笛卡尔运动发生器关节加速度间断

参考他的reference->Link会发现:

在这里插入图片描述
相似问题的灵感