3DCG Control Using TouchDesigner & 10 DOF Mems IMU Sensor

0 35987 Medium

I controlled 3DCG object using TouchDesigner. The object moves according to the value of the sensor connected Arduino.

 

3DCG Control Using TouchDesigner & 10 DOF Mems IMU Sensor

Things used in this project

 

Hardware components

HARDWARE LIST
Arduino UNO
DFRobot 10 DOF Mems IMU Sensor

Software apps and online services

 

Arduino IDE

 

TouchDesgner

Story

 

I controlled 3DCG object using TouchDesigner. The object moves according to the value of the sensor connected Arduino.

 

 

 

10 DOF Mems IMU Sensor

 

https://www.dfrobot.com/product-818.html

This sensor has:

ADXL 345: 3-axis acceleration sensorITG 3200: 3-axis gyroHMC 5883 L: 3-axis geomagnetic sensorBMP 085: Barometric pressure sensor

The interface of the module is I2C.

 

 

 

Configuration

 

 

 

 

Arduino IDE Program

 

It is based on the library and sample code which can be downloaded below. https://www.dfrobot.com/wiki/index.php/10_DOF_Sensor_(SKU:SEN0140)

Serial output of sensor attitude angle "yaw, pitch, roll". Use the attached code.

 

 

 

Connection diagram

 

The following is the total connection diagram.

 

 

 

 

1. Serial data from Arduino acquisition

 

Select and place the Serial operator from the DAT (Data) tab and obtain serial data from Arduino.

 

 

Port: Select the Arduino port connected to the PC

 

 

 

2. Split serial data

 

Select and place the Convert operator from the DAT tab and wire it with the Serial operator. Since three data of yaw pitch roll has been sent in one row, Tab divides the data into three columns.

 

 

Data division with Tab (\ t)

 

 

 

3. Selection of serial data.

 

Select and place the Select operator from the DAT tab and connect with the Convert operator so that only the latest serial data is acquired. Place three and get the latest data of yaw pitch roll respectively.

 

 

Select Rows: By IndexStart Row Index, End Row Index: 1Select Cols: by IndexStart Col Index, End Col Index: Select 0, 1, 2 respectively to get yaw pitch roll

 

 

 

4. Convert latest serial data to CHOP data

 

Select and place the DAT to operator from the CHOP tab and convert the serial data of the DAT value to the value for CHOP. Place three for yaw pitch roll.

 

 

Drag each Select operator to DATFirst Column is: Values

 

 

 

5. Place 3DCG and enter yaw pitch roll data

 

Select and place the Geometry, Camera, Light Operator from the COMP tab and the Render operator from the TOP tab. When placed, they are wired automatically and CG is displayed by clicking the blue circle on the lower right of the Render operator. Connect Geometry operator and yaw pitch roll data and move CG.

 

 

 

 

Geometry Operator Properties

 

Rotate: Drag the DAT to operator to roll to x, yaw to yaw, and z to pitch respectively (Before dragging, it is necessary to click "+" in the lower right of DAT to operator and put it in View mode) Scale: Set x, y, z to 0.5

Code

 

Untitled file

Arduino

CODE
#include <Wire.h>
#include <FreeSixIMU.h>
#include <FIMU_ADXL345.h>
#include <FIMU_ITG3200.h>
#include <HMC5883L.h>
#include <BMP085.h>
 
float angles[3]; // yaw pitch roll
float heading;
BMP085 dps = BMP085();
long Temperature = 0, Pressure = 0, Altitude = 0;
 
// Set the FreeSixIMU object
FreeSixIMU sixDOF = FreeSixIMU();
 
HMC5883L compass;
// Record any errors that may occur in the compass.
int error = 0;
 
void setup(){
    Serial.begin(9600);
    Wire.begin();
    delay(1000);
    dps.init();
    dps.dumpCalData();
    delay(5000);
 
    delay(5);
    sixDOF.init(); //init the Acc and Gyro
    delay(5);
    compass = HMC5883L(); // init HMC5883
 
    error = compass.SetScale(1.3); // Set the scale of the compass.
    error = compass.SetMeasurementMode(Measurement_Continuous); // Set the measurement mode to Continuous  
    if(error != 0) // If there is an error, print it out.
        Serial.println(compass.GetErrorText(error));
}
 
void loop(){
    sixDOF.getEuler(angles);
    Serial.print(angles[0]); //yaw
    Serial.print('\t'); 
    Serial.print(angles[1]); //pitch
    Serial.print('\t');
    Serial.println(angles[2]); //roll
    delay(10);
}

The article was first published in hackster, December 21,  2017

cr: https://www.hackster.io/H0meMadeGarbage/3dcg-control-using-touchdesigner-10-dof-mems-imu-sensor-2e6fd8

author: HomeMadeGarbage

License
All Rights
Reserved
licensBg
0