2025年11月3日月曜日

中部地区大会2025

 (関西地区大会とreRo杯のこと書くの忘れてた… 関西は昨年と同様大盛況だった。reRo杯は別競技が同時開催されているなど、楽しい大会です。)

2022年以来、3年ぶりに中部地区大会に参加。いつものマイクロマウス・ロボトレーサに加えて、カメラとJetsonを搭載したロボトレーサもエントリー。ロボトレースで2位に入り、マウスとカメラトレーサも特別賞をいただいた。

それぞれ課題点が判明したので、(すぐはちょっと難しいが)対応したい。

カメラ搭載ロボトレーサ JetRT

前回のreRo杯では1.4kgの文鎮になってしまっていたが、今回は何とかライントレース、マーカー検出等ロボトレース完走に必要な最低限を実装したうえで臨んだ。R10直後にコーナーマーカー、ゴールマーカーが10cm間隔で連続するところが難しく(誤ってクロスとして検出してしまう)、ひやひやしたが、何とか完走できた。Jetsonを活用しようとするチャレンジ精神を評価いただき、特別賞をいただいた。

ロボトレーサ L1S

吸引力を4.2V相当でセーブしていたのを6Vまで引き上げた。ただ結局完走できる速度設定の限界は変わっていない。色々あって本当にただ上げただけになってしまったので余裕ができたらいろいろ調べたい。2位。

マイクロマウス β2

ターン連続の後の斜めで引っ掛かり、かなり速度を落としたパラメータのみで完走。かなり速度を落としたパラメータでも結構怪しかった。要検証。非中部支部員の中で(3番目に)良い成績だったということで特別賞をいただいた。

大会を運営してくださった皆様、ありがとうございました。

2025年11月2日日曜日

Jetson Orin Nano (Super) 開発者キット セットアップメモ

JetPack のインストール

 https://www.jetson-ai-lab.com/initial_setup_jon.html に従う。micro SDカードは128GBのものを使用 

ArduCam用のライブラリのインストール

https://docs.arducam.com/Nvidia-Jetson-Camera/Jetvariety-Camera/Quick-Start-Guide/ に従う。 


OpenCV 4.11 等を使う場合、サンプルコードそのままだとuint8型の配列として結果が返ってくるので、後処理でuint16配列に変換。

if frame.dtype == np.uint8 and frame.size == int(w) * int(h) * 2:
    frame = np.frombuffer(frame, dtype=np.uint8)
    frame = frame.view(np.uint16).reshape((int(h), int(w)))

大会会場でラップトップPC→JetsonのSSH接続

自宅で使用しているルーターを持ち運び、自宅と同様の無線LAN環境を構築することで対応。インターネット接続が必要な作業はスマホのテザリングで対応。 

Docker

2025年6月時点の最新のjetpack だと iptable 関係のエラーが出るので、docker をダウングレードして対処。 https://forums.developer.nvidia.com/t/error-with-nvidia-container-runtime-with-docker-integration-on-agx-orin-with-jp6-2/324558/16 

sudo apt-get install -y docker-ce=5:27.5.1-1~ubuntu.22.04~jammy --allow-downgrades sudo apt-get install -y docker-ce-cli=5:27.5.1-1~ubuntu.22.04~jammy --allow-downgrades sudo apt-mark hold docker-ce=5:27.5.1-1~ubuntu.22.04~jammy sudo apt-mark hold docker-ce-cli=5:27.5.1-1~ubuntu.22.04~jammy

dusty-nv/jetson-containers: Machine Learning Containers for NVIDIA Jetson and JetPack-L4T を使用し以下のオプションでイメージをビルドすることで、ROS2-jazzy や OpenCV (CUDAあり) が使用可能なイメージを作成 (numbaやpytorch、gsplat はただの個人の趣味で、今のところロボットとしての動作には使っていない)。
LSB_RELEASE=24.04 jetson-containers build --name=my_ros2 pytorch numba opencv gsplat ros:jazzy-desktop


