1 of 11

Team solverの取り組み

Humanoid Virtual Athletics Challenge 2021-2022

2022/03/12

2 of 11

チーム紹介

メンバー

  • 大西祐輝 (東京工業大学D1,インテグレーション担当)
  • 片山想太郎(京都大学D3,MPCソルバ開発担当)

方針

片山が開発するロボット制御フレームワークrobotocを用いて,�whole-body MPCで頑張る.

3 of 11

競技結果

Whole-body MPCによる

両脚支持期なしの階段昇りを達成

(競技領域:緑->オレンジ)

realtime factor: 1.2681 (>1.0)

on Ubuntu 18.04.3� w/ Intel i7-8750H CPU@2.2 GHz� + 16GB DDR4 RAM

4 of 11

システム構成の概観

ChoreonoidのSimpleController内に,�robotoc(片山作の制御FW,後述)を基にした�MPCソルバを実装.

LAAS-CNRSとINRIAが開発した�動力学計算ライブラリpinocchioを用いるため,�ロボットモデルのURDFファイルが必要.�(ROS関連ツールは一切不要)

(pinocchioについては後述)

SimpleController

public:

- MPCソルバのインスタンス

- initialize関数:

・ロボット初期化

・MPCの定式化

 (モデル,コスト,制約,etc.)

- control関数:

・ロボットの状態の取得

・MPCの求解

・制御入力の適用

5 of 11

URDFの生成

産総研のモデルフォーマット変換ツールsimtransを用いて,�Choreonoid Body形式->URDFの変換を実行.

+

変換が一部不完全で,かつ可読性に難があるため,�細かいところを手作業で修正.�(完成したURDFは vnoidリポジトリにマージ済み!)

6 of 11

ロボット入出力

上半身の関節は全て固定し,下半身(両脚12自由度)のみを駆動.

MPCソルバの入出力構造は以下の通り.

入力(取得):

  • 体幹の絶対位置・姿勢・速度(6自由度 * 2 = 12次元)
  • 各関節の角度・角速度(12自由度 *2 = 24次元)

出力(司令):

  • 各関節のトルク(計12次元)

7 of 11

Whole-body MPCによる制御フレームワーク

Whole-body MPC �

  • 全身動力学モデル�(Whole-body dynamics)
  • 評価関数
    • 脚先軌道
    • 重心軌道
    • 姿勢
    • トルク,関節角速度
  • 制約
    • 関節角度・角速度・トルク上下限
    • Wrench cone

Choreonoid

Foot step planner

Foot step placements

関節トルク

状態量�(一般化座標,� 一般化速度)

8 of 11

Whole-body MPCの実装

Foot step planner : 一定のパターン,周期,歩幅で各脚先の接地位置をプラン�

Whole-body MPC :

  • 全身動力学モデル (forward dynamics, 運動方程式+接地脚の加速度制約)

  • 遊脚の脚先,重心に目標軌道を設定し,評価関数で考慮
  • Wrench cone 制約などの不等式制約を主双対内点法で実装
  • 動力学モデル,制約は接地脚パターンによって切り替わることに注意

9 of 11

Whole-body MPCの実装

ロボットキネマティクス・ダイナミクス

  • Pinocchio (https://github.com/stack-of-tasks/pinocchio) を使用
  • 動力学 (RNEA) とその偏微分
  • Forward kinematics (end-effector の位置・速度・加速度)
  • Kinematics Jacobian

10 of 11

Whole-body MPCの実装

MPC ソルバー �(GitHub - mayataka/robotoc: Efficient optimal control solvers for robotic systems.)

  • Direct multiple shooting + 主双対内点法 + Riccati recursion
  • C++で実装,Python ラッパー
  • Eigen (基本的な行列演算), OpenMP (multiple shooting での並列計算), �Pinocchio (ロボットキネマティクス・ダイナミクス)

MPCの設定

  • リアルタイム計算が可能な程度に予測ホライゾンと分割数を小さめに設定

11 of 11

課題

  • 複雑な接触のモデル化
    • 今回は面接触を6DOFの制約(位置と回転の制約)で考慮
    • 曲面部分のモデル化が難しく,断念�
  • よりダイナミックな動作
    • 評価関数や制約の作成,チューニングが大変です……
    • タスクによっては上半身に自由度の追加が必要�(計算時間とのトレードオフ)