TrackIR5头部跟踪设备环境安装

1.TrackIR5

1.1编译安装

1.源码下载
下载:https://github.com/uglyDwarf/linuxtrack和公钥
linuxtrack-0.99.18.sig 和 linuxtrack-0.99.18.tar.bz2
cp linuxtrack-0.99.18.sig linuxtrack-0.99.18.tar.bz2 /opt
cd /opt

2.验证公钥
sudo gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 22343B2D
sudo gpg --verify linuxtrack-0.99.18.sig linuxtrack-0.99.18.tar.bz2

3.编译安装
sudo tar -xvf linuxtrack-0.99.18.tar.bz2
sudo ln -sf /opt/linuxtrack-0.99.18 /opt/linuxtrack

cd linuxtrack
./configure
sudo make -j4
sudo make install # /usr/local/lib

4.创建rules
sudo cp /opt/linuxtrack-0.99.18/src/99-TIR.rules /lib/udev/rules.d/
sudo service udev restart

5.安装trackir 固件firmware
$sudo apt install wine
$cd /opt/linuxtrack/src/qt_gui
$./ltr_gui

调试:export LINUXTRACK_DBG=u
在这里插入图片描述
错误:

1.configure: error: bison not found!

解决:
sudo apt install bison

2.configure: error: libmxml not found!
解决:
sudo apt install libmxml-dev

3.aclocal-1.14: 未找到命令
解决:
sudo apt install autoconf
autoreconf -ivf
aclocal --version # 查看版本是否对应,不对应修改configure里面的版本号为当前版本

4.fatal error: sys/cdefs.h: No such file or directory
解决:
sudo apt install gcc-multilib

5.qmake: could not exec ‘/usr/lib/x86_64-linux-gnu/qt4/bin/qmake‘: No such file or directory
sudo apt-get install qt5-default

6.qt: webkit webkitwidgets x11extras
sudo apt install libqt5webkit5-dev libqt5x11extras5-dev

sudo apt install wine-development

1.2.接口说明

