IoTSecJPruffnex.net/iotsecjp/pdf/jtag.pdfそれでは、ハードウェアをハッキングするためにJTAG を使用するために知る必要がある基本的な情報について
PythonからV-Sido CONNECTで ロボットを操る ~...
-
Upload
daisuke-imai -
Category
Engineering
-
view
1.087 -
download
9
Transcript of PythonからV-Sido CONNECTで ロボットを操る ~...
![Page 1: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/1.jpg)
2015/08/10 業務のためのPython勉強会#3
![Page 2: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/2.jpg)
こんばんは!
![Page 3: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/3.jpg)
突然参加させていただきました、 「今井」です
![Page 4: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/4.jpg)
っていうか、お前だれよ?
![Page 5: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/5.jpg)
今井 大介 IMAI, Daisuke 1972/07/17生まれ43歳
アスラテック株式会社 事業開発室 ロボットエバンジェリスト
「ロボットと、ロボットアプリケーションを作れるエンジニアを増やして、世界中がロボットだらけになればきっと世界はもっと面白くなる。」
![Page 6: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/6.jpg)
1997~ 【新卒】株式会社ベネッセコーポレーション インターネット向けサービスの実証実験
2000~ 【起業】ギガフロップス株式会社 携帯向けのポータルサイトの立ち上げ、副社長兼CTO
2003~ 【バイアウト】株式会社サイバード 事業並びに会社の売却→技術部マネージャ
2005~ 【Uターン】石見ケーブルビジョン株式会社 CATV事業の立ち上げでインターネット側の担当
2010~ 【再度上京】BEENOS株式会社 新規事業立ち上げ&技術担当執行役員、グループCTO
2015~ 【現職】アスラテック株式会社 色々な企業さんとのコラボを模索したり、エンジニアの方向けのサンプルコード書いたり
![Page 7: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/7.jpg)
簡単に言うと、 Web系からロボット系に ジョブチェンジした エンジニア的な人
![Page 8: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/8.jpg)
【得意な領域(Web)】 インフラ>サーバーサイド>
Webフロントエンド>NativeApp
【好きな技術】 AWS、WebSocket マイコンボード各種
![Page 9: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/9.jpg)
【言語歴】 BASIC(PC-6001から) アセンブラ(Z80) C/C++/Java
LINGO(Adobe Director) PHP/Ruby/Python
JavaScript Processing/ArduinoIDE
etc…
![Page 10: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/10.jpg)
Pythonにめっちゃ詳しいって わけではないです
(意訳:色々大目に見てください)
![Page 11: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/11.jpg)
V-SidoのPython向けのライブラリの パッケージを作りたいと思っていたので
作り始めるいい機会!
![Page 12: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/12.jpg)
アスラテック株式会社
![Page 13: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/13.jpg)
ロボットの制御OS 「V-Sido OS」
(「ブシドー」と読みます)
![Page 14: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/14.jpg)
!
![Page 15: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/15.jpg)
�
. ,
![Page 16: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/16.jpg)
!
![Page 17: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/17.jpg)
���
�� ��� ����
!
![Page 18: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/18.jpg)
������ ������
���
���������
����
��� �� ��
����
�������� �����
���
![Page 19: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/19.jpg)
OS
��
��
![Page 20: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/20.jpg)
85E W BPN TRCV
85 PN
S B B
28 5 -‐‑‒
34
O MI
![Page 21: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/21.jpg)
���������� �
KJ R V
O-‐‑‒
W KJ S P
![Page 22: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/22.jpg)
��������
0 -‐‑‒
![Page 23: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/23.jpg)
![Page 24: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/24.jpg)
PythonからV-Sido CONNECTで ロボットを操る
~ ハードウェアの絡んだ仕組みの制御を考える ~
アスラテック株式会社 事業開発室 ロボットエバンジェリスト 今井大介
![Page 25: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/25.jpg)
【注釈】 超駆け足で行きますが、
slideshareでスライド共有、 githubでコード共有します。
あとPython3です(確認環境3.4.3)
![Page 26: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/26.jpg)
ハードウェアの絡む仕組みを 作ったことのある人~?
![Page 27: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/27.jpg)
ロボットとPython
![Page 28: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/28.jpg)
C/C++についで ロボット関連ではPythonが よく使われているようです (当社は違いますが)
![Page 29: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/29.jpg)
numpy/scipy OpenCV
![Page 30: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/30.jpg)
Choregraphと Python SDK
![Page 31: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/31.jpg)
本日使うライブラリ PySerial
![Page 32: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/32.jpg)
使ったことのある人~?
![Page 33: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/33.jpg)
シリアル通信
![Page 34: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/34.jpg)
デバイス同士が やりとりする仕組み
![Page 35: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/35.jpg)
RS-232C/RS-485 I2C/SPI USB
etc…色々ありますが
![Page 36: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/36.jpg)
パソコンのシリアルポート UART/USART
![Page 37: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/37.jpg)
85E W BPN TRCV
85 PN
S B B
28 5 -‐‑‒
34
O MI
![Page 38: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/38.jpg)
![Page 39: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/39.jpg)
Bluetoosh SPPで 無線化されたシリアル通信
![Page 40: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/40.jpg)
シリアル通信の基本は 「送信」「受信」
![Page 41: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/41.jpg)
送信
![Page 42: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/42.jpg)
(デモ)
![Page 43: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/43.jpg)
受信
![Page 44: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/44.jpg)
(デモ)
![Page 45: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/45.jpg)
受信するまで待ってしまう (その間は何もできない)
![Page 46: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/46.jpg)
解法1:timeoutを設定する
![Page 47: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/47.jpg)
(デモ)
![Page 48: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/48.jpg)
解法2:受信を別Threadにする
![Page 49: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/49.jpg)
本日使うライブラリ threading
![Page 50: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/50.jpg)
def start_reciever(self): """ 受信スレッドを立ち上げる """ self.receiver_alive = True self.receiver_thread = threading.Thread(target=self._reciever) self.receiver_thread.setDaemon(True) self.receiver_thread.start()
def stop_reciever(self): """ 受信スレッドの停止 """ self.receiver_alive = False self.receiver_thread.join()
def _reciever(self): """ 受信データの処理 """ try: while self.receiver_alive: data = self.serial.read(1) if len(data) > 0: print(data) except serial.SerialException: self.alive = False raise
![Page 51: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/51.jpg)
どのような通信をすべきか (内容)
![Page 52: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/52.jpg)
![Page 53: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/53.jpg)
![Page 54: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/54.jpg)
![Page 55: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/55.jpg)
![Page 56: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/56.jpg)
まずは、コマンドを送信する 共通で使う関数を作る
![Page 57: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/57.jpg)
def send_data(self, command_data): ''' コマンド送信 ''' data_bytes = b'' data_str = [] for data in command_data: data_bytes += data.to_bytes(1, byteorder='little') data_str.append('%02x' % data) self.serial.write(data_bytes) print('> ' + ' '.join(data_str))
def _adjust_ln_sum(self, command_data): ''' コマンドデータのLN(レングス)とSUM(チェックサム)の調整 ''' ln_pos = 1 if command_data[0] == 0x0c or command_data[0] == 0x0d or command_data[0] == 0x53 or command_data[0] == 0x54 else 2 if len(command_data) > 3: command_data[ln_pos] = len(command_data); sum = 0; for data in command_data: sum ^= data command_data[len(command_data) - 1] = sum return command_data
![Page 58: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/58.jpg)
個別のコマンドの 生成関数を作る
![Page 59: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/59.jpg)
# V-Sidoで利用するコマンドやオペランドのクラス変数定義 COMMAND_ST = 0xff; COMMAND_OP_WALK = 0x74; # 't'
def make_walk_command(self, forward, turn_cw): ''' 歩行コマンドのデータ生成 ''' data = [] data.append(VSidoConnect.COMMAND_ST) # ST data.append(VSidoConnect.COMMAND_OP_WALK) # OP data.append(0x00) # LN仮置き data.append(0x00) # WAD(Utilityでは0で固定) data.append(0x02) # WLN(現在2で固定) # 速度ならびに旋回は-100~100を0~200に変換する data.append(forward + 100) data.append(turn_cw + 100) data.append(0x00) # SUM仮置き return self._adjust_ln_sum(data);
![Page 60: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/60.jpg)
V-Sidoのコマンドの数だけ この関数を作っていけばいい
![Page 61: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/61.jpg)
(デモ)
![Page 62: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/62.jpg)
やった!動いた!
![Page 63: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/63.jpg)
はて、本日の勉強会は なんの勉強会でしたっけ?
![Page 64: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/64.jpg)
業務のための Python 勉強会
![Page 65: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/65.jpg)
【質問】 ロボットは業務の役に 立つのでしょうか
![Page 66: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/66.jpg)
立つかもしれないし、 立たないかもしれない
![Page 67: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/67.jpg)
��������
0 -‐‑‒
![Page 68: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/68.jpg)
それだけだとアレなので
![Page 69: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/69.jpg)
IoTに応用することを 考えてみましょうか
![Page 70: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/70.jpg)
「ロボットとV-Sido CONNECT」を IoTデバイスだと置き換えて
考えてみる
![Page 71: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/71.jpg)
ちなみに、IoTが分かる人~?
![Page 72: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/72.jpg)
例えばArduino
![Page 73: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/73.jpg)
例えばRaspberryPi
![Page 74: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/74.jpg)
例えばIntel Edison
![Page 75: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/75.jpg)
センサーをつければ、 立派なIoTデバイスに
![Page 76: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/76.jpg)
【業務効率化アイデア】 部長に印鑑を欲しいが、 部長は外出が多くて、 席にいるタイミングを 見計らうのが大変。 何とかならない?
![Page 77: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/77.jpg)
部長の椅子のクッションの下に 圧力センサーをいれれば 座ってるのがわかるぞ!
![Page 78: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/78.jpg)
どうやって知らせる?
![Page 79: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/79.jpg)
やっぱWeb(イントラ)でしょ!
![Page 80: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/80.jpg)
ハードウェアとWebを繋ぐ
![Page 81: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/81.jpg)
ということで、ロボットを Webから操ってみます。
![Page 82: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/82.jpg)
85E W BPN TRCV
85 PN
S B B
28 5 -‐‑‒
34
O MI
ウェブブラウザ
WebSocket
![Page 83: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/83.jpg)
本日使うライブラリ Tornado
![Page 84: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/84.jpg)
せっかく歩けるようになったので 歩く機能をウェブに実装
![Page 85: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/85.jpg)
Web画面作った
![Page 86: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/86.jpg)
<script language="javascript"> var ws = new WebSocket("ws://localhost:8080/ws"); var sent_deleter = null; var receiverd_deleter = null; ws.onopen = function() { }; function OnWalkButtonClick() { ws.send("walk_forward"); } </script>
ボタンを押したら、 “walk_forward”
というメッセージを投げる
![Page 87: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/87.jpg)
サーバー側の実装
![Page 88: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/88.jpg)
class SocketHandler(tornado.websocket.WebSocketHandler): #on_message -> receive data #write_message -> send data
def open(self): self.i = 0 self.callback = tornado.ioloop.PeriodicCallback(self._send_message, 50) self.callback.start() print("WebSocket opened")
# origin check disabled def check_origin(self, origin): return True
def on_message(self, message): print("got message:",message) if message == "walk_forward": if vsidoconnect: vsidoconnect.send_data(vsidoconnect.make_walk_command(100, 0))
def on_close(self): self.callback.stop() print("WebSocket closed")
![Page 89: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/89.jpg)
受け取るだけだと、 IoT的にイマイチなので、 ハード側から送る機能も
![Page 90: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/90.jpg)
Web画面作った
![Page 91: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/91.jpg)
ロボットとどんなコマンドの やりとりをしたのかがわかる
![Page 92: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/92.jpg)
class SocketHandler(tornado.websocket.WebSocketHandler): #on_message -> receive data #write_message -> send data
def open(self): self.i = 0 self.callback = tornado.ioloop.PeriodicCallback(self._send_message, 50) self.callback.start() print("WebSocket opened")
def _send_message(self): if len(vsidoconnect.message_buffer) > 0: self.write_message(vsidoconnect.message_buffer.pop(0))
def on_close(self): self.callback.stop() print("WebSocket closed")
![Page 93: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/93.jpg)
(デモ)
![Page 94: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/94.jpg)
やった!動いた!
![Page 95: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/95.jpg)
これでセンサー情報とか ブラウザに簡単に 送ることができますね
![Page 96: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/96.jpg)
ハードウェアとWebは Pythonで
結構簡単につなげることができる
![Page 97: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/97.jpg)
UI作るのは PythonのGUIライブラリでも
いいけど JavaScriptの方が僕は楽 (分業もしやすいしね)
![Page 98: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/98.jpg)
業務効率化に ハードウェアを!
![Page 99: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/99.jpg)
ネットと連携するデバイス
![Page 100: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/100.jpg)
ウェアラブルデバイス
![Page 101: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/101.jpg)
新しい入力装置
![Page 102: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/102.jpg)
「モノ」ができると 楽しい。
(続けるモチベーション)
![Page 103: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/103.jpg)
色んなものが作れる。 もっともっとhackしよう。
![Page 104: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/104.jpg)
業務効率化に ロボットを!
![Page 105: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/105.jpg)
![Page 106: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/106.jpg)
なお…
![Page 107: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/107.jpg)
V-Sido公式で、 WebSocketで接続する JavaScript向けのAPIを
公開している模様
![Page 108: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/108.jpg)
何たる「車輪の再発明」!
![Page 109: PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~](https://reader033.fdocument.pub/reader033/viewer/2022052302/5883da181a28ab62358b4df9/html5/thumbnails/109.jpg)
ご清聴 ありがとうございました。
email: [email protected] twitter: @hine
Facebook: hine.gdw
本日のコード https://github.com/hine/PythonVSido