えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

CoRE-1の近況報告

ほぼ1ヶ月投稿しておらず申し訳ないです🥲

CoRE-1というロボットコンテストの募集から5ヶ月、ついに大会直前です。

ar-ray.hatenablog.com

ここ1ヶ月間は(仕事以外の)書類作成タスクや届いたハードウェアに組み込む作業で全く時間が取れていませんでした…😭


ちなみに、大会が終わっても書類タスクが山積…😇

入門書も書く!と宣言しているだけにまだまだ忙しくなりそうです🥺

週一ペースで投稿とXのプロフィールに堂々と書いていますが、ここ数ヶ月は厳しいなぁと。

ただ、トータルの文章量はブログと同じ(もしかしたらそれよりも多いかもしれない)なので、公開された時はぜひご覧ください🙏


今のコンディション

1ヶ月ほど前にロボットが届いて実装開始!とXでは言いつつ実はかなりやばかったりするのですが、開発自体は着々と進めています。

画像処理

大会の規定上、ソフトウェアの全ての部分にROS 2が使用されています。

ROSはそのままでも割とソフトウェアを切り分けやすいのですが、画像処理部分ではpluginlibを使用してさらにノード内を通信部分とアルゴリズム部分を切り分けています。

GitHub - StrayedCats/detector2d: Detection2d node for CoRE-1 2024

pluginlibは、文字列を引数に渡すことでROSに登録されているモジュールを動的に読み込ませることができる機能です。インタフェース部分は確定しているけどその中身を入れ替えたい時に使用できます。

RvizやRqtで使用されていたりするので、実はROSに欠かせない機能だったりします。

TensorRTのdetectorを作りたい!と思った時は別リポジトリプラグインだけ作って後付けロードが可能なので、依存関係を隔離できるのも嬉しいポイント。

開発者はC++コードとして開発してもらって後でplugin仕様に合わせてライブラリを作ってもらえるので、円滑に開発が進むだろうなぁーと。

xmlのエラーに気づきにくかったりするのは罠かもしれないですね。

そういえば、C++でバリバリ(趣味として)開発する人ってどれくらいいるのでしょうか?Rustの方が受けが良かったりするんですかね?


ハードウェアとの繋ぎ込み

チーム結成当初は、「ハードウェアインタフェースで繋ぐぞ!」と意気込んでいたのですが、現実はそうではありませんでした…

GitHub - scramble-robot/CoRE_AutoRobot_2024_raspberrypi

通信相手をEthernetが付いているマイコンだと思っていたのですが、まさかのラズパイ4でした。(なんなら中で私が作ったdpkgが動いているw🙃)

この大会、ラズパイをしばいた方がいいのでは?と思いつつ開発方針を変更しました。rosbagを取りやすいのはいいですね。


行動計画

BehaviorTree (4) を使っています…が、ちょっとまだ作りこめていないので頑張ります…


開発ツール:AprilTag

特定の画像を使って絶対自己位置を推定する手法(TagSLAM)に使われるAprilTagというものがあるのですが、これをパネルに貼り付けて実験しています。

うまく動かない時に何が間違っているのかが一目で分かるので結構重宝しています。


3/24京都で会いましょう👋

まとまりのない文章ですが、近況報告でした。


3/23に予選・3/24に準決勝・決勝があり、私たちのチームは3/24に参加する予定です。

当日まで非常に忙しくなりますが、ラストスパート頑張ります🏃🔥