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

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

RaspberryPi 4でRealSense viewerは動きます🍓📷 (Bookworm・RealSense)

既視感があると思いますが、librealsenseはRaspberryPi Bookwormで動きます(RealSense・Raspbian) - えいあーるれいの技術日記 の続きです。

実は、これ関連であともうひとネタあるのですが、こちらは来週に投稿できればなと思います。

つまり、今月は3週連続RealSense… 📷😇📷

RealSenseニキに喧嘩売っちゃったし、仕方ないね。


RealSense Viewerとは?

RealSense viewerはIntel RealSenseがリリースしているGUIアプリケーションです。

静止画・動画 (rosbag)の撮影、3Dプロット・ヒートマップで問題の解決策を探ったり、結構このアプリケーションでできることは多く、あのGUIアプリに助けられている人は多いと思います。

ちなみにオープンソースです。

github.com

RaspberryPi Bookwormで動かしてみよう!

先週、「librealsenseはRaspberryPi Bookwormで動きます」と言いましたが、初心者向けを謳うのであればやはりGUIのサンプルが動いてくれないと困りますよね。論より証拠という言葉もありますし。

…というわけで動かしてみました❗️

GL系のライブラリ大丈夫かなぁと思っていましたが、結果は問題なしでした。

私の環境はX11でテストしています。もし動かなかった場合はWaylandから切り替えてみてください。


インストール方法

以下のリポジトリにも同様のインストール方法が載っています。

installer/02_librealsense/README_Raspbian.md at main · Ar-Ray-code/installer · GitHub

なお、バージョン互換性の関係上、T265のサポートはしていません。

動作確認環境

『サポートしてます!』というにはちょっと動作テストが足りなすぎるので、参考程度に。

大体のbookwormで動くバイナリ、ubuntu22でも動くので、個人的にはRock5でも動くといいなぁと思ってます。

インストール

クリーンインストールしたRaspberryPi OS Bookwormに独自ビルドのlibrealsenseをインストールします。

cd ~/
wget https://s3.ap-northeast-1.wasabisys.com/download-raw/dpkg/librealsense/debian/bookworm/librealsense-rsusb-app-bookworm-2-54-2-arm64.deb -O ./librealsense.deb # 2.54.2 / bookworm
sudo apt install ./librealsense.deb
sudo ldconfig # librealsense-glのリンクエラーの解消

# udev-rulesの適用
sudo curl https://raw.githubusercontent.com/IntelRealSense/librealsense/master/config/99-realsense-libusb.rules --output /etc/udev/rules.d/99-realsense-libusb.rules
sudo udevadm control --reload-rules
sudo udevadm trigger

これでOK。

実行

realsense-viewer

補足1:ビルド環境

ターゲットボード:RaspberryPi 4 OS:RaspberryPi OS Bookworm (debian12)

ビルド対象:librealsense v2.54.2

ビルドレシピは非公開ですが、大体はIntelのページを見れば分かります。

Linux/Ubuntu - RealSense SDK 2.0 Build Guide

補足2:CPU使用率

おそらく2Dレンダリングのお話

  • RGBD:約200%
  • depthのみ:約70%
  • colorのみ:約110%

解像度を落とすと結構収まりが良くなりそう。


さすがにIntel側がARM最適化をしているとは思えないので、困ったらCeleronとか使うといいと思います。

スティックPCとかであれば2万くらいで買えるのでおすすめ。省電力に振ればARMボードと電力・コスパ勝負できなくはない…?レベルになります。

ar-ray.hatenablog.com

librealsenseはRaspberryPi Bookwormで動きます(RealSense・Raspbian)

みなさん、楽しいAIカメラライフを送っていますか?

現在、私は「RaspberryPi OSではじめるROS2」のbookworm版を書いています🥫😇🥫

↓過去のZenn Bookはこちら

RaspberryPi OSではじめるROS2

昨年は、RaspberryPi 5の発表と同時にdebian bookwormのRaspberryPi OSがリリースされており、これまでのROS 2バイナリでは動かない可能性があります。


Bullseye→Bookworm間でハードウェアのEOLや新しいハードウェアのサポートなどROSが関係ないところもカバーしているこの本的にはBookwormで一通り動作確認できないとまずいというわけです。

