一、LeapMotion 介绍
1. 技术原理
Leap Motion体感交互器使用光学手势追踪技术,拥有两个带广角镜头的高帧率灰度红外摄像头和四个红外LED,最佳的工作环境是可产生清晰的、高对比度对象轮廓的光照环境,如图1.1所示。顶层滤光层只允许红外光波进出,对摄像头所采集的数据进行了初步处理,简化后期运算复杂度;采用双目摄像头通过双目立体视觉成像原理提取手部三维位置,建立手部立体模型;采用灰度摄像头减少运算数据量,提高算法速度。基于以上硬件和算法的优化,使得Leap Motion每秒可采集200帧手部数据,精度可达0.01mm。
Leap Motion可追踪的区域范围在空间中呈一个倒四棱锥型,水平视场角达140°,垂直视场角达120°,可交互深度在10cm-60cm之间,最大不超过80cm,如图1.2所示。Leap Motion的尺寸大小为80mm长*30mm宽11.3mm高,重量只有32g。
图1.1 Leap Motion结构图

图1.2 Leap Motion可识别区域
2. 追踪数据
当有手进入Leap Motion的识别区域时,它会进行自动追踪,输出一系列实时刷新的数据帧。帧数据(Frame)是Leap Motion数据的核心,在每一帧数据中包含了所有有关手部运动的信息,如所有的手(Hands)、手指(Fingers)、端点物体(Pointables)、工具(Tools)、手势(Gestures)及其位置(Position)、速率(Velocity)、方向(Direction)、旋转角度(Rotation)等信息,详细数据如图1.3所示。
对于每只手生成的手部模型,如图1.4所示,具体包含大拇指(Thumb)、食指(Index)、中指(Middle)、无名指(Ring)、小拇指(Pinky)和手腕关节(Wrist);对于每根手指,包含远端指骨(Distal)、中间指骨(Intermediate)、近端指骨(Proximal)和掌骨(Metacarpal)。Leap Motion模拟了真实人手的骨骼关节,通过每帧信息的更新获取,能够实现实时、快速、准确的手部追踪效果。

图1.3 帧数据信息


图1.4 手部骨骼信息
二、LeapMotion SDK 配置
-
配置service文件
-
在安装驱动前需要创建一个leap.service文件,否则安装驱动时会报错。
sudo vi /lib/systemd/system/leapd.service
-
在新创建的文件中粘贴一下代码:
# Found by Kevin Cole 2014.11.22 at # https://github.com/atejeda/leap-fedora-rpm # # Remember to: # # ln -s /lib/systemd/system/leapd.service /etc/systemd/system/leapd.service # systemctl daemon-reload # [Unit] Description=LeapMotion Daemon After=syslog.target [Service] Type=simple ExecStart=/usr/sbin/leapd [Install] WantedBy=multi-user.target
-
将信息链接到配置目录中
sudo ln -s /lib/systemd/system/leapd.service /etc/systemd/system/leapd.service systemctl daemon-reload
-
-
下载Leap_Motion驱动
在 官网 下载后解压,并安装:(ubuntu 系统下载较慢,推荐在 windows 系统下载后,拷贝到 ubuntu 系统)tar -xvf Leap_Motion_SDK_Linux_2.3.1.tgz cd LeapDeveloperKit_2.3.1+31549_linux/ sudo dpkg -i Leap-2.3.1+31549-x64.deb
若缺少依赖可以:
sudo apt install -f # 依赖修复
-
测试
连接 LeapMotion 后,进行设备测试:sudo leapd #等待服务开启后 Visualizer #打开窗口即可看到摄像头的识别信息
问题:
-
出现下边错误:
Configuration file not found Resetting /var//.Leap Motion/config.json. [Critical] WebSocket server failed to start [Critical] Secure WebSocket server failed to start [Critical] Have you tried running as root/Administrator? [Info] Leap Motion Controller detected: LP43642036937 [Info] Firmware is up to date.
解决方案:重启电脑或卸载重装即可
sudo dpkg -r leap # 卸载LeapMotion
-
三、LeapMotion ROS功能包 配置
注意:leapmotion的驱动文件不支持python3,故最好不在ubuntu 20上安装使用
- 下载并编译 ROS包
cd ~/catkin_ws/src git clone https://github.com/ros-drivers/leap_motion.git cd ~/catkin_ws catkin_make
- 启动
sudo leapd #等待服务开启后 Visualizer #打开窗口即可看到摄像头的识别信息 roslaunch leap_motion demo.launch # 启动launch文件,加载Rviz显示
- 显示结果
参考链接:
- 全网最全Leap Motion技术总结
- Ubuntu安装Leap_Motion
- rosleapmotion
- Ubuntu 20.04安装Leap Motion问题总结
- LeapMotion API file:///home/robot/Tools/LeapDeveloperKit_2.3.1+31549_linux/LeapSDK/docs/cpp/api/Leap.Bone.html