ソースコードは、githubへ公開ずみ。
関連記事は→ こちら。
以上。
## built-in TCP input ## $ echo <json> | fluent-cat <tag> <source> type forward port 24224 </source> <match sensor.test> type mongo database sensor collection test host localhost port 27017 disable_collection_check true capped capped_size 2048m </match> <match gyro.test> type mongo database gyro collection test host localhost port 27017 disable_collection_check true capped capped_size 2048m </match>
coming soon
ロボット翔-電子部品ストアで、SLAM LIDARなどのロボット部品、ドローン、センサモジュールを販売しています。
1、PCを加速度センサにシリアルにて接続して、ControlObjectByGsensorUnity.cs をunity3d のcube objectにattachして、再生します。
ControlObjectByGsensorUnity.cs
using System; using System.IO.Ports; using System.Threading; using UnityEngine; public class ControlObjectByGsensorUnity: MonoBehaviour { private const string SERIAL_PORT = "COM5"; private const int SERIAL_BAUD_RATE = 9600; private const int SERIAL_TIMEOUT = 100; private Thread _readThread; private static SerialPort _serialPort; private static bool _continue; //private static Quaternion _handQuaternion = new Quaternion(); private static float x,y,z; void Start() { _readThread = new Thread(Read); _serialPort = new SerialPort(SERIAL_PORT, SERIAL_BAUD_RATE); _serialPort.ReadTimeout = SERIAL_TIMEOUT; _serialPort.Open(); _continue = true; _readThread.Start(); } void Update() { transform.rotation = Quaternion.AngleAxis(y, Vector3.forward) * Quaternion.AngleAxis(x, Vector3.right); } void OnApplicationQuit() { _continue = false; _readThread.Join(); _serialPort.Close(); } private static void Read() { string[] values; while (_continue) { if (_serialPort.IsOpen) { try { values = _serialPort.ReadLine().Split('\t'); if (values[0] != "\t") { x = float.Parse(values[0]); y = float.Parse(values[1]); } } catch (TimeoutException) { } } Thread.Sleep(1); } } }
2、加速度センサを傾けてみて、Cubeが動けば成功です。動かない場合は、Arduino本体のリセットボタンを押してみます。
3、3軸加速度センサは、重力加速度によるx、y軸の分量により傾斜を計算するもので、水平面に沿う回転は検知できません。水平面の回転を検知したい場合、他のセンサを組み合わせるかまたはAll in oneのセンサ例えば9軸センサを使う方法があると思います。のち9軸センサの使う実験に関するブログを公開します。
2015-6-24追記:
4、シリアルケーブル(USB)を外して、センサからPC/Unityへ wifi UDP或いはTCPにて接続して、cubeの回転動作が確認できています。
5、更に、センサからAndroid/Unity、iPad/UnityへUDP或いはTCPにて接続して、cubeの回転動作が確認できています。TCP接続と比べて、UDP接続は若干、遅延が少なくなるように見受けています(遅延時間の計測は相当難しいので、省いています)。
6、ビデオ(ジャイロセンサ~WiFi~UNity3D App)、ジャイロセンサを使っていますので、unityアプリCUBEの傾斜は多少ずれているように見えます。
【追記】Wifi UDP接続に関するソースコードは、Githubに公開済み。
9軸IMUセンサ 6軸/9軸フュージョン 低遅延 USB出力 補正済み ROS対応
センサー側マイコンボード | Arduino Leonardo |
ジャイロセンサーモジュール | 村田製作所製センサチップ |
加速度センサーモジュール | KXRシリーズ |
センサー側無線モジュール | digi Key社製XBEE |
センサー側XBEEシールド | Arduino XBEE wireless シールド |
センサー側プロトタイピングシールド | DF ROBOT社製Prototying Shield For Arduino |
データ転送装置側メインボード | Rasberry Pi B+ |
データ転送装置側無線モジュール | Planex社製ドングル |