LancerStratos’s blog

2026年3月のロボットグランプリ ロボットランサー競技で優勝した機体の開発ログ

3D出力初体験

先日、家の近くに3Dプリンタのある工房を発見しました。3Dデータを自作してウェブ上で造形を発注したことはありましたが、自分でプリンタを設定し造形したことがなかったので挑戦してみました。

まずはじめにFusion360でステアリングナックルを設計します。現在使っているナックルはタミヤMシャーシ用のものですが、キングピン位置がタイヤからかなり内側にあり、これを何とかしたいと思っていました。そこで、タミヤのナックルを見ながら下のような形にまとめました。

ナックル設計画面

Fusion360から.STL形式で出力、FlashPrintというフリーソフトでスライス、.GXファイルを生成します。これを工房に持ち込み、FlashForgeのAdventure3で出力しました。

左:タミヤのナックル、右:今回自作したナックル

フィラメントはABSでノズル径0.4mm、充填率100%でおよそ50分かかりました。積層方向は車軸の方向にしました。外径11mmのボールベアリングが11.2mmで設計した穴にうまく嵌ったときは思わずニヤリとしてしまいました。キングピンとステアリングアーム先端のピロボールをねじ込むM3穴は積層方向に直交するのでオーバーハングになります。そこは内部に薄い隔壁を数枚入れ造形後にドリルで貫通しました。

利用料金は1hで計660円でした。ウェブで造形発注したものと比べると表面のざらつきなどが目立ちますが、実用には足りそうですし、安価なので満足です。3Dプリンタが欲しくなりました。

卍解

この週末は気持ちの良い秋晴れに恵まれました。

先日、27年来のロボット仲間が夫婦で訪ねてきてくれました。私の妻以外でロボット開発環境の実態を知る者はこの夫婦だけです。その夜は3人で酒を飲みながら、昔のことから最近のロボット開発のことまで、色々な話ができました。とても有意義で楽しいひと時でした。

さて、本日は朝から再び速度制御の改善に取り組みました。

加速側の制御は良好だったのですが、減速側(ショートカット旋回時)では、なかなか目標速度に整定できていなかったからです。色々と試行錯誤する中で、ひとつ思い当たることがありました。

これまで、直線走行時のデータをもとにフィードフォワード(FF)成分の目途を立てていたのですが、飛行機同様に車も旋回中は直進中よりも大きな駆動パワーが必要になるはずです。しかし、これまでの制御では、その分が十分に考慮されていませんでした。そこで、旋回中のFFパワーを上乗せして実験したところ、これが見事にハマりました。下の図は、そのときの速度履歴です。

制御則改善後の速度履歴例

直線走行時の3.5m/s、ショートカット旋回中の2.6m/sともに、目標速度へきれいに整定していることが分かります。なおこの速度は、直線・旋回ともに前回大会での走行速度を上回っており、標的の打突をしっかり決めることが前提ですが、前回大会を超える高得点の目途が立ちました。

始解

今日は一日中雨が降っていたこともあり、ショートカット速度向上の前にやるべきこととして、速度制御則を大きく見直しました。

1.ひとつの制御則からの脱却

これまでは基本的にPI制御(比例・積分制御)ひとつで、加速から定速走行、減速までのすべてを処理していました。

しかし考えてみれば、一気に加速したいときと、目標速度付近で速度を整えたいとき、一定速度を維持したいときでは、制御に求められるものが違います。

そこで新しい制御では、

ACCEL → SETTLE → HOLD

と状態を分け、それぞれに適した制御を担当させることにしました。

加速時は最大PWMで一気に加速。目標速度付近ではFF(フィードフォワード)+PD(比例・微分制御)で制動した後、FF+PI(比例・積分制御)で速度を維持します。

減速側も同様に、

BRAKE → SETTLE DOWN → HOLD

と役割を分けました。

2.プログラムで性能を引き出す

下のグラフは自宅ミニコースにおける旧制御と新制御の走行ログを、それぞれの目標速度を1.0として正規化して比較したものです。

新旧速度推移の比較(目標速度で正規化)

左側が直線での加速区間、右側がSC(ショートカット)時の減速区間です。模擬コースの短い直線距離のため旧制御では目標速度まで加速しきれなかったところ、新制御ではオーバーシュートすることなく目標速度に到達しています。減速側も、旧制御では定量的に話にならなかったところ新制御では期待した制御になっています。

モータやバッテリー、駆動系などのハードウェアには一切手を付けず、プログラムの修正によって眠っていた「加速」「減速」「整定」能力を引き出せたと考えています。これこそまさにデジタル制御のメリットだと、改めてひとり悦に入ってます。

