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

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

perception_pclにpointcloud_to_pcdのROS 2実装を追加しました

最近、OSSLinux界隈を騒がせているxz-utilsの問題(CVE-2024-3094)がありました。手口の地道さ・巧妙さなども相まって信頼性等に大きな疑念を生じさせている事態になっています。

OSSは含まれていないものを探す方が大変なくらいにはソフトウェア構築で必要不可欠な存在となっています。

使用する側も「よくわからんけど動いた」ではダメですね。


…ということで(?)、私もOSSのどこにどんなことをしたのかというのは逐次報告していきます!🫡

(別に高度なことをしているわけではないですが…)


pointcoud_to_pcdのros2ブランチにpcd保存プログラムを作成

ROS 2の点群処理用ライブラリ "ros-perception/perception_pcl" にはROS 1の時代から使用されてきた点群処理ツールが揃っていますが、ROS 2に移植されていないものも多いです。

pointcloud_to_pcd(pointcloudトピックをpcdに保存するやつ)もその一つで、個人的にRealSenseのデータをもうちょっと扱いやすいフォーマットで保存したいなぁと探していたところ、このツールを見つけたのですが、ROS 1のみだったので移植しました。

1週間前にプルリクを投げ、今日マージしてもらいました。

github.com

基本的な使いかた

pointcloudを.pcdに保存するプログラムなので、もちろんpointcloudトピックが出ていることが前提です。

RealSenseとかは比較的入手性がよく精度の良い点群を出してくれるのでおすすめです。


点群(sensor_msgs/msg/PointCloud2)をsubscribeできるようになったら、pointcloud_to_pclの出番です。

ros2 run pcl_ros pointcloud_to_pcd --ros-args -r input:=/cloud_in \
    -p prefix:=abc_ \
    -p rgb:=false

オプションは次のとおりです。

オプション名 役割 デフォルト
prefix ファイルの先頭に付く名称(パスにしてもよい) '' abc_
fixed_frame 別視点で点群を保存したい場合に使用される基準フレーム '' base_link
rgb RGBの点群を保存できるオプション false
binary ASCIIの代わりにバイナリを使用します false
compressed 圧縮します。binary=trueを前提とします。 false

点群の入力は 'input' なので、remapしてください。

実行すると、中断されるまでタイムスタンプを末尾につけてずっとpcdファイルを生成し続けるので、生成し終わったらCtrl + Cで中断します。


生成されたファイルを見たい場合はPCD Viewerで確認します。

pcl_viewer <path to pcd file>

素晴らしい👏👺🐢


Velodyne (32 line) だと1秒に10枚くらい出してくれました。

RealSenseだと結構遅めだったり、よく分からない角度を正面とするので、static_transform_publisherでフレームを追加したり前処理で閾値を決めてフィルタしちゃうと良いでしょう。

楽しい点群ライフを👋


ブログ5年目。

このブログは開設から4年経過しました。これまでで228本の記事、累計閲覧数 15.1万(1年で6.7万増加)のブログ記事となりました。いつもご覧頂きありがとうございます。

4年前の記事→初投稿 - えいあーるれいの技術日記

3年前の記事→ブログ開設1年。これまでとこれからについて - えいあーるれいの技術日記

2年前の記事→ブログ3年目。 - えいあーるれいの技術日記

1年前の記事→ブログ4年目。 - えいあーるれいの技術日記


素晴らしく順調

昨年は

今年度から社会人(?)で普通に業務に取り組まなければいけませんが、数年間文章を書きつづけられているのでこれからも変わらず書き続けられると思います。

と意気込んでいましたが、質を落とすことなく(なんならインフレ気味)継続できました。

仕事の順調さについても、私の活動範囲とそのスピードが証明していることでしょう。


しかしながらまだまだ足りません。

年間の1/3は体調がよくなかったのですから。昨年の反省を生かしつつ今年は昨年の倍頑張ります。

未知を走る自称若者に甘えなんて許されません(戒め)


軽く振り返り

振り返ってみると、今年は前半節約志向、後半になってようやくまともな技術記事になっていました。

割と本当に財布の余裕がダイレクトに影響するのかもしれない。つらー😇

