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