In this post, we are going deeper into the Dynamic Data project, looking at the Sensor BNO055 dynamic data (library available here on GitHub and at NPM). Opening the library, you’ll see there are fifty-one types of data objects: RawSync, RawAsync
Learn more about dynamic data generators and the benefits of artificial data in software development.
About the data source
The BNO055 Sensor is a smart IMU (Inertial Measurement Unit) node developed by a German technology manufacturer Bosch Sensortec. The BNO055 Sensor uses a combination of different sensors to detect movements, and measure the intensity of movements in terms of acceleration and rotational speeds. This sensor makes use of an accelerometer, gyroscope and magnetometer to capture 9-degrees-of-freedom:
Here’s a useful video illustrating the utility of BNO055 Sensor (YouTube)
The data from the individual sensors (accelerometer, magnetometer, gyroscope) are captured, processed by the MCU (Microcontroller). This data can then be fused (sensor fusion) into either quaternion data or in Euler angles (roll, pitch, and yaw angle). If the data is not fused, then any combination of the raw sensor data can be exported (e.g., ACCONLY, MAGGYRO, etc.). To export and save the data, the sensor must live stream to an external device, like a mobile phone, so that the data is stored on that device. The space required for this data export is in the range 2MB - 18MB per hour. Once the data is successfully stored, the data can be analyzed to extrapolate additional information.
A sample data export file was provided to us containing several hundreds of records of quaternion (fused sensor) data and accelerometer data in CSV format. One such record was converted into a JSON object and stored as the RawSync mockup file. A copy of this file was converted into an array of two strings, the first being the attribute names of the JSON object and the second string being the data of those attributes. The attributes are separated by ‘\t’. This file is stored as the RawAsync. These mockup files make up the sensor-bno055-data package.
The sensor-bno055-mockup package imports the file above and goes through each attribute generating artificial (new) data using proprietary functions, such as those found in the utils package.
For example, with the RawSync object:
Use case ideas
Ideas to combine with some other data sources
Open-source data library
We welcome contributions and forks to this data set, and look forward to seeing what developers build in our Liberty. Equality. Data. Slack channel.
Considerations for next version/improvements
With Prifina developers can use the Dynamic Data Libraries natively in the App Studio to build direct to consumer apps where individuals can run them with their own user-held data.
Join our Slack community; Liberty. Equality. Data. to brainstorm and collaborate with other app developers, designers, and our team.