2019年8月7日水曜日

9軸センサー(加速度,ジャイロ,地磁気)のデータを使う (2)

前の投稿と並行して,クライアントの構築が一番簡単な,iPhoneとZIG SIMアプリを使った9軸データのやり取りをやってみました.

iPhoneのZIG SIMアプリで9軸データを送り,macのPythonプログラムで受信してみます.mac側のプログラムは以下のとおり.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python 3.7.3 on macOS 10.15 Catalina Beta
# 2019/8/7
# receive OSC data by UDP

import argparse
from socket import *
from pythonosc import dispatcher
from pythonosc import osc_server

def handle_zigsim_osc_message(addr, *args):
    try:
        print("{0}: {1}".format(addr, args))
    except ValueError:
        print("ValueError occrurred")

def start_OSC_server(ip_addr, port_num):
    print("starting on address {}, port {}".format(ip_addr, port_num))

    # OSC dispatcher
    dispatch = dispatcher.Dispatcher()
    dispatch.map("/ZIGSIM/*", handle_zigsim_osc_message )

    server = osc_server.ThreadingOSCUDPServer(
        (ip_addr, port_num), dispatch)
    print("Serving on {}".format(server.server_address))
    server.serve_forever()

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--ip", default="127.0.0.1",
                        help="IP address to listen on")
    parser.add_argument("--port", type=int, default=30000,
                        help="port to listen on")
    args = parser.parse_args()
    start_OSC_server(args.ip, args.port)

クライアントのZIG SIMアプリの設定(送信データ)は以下のとおり.


ZIG SIMアプリの設定(プロトコル)は以下のとおり.IP ADDRESSにはパソコンのIPアドレスを入れます.ポート番号は30000にしました.


macでサーバープログラムを動かし,iPhoneでクライアントを動かすと,iPhoneから9軸データがサーバーに送られます.このときのクライアントの画面は以下のとおり.


サーバー側では,以下のようにデータが表示されて,ちゃんとデータがOSC形式で受信できていることが分かります.


現在のiPhone上でうごかしてZIG SIMを,「9軸センサー(加速度,ジャイロ,地磁気)のデータを使う (1)」で作成中のArduinoを使ったハードウェアで置き換えるのが目標です.

0 件のコメント:

コメントを投稿