LancerStratos’s blog

2026年3月のロボットグランプリに向けたロボットランサー開発ログ

改善点の検討(その2)

前回競技会の決勝2走目は速度設定値を約1割増した結果、途中でコースアウトし得点が伸びませんでした。失敗の記憶は思い出したくないものです。とはいえ、失敗の中にこそ貴重なヒントが隠されているのも真実。今日その動画を見返してあることに気付きました。1走目よりF標的の成功率が明らかに高いのです(100%成功)。設定速度と槍動作のタイミングがちょうどいい塩梅だったのでしょう。

であるならば、その速度設定で安定周回できるように改修するのが良さそうです。前回コースアウトした原因を探るべく動画をコマ送りで観察すると、ショートカット旋回中に横滑りしているようです。低速でグリップ走行できているときはいいのですが、旋回中に横滑りが発生するとその分の移動量はロータリーエンコーダx2によるデッドレコニングで検出できず、実際の位置と計算位置に誤差が発生し、ショートカット旋回から直線への復帰が失敗したものと見ています。

この現象をデータで確認する準備として、BNO055のキャリブレーションおよびオフセット値等の保存・書込み機能を実装しました。センサを前部バンパー付近に移設したことで磁力計含め全てのキャリブレーションステータスが3(完了)になります。次はショートカット旋回中の横加速度の変化を計測&分析する予定です。横滑りの瞬間に横Gがスコンと抜けているはず。

妙義NIGHTKIDS中里毅(パチスロ攻略マガジン公式サイトから) 

 

改善点の検討

録画しておいた「魔改造の夜」を観ました。スリッパを遠くに飛ばす競技で、結果をみれば最初の人間による発射(蹴り出し)がすごく重要なポイントであることが分かります。特に注目していたのはEプソンの羽ばたき機。各社HPに詳細な開発ストーリーが記載されており興味深い。参加者全員がエンジニア魂を燃やしてて録画を観ながら泣けました。

Eプソンの羽ばたき機(スリッパ)会社HPより

さて今競技会へ向けた改善点を検討するため、前回の決勝動画を分析しました。往復ショートカット方式で60秒で13周半走っています。ショートカットで諦めたA標的を除くすべての的が突ければ2500点に迫る速度で走行できていたのですが、水平標的、特にF標的の打突成功率が3割と低いために2000点未満の結果となっています。

なぜF標的の成功率が低いのかは今のところ分かっていません。センターラインから遠い上に的の直径も小さいためEよりFの方が難しいのは当然なのですが、私の場合は槍を動かすサーボの制御のタイミングが何らかの理由でブレているのではないかと考えています。これを究明することが次の課題です。



2026年3月大会開催

衆院解散選挙のニュースとJPCZが吹き荒れる1週間でした。先週あったかい部屋着を買い足しておいてよかった・・・

日本海寒帯気団収束帯

今年も3月にランサー競技会が開催されるようです。仕事の都合上参加できるか今の時点で不明ですが、コツコツと準備を進めます。

今日はChatGPTと相談しながらプログラムの可読性を高めるための修正をしました。昨年までに9軸センサーBNO055の活用準備はしましたがこれ以上のハード変更はせずに、プログラムの変更だけに集中しようと思います。

書き込みトラブル

新しく購入したLiPOバッテリーの放電特性を確認したところ、5パックすべてがほぼ同様の特性を持つことを確認しました。また、以前から持っていたパックはかなり劣化していることが分かった(放電容量が新品に比べてかなり少ない)ので、混用は避け新しいパックのみで運用することに決めました。

ST-LINKがターゲットを認識しない・・・

久しぶりにランサーを取り出し、充電した新品バッテリーを接続、いざプログラムを書き込もうとしたところ、なぜかST-LINKがターゲットMCUを検知しません。『ええーっ!?』と独り心の中で叫びつつ原因を探ること2日間、ようやく原因が分かりました。

結論からいうとプリント基板とマイコンチップ間の足のはんだ付けが外れていたようです。ST-LINKがターゲットMCUを認識しない症状がきっかけでしたが、そもそも電源を入れた際に前に書き込んだプログラムが走るはずなのにそれさえ動かないので『何かが壊れている』と直感しました。たまたまプリント基板をねじるような応力をかけるとST-LINKがMCUを認識したり前回のプログラムが作動するケースがあることに気付いたためはんだが割れて接触不良を起こしていると判断、一番弱そうなマイコンチップの足にフラックスを塗りはんだこてを当てたところ、不具合を解消できました。恐らく原因は、BNO055移設のための延長ケーブルを工作する際にマイコンチップにストレスをかけたことかと考えています。

車体前方にBNO055を設置

BNO055の設置についていろいろ試しましたが、現時点では車体前方のバンパーの付け根付近に移設しています。C011で確立したコードは完全に移植できていませんが、初期設定だけは修正し電源ONで素直に初期化されるようになりました。

今後はキャリブレーション値の格納読込を実装し、デッドレコニングに使えるか否かを実験する予定です。

アナハイムエレクトロニクス岡山工場

かなり前から気になっていたゼータガンダム像。昨日、長距離ドライブの末に遂にその雄姿を拝むことができました。

道の駅久米の里に立つゼータガンダム

岡山といえば桃太郎発祥の地、桜井日菜子の出身地程度の認識しかなかったのですがこのゼータを肉眼で見て、私の中では小野田紀美経済安全保障担当大臣と同等もしくはそれ以上?の存在です。