接口描述:
Linuxtrack 提供了一个接口,允许开发人员将头部跟踪合并到他们的应用程序中。
该接口由两个文件组成:linuxtrack.h和linuxtrack.c;只需将它们添加到您的项目中,您就可以访问 Linuxtrack 的功能。
没有以通常的库形式提供接口的原因如下:如果您发布的应用程序直接链接到 Linuxtrack 的接口库,它在没有正确安装或配置 linuxtrack 的系统上将无法工作。从技术上讲,Linuxtrack 可能以静态库的形式提供,但是当您使用它来构建动态库(例如插件)时可能会出现问题。
当前形式的接口查找 Linuxtrack,并在找到时使用它;当 Linuxtrack 未找到(或未正确配置)时,它只是表示失败并且主应用程序可以运行。界面概览
int linuxtrack_init(const char *cust_section);
int linuxtrack_shutdown(void);
int linuxtrack_suspend(void);
int linuxtrack_wakeup(void);
int linuxtrack_recenter(void);
typedef enum {INITIALIZING, RUNNING, PAUSED, STOPPED, ERROR} linuxtrack_state_type;
linuxtrack_state_type linuxtrack_get_tracking_state(void);
int linuxtrack_get_pose(float *heading, float *pitch, float *roll,
float *tx, float *ty, float *tz, uint32_t *counter);
基本的 Linuxtrack 接口相对简单:linuxtrack_init 初始化接口,提供一个字符串标识您的应用程序(指定要使用的配置文件),linuxtrack_shutdown 关闭接口。
配对 linuxtrack_suspend 和 linuxtrack_wakeup 允许您暂时暂停和恢复跟踪;从技术上讲,这似乎是多余的,但是通过这两个功能暂停和恢复通常比关闭整个跟踪器并重新初始化要快得多。
功能 linuxtrack_recenter 允许用户在需要时重新定位跟踪器。
函数 linuxtrack_get_tracking_state 返回 Linuxtrack 界面的当前状态;跟踪器本身在不同的进程中运行,并且它的命令是异步传递的。出于这个原因,您可能想要查询跟踪器的状态以查看您的命令是否已执行。
函数 linuxtrack_get_pose 返回当前的姿势和状态信息。通常,您应该在每个(您的应用程序)帧中使用一次它来获取当前姿势。姿势数据已经被处理(过滤、缩放、根据您在初始化时指定的配置文件应用的响应曲线),因此更快地调用它没有多大意义。接口说明
int linuxtrack_init(const char *cust_section);
请求初始化跟踪器。查找 Linuxtrack 安装,如果找到,它会尝试启动跟踪。要求 Linuxtrack 不仅已安装,而且用户必须正确配置。
参数 cust_section 表示要使用的配置文件名称;如果为 NULL,则使用默认配置文件(“默认”)。
返回值为 0 表示成功。但是请注意,这并不意味着跟踪器成功启动 - 这意味着初始化请求已发送。
要检查跟踪器是否真正启动,请检查 linuxtrack_get_tracking_state 函数的返回值。请记住,跟踪器可能需要几秒钟才能启动。但是请注意,您可以立即开始调用 linuxtrack_get_pose - 如果 Linuxtrack 尚未初始化,它只会返回“零”位姿(所有角度和距离都设置为零)。
int linuxtrack_shutdown(void);
请求关闭跟踪器。由于可能有多个使用 Linuxtrack 的应用程序并行运行,因此跟踪器实际上仅在最后一个客户端断开连接时才会关闭。
返回值为 0 表示成功。
int linuxtrack_suspend(void); int linuxtrack_wakeup(void);
请求暂停或恢复跟踪。暂停跟踪对于 TrackIR/SmartNav 类设备特别有用,因为它会关闭它们的 IR LED,从而降低设备的功耗。
返回值为 0 表示成功。
int linuxtrack_recenter(void);
请求当前姿势应用作新的中心姿势。
返回值为 0 表示成功。
typedef enum {INITIALIZING, RUNNING, PAUSED, STOPPED, ERROR} linuxtrack_state_type; linuxtrack_state_type linuxtrack_get_tracking_state(void);
请求有关当前跟踪器状态的信息。
返回值根据 linuxtrack_state_type 枚举表示跟踪器状态。
int linuxtrack_get_pose(float *heading, float *pitch, float *roll, float *tx, float *ty, float *tz, uint32_t *counter);
请求当前姿势。航向、俯仰和滚动值以度为单位,平移值 tx、ty、tz 以毫米为单位。计数器值表示跟踪器帧号,从中计算当前位姿;如果数字在两次通话之间没有改变,那么姿势也没有改变。
如果出现问题(Linuxtrack 未安装、未配置、配置错误、尚未初始化…),报告的姿势由全零组成。
返回值 1 表示新姿势可用,0 表示没有新姿势,但其他一切正常,-1 表示有问题。高级界面
如果由于某种原因普通界面不足以满足您的需求(对于普通头部跟踪应用程序来说应该如此),则可以使用高级界面。此接口提供有关当前姿势的附加低级信息,例如传感器分辨率、原始姿势值(处理前)和 blob 坐标。该接口主要用于计算机视觉研究和类似应用。请注意,使用原始值完全绕过 Linuxtrack 的配置文件系统、灵敏度曲线的应用和过滤。高级界面概述
typedef struct{
float pitch;
float yaw;
float roll;
float tx;
float ty;
float tz;
uint32_t counter;
uint32_t resolution_x;
uint32_t resolution_y;
float raw_pitch;
float raw_yaw;
float raw_roll; float raw_tx;
float raw_ty;
float raw_tz;
uint8_t status;
} linuxtrack_pose_t;
int linuxtrack_get_pose_full(linuxtrack_pose_t *pose, float blobs[], int num_blobs, int *blobs_read);
除了基本接口中可用的函数之外,还有 linuxtrack_get_pose_full 函数,它提供了当前姿势的所有低级信息。高级接口说明
int linuxtrack_get_pose_full(linuxtrack_pose_t *pose, float blobs[], int num_blobs, int *blobs_read);
请求当前姿势的所有低级信息。这些包括原始姿态值(未应用灵敏度曲线或过滤)、传感器分辨率和斑点坐标。
blobs 数组应包含 3 倍的 num_blobs 元素(每个 blob 具有 x、y 坐标和多个像素值)。blobs_read 的值表示实际读取了多少 blob。
目前 Linuxtrack 最多报告 10 个 blob;这个限制只能通过重新编译来增加(ltlib.h,MAX_BLOBS 宏的值)。但是请注意,Wiimote 只能报告 4 个 blob(硬件限制)!

1.3.例子

