rosjp_Meridian_20220220

2.3K Views

February 20, 22

スライド概要

2022.02.20のROS Japan UG #45 LT大会 5分枠で発表した内容です。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

ユーザー発信のヒューマノイド⽤汎⽤プロトコル meridian メリディアン計画 ROS Japan UG #45 LT⼤会 2022.02.20 Izumi Ninagawa

2.

誰? 汎⽤⼈型決戦遊具ゼムネス Ninagawa Izumi ⼆名川 和泉 競技⽤動的⼈体模型スコブル ⼆⾜歩⾏ロボットの製作と競技参加を趣味にしています。

3.

何? ぼくのかんがえた さいきょうの ホビロボ制御システム

4.

まず動画 https://www.youtube.com/watch?v=4ymSV_Dot-U

5.

なぜ? やりたいことが既存ボードの限界を超えつつある ・シミュレーターを使いたい ・各社のコマンドサーボをぜんぶ使いたい ・センサもリモコンも⾃由に使いたい ・データもぜんぶ取りたい ・VRと連携させたい ・もちろんROSも使いたい ・論⽂にある制御を実装してみたい、学びたい ・みんなで楽しく開発したい

6.

既存のソリューション VR空間 ROSとか いろんなリモコン いろんなサーボ いろんな素材 いろんなシミュレータ いろんな教科書 いろんな開発環境 いろんなボード いろんなセンサ いろんなアセット いろんなデータ

7.

既存のソリューション VR空間 ROSとか いろんなリモコン いろんなサーボ いろんな素材 いろんな教科書 いろんな開発環境 いろんなボード いろんなセンサ 素晴らしい資産が すでにたくさんある︕ 使わない⼿はない。 いろんなシミュレータ いろんなアセット 既存の豊富なリソースを ⼀気通貫で活⽤できる ようにするには︖ いろんなデータ

8.

ホビロボのシステム センサー 制御CPU センサー MPU Raspberry pi LIDER AI CAM ROS RealSense etc. etc. etc. エディタ・シミュレータ サーボモーター KONDO ストレージ 制御マイコン FUTABA 制御ボードA社 Dynamixel 制御ボードB社 PWM 制御ボードC社 リモコン ハードウェア アクチュエータ SD etc. 簡易出力 sound etc. 母艦 ROS Mac gazebo Win Choreonoid Linux CoppeliaSim MATLAB/Simulink LED PS4 Display wii etc. etc. Unity (Meridian) etc. ソフトウェア シミュレータ/データ

9.

ホビロボのシステム センサー 制御CPU センサー MPU Raspberry pi LIDER AI CAM ROS RealSense etc. etc. etc. エディタ・シミュレータ サーボモーター KONDO ストレージ 制御マイコン FUTABA 制御ボードA社 Dynamixel 制御ボードB社 PWM 制御ボードC社 リモコン ハードウェア アクチュエータ SD etc. ここがホビロボ発展の ク リ簡易出力 ティカルパスかも? sound etc. 母艦 ROS Mac gazebo Win Choreonoid Linux CoppeliaSim MATLAB/Simulink LED PS4 Display wii etc. etc. Unity (Meridian) etc. ソフトウェア シミュレータ/データ

10.

ホビロボのシステム センサー 制御CPU センサー MPU Raspberry pi LIDER AI CAM ROS RealSense etc. etc. etc. エディタ・シミュレータ サーボモーター Unity (Meridian) KONDO FUTABA Dynamixel PWM etc. 翻 訳 ストレージ 翻 訳 ROS 制御 マイコン 翻 訳 翻 訳 簡易出力 翻 訳 リモコン ハードウェア アクチュエータ 母艦PC 汎用の中間プロトコル 環 境sound を一気通貫できる キーストーン LED になるかも PS4 Display wii etc. etc. 翻 訳 gazebo Choreonoid CoppeliaSim MATLAB/Simulink ソフトウェア シミュレータ/データ etc.

11.

