在linux下配置NDI电磁导航的API记录:

NDI API及相关依赖地址:https://github.com/zouyuelin/ndicapi

目录

  • 一、配置API
    • 1.配置USB串口
    • 2.编译gst-plugins-base:
    • 3.这里有两个API版本,先编译ndicapi:
    • 4.编译NDI-master
  • 二、测试代码
  • 三、最后

一、配置API

1.配置USB串口

将70-ttyusb.rules放到/etc/udev/rules.d/目录下,重新插入串口
并执行:

sudo usermod -aG dialout <YOUR non-root USER>

后面是你的用户名;

2.编译gst-plugins-base:

首先安装gstreamer

sudo apt-get install libgstreamer1.0-dev

编译

./configure
make
sudo make install

3.这里有两个API版本,先编译ndicapi:

mkdir build
cmake ..
make
sudo make install

测试运行:

./bin/ndiBasicExample

出现OKAY 表示安装成功;

然后可以通过find_package 找到 ndicapi,两个变量 ndicapi_INCLUDE_DIRS以及${ndicapi_LIBRARIES}

4.编译NDI-master

直接make
运行:

./build/linux/capisample /dev/ttyUSB0

二、测试代码

CMakeLists.txt

cmake_minimum_required(VERSION 3.5)project(NDITracking LANGUAGES CXX)set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)set(ROOT_FILE <NDI-master PATH>) # 修改NDI-master的路径INCLUDE_DIRECTORIES(${ROOT_FILE}/library/include )
set(NDI_LIB ${ROOT_FILE}/build/linux/libndicapi.so)find_package(ndicapi REQUIRED)
INCLUDE_DIRECTORIES(${ndicapi_INCLUDE_DIRS})add_executable(NDITracking mytracking.cpp )
target_link_libraries(NDITracking ${NDI_LIB} ${ndicapi_LIBRARIES})

mytracking.cpp