その道の駅のウェブサイトには作成者について記載されています。私が特に感動するのは『もともとガンダムマニアやアニメファンではなく、ものづくりが好きな青年で、小説のZガンダムを読んで挿絵の格好良さにしびれ、作りたい衝動をどうしても止められなかったとか・・・。』という、ただ好きなだけであり得ない仕事を成し遂げられた点です。お台場や万博会場の実物大立像もありましたが、それらより遥か前から7年間もかけてコツコツと独りで作り上げたとのことですから・・・・想像しただけで涙が溢れてきます。

立像右奥に『感謝状 久米の里ガンダム殿 あなたは道の駅久米の里を基地として地球と地域を衛る正義の戦いに臨まれ多くの人々に夢と感動を与え久米の里をはじめ久米町の活性化に多大な貢献をされました。よって久米町制施行五十周年にあたり深く感謝の意を表します。 平成十六年十月三十一日 久米町長』と(泣)。私が行った日もこのゼータ目当てと思しき観光客を多数見かけました。私もお土産たくさん購入したので久米町活性化に対するゼータの貢献はまごうことなき真実です。

その道の駅でご当地グルメ津山ホルモンうどん”をいただきました。1時間待ちましたがその分?とってもおいしかったです。ご馳走様でした。

期間限定?で地域特産のジャンピーがトッピング

 

日曜大工

近所のニトリで購入した「つながるハイバックポケットコイル座椅子」、座り心地は良いものの座面の低さから立ち上がるのがちょっときつい(座椅子ならどれも同じだが)。

そこで座面を高くするためのフレームを自作することにしました。ついでにひじ掛けもつくってソファーの様にします。脳内デザインを手書きでノートに書きだし、実物と自分の身体をつかって良さそうな寸法を設定します。近所のコーナンで売ってる2x4材の寸法をネットで検索し、どのように切り出せば最低価格で材料が揃うか検討します。結果をノートに書いて材料買い出しに行きました。

やすり掛けの後木工用ボンドとコーススレッドを使ってフレームを組み立てました。くみ上げたフレームに座椅子を乗っけて独り掛けソファーの完成です。自分の体格に合わせた寸法なので座り心地は上々です。

ニトリ座椅子改 ”独り掛けソファ”

ひじ掛けだけはネジを見せたくなかったので 木ダボと木工ボンドで接合しました。背もたれの角度が変えられるので普通のソファーより高機能かもしれません。

先週末完成した放電器を使って、手持ちバッテリーのデータをとっています。

バッテリー管理の強化(その3)

今日は久しぶりに放電器の開発を再開。
机いっぱいにブレッドボードと工具を広げ、まずはこれまでの配線・設定を丁寧に再チェックするところからスタートした。

1️⃣ タイマ割込みとLCDの基盤づくり

今回の放電器では、1msecごとの定時割込みを TIM10 で発生させ、時間カウントをLCDに表示するのが基本。
最初はなかなかブリンク表示が動かず、IRQが生きているかどうかの切り分けをしながら一歩ずつ進めた。
最終的に PB0 のトグル確認 → IRQ動作の確実性が確認でき、SET LiPO の点滅表示が成功!

2️⃣ 状態遷移とタクトスイッチ

  • モード1:FET:OFF/下段「SET LiPO」(点滅)

  • モード2:FET:OFF/バッテリー電圧表示

  • モード3:FET:ON/放電中、経過時間表示

  • モード4:FET:OFF/放電終了、時間表示

タクトスイッチ入力の実装では、ブロッキングwhile を廃止し、非ブロッキング立下りエッジ検出に変更。
これで時間表示が止まることなく、スムーズなモード遷移が可能になった✨

3️⃣ ADCとVrefintの大きな壁

実験中、「200msで止まる」という症状が発生。
原因は Vrefint変換が完了せず HAL_ADC_PollForConversion() がブロックしていたこと。
TSVREFE の有効化、サンプル時間を 480cycles に設定、タイムアウト処理を追加したことで一気に解決した⚡

4️⃣ LiPo未接続時の意外な挙動

LiPoをつながずにボタンを押した場合、モード2からいきなりモード4に遷移してしまい「バグか?」と一瞬焦った😅
原因は、電圧が 0 V なので放電開始直後にカットオフ判定が働いていたため。
特に不具合ではなく、仕様通りの動きであることを確認した。

5️⃣ UART通信によるロギング機能

放電特性を記録するために UART通信機能 を追加。

  • 電圧3.5V以上 → 10秒ごと

  • それ以下 → 1秒ごと
    で、経過時間と電圧をPCに送信。
    Tera TermMicrosoft Excel に取り込み、リアルタイムで放電カーブのグラフ化に成功📊

6️⃣ 結果

放電開始から終了まで、安定した電圧ロギングと状態遷移が実現。
グラフにもきれいなスロープが描かれ、開発の達成感もひとしお✨

放電により徐々に電圧が降下

✍️ 今後の展望

  • カットオフ時にブザーやLEDで通知

  • 充放電サイクル試験への発展

  • SerialPlotを用いたよりシンプルな表示


👉 IRQのブロックやVrefintの罠、未接続時の挙動など、いくつもの小さな落とし穴を越えて完成した今回の放電器。
Tera Term+Excelでリアルタイムに放電カーブを記録できるようになり、今後のバッテリーテストがグッと進めやすくなった🔋✨