Meridim 90 配列(中間プロトコルとして流すもの) UDPの1パケットに収まるサイズ16ビットx90個=1440バイトのデータ。 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] マスター コマンド 移動時間 IMU データ IMU データ IMU データ IMU データ IMU データ IMU データ IMU データ IMU データ IMU データ [11] [12] [13] [14] [15] [16] [17] [18] [19] IMU データ カスタム データ カスタム データ カスタム データ カスタム データ カスタム データ カスタム データ カスタム データ カスタム データ [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] サーボ コマンド ID 0 サーボ データ サーボ コマンド ID 1 サーボ データ サーボ コマンド ID 2 サーボ データ サーボ コマンド ID 3 サーボ データ カスタム データ ID 4 サーボ コマンド サーボ コマンド ID 5 サーボ データ サーボ コマンド ID 6 サーボ データ サーボ コマンド ID 7 サーボ データ サーボ コマンド ID 8 サーボ データ カスタム データ ID 9 サーボ コマンド [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] サーボ コマンド ID 10 サーボ データ サーボ コマンド ID 11 サーボ データ サーボ コマンド ID 12 サーボ データ サーボ コマンド ID 13 サーボ データ サーボ コマンド ID 14 サーボ データ (右半⾝系データ→) 軸数で30軸分確保。IMUデータ等も格納できる。 必要に応じて90以上に拡張もできるがまずはコンパクトに。 関節情報はデフォdegree*100だが、メーカー⽣値も扱える。 (←左半⾝系データ) [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] サーボ コマンド ID 0 サーボ データ サーボ コマンド ID 1 サーボ データ サーボ コマンド ID 2 サーボ データ サーボ コマンド ID 3 サーボ データ カスタム データ ID 4 サーボ コマンド [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] サーボ コマンド ID 5 サーボ データ サーボ コマンド ID 6 サーボ データ サーボ コマンド ID 7 サーボ データ サーボ コマンド ID 8 サーボ データ カスタム データ ID 9 サーボ コマンド サーボ コマンド ID 10 サーボ データ サーボ コマンド ID 11 サーボ データ サーボ コマンド ID 12 サーボ データ サーボ コマンド ID 13 サーボ データ カスタム データ ID 14 サーボ コマンド [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] リモコン ボタン データ リモコン データ リモコン データ リモコン データ カスタム データ カスタム データ カスタム データ カスタム データ エラー コード CHECK SUM (COBS) Meridian 2021.2.10

12.

Meridim 90 配列(中間プロトコルとして流すもの) UDPの1パケットに収まるサイズ16ビットx90個=1440バイトのデータ。 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] マスター コマンド 移動時間 IMU データ IMU データ IMU データ IMU データ IMU データ IMU データ IMU データ IMU データ IMU データ [11] [12] [13] [14] [15] [16] [17] [18] [19] IMU データ カスタム データ カスタム データ カスタム データ カスタム データ カスタム データ カスタム データ カスタム データ カスタム データ [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] サーボ コマンド ID 0 サーボ データ サーボ コマンド ID 1 サーボ データ サーボ コマンド ID 2 サーボ データ サーボ コマンド ID 3 サーボ データ カスタム データ ID 4 サーボ コマンド サーボ コマンド ID 5 サーボ データ サーボ コマンド ID 6 サーボ データ サーボ コマンド ID 7 サーボ データ サーボ コマンド ID 8 サーボ データ カスタム データ ID 9 サーボ コマンド [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] サーボ コマンド ID 10 サーボ データ サーボ コマンド ID 11 サーボ データ サーボ コマンド ID 12 サーボ データ サーボ コマンド ID 13 サーボ データ サーボ コマンド ID 14 サーボ データ 軸数で30軸分確保。IMUデータ等も格納できる。 必要に応じて90以上に拡張もできるがまずはコンパクトに。 関節情報はデフォdegree*100だが、メーカー⽣値も扱える。 ・30軸分のデータ+状態データ ・軽量かつ可読性を高く (右半⾝系データ→) (←左半⾝系データ) [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] サーボ コマンド ID 0 サーボ データ サーボ コマンド ID 1 サーボ データ サーボ コマンド ID 2 サーボ データ サーボ コマンド ID 3 サーボ データ カスタム データ ID 4 サーボ コマンド ・必要に応じて可変長 [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] サーボ コマンド ID 5 サーボ データ サーボ コマンド ID 6 サーボ データ サーボ コマンド ID 7 サーボ データ サーボ コマンド ID 8 サーボ データ カスタム データ ID 9 サーボ コマンド サーボ コマンド ID 10 サーボ データ サーボ コマンド ID 11 サーボ データ サーボ コマンド ID 12 サーボ データ サーボ コマンド ID 13 サーボ データ カスタム データ ID 14 サーボ コマンド [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] リモコン ボタン データ リモコン データ リモコン データ リモコン データ カスタム データ カスタム データ カスタム データ カスタム データ エラー コード CHECK SUM (COBS) Meridian 2021.2.10

13.

高速通信を実現するプロトタイピングボード Meridian Board Type.K ver1.2 ■ ESP32 DevKitC 240MHz,Wifi,Bluetooth SPI通信で連携 ■ Teensy 4.0 600MHz,UART4ch サーボ⾃⾝の通信性能にもよるが、 5~10msで送受信可能。

14.

高速通信を実現するプロトタイピングボード とりいそぎ Meridian Board Type.K ver1.2 ・無線通信に強いESP32 ■ ESP32 DevKitC 240MHz,Wifi,Bluetooth ・UART高速通信に超強いTeensy4.0 SPI通信で連携 のいいとこどりで ■ Teensy 4.0 600MHz,UART4ch ・10ms以下のリアルタイム制御 を実現 サーボ⾃⾝の通信性能にもよるが、 5~10msで送受信可能。

