跳转到内容

SwisTrack/版本 3/第三方软件接口

来自维基教科书,自由的教科书

此页面指的是 SwisTrack 的版本 3。 除非你还在使用这个旧版本,否则你可能想阅读 SwisTrack 最新版本的文档

启动时,SwisTrack 监听端口 3000(即 localhost:3000),接受套接字连接。命令可以作为单个字符发送(区分大小写),如下所示。SwisTrack 将以适当的操作响应,或发送回包含响应的字符串。重要的是,确保从套接字中读取确切的字节数,否则消息将混合在一起。每个命令都给出了可以预期的确切字节数。

Java、C++ 和 Matlab 的框架应用程序可以在 swistrack-clients 目录中找到

可用命令

[编辑 | 编辑源代码]

服务器命令

[编辑 | 编辑源代码]
'p' 暂停跟踪
'R' 开始跟踪
's' 执行一步
'S' 恢复跟踪
'!' 停止跟踪器

服务器设置

[编辑 | 编辑源代码]
'c' 关闭校准(默认)。每个发送的点,无论是轨迹数据还是 Blob,都将以图像坐标发送。
'C' 打开校准。每个发送的点,无论是轨迹数据还是 Blob,都将以世界坐标发送。

检索轨迹数据

[编辑 | 编辑源代码]
't' 以异步方式检索数据点。你将始终获得最新的轨迹数据。如果你的应用程序查询数据的速度快于 SwisTrack 生成的速度,你将多次获得相同的数据。如果 SwisTrack 运行得更快,你最终将丢失信息。轨迹数据被编码为带有固定精度和前导零的浮点数元组,格式为 "+####.#### +####.####"(21 个字符)。元组用空格分隔。
'T' 同步检索数据点。每次请求数据时,SwisTrack 都将处理一帧。如果你的应用程序查询帧的速度快于所用媒体(相机/视频)支持的帧率,SwisTrack 将延迟发送数据包。如果你的应用程序运行过慢,SwisTrack 将跳过由相机提供的帧,但不会跳过视频源提供的帧。数据编码方式与 't' 相同。
'N' 请求正在跟踪的轨道数量。数据以格式 ###(3 个字符)返回,必要时添加前导零。

检索 Blob 数据

[编辑 | 编辑源代码]
'b' 与 't' 相同。SwisTrack 将发送 Blob,这些 Blob 前面是 Blob 的数量。Blob 的数量被编码为格式为 '####' 的整数,紧跟着 Blob 字符串(以 't' 中的格式编码)。
'B' 与 'b' 相同,但 SwisTrack 将执行一步,并在完成后进入暂停模式(如 'T')。
'n' 请求检测到的 Blob 数量。数据以格式 ###(3 个字符)返回,必要时添加前导零。

检索任务进度

[编辑 | 编辑源代码]
'i' 以格式 ##########(10 个字符)发送回当前帧号
'I' 以格式 ##.##(5 个字符)发送回跟踪进度,以百分比表示
'f' 以格式 ##.##(5 个字符)发送回当前帧率,以赫兹表示

数据格式

[编辑 | 编辑源代码]

每个点(无论是校准的还是未校准的,轨迹的还是 Blob 的)都以格式 "+####.#### +####.####" 发送为固定精度的浮点数,因此长度为 21 个字符(包括分隔空格)。点被连接成字符串。没有终止符。

华夏公益教科书