1 of 10

ROBOMASTER AIチャレンジ�公式オープンソースを読む

あーせにっく

2 of 10

COMMENT SCREENのアドレス

  • 部屋名「robosemi」で、入れます

3 of 10

軽く自己紹介

  • Twitter:あーせにっく(@ArsenicLAB)
  • 高専→高専専攻科→ロボット系ベンチャー
  • ロボット歴?
    • 高専ロボコン(2013~2017)
    • RoboMaster 2018(FUKUOKA NIWAKAヒーローオペレータ)
    • RoboMaster AI Challenge 2019 (キャプテン)
  • 電子回路、組み込み、ROSあたりが好き

4 of 10

ROBOMASTER AI CHALLENGE とは?

  • 毎年ICRAの会場で、学会と同時開催してるロボマスの全自動版の大会(DJIが主催)
    • 会場は毎年変わる!
  • メカは全チーム統一(大会側が提供)ソフトウェア技術を競う

5 of 10

公式オープンソースとは?

  • DJI公式が公開してる、AIチャレンジ用のマイコンFWとROSシステム(公式提供のメカで動くことを想定)
  • ライセンスはGPL v3
  • 今回はマイコンFWのジンバル、シャーシ制御周りの個人的に面白かった実装の紹介
  • 紹介するコードはコントローラで動かすこと前提(全自動じゃない)
  • ROS側の実装紹介はまた機会があれば!(まだ読んでません)

6 of 10

公式提供ロボのシステム概要

  • アクチュエータ、マイコンボードは搭載済み(電源入れると付属のコントローラで操作できる)
  • マイコンはSTM32でボードには9軸IMU搭載
  • ジンバル、シャーシにそれぞれマイコンボード(2枚積み)
  • CANでマイコン間通信
  • ジンバル用モータはBLDC、ESCからCAN通信を通して電流値�で制御可能、角度、角速度フィードバッグ
  • シャーシ用モータはBLDC+減速機つき

ジンバル

シャーシ

7 of 10

ジンバル制御

  • 目標値
    • 右ジョイスティックの縦、横がジンバルのPitch、Yawに対応、目標角を設定し、絶対角で制御(シャーシとの相対角度でなく、IMUで測定した絶対角)

  • ジンバル搭載のIMUでジンバルの姿勢(向いている方向)を推定
    • 姿勢推定アルゴリズムにはMadgwickフィルタを使用
      • 拡張カルマンフィルタより高速で、同等以上の精度らしい

  • ジンバルの角度制御にはカスケード制御を使用

8 of 10

カスケード制御とは

  • フィードバック制御ループの中に、複数のフィードバック制御ループをもたせたもの
  • 外側の制御ループをメジャーループ、内側をマイナーループという
  • 今回の場合はメジャーループ角度マイナーループ角速度
  • マイナーループを挟むことで、メジャーループ側から見た制御の応答性がよくなる(らしい)

・通常の角度制御

・カスケード制御を使った角度制御

9 of 10

シャーシ制御

  • 平行移動2軸(vx, vy[m/s])、回転移動1軸(ωz[rad/s])の3軸入力で速度制御
  • 左ジョイスティックの上下左右入力が vx, vy に対応
  • ωz はジンバルの向いている方向に追従するように与えられる

  • シャーシが回転する仕組み
    1. ジョイスティックを左に倒す
    2. IMUの姿勢目標値が左にずれ、ジンバルがそれを修正
    3. ジンバルとシャーシの向きのズレを修正するために�ωzが発生
    4. ジンバルとシャーシの向きが一致

10 of 10

マイコンFWまとめ

  • ジンバルの姿勢がずれないように、IMUから推定された姿勢をフィードバックに使っている
  • ジンバルの姿勢推定アルゴリズムにMadgwickフィルタを使っている
  • 制御性能を上げるためにカスケード制御を使ってる
  • シャーシの回転は、ジンバルに追従するように設計されている