妥協はしたくありませんが、年度末までには完成に持っていきたいと思っているので頑張っていきたいと思います💪(もちろん 迷い猫㌠の方も頑張りますよ)


RealSenseドライバも結構頻繁に更新されているようで

RealSenseを扱う際にお世話になっているであろうドライバ「librealsense」、コード構造がぐちゃぐちゃだったり、サポートが切れたコードはごっそりと削除したりとちょっと嫌な部分がありますがクロスプラットフォームで使えるとてもとてもいいライブラリです。

もちろんRaspberryPi OSでもビルド・実行できます。

2024/1/6現在の最新バージョンはv2.54.2です。

GitHub - IntelRealSense/librealsense: Intel® RealSense™ SDK

RealSenseをROS 2で使用したい場合は、realsense_rosを使用されると思いますが、このROSパッケージはlibrealsenseに依存しています。

dpkgでインストールされる場合はあまり気にならないかもしれませんが、このROSパッケージはlibrealsenseのバージョンに強く依存しており、現在のrealsense_rosのdevelopブランチは2.54.2でしかビルドが通りません。

なので、過去記事の通りにインストール手順を踏むと(原因が分かりやすいとはいえ)間違いなくビルドでコケてしまうという厄介仕様。

そのため、Bookworm対応のためにもう一度クリーンビルドする必要があります。


ビルド環境

  • コンピュータ:RaspberryPi 4
  • OS:RaspberryPi OS Bookworm (debian12)

  • ビルド対象:librealsense v2.54.2

ビルドレシピは非公開ですが、大体はIntelのページを見れば分かります。

Linux/Ubuntu - RealSense SDK 2.0 Build Guide


librealsenseのインストール

dpkg経由でドライバインストール

ROS 2で動かす最低限のlibrealsenseはdpkgでインストールできます。

こちらにもURLは載せますが、最新のURLはAr-Ray-code/installerから取得してください。

github.com

現時点では、pyrealsenseやtools、v4l2-backendを含んでいません。本当に最低限。

2.54.2・arm64:URL

取得したURLで次を実行

wget <取得したURL -O librealsense.deb
sudo apt install -y ./librealsense.deb

/usr/local/以下を弄るため、このディレクトリに色々と突っ込んでる人は注意してください。

udev-rulesの更新

udev-rulesも更新しておきます。

ウェブカメラとしてアクセスする場合は不要です。

sudo curl https://raw.githubusercontent.com/IntelRealSense/librealsense/master/config/99-realsense-libusb.rules --output /etc/udev/rules.d/99-realsense-libusb.rules
sudo udevadm control --reload-rules
sudo udevadm trigger


realsense_rosのビルド

rpi-bullseye-ros2のbookworm・Iron版をインストールした後に次の依存関係をインストールします。

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src

git clone https://github.com/IntelRealSense/realsense-ros -b ros2-development
git clone https://github.com/ros/diagnostics.git -b ros2
git clone https://github.com/ros-perception/image_common.git -b iron
git clone https://github.com/ros-perception/vision_opencv.git -b iron

cd ~/ros2_ws

source /opt/ros/iron/setup.bash
colcon build

これで全部の依存関係が通ればOK。通らなかった場合は原因を調査して再度ビルドします。

実行

source ~/ros2_ws/install/setup.bash
ros2 launch realsense2_camera rs_launch.py

rqt_image_viewは入っていませんが、Rviz2で可視化はできます。


GitHubからのお年玉?と思ったらスパムだったので通報した話

新年あけましておめでとうございます。今年は昨年の活動をベースにより一層いろんな場所に足を運びたいと考えています。


今年は元旦に石川県沖の地震があり、かなり混乱しているようです。

熊本地震を間近で体験した私としては、この混乱時にSNS上の発信やリアクションは余計に情報を錯綜させてURL先のサーバに当事者がアクセスできなくなるなどの悪影響が懸念されます。

そのため、Xでは周知の通りですが、当面のSNS活動を自粛しています。地域外の私ができる数少ない協力だと考えています。(もちろんこの投稿は、1月中旬までXに共有されていないと思います)

ご理解いただけると幸いです。