クレカの上限が20万くらいしかなかった頃に20万くらい月で使って詰みかけていたので大変だった(気がする


ar-ray.hatenablog.com

1年前は通信費もケチっていました。半年前に訪問系セールスに敗北してからは光通信を使っています。快適。

ちなみにルータについては、スマホがないとログインできなかったりとゴミ仕様だったので捨てました。


ar-ray.hatenablog.com

すごく高品質な画像も8GBくらいのRAMで生成できるようになって驚いたのでその画像で壁紙を作っていました。

背景切り抜きについてはiPhonephotoshopで十分対応できてしまうので、この回でLinyax最終回です。


ar-ray.hatenablog.com

1.5万で2560x1600の格安モバイルディスプレイも購入しましたね。

今も大活躍中です。タブレット用スタンドと組み合わせて使っています。


ar-ray.hatenablog.com

みなさんは「からあげ帝国」というのを知っていますか?

ブログ・AIで有名な闇のエンジニアの「からあげ先生」のファンコミュニティです。

私もこの第一回オフ会に昨年参加しました。

このオフ会により、からあげ先生が闇のエンジニアから引退されたお話は後世に語り継がれることでしょう。


ar-ray.hatenablog.com

「ハードウェア方面も力入れたい」と一昨年から思っていたことの第一弾となる記事です。

こういう作業はドライバ作成から始まるので、なかなか作るものがないとモチベにならないのが辛いところだったので、2軸とディスプレイで構成されるスタックチャンは非常にありがたい存在です。

イカーフェアだけでなく深圳にも持っていってもらい、スタックチャンの生みの親であるししかわ様に感謝です🙏

今後とも私が作成される資料にちまちま登場することでしょう。


ar-ray.hatenablog.com

10月末に唐突にロボコンする!と言い出してからもう半年です。時間が経つのは早いですね。

「CoRE-1」(The Championship of Robotics Engineers)というロボット競技が今年から正式に始まりました。

CoREは走行するロボットがフライングディスクを互いのロボットの的に当て合う競技ですが、異なるチームが「同盟」として協力して対戦するルールやエンジニアの活動にスポットライトを当てる評価制度があり、他のロボコン競技とは少し性質が異なります。

core.scramble-robot.org

参加対象が広いことやハードウェアの改造がない自動機ルールなど、ロボット競技の裾野を広げるようなルールメイクに感銘を受けて、エントリー締め切り直前に宣言だけしてメンバーを集めました。


実は、この数日前にはオセロAIを観にクマ財団の展示に行っており、「やっぱ芸術物いいな!芸術家目指しても良さそう!」と意気込んでいました。

もしCoRE-1に参加していなかったら「美術館に行こう」みたいなタイトルと共に自由なものづくりをしたいみたいなことを書いていた説があります🎨🙃

一方で、ロボット競技に登場するロボットもものすごい試行錯誤を経て作成されたものであり、他チームが作ったロボットの理解にはものすごい技術的バックグラウンドと自分自身との対話が必要不可欠です。

つまり、ロボコンのロボットは芸術そのものというわけです(?)素晴らしい。🎨🙃


たまたま答えが近くに落ちていたのでしょうか?それともただの勘違い?

少なくともこのようなきっかけになったCoRE運営の方々とクマ財団の展示に行くきっかけを与えたにゃにゃん様には感謝です。


ar-ray.hatenablog.com

元々お金ない学生だったこともあり、価値観がコスパに歪められまくっている悲しい運命ですが、バッテリーがついているならとちょっと奮発しました。

時代はやっぱりコードレスですね。

これをきっかけに品質も重視するようになり、最終的にはiPhone15Proを勢いで購入するまでになります😇


ar-ray.hatenablog.com

この記事を書いている途中、作っておいてほとんど動かしていないことに気づきました😇

急ぎでDynamixelに交換しなければ(コスパisどこ)…


ar-ray.hatenablog.com

2024年1月はRealSense芸3連発をしていました。

実は最新のカーネルだとRealSense 2台接続しても動くというものです。

RaspberryPi5だともっと快適に動くのかもしれませんね😉


ar-ray.hatenablog.com

2月もRock5しばきしていましたが、ほのぼの回もありました🚎

秋葉には本物の鉄道・バス部品が売っているようなので、ぜひ覗いてみてはいかがでしょうか?


ar-ray.hatenablog.com

実は2023年末にティア某のロボットタクシーのチケットが当たり、乗車体験をしてきました。

人が手を触れない自動運転が日本で見られて満足でした。

さまざまな課題を解決して社会実装される日が来てほしいですね。


ar-ray.hatenablog.com

CoRE-1(自動)に出ます。助けてください!🙏 - えいあーるれいの技術日記 の本番です。

私の力不足もあり、なかなかいいパフォーマンスを発揮できず直前まで調整をしていましたが、久々の限界開発ができて楽しかったです🙃

来年までにソフトウェアやデモ・広報などに力を入れて、注目されるようなチームにしたい!と強く思いました。

今年は集めたパーツでつくチャレ…を考えていましたが、しばらくはCoRE-1の方優先したい!フルコミッターが複数人求められる🙏

部品は全部自分が出せます。


今年度の方針

今年度は昨年からさらに踏み込んでマイコンLinuxの低レイヤ部分に注力したい!と考えています。

必ず強くなって見せます🙇


さいごに

そもそも私のこれからに興味がある人っているのでしょうか?

いてもいなくても一切理解できない、ひねくれ系よわよわエンジニア🐣ですがこれからもご期待ください。


CoRE-1 2024(2日目)

1日目:CoRE-1 2024(1日目) - えいあーるれいの技術日記 の続きです。

2日目は、CoRE-1 2024の準決勝・決勝でした。


我が自動機チーム「StrayedCats」は、自動機チームとして敵味方問わずボールを射出するチームです。

準決勝は10時からでしたが、まだ万全とはいえない状態であったので、会場着から準決勝開始までの1時間を使って最終調整を続けていました。

午前中の調整

いざ出陣…😇

これで何とかなるだろう!と思っていたのですが、そんなことはありませんでした😇


まずはボール詰まりです。

事前に装填された5発以上飛ばないという事象が多発し、これの対策を毎試合ごとに行っていました。

これについては給弾機構がうまく動かせていなかったことに原因があったのですが、大会前にしっかりと確認しなければならなかった項目だったので、大会当日の対策ができていないことが早速出てきました…

自動機調整の様子

色々ボール数や位置を調整して決勝では一応20発くらいは撃てるようになりました。

ただ、ロボットの動きに反応しているとはいえ、全く見当違いな場所に撃つこともしばしばありました。

つまり「何か考えているようで何も考えていないロボット」です。

ある意味チーム名通りのロボットかもしれませんが、思い描いたロボットの動きとは程遠い結果となってしまいました。

チームメンバーおよび出場者に非常に申し訳ないことをしたなと思います。すみません…🙇


一方大会では昨年からパワーアップした手動機が活躍していたそうです。

先に3勝した方が優勝となる決勝戦では、青陣営が2勝してこのまま優勝…と思われたところ赤陣営がその後2勝するという熱い展開になったそうです。

私はずっと自動機の挙動を見ていたのでその現場を満足に見れませんでしたが、この試合を見て参加したい!と思ってくれる人が増えると嬉しいですね。


来年こそは

自動機チームは、チーム結成から制作・大会本番まで多くの異例・トラブルに巻き込まれ(巻き込み)ながらも一応全試合をこなすことができました。

大会運営の関係者や頼もしいチームメンバーのおかげだと思います。

ありがとうございました。


個人的には、期待される動きを全くできずに大会を終えてしまったことに悔いが残っているので、来年再チャレンジします。

大会中は頭を抱える機会が非常に多い情けないリーダーでしたが、5年前のロボコンのような限界開発を行えた喜びでモチベーションが爆上がり中です。

頭を抱えるチームリーダー

しかしながら、メンバーがいなければチームを存続させることは難しいのも現実です。

来年の今頃は受験・就職活動で忙しい人もいるので、メンバーが減ってしまいます。

選手としてのメンバーをまた募集したいと思っているので、お声がけいただけるととても喜びます。

ちなみに、来年の大会ではもっとアクセスの良い場所で行われるそうなので、続報に期待ですね。

core.scramble-robot.org


未来に繋げた…かな?

以前の記事でも説明した通り、この大会ではハードウェアに関して一切開発を行わない自動機チームがあります。

ロボコンなのにハードウェア開発禁止!?とロボコン経験者は思われるかもしれませんが、これはむしろ参加のハードルを下げてロボコンの裾野を広げられる重要な役割を果たすと考えています。

実際、今回の大会で自動機に興味を持ってくださった方もいたので、(1チームだけの参加でしたが)私が飛び込み参加した意義は大きいのかなと感じています。

…これが評価されるのは早くて1年後、もっとかかるかもしれませんが

来年に向けて、シミュレータや開発環境の改造に取り掛かりたいなと考えています。


また、大会期間中rosbagをかなり収集しました。2台合わせて600GB程度あり、RealSenseの点群を生かした画像処理には十分な量だと思います。

そもそも使えるデータなのかや取扱いは決まっていませんが、開発を支えるツールやデータが揃ってくると参加しやすいのかなと思います。


しばらくはまた別の書類タスクが発生するので、進捗は鈍くなりますがこれからも頑張ります。

ご期待ください!


交流会

大会翌日は交流会でした。

大会後すぐ撤収するチームが多かったので、ロボットは少なかったですが、機構の解説などがあり興味深いものばかりでした🤤

高専生チームのロボット。連射がすごい

CoRE-1用に作成されたロボットアーム

以上、CoRE-1 2024の報告でした。また来年、京都で会いましょう👋

CoRE-1 2024(1日目)

(前回の記事:CoRE-1の近況報告 - えいあーるれいの技術日記

みなさん、おはようございます😀

昨日はCoRE-1 2024の1日目でした。雨天&春とは思えないほどの寒さでしたが、会場内では、非常に熱い戦いが繰り広げられていました。

core.scramble-robot.org

CoRE-1では、集まった20チームの中から総大将を決める「総大将決定戦」と、その総大将を中心として結成された計4チームで優勝を目指す「準決勝・決勝」があります。

1日目は、総大将決定戦が行われ、優秀な成績を残した4チームが出揃った状態になります。

そして2日目は、ついに我々自動機チームが出場します。お楽しみに!

大会の様子は #CoREjp(X)YouTubeライブ配信でチェックしてください。


前日から超トラブル続き…

…と調子の良いことを言っていますが、実際はかなりヤバかったり。初日からトラブル&調整続きでした。

運送時の揺れから、PCのクーラーが外れていたり、ディスプレイ出力がうまくいっていなかったり、提供されたハードウェアの個体差で同じプログラムで全く異なる動きをしていたり…

デバック作業が難航しまくっており、これが𝙏𝙝𝙚 𝘾𝙝𝙖𝙢𝙥𝙞𝙤𝙣𝙨𝙝𝙞𝙥 𝙤𝙛 𝙍𝙤𝙗𝙤𝙩𝙞𝙘𝙨 𝙀𝙣𝙜𝙞𝙣𝙚𝙚𝙧𝙨かーと頭を抱えながら作業していました😇

会場でお待ちしています!

とはいえ、ギリギリの調整を経て、なんとか動く状態には持っていけています。

同盟チームの優勝の行方も見守りつつ、ぜひ自動機の動きにもご注目ください!

ステッカー(会場で配布しています)

ロボットタクシーに乗ってきました

ティア某(ティアフォー・TIER IV, Inc.)の自動運転技術を活用したタクシー「ロボットタクシー」の試乗会に参加する機会を頂き、試乗しました🚕

米・中から遅れを取っているとしばしば言われる日本ですが、自動運転はもうすでに来ているんだなぁと感じさせられる試乗会でした。


なぜ乗れたのか?

イベントのプレゼントキャンペーンに「ロボットタクシー試乗券」があり、これに当選して乗ることができました。

medium.com

オープンソースな自動運転ソフトウェアをベースに、その技術・実装力に注目が集まっているティアフォーは昨年10月に自動運転「レベル4」の認可を受けました。イベントは、このプレスリリースに関連したものです。

prtimes.jp


レベル4

国土交通省の資料によると、レベル4は「特定条件下においてシステムが全ての運転タスクを実施」と位置付けられており、レベル4での運転中は人による介入が発生しません。

レベル3と異なり、開発・製造側の責任が非常に大きいことや認証プロセスが非常に難化するため、技術・法整備両面でこれを支えなければなりません。

4が実用化されたケースはとても少なく、日本でも2023年の4月施行の改正道路交通法によって認証を通せるようになったばかりです。


他の景品も魅力的なものばかりでしたが、体験はプライスレス。お台場に向かいました。


いざ試乗🚕

平日のお台場のタクシー発着所でタクシーを待つことに。

この日は晴天でした。最高のタクシー日和ですね(?)

お台場のタクシー停留所にて

タクシーの外観、点群が大量に出ていそうなタクシーです。

一番上に載っているLiDARは上下方向に128ライン取得可能だそうです。

社内モニタには見たことあるような車両ステータスと周辺環境の画面が映っていました。

画面上ではリアルタイムに交通状況や車両の状態が分かるそうです。

運転経路を指定したら、自動でハンドルやアクセル・ブレーキを操作して運転してくれます。


特にすごいなぁと感じたのは、右折時の対応です。

右折時に対向車の動きを見て的確に右折を行っているようです。

対向車が見えなくなって動こうとしたところ、バイクが接近してくることがあったのですが、これにもしっかりと対応してブレーキを踏んでいました。

右折時

ただ、対向車が非常に多い状況下では右折中に赤信号になってしまうケースがあり、この時は詰んでしまいます。

地域特性や混雑を避けた運転など工夫が必要そうですね。


早くロボットタクシーで移動できる時代来ないかな🤤

今回の試乗を通して、結構「安心感」がありました。

タクシーは意外と飛ばしてくれたりすることを考えるとロボットタクシーは結構慎重な方です。

しかし、無人だとそちらの方がかえって安心感を得られる気がしますね。


自動運転は既に技術としては確立しており、あとは法整備など含めて、社会がどう受け入れるかにかかってる気がします。

自動運転が一家に一台になる日は来るのでしょうか?来てほしいなぁ🤤