Chordata是一个你可以自己构建的动作捕捉系统,它是基于惯性传感器的开放式硬件-软件框架,任何人都可以使用它构建人体运动捕捉系统。它的目标是通过开放硬件方法将动作捕捉世界带入DIY技术领域。
该项目一览:
您可以通过下面的信息图了解Chordata的所有内容:
为何选择Chordata?
Chordata的起源是一个基本需求,技术主管布鲁诺想要一种方法来为表演片段注入舞蹈动作,但是没有一种可用的工具符合他的需求(也不符合他的预算)。现在这个系统是公开的(作为BETA版本),并且可以在上述网站上找到大量文档。
下方为这个项目的原始描述,主要是为了记录这个项目,因为它是在系统的主要部分正在开发时编写的。
项目的原始描述:
该项目包括三个部分:
硬件(K-Ceptor):
动作捕捉是指尽可能准确地实时检查每个肢体或部位的方向。一个简单的MEMS IMU设备和免费提供的传感器融合算法足以获得不错的结果。当想要获取多个设备的数据时,问题就来了。大多数这些设备都带有i2c接口,但它们的地址在硬件中是固定的。因此,Chordata的构建模块之一是能够与同一总线上的几个“兄弟姐妹”共存的传感单元:“K-Ceptor”它由LSM9DS1 IMU和LTC4316 i2c地址转换器组成。
在开发和原型设计的同时,内部被手工焊接了许多这样的电路板,因此每块电路板上尽可能少的SMD元件使这一过程变得更加容易。
软件(Notochord):
实时获取大量传感器的数据,对其进行处理,并以易于阅读的格式将其发送给某个客户端并不是一项简单的工作,因此需要从头开发一个软件来处理它。而这个软件负责:
- 构建传感器物理层次的数字模型。初始化集线器上的i2c通信,并在每个传感器上运行配置例程;
- 以指定的刷新率对每个传感器执行读数;
- 使用先前校准过程获得的偏差校正每个传感器读数;
- 在校正的传感器读数上执行传感器融合,以四元数的形式获得绝对方向信息;
- 使用开放协议(例如OSC)将方向数据与sensor_id和时间戳一起发送到客户端。
经过多次测试发现使用运行linux的单板计算机是托管这样一个程序的最佳选择,所以这部分软件的所有开发都是在C++上完成的,使用Raspberry Pi 3作为集线器。与更简单的微控制器相比,这种类型的集线器的一些优点是:
- 它不是一个昂贵的组件。
- 编程和调试极大地简化了。
- 其中的一些设备,比如Raspberry Pi 3,都是现成的,配备了执行舒适捕获所需的所有通信外围设备,以WIFI适配器为例。
在集线器内执行传感器融合的选择基于:
- 能够在芯片上进行传感器融合的IMU单元的主要成本
- 原始数据通过之前完成的校准进行校正后进行的传感器融合的主要精度。
- 由于i2c总线中的带宽会在传感器的数据采集中产生瓶颈,因此集线器内部的融合传感器处理不会增加显着的开销。
软件(客户):
由于传输数据的协议是明确的,因此客户端可以是能够显示3D骨架的任何东西。
大多数时候,使用的是运行在Blender中的python脚本,它从OSC获取四元数数据,并旋转3D骨架的骨骼。
这个想法是以Blender插件的形式发布一个基本客户端,主要包括以下几个部分:
- 与集线器建立一些握手通信,检查兼容性和状态;
- 将状态传达给用户(计算机前面的人);
- 充当GUI来运行现场校准程序并开始捕获;
- 实时显示捕获的预览,并允许用户注册其中的一部分;
- 允许具有Blender基本经验的用户在人体的虚拟模型上创建传感器的自定义分布,将其导出为结构化数据格式(如xml)并将其发送到集线器。
注:为了简单起见,这里指的是IMU设备,但为了正确应该说是IMU(陀螺仪和加速器)