GPIOの権限については、ホスト側でgpio グループのGID を201000 (自動設定されるGIDと被らない)に設定したうえで、コンテナ側のユーザーubuntu (1000:1000)を2010000のグループに設定することにより、 Docker 内の一般ユーザーubuntuからGPIOを叩くことが可能になる。

ハードウェア仕様


PWMの有効化

sudo /opt/nvidia/jetson-io/jetson-io.py で設定できる。
カメラドライバとの共存が難しかったため、以下のGPIO Output と同様にレジスタを直接操作することで設定。REVD0 を GP に、 PUPD を PD に、 GPIO_SF_SEL を SFIO に設定すればいい。

変調周波数がかなり離散的にしか設定できず、ステッピングモータの駆動(パルス信号生成)に使うのは厳しかったため、最終的にモータ駆動用にESP32を外付けした。今回の用途には合わなかったが、DCモータの駆動や回転速度を気にしないステッピングモータ駆動であれば十分使えると思う。


GPIO Output の有効化


リファレンスマニュアルを見てGPIO Output を有効にしたいレジスタのアドレスを特定し、busybox devmem でレジスタの値を直接書き換える。
1. Carrier Board Specification と Pinmux Config Template のConsumer Usage を押すと出てくる一覧を確認し、設定したいピンのTechnical Reference Manual (TRM) での名称 (Pin 31 の場合、SOC_GPIO33)を特定
2. TRM 内で検索し、GPIO設定用レジスタのオフセット (Pin 31の場合 0x70) を特定



2025年3月1日土曜日

全日本大会2024

今年度の全日本大会が終了。マイクロマウスは3位、ロボトレースは4位でした。楽しい大会を開催していただき、ありがとうございました。また、試走会・reRo杯という形で調整・交流の機会を設けてくださった大阪電通大 自由工房、千葉工大 reRoの皆様にもお礼申し上げます。これらなしには今回の結果を残すことはできませんでした。

マイクロマウス

3・5走目の走行パラメータは以下の通り。上位2名以外にも走行性能が高いマウスは複数いたため、順位については運がよかった側面が強いですが、大会本番で完走できたことはうれしく思います。

Parameter NameValue
Acceleration [m/s^2] (Straight)35.00
Acceleration [m/s^2] (Diagonal)30.00
Max speed [m/s] (Straight)6.00
Max speed [m/s] (Diagonal)5.50
45 deg turn [m/s] (to diag.)1.55
45 deg turn [m/s] (from diag.)1.48
90 deg turn [m/s]1.74
90 deg turn [m/s] (diag. to diag.)1.38
135 deg turn [m/s] (to diag.)1.51
135 deg turn [m/s] (from diag.)1.53
180 deg turn [m/s]1.60

良かった点

  • 位置ずれに関するフィードバックのかけ方を素直な方法に変更したことにより、目標経路への追従性能が向上した。具体的には Fantom3rd の公開パラメータより少し遅いターン速度(V90を除く)であれば迷路の難易度によらず安定して完走できるようになった。

要改善点

  • 未清掃状態の自宅迷路で調整を行うなどホコリ対策をした上で大会に臨んだが、本番のホコリに耐えられず、探索完了までに3回エラー停止してしまった。
    • 実際にこけているシーンを確認すると、制御が破綻しているのではなくターン後の前壁判定でエラーを起こしている。前壁の判定方法を改良することで対策できるのではないか。
    • エラー停止には至らなかったものの、制御が発散しかけている箇所があった。非吸引時は過度なトルクによる滑りを防止するためにモータの出力を制限しているが、これに加えてアンチワインドアップを導入すると制御を安定化できるのではないか。
    • 横滑り検知か時間経過に応じて走行速度を下げるべきではないか
  • 駆動モータの出力を100パーセント使い切れていない。
    • ターン速をさらに上げようとすると軌道がふくらむ=吸引力が不足しているのではないか。吸引用モータを駆動用と同じ高出力なものにすれば改善するのではないか。
    • そもそも今走っているターン速での挙動も今使っているコーナリングフォースのモデル(スリップ角に比例)とかなりずれている。高速域での挙動のモデル化が真に重要な問題なのではないか。
  • 他の上位のマウスと異なりレーンチェンジではなく外周の長い直線を選んでいたが、あれは本当に速いのか
  • 探索時の、最速経路になりえない部分の枝刈りの強化