StratosEye開発完了

連休を利用して開発を始めました。最初はコース上に5つのマーカをビニールテープで描きました。解析範囲を設定するための四隅マーカx4と、天井カメラの鉛直下方を示すマーカx1です。次に車体上部に車体位置マーカを設定しました。そしてChatGPTと相談しながら開発環境(Python 3.11.9 / OpenCV)を設定し、やりたいことを実現するコードを生成します。5時間程試行錯誤してなんとか解析ツールを作ることができました。

事前に走行ログ(デッドレコニング:DRで計算した位置履歴)と天井カメラ動画ファイル(120fps)を用意しておきます。解析ツールを起動すると、初めにこれら2つのファイル指定を行います。次に動画ファイルの最初の一コマが表示され必要に応じてローテーション処理します。次に四隅のマーカをマウスで指定します。

解析範囲(空間)を指定

この後、画面中央に見えるカメラ鉛直下方マーカを指定し、カメラから放射状に生じる視差を補正することでランサー車体上部に設置したマーカの地上高(45mm)を補正します。

マーカx5点の指定の後、時間軸の解析範囲を指定します。今回はショートカット前、中、後の3区間を指定するため4フレームを指定しました。

解析範囲(時間)を指定

車体後部に見える白い十字が車体マーカです。これを動画ファイルから抽出して軌跡を描かせるとともに、DRで計算した位置と重ねて表示させたのが次の画像です。

いい感じで一致

赤い線が動画ファイルから読み取った軌跡、黒い線がDRの軌跡です。DR軌跡の後半が外に向かっているのは表示のバグです。いい感じで両者が一致していたのでとても嬉しいです。このツールを使ってブレーキ時やショートカット時の振る舞いをより具体的に分析できるようになり、より正確な機体制御ができるのではないかと考えています。

5時間程の試行錯誤はありましたが、AIを使ってあっけなく開発完了しました。次はこのツールも使ってショートカット速度の向上を目指した実験をしようと思います。

StratosEye開発スタート

ようやく30度以下の過ごしやすい気温になった土曜日、近くのコーナンにて木材の板を¥300で購入し、天井カメラの土台を作りました。そしてこの計測システムに"StratosEye"という名前を付けました。AIにキービジュアルを描かせたらこうなりました。

ロゴデザインがお気に入り

あまりのカッコよさに作る前から満足してしまいそうです。はたして名前負けしないようなシステムができるのでしょうか。

夏休みの終わりに

先月の熊本の大地震に引き続きここ最近短時間の大雨による災害が多発しています。自宅の近くにも冠水で動けなくなった数台の車が長い間残置されていました。報道によれば千葉豪雨で冠水した車両はおよそ2800台らしく、これだけでも相当な被害です。冠水した道路を走行することの危険性も再認識しました。

休暇の間家族と過ごしながら脳内でランサーの正確な走行位置・経路を取得する方法を思案していたところ、ふと昔の記憶が蘇りました。マイコンカーラリーやロボットランサーで有名な滝田先生の研究室を拝見したとき天井にビデオカメラが設置された実験室がありました(あったような気がする)。技術の進歩した今ならあの日の滝田研究室に近い環境を個人でも簡単に構築できそうです。

先代のiPhoneを引っ張り出してきて数年ぶりに充電しました。iCloudに追加連携しPCとファイル共有できるように設定しました。これを天井カメラに使おうと思います。天井への設置方法も考えました。ちょうどシーリングライトの設置部に荷重を受け持つ金具があるのでそれを使って天井に台座を作ろうと考えています。電源も取れるので一石二鳥です。

天井のコンセント

雨乞いの滝(徳島県神山町)

うだるような暑さの3連休最後の日、車を1時間ほど走らせて滝を見に行きました。

10時40分に車で行ける最寄りの駐車場にたどり着き、そこから急な山道を20分ほどかけて登りました。

途中、数か所見どころがありますが、最深部の滝は本当に圧巻でした。

雨乞いの滝

ちょうど、斜面に沿ったロープを伝って親子が崖を登っている(降りていた?)ところでしたが、私はとてもそんな危険なところまで行こうとは思えず、下から眺めるだけでしたが、写真でもその美しさはお分かりいただけるのではないでしょうか?

決して簡単な登り道ではありませんが、汗だくになってもこの滝を見る価値はあると思います。ちなみに私はタオルと着替えを用意していきましたので帰路も爽やかでした。