15.

Teensy4.0 データの流れ スタンドアロン時 計算処理や モーションなどの メイン処理 Meridim 90 データ コマンドサーボ ESP32 PC/ROS/Unity 16bit 必要に応じて リモコンデータや センサデータなどを加算 16bit Meridim 90 データ Meridim 90 データ Meridim 90 データ 復元 復元 命令 実行 (1.25Mbps) UART 変換 サーボ コマンド 送信 受信用 共用体 配列 Teensy ① 8bit 1440 bit 状態 データ 返信 センシング データ (1.25Mbps) UART 変換 8bit サーボ コマンド 受信 送信用 共用体 配列 Meridian 90 データ I2C等 SPI 6Mbps Teensy ③ Teensy ② 変換 16bit単位 ↓ (Teensy - PC Serial Monitor 60Mbps) 1440 bit Meridim 90 データ 1440 bit 送信用 共用体 配列 受信用 共用体 配列 8bit 8bit ESP ② 6Mbps SPI 16bit 変換 送信用 配列 UDP ESP ① ROS/Unity 8bit 物理計算処理 のために ⾓度データは ⼩数点第2までの float型で格納保持 (2.4GHz) 8bit 8bit 受信用 共用体 配列 送信用 共用体 配列 Meridim 90 データ Meridim 90 データ Meridim 90 データ 必要に応じて 加⼯ 16bit 16bit ESP ③ UDP ↓ (ESP32 - PC Serial Monitor 2Mbps) 8bit 受信用 共用体 配列 1440 bit 変換 Meridian 2021.12.11

16.

Teensy4.0 データの流れ スタンドアロン時 計算処理や モーションなどの メイン処理 Meridim 90 データ コマンドサーボ ESP32 PC/ROS/Unity 16bit 必要に応じて リモコンデータや センサデータなどを加算 16bit Meridim 90 データ Meridim 90 データ Meridim 90 データ Meridim 90 データ 1440 bit ひとつのデータ配列が 復元 復元 命令 実行 (1.25Mbps) UART 変換 サーボ コマンド 送信 受信用 共用体 配列 1440 bit 8bit Teensy ② センシング データ UART 6Mbps 変換 サーボ コマンド 受信 8bit 8bit ESP ② 8bit 送信用 共用体 配列 6Mbps ESP ① 変換 16bit単位 ↓ (Teensy - PC Serial Monitor 60Mbps) 1440 bit 送信用 配列 ROS/Unity 8bit 物理計算処理 のために ⾓度データは ⼩数点第2までの float型で格納保持 (2.4GHz) 8bit 8bit 受信用 共用体 配列 送信用 共用体 配列 Meridim 90 データ Meridim 90 データ Meridim 90 データ 必要に応じて 加⼯ 16bit 16bit ESP ③ リアルタイムに共有 SPI 変換 UDP 制御命令や状況情報を Meridian 90 データ I2C等 SPI Teensy ③ (1.25Mbps) 受信用 共用体 配列 デバイス間に高速循環し Teensy ① 状態 データ 返信 送信用 共用体 配列 16bit UDP ↓ (ESP32 - PC Serial Monitor 2Mbps) 8bit 受信用 共用体 配列 1440 bit 変換 Meridian 2021.12.11

17.

プロジェクト名 経絡 meridian メリディアン計画 a メリディアンとは「経絡」のこと。 ヒューマノイドロボットに必要なツボをつなぎ、 「気のめぐり」がよくなるかのように「情報」の流れを円滑にし、 ロボットの開発や学習環境を健康に保つための試み。

18.

ROSとの連携 meridian ヒューマノイドの脊髄反射な多軸制御は メリディアンにまるなげOK ...となるのが理想

19.

進捗 センサー 制御CPU センサー MPU Raspberry pi LIDER AI CAM ROS RealSense etc. etc. etc. エディタ・シミュレータ サーボモーター KONDO ストレージ 制御CPU FUTABA Teensy Dynamixel ESP32 PWM etc. リモコン ハードウェア アクチュエータ SD etc. 簡易出力 sound etc. 母艦 ROS(topic/rviz) Mac gazebo Win Choreonoid Linux CoppeliaSim MATLAB/Simulink LED PS4 Display wii etc. KRC-5FH. Unity (Meridian) etc. ソフトウェア シミュレータ/データ

20.

謝辞 ありがとうございます 実機テスト フィジビリ検証/応用開発 Twitter等での アドバイスやヒント

21.

同じような所を掘ってる方 ごいっしょにいかがですか?

22.

#Meridian計画 https://note.com/ninagawa123/n/nb768563591be https://twitter.com/Ninagawa123