なお、クローズドなSNSであるDiscord上(NITK.K ROS-Team discord)では元気いっぱい投稿しています。


GitHubのissue欄からのメール!?

新年始まって早速issue通知がメールで飛んできました。

早速仕事しているヤバい人がいるもんだと感心しながら、メールを開くとなんということでしょう!

1500ドル相当のブロックチェーンが当たったではありませんか!?🤑🎉

…なんて感心している場合ではありません。

とりあえずそのissue欄(なぜissue?)に行くと、全く関係ないリポジトリの全く関係ないアカウントが全く関係ないアカウント(20個くらい?)に向けてそのメンションをつけていました!


そう、これはスパムです。

Xでは怪レいスパムを大量に見ますが、まさかのGitHubでこれを見ることになるとは思いませんでした。


…ということで通報

送信元のプロフィールを見る感じ、乗っ取りの可能性があったので、特に警告することもなくユーザを通報しました。(👎と😕はつけましたw)

送信した文章です。適当にdeeplに入れた機械翻訳仕様です。

Reason
I want to report another type of malicious code.

Comments
The content of the URL in question is posted in the issue section of a completely unrelated GitHub project and is tied to a completely unrelated account (including mine).
However, the maliciousness of the site has not been investigated by me.

I'm reporting this post because it is inappropriate, whether beneficial or not.

<該当のURL>

これを投稿した30分後にGitHubサポートからメールが。

GitHub利用規約に対する 1 つ以上の違反が発生したと判断し、それに応じて適切な措置を講じました。』

とあったので、どんな措置が講じられたのやらと見に行ったら、そのポストは削除されていました🗑️。

さらにアカウントを見に行ったら見事に削除(BAN)されていました🙃


GitHubサポート、仕事はやすぎです。

もしかしたらこの類のスパムは結構あるのかもしれませんね。

とはいえ、ネットリテラシー上位層しかいなさそうなGitHubでスパムをするというのは効率悪いのでは?と素人ながらに思うのです。


誰が発信したのかは必ず確認!

令和5年警察白書を見るとサイバー犯罪については増加の傾向にあり、今後も詐欺とともに重要なトピックです。

インターネットの情報に関しては、発信者の情報を多方面から確認して安易にクリックしたり情報登録しないよう心がけたいですね。

おそらくこの地震に関しても、誰なのかはっきりしない人が真偽不明の情報を発信してインプレッションを稼いだり混乱を誘発することは容易に想像できるので、注意したいところです。


…という観点から見ると、そのような怪しいアカウントって、もしかしたら私のようなアカウントのことを指すのかもしれませんね🙃

クリスマスプレゼントにぴったり?なメカナムロボットを買った(電子工作日記)

メリークリスマス🎄

みなさんいかがお過ごしでしょうか?

私はクリボッチです😇


まさかのSNSですら煽られまくるようになってしまい、既にメンタルは限界、ボロボロです…😭

来年こそは!?と意気込みたいところですが、人生に当事者意識がないところをまずはなんとかせねばなりませんね…


ロボット界のTLで話題?になった激安メカナム

11月下旬に私のTLで話題になっていた3000円のメカナムロボットを購入しました。

めっちゃ安いですよね。モータ付きで4で割ったら700円ちょっとはすごい。

Amazonで購入。買い尽くされたのか、現在では購入不可でした。


届いた!

1週間くらいかかりましたが、届きました。

説明書を見ながら組み立てました。

申し訳程度の日本語訳の説明書です。組み立て手順は写真で分かりやすかったので、正直翻訳はいらなかったです。

穴ピッチとかはかなり雑で、2箇所リーマーで削る必要がありました。


足回りの組み立てをしました。

コントローラ類は認証的に使えない類だと判断し、スキップ。

今まで見た格安ロボットの中でも足回りの出来がダントツに良いです。サスペンションあるの凄すぎでしょ。


ちなみに、砲台部分はロボコンの参考になるかなーと淡い期待を持っていましたが、別にすごいというわけでもなく。

結局ロボット制作のモチベ低下の原因は片付けが面倒なところにあると思うので、射撃部分についてはレーザーポインタを使って再現で良さそうという結論になりました。


回路のプレゼント?🧦