ロボトレース

前年度と変わり映えのしない機体・走りではあったが、東日本前に修正した経路生成プログラムにより無理のないショートカット経路が生成できるようになった。ただ、DCX10L 4.5V版と後付けの吸引機構では根本的にパワーが足りない。以下の表において横Gが6Gとなっているが、実際にはトルク不足がボトルネックになっておりほとんどのターンで6Gに全く届いていない。

Parameter NameValue
Shortcut margin [cm]6.5
Acceleration [m/s^2]16.0
Max speed [m/s]7.0
Lateral g Force [G]6.0


2024年12月23日月曜日

東日本地区大会2024

東日本地区大会に参加。かなりタイトな日程ではあったが全日本大会出場に必要なポイントを稼ぐためにトライしてみた(大会前:RT0pt、MM1pt)。


ロボトレースは当日1回目の試走で吸引ファンが故障。また、その修理のためにはんだごてをあてていた際に足回りのギヤを溶かしてしまった。今回は何より完走することが大事だったため、それ以上ハードに手を加えることは諦め、急遽そよ風吸引(実質無吸引)・2輪で出ることにした。1.0m/sで一走目を無事走り切り、1pt確保。試走時の故障のリスクを極力避けるためにショートカット走行については(前日に行った変更点の確認も含め)一切試走・調整は行わず、テキトーに速度を落とした設定を入れるだけ入れて臨んだが、実質無吸引ショートカット走行でも完走。最終的に5位だったらしい。2pt。速いわけではなかったが、ショートカット機が2台しかいなかった(もう一台は某チャンピオン)ということで他の競技者がショートカット走行に取り組むよう促すという意図で特別賞を頂いた。


マイクロマウスは獲得ポイント数も非常に重要(ファイナル・セミファイナルの判定に使われる)なため、さらに保守的な戦略を取った。小手先で何かやるよりも今あるソフトで出せる100%を出すことに集中する方がポイント獲得数の期待値が高いと判断し、何かを変えることはせず、ジャイロ・壁センサ等の基本的な確認・調整だけを行い出走(何かを更新して収束するまで調整しきる時間がないだけとも言う)。青空には僅差で、魔王様と勇者様には大差で負けたが人ベースで4位。多分4pt獲得。rero杯での調整が実り、公式大会でもまともに走ることができたので、そこは素直にうれしい。

結果的にどちらも目標としていたポイントを取ることができた。他の競技者の調子が関わってくるポイント≒順位は究極的には運でしかないが、目的を達成する確率をできる限り上げる方策は取れていたと思う。

2024年12月21日土曜日

移動平均経路生成の修正

スマホのトラブルの後もパソコンの異常に遅い挙動に苦しんだりしたが(今必要ないスタートアップアプリを全て無効化することでとりあえず解決?したように見える。)、とりあえず移動平均でショートカットしすぎる経路が生成されないようになった...と思う。多分。明日再確認と試走コースを使ったテストを行う。




マウスは、、、ジャイロの感度等の基本的な部分の調整だけは忘れず行おうと思います。

電話・SMSがつながらない

 飛行機は問題なく日本に着いたが、故障のためイタリアで買い替えたスマホがデータ通信はできるが通話・SMSが出来ない状態。ヨーロッパでは少なくともSMSは問題なく使えていたが、日本だとだめなのか。特にSMS認証が出来ないのはしんどい。


ロボット関係のデータは全てローカルにある(もちろんバックアップは別にある)ため現金を多めに持っていっておけば多分詰みはしないと思うが、思わぬところで手間取ることになりそう。というか既に家族との連絡に手間取っている。

2024年12月20日金曜日

明後日は東日本地区大会

 明後日の東日本地区大会にエントリーしている。だが、現在地はここ。


試走会は参加できない。旅程通りなら大会当日には間に合うはずだが、果たしてどうなるだろうか。