近藤科学社製KXR-L2を自律化し,株式会社アールティが主催する大会 Humanoid Autonomous Challenge (HAC)に参加するためのサンプルプログラムです.
Hierarchical Task Network(階層化型タスクネットワーク)に基づいて,周囲の環境を認識しながらロボットが次の行動を計画,実行します.
Humanoid Autonomous Challengeについてはこちらの記事を参照してください.
KXR-L2にRaspberryPi Zero 2W, WEBカメラ,IMUなどを増設したKXR_HAC_Hardware上で動作することを想定しています.他のロボットハードウェアで使用する際は,動作中に呼び出すモーションやパラメータを適宜編集してください.
また,こちらの連載で詳細な解説を行っていますので,合わせてご参照ください.
以下の環境にて動作確認を行っています.
- Python 3.9.2
- Heart to Heart 4 (v2.4.0)
- Linux OS
- Raspbian GNU/Linux 11 (bullseye)
- コンソールPC
- Windows 10 Home
- VNC Viewer 6.22.515
- ロボット
- KXR-L2(KXR_HAC_Hardware準拠)
環境構築については,こちらの記事も参照してください.
├── README.md ├── parameterfile.py ├── HTN_planner.py ├── run_HTN_planner.py ├── vision │ └── vision_library.py ├── motion_control │ ├── Rcb4BaseLib.py │ └── motion_control_library.py ├── task_execute │ └── task_execute_library.py ├── tmp │ ├── dist.csv │ ├── left_corner_template.jpg │ ├── left_corner_template_gray.jpg │ ├── left_corner_template_wide_gray.jpg │ ├── mtx.csv │ ├── right_corner_template.jpg │ ├── right_corner_template_gray.jpg │ └── right_corner_template_wide_gray.jpg ├── HTN_sample │ ├── planning_library_sample.py │ └── run_HTN_planner_sample.py ├── sample │ ├── detect_goal_sample.py │ ├── htn_test.py │ ├── motion_control_library_sample.py │ ├── motion_planning_test.py │ └── vision_library_test.py └── HeartToHeart_project ├── HAC_KXR_HTH4_project.csv ├── HAC_KXR_WALK_FORWARD.xml ├── HAC_KXR_WALK_LEFT.xml ├── HAC_KXR_WALK_RIGHT.xml ├── HAC_KXR_TURN_LEFT.xml ├── HAC_KXR_TURN_RIGHT.xml ├── HAC_KXR_TOUCH_BALL.xml ├── HAC_KXR_STAND_UP.xml └── その他,KXR-L2G_Battleのサンプルモーション
parameterfile.py
画像認識,行動計画等のパラメータを一元的に格納したファイルです.
HTN_planner.py
Hierarchical Task Networkに基づき動作を選択するためのモジュールです.
run_HTN_planner.py
HTN_plannerを用いて,実際にロボットにHAC競技を行わせます.
vision_library
カメラを用いた画像認識関連のクラス,関数をまとめたファイルです.
motion_control_library
ロボットに歩行や起き上がりなどのモーション再生の指令を送るクラス,関数をまとめたファイルです.各モーションデータはロボット側のコントロールボード RCB-4HVが保持しています.
Rcb4BaseLib.py
近藤科学社の提供する,Pythonが動作する環境からコントロールボード RCB-4HVと連携するためのライブラリです.ロボットに動作指令を送る際は,このライブラリから関数を呼び出して用います.
task_execute_library
画像認識結果に基づき移動などの行動を行うクラス,関数をまとめたファイルです.各行動の関数が,HTN PlannerにおけるPrimitive Taskとして扱われます.
画像認識関連のテンプレート,パラメータを格納したフォルダです.
left_corner_template.jpg
right_corner_template.jpg
テンプレートマッチングに用いる左右のコーナーのテンプレートのカラー版です.
left_corner_template_gray.jpg
right_corner_template_gray.jpg
テンプレートマッチングに用いる左右のコーナーのテンプレートのグレースケール版です.
left_corner_template_wide_gray.jpg
right_corner_template_wide_gray.jpg
mtx.csv
dist.csv
テンプレートマッチングに用いる左右のコーナーのテンプレートのグレースケール版です.カメラ画角の端にあっても検出できるように,変形が施されています.
ロボットを動かさず,HTN_plannerの動作だけ確認する際のサンプルコードが格納されているフォルダです.
planning_library_sample
ロボットを動かす際のmotion_planning_library
に相当します.ロボットを動かさず,行動の流れをテキストで示します.
run_HTN_planner_sample
ロボットを動かさずにHTN_plannerを実行し,行動計画の流れを確認できます.
画像認識やモーション再生などの動作を確認するためのサンプルファイルが格納されているフォルダです.
近藤科学製のモーション作成ソフト「HeartToHeart4」用のプロジェクトファイルです. KXR_HAC_Hardwareに合わせてモーションを編集しています. 使用する際は,KXRに搭載されたRCB-4 miniにこのプロジェクトを書き込んでください.
- ロボット,RaspberryPiを起動し.フィールドにロボットを配置する.
- RaspberryPiと同じネットワークにあるコンソールPCで,VNC Viewerを立ち上げRaspberryPiのデスクトップにアクセスする.
- RaspberryPiでターミナルを起動し,
run_HTN_planner
を実行する.
当ソフトウェアの使用中に生じたいかなる損害も株式会社アールティでは一切の責任を負いかねます。
この 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。
Rcb4BaseLib.py
のみMIT License
TaikiTsuno
近藤科学 KXR アドバンスセットA 商品ページ
(https://kondo-robot.com/product/03158)
アールティ ヒューマノイドロボットブログ
(https://rt-net.jp/humanoid/)