#include <fstream>
#include <iomanip>
#include <iostream>
#include <sstream>
#include <string>#include "CombinedApi.h"
#include "PortHandleInfo.h"
#include "ToolData.h"
#include <ndicapi.h>
#include <cstring>using namespace std;void checkTheUSBPortName(string &name);void getThePostion(const ToolData& toolData);int main(int argc,char**argv)
{static CombinedApi capi = CombinedApi();string name_ = argv[1];checkTheUSBPortName(name_);cout<<"The usb port name is:"<<name_<<endl;///connectif(capi.connect(name_)!=0);cout<<"Please check the port name\n";sleep(1);///initializecapi.initialize();std::cout << capi.getTrackingDataTX() << std::endl;int portHandle = capi.portHandleRequest();std::vector<PortHandleInfo> portHandles = capi.portHandleSearchRequest(PortHandleSearchRequestOption::NotInit);for (int i = 0; i < portHandles.size(); i++){capi.portHandleInitialize(portHandles[i].getPortHandle());capi.portHandleEnable(portHandles[i].getPortHandle());}portHandles = capi.portHandleSearchRequest(PortHandleSearchRequestOption::Enabled);///start trackingcapi.startTracking();while(true){///get the tool datastd::vector<ToolData> toolData =  capi.getTrackingDataBX();for(auto &tl:toolData){getThePostion(tl);}}///stop trackingcapi.stopTracking();}void checkTheUSBPortName(string &name)
{//Initialize used by old api--------This is a bugndicapi* device(nullptr);device = ndiOpenSerial(name.c_str());if(device == nullptr){const int MAX_SERIAL_PORTS = 20;for (int i = 0; i < MAX_SERIAL_PORTS; ++i){name = ndiSerialDeviceName(i);int result = ndiSerialProbe(name.c_str(),false);if (result == NDI_OKAY){break;}}device = ndiOpenSerial(name.c_str());}}void getThePostion(const ToolData& toolData)
{std::stringstream stream;stream << std::setprecision(toolData.PRECISION) << std::setfill('0');if (toolData.transform.isMissing()){stream << "Missing,,,,,,,,";}else{stream << TransformStatus::toString(toolData.transform.getErrorCode()) << ","<< toolData.transform.q0 << "," << toolData.transform.qx << "," << toolData.transform.qy << "," << toolData.transform.qz << ","<< toolData.transform.tx << "," << toolData.transform.ty << "," << toolData.transform.tz << "," << toolData.transform.error;}cout<<stream.str()<<endl;
}

运行:(后面接的是USB端口名)

./NDITracking /dev/ttyUSB0

运行结果:

三、最后

这里用了两种API,一种新的C++和较旧的C编写的API函数,单用C++的有可能会导致连接不上,可能是一个BUG,但是利用较旧的C语言的API函数开发难度大,不利用开发,所以两者结合。

VTK(三)---在Linux系统上配置NDI Aurora磁导航API(用于手术导航系统的开发)相关推荐

  1. 在Linux系统上配置Samba客户端,访问Samba远程目录

    1. 前言 本文主要讲解如何在Linux系统上配置Samba客户端,访问Samba远程目录. 2. 安装smbclient Linux用户可以从命令行访问samba共享,使用文件管理器或挂载samba ...

  2. 如何在linux系统上配置必要的服务器环境

    1检查这台linux主机是否有yum,如果没有,就要去安装yum具体到相应网站去下载.我们这里使用vsftp,ftp这两个软件来负责上传,下载相关文件.使用apache的服务器版本httpd来发布自己 ...

  3. linux dx命令,在Linux系统上配置Wine中的DXVK

    DXVK(也称为Vulkan的DirectX)是Steam的Steam Play功能中包含的工具之一,可以将Microsoft DirectX 11和DirectX 10图形调用转换为Vulkan,这 ...

  4. 在香蕉派的树莓派系统上配置 Syncthing 自启动(暨 Linux 软件自启服务配置)

    在香蕉派的树莓派系统上配置 Syncthing 自启动 独立观察员 2020 年 1 月 19 日(2020年8月30日 更新) 首先做个名词解释," 香蕉派" 是国内一款山寨树莓 ...

  5. linux终端下载notepad,在Linux系统上安装NotePad++的三种方法介绍

    本文介绍在Linux操作系统上安装NotePad++的三种方法,使用Snap.Wine和NotePadQQ.这里要说的是:由于像Wine和Snap软件包这样的工具,在Linux上运行的Notepad+ ...

  6. Xilinx公司的Vivado 2022.2版本在Windows和Linux系统上的下载配置教程

    文章目录 前言 一.Vivado在Windows系统上的安装 二.Vivado在Linux系统上的安装 总结 前言 Vivado是Xilinx公司所开发的一种可编程逻辑器件(FPGA)的设计工具,能够 ...

  7. linux系统安装hba驱动,Linux系统上iSCSI HBA的安装和配置

    Linux系统上iSCSI HBA的安装和配置 关键字: Linux;iSCSI;HBA; 内容摘要: 如何在Linux系统上安装和配置iSCSI HBA. 正文 存储(target)端可以用硬件和软 ...

  8. 平板 刷 linux系统,在Linux系统上安装NotePad++的三种方法介绍

    本文介绍在Linux操作系统上安装NotePad++的三种方法,使用Snap.Wine和NotePadQQ.这里要说的是:由于像Wine和Snap软件包这样的工具,在Linux上运行的Notepad+ ...

  9. Linux系统上Crontab定时执行教程

    Linux系统上Crontab定时执行教程 常用格式示例 每五分钟执行  */5 * * * * 每小时执行     0 * * * * 每天执行        0 0 * * * 每周执行      ...

  10. 如何高效快速地在Linux系统上部署Node.js+Express+MySQL的开发环境(桌面可视化)...

    一.前言 可能一些初级前端和我一样,在有些项目需要前后台都一个人打通搞定的时候,对于后台和开发环境的部署还是比较头疼的.特别是Linux系统,由于没有系统接触过,也不太喜欢去记背那么多命令,大部分命令 ...

最新文章

  1. Timer定时器开发
  2. MATLAB【九】————ICP算法实现
  3. 设计模式之笔记--装饰模式(Decorator)
  4. 去掉hyperlink下划线
  5. 数据库事务转载基础二:oracle事务隔离级别
  6. 3.过滤数据 ---SQL
  7. linux安装elasticsearch5.5
  8. POJ1029 UVA158 Calendar题解
  9. 昆仑通态复制的程序可以用吗_昆仑通态专题(九):MCGS组态软件的实时数据库...
  10. python统计套利_【独家发布】期货市场内外盘低频统计套利基于Python
  11. 毁掉一个孩子只要十步(80%的家长都在做)
  12. L型与R型思维的特征
  13. MacOS 安装 gstreamer 最新版本(1.20.0)
  14. 癸卯年新春贺文 --孤羽江绎
  15. 【文献翻译】思科路由器安全配置合规性的SCAP基准-SCAP Benchmark for Cisco Router Security Configuration Compliance
  16. win10下,更改程序磁贴图标
  17. python控制相机自动拍照_如何让VPython中的对象自动移动到相机中?
  18. 不可多得的干货!互联网公司常用分库分表方案汇总!太完整了!
  19. 安卓设置热点ssid和密码
  20. 重迭式三段式状态机序列检测器-检测10110110

热门文章

  1. Unity自定义Editor简明教程
  2. java 方法描述符_整理Java编程中常用的基本描述符与运算符
  3. java 新建pdf_java-如何关闭PDF文件以重新创建它? (正在...
  4. ISIS出现(Project2.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.)异常
  5. you need python_Life is short, you need Python!
  6. linux mysql优化_Linux上跑MySQL优化技巧
  7. 【转】响应式布局和自适应布局详解
  8. vue-cli 安装
  9. 一个软件工程师在北京的反省
  10. 企业应用网站性能优化实例分析