組み立ててからしばらく放置していましたが、さすがに基板を作らないとなぁと思い立ち、サクッと作ることにしました。

材料は、DRV8835とラズピコW、2つのタクトスイッチに4つのLED(赤x2・青x2)。

ユニバーサル基板は秋月で買ったものですが、寸法はラズピコ以下!


そのため、結構ぎゅうぎゅうに詰め込む羽目になりました。

結果的に省スペース化には成功したのでヨシ!


ロボットにくっつけました。

回路にミスはなく、一応全部のI/Oの動作は確認できました。素晴らしい。


DualShockで動かしたり、micro-ROSでROS2に接続とかして遊びたいですね。


m2 MacではじめるROS 2🍎🐢

MacBookにROS2を入れてみました。

新しいROS2学習の始まりですね👀


m2 MacではじめるROS 2🍎🐢 とは?

MacBookでROS2を動かすことです。

私は元々RaspberryPi OS Bullseye 32bitにROS2をインストールすることに取り組んでおり、その集大成として「RaspberryPi OSではじめるROS2」という資料をZennで公開しています。

zenn.dev

これをm1 mac向けにビルドする手順を書いてる人がいるので、このように呼んでいます。

MacでROSはビルドできない?

MacでROS2を動かしたとだけ書いているということは、元々MacでROS2は動かなかったのでしょうか?

当初はMac OSはTier 1サポートされていましたが、Galactic以降はTier 3(コミュニティレベルのサポート)に格下げされました。

Installing ROS 2 on macOS — ROS 2 Documentation: Dashing documentation

↓ ディスカッション

macOS support in ROS 2 Galactic and beyond - Next Generation ROS - ROS Discourse

どうやらWindowsMacを同時に実機でサポートするにはリソースが足りず、Mac+ROS2に関してアクティブなユーザがそもそもいなかったという背景があります(≒ 実機に搭載している人数が多くない)


しかし、その1年後、M1 MacというすごいPCが出現しました。

現在のMacBookはちょっと高すぎますが、円高だったあの頃では買わないと損レベルの高効率高コスパモデルだったので、これを機にMacBookに乗り換えた方も多いのではないでしょうか?

…そうなればMacをロボットに乗せてROS2を動かす需要も…?となるかもしれませんが、従来の困難にARM64が追加されてさらに実行への道のりは遠くなりました。


常に困難が伴うMacですが、m1チップ以降のMacの効率に魅せられた(?)狂人がやってのけました。

qiita.com

しばらくしてRvizやrqtを動かす狂人も👀

私もやってみました。意外とすんなり言ってうれしみ。


これでメジャーなOS(Ubuntu・Windows11・DebianMac OS)の直ビルドは一通りできるようになりました。

ということで、つまづきポイントをいくつか説明します。


m2 Macのつまづきポイントと対策

いずれの解決策も、一旦ビルドキャッシュを全消し( rm -rf build install log )前提です。

Pythonのリンクが違う

Macにはx86→armの過渡期があり、全てのアプリケーションがarm対応している訳ではない時期があった(多分今も一部はそう)ので、多くの場合はRosetta 2上にx86対応homebrewをインストールすることがあります。

私は、これのせいでcatkinのimportにコケまくっていました。

実行時のエラーの一部↓

"ModuleNotFoundError: No module named 'catkin_pkg'"

そのため、x86のhomebrewを削除します。

arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"

この時点ではRosetta 2 自体はアンインストールされていません。


Rviz2のOgreでエラー

要するにMacの開発ツールキット系のコードを参照しようとしてコケた場合です。(Rviz2は全く関係ない)

Availability.h' file not found

Xcodexcode command lineをインストールします。

執筆時点ではバージョン15です。

Downloads and Resources - Xcode - Apple Developer


empyでエラー

Python3で pip3 install empy を実行すると、empy4がインストールされます。

empy3→empy4間では破壊的変更が入っているため、Mac OS関係なくこれがインストールされると、ROS2の開発用CLIツールがもれなく壊れます。

pip3 install empy==3.3.4 でインストールしましょう。


ようやくMacBookをロボットに搭載できるようになりました。

ア、Macもう一台買わなきゃ…🍎😇💻