Linuxtrack 在外部程序中提供了 Linuxtrack 接口的两个“Hello World”示例。第一个名为 linuxtrack_hello_world.c 展示了如何使用 Linuxtrack 的界面,而 linuxtrack_hello_world_adv.c 提供了高级界面使用的示例。
这两个程序都应该相当简单;他们所做的只是跟踪初始化,他们跟踪了一下,暂停跟踪,恢复它,片刻之后他们关闭跟踪并关闭。
有几点值得注意。首先,Linuxtrack 的接口是异步的——事实上,一个函数返回只意味着请求被发送,而不是它被执行。例如,运行 linuxtrack_suspend 暂停跟踪,不会立即停止跟踪;它只是向跟踪器发送了暂停跟踪的命令,该命令将尽快执行。如果您想绝对确定命令已执行,请查询跟踪器状态。但是请注意,不建议阻止等待状态更改的应用程序,主要是因为它会阻碍用户体验(无响应的应用程序)。由于多个应用程序可能同时发出不同的命令,它也可能导致竞争条件问题。
这似乎是一个问题,但实际上并非如此。由于 linuxtrack_get_pose 和 linuxtrack_get_pose_full 仅在 now 姿势可用时返回大于零的值,所以无论何时调用它都不会收到无效姿势。这意味着,您的应用程序可以在请求初始化后立即安全地开始调用这些函数(通过调用 linuxtrack_init),前提是您仅在返回高于零值时处理姿势信息。
默认情况下,跟踪器启动时会自动重新居中。如果用户在那一刻移开视线,他将需要重新定位跟踪。为此,只需调用 linuxtrack_recenter。
示例中使用的 initialize_tracking 函数包含一个等待跟踪器初始化的循环。如上所述,通常没有必要这样做——它会不必要地延迟您的应用程序的启动。在示例中,它用于使事情变得简单,没有任何干净的方法可以在跟踪器不起作用的情况下关闭应用程序(Ctrl-C 除外,但这不是很好的方法)。建造
Linuxtrack 接口唯一需要的是您的应用程序与 libdl 链接。原因是,该接口动态加载 Linuxtrack 库(如果可用),为此它需要 libdl。这是用于构建示例代码的命令行:
gcc -o linuxtrack_hello_world -g -I. linuxtrack.c linuxtrack_hello_world.c -ldl
gcc -o linuxtrack_hello_world_adv -g -I. linuxtrack.c linuxtrack_hello_world_adv.c -ldl
“-ldl”用于链接libdl;如果您使用某些 IDE,只需将其添加到链接器标志中,您就可以开始使用了。“-我”。flag 指示编译器在当前目录中查找 linuxtrack.h(您可能需要它指向其他地方,例如,如果您将所有 .h 文件存储在一个位置)。还希望您的项目目录中有 linuxtrack.c 文件。

1.4.64位Ubunu 16.04系统安装最新版本的wine 4.0

第一步,64位的系统必须首先使能对32位架构的支持,执行下述语句即可.
sudo dpkg --add-architecture i386
第二步,下载并激活wine的仓库密钥文件:
wget -nc https://dl.winehq.org/wine-builds/winehq.key
sudo apt-key add winehq.key
请注意:2018.12.19之前,仓库密钥文件叫做Release.key,在那之后,wine官网将其替换成了上文中的winehq.key,参见官网的介绍。如果你此时还在使用旧的key,那么安装时会提示不可信任,一定要更换成上述的新key。
第三步,加入wine的仓库源,并更新系统源:
sudo apt-add-repository ‘deb https://dl.winehq.org/wine-builds/ubuntu/ xenial main’
sudo apt-get update
请注意:wine可以支持多个版本的linux系统,更换此处的仓库源即可,详见官网介绍。
第四步,安装wine稳定版(依赖文件较多,可能需要下载几十M甚至上百M的文件,请耐心等候):
sudo apt-get install --install-recommends winehq-stable
请注意:wine官方有Stable branch、Development branch和Staging branch三个版本可供下载,更换此处的对象即可,参见官网的介绍。
任何不清楚的地方,可参考wine官方指导网页【https://wiki.winehq.org/Ubuntu】
安装完成之后,输入“winecfg”或者“wine --config”启动wine程序的配置,此时一般会提示说没有检测到wine-mono和wine-gecko,要求下载安装,点击确认即可。当然,你也可以在此之前自行安装,输入下述命令即可:
sudo apt install wine-mono wine-gecko
安装完成之后,再次输入“winecfg”或者“wine --config”命令便可打开熟悉的wine配置窗口了。如下:

1.5 ubuntu18.04

# ubuntu18.04
## env
sudo apt install bison
sudo apt install libmxml-dev
sudo apt install gcc-multilib
sudo apt install qt4-default
sudo apt install libqtwebkit4
sudo apt install libqtwebkit-dev
sudo apt install wine64 wine32
sudo apt install libcanberra-gtk-module

sudo ln -sf xxxxpath/linuxtrack-0.99.19 /opt/linuxtrack

## build
cd /opt/linuxtrack
./configure --prefix=/usr/local
sudo make -j4
sudo make install
sudo cp src/99-TIR.rules /etc/udev/rules.d

##begin
ltr_gui

注意:目前linuxtrack只能适配TrackIR5序列号小于268500,已经实测265083是可以识别到的。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑马水牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值