ハードウェアセットアップ
ライトローバーにカメラを取り付けます。以下の手順で作業を行ってください。
カメラのマウントをライトローバー本体にM3ネジとナットで固定します。

Raspberry Piの所定の位置(画像赤丸)にカメラのケーブルを差し込みます。
コネクタのロックを引き上げます。

カメラのケーブルをコネクタが見えている側がRaspberry PiのHDMI端子側になるように差し込みます。
この時、しっかり奥まで差し込みましょう。

ケーブルを差し込んだら先ほど外したコネクタのロックを下ろします。

以上でハードウェアのセットアップは完了です。
カメラで色認識をしよう
赤い物体を認識し、それを追跡するサンプルプログラムを用意しました。
ライブラリのセットアップ
ROSでカメラを利用するために必要な各種ライブラリをセットアップしていきます。
なおここからの操作にはインターネット接続が必要です。
まずRaspberry Pi版のlibcameraとrpicam-appsをビルドするために必要なライブラリをインストールします。
次のコマンドを実行します。
sudo apt install -y \
git build-essential meson ninja-build cmake pkg-config \
python3-yaml python3-ply python3-jinja2 python3-pip \
libboost-dev libgnutls28-dev openssl libtiff-dev pybind11-dev \
libglib2.0-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libdrm-dev libexif-dev libjpeg-dev libpng-dev libepoxy-dev \
libavcodec-dev libavdevice-dev libavformat-dev libswresample-dev \
qtbase5-dev libqt5core5a libqt5gui5 libqt5widgets5
次にRaspberry Pi版のlibcameraをインストールします。
まず以下のコマンドでGithubからソースをクローンします。
cd ~
git clone https://github.com/raspberrypi/libcamera.git
cd libcamera
ビルドします。
meson setup build \
--buildtype=release \
-Dpipelines=rpi/vc4 \
-Dipas=rpi/vc4 \
-Dv4l2=true \
-Dgstreamer=enabled \
-Dtest=false \
-Dlc-compliance=disabled \
-Dcam=disabled \
-Dqcam=disabled \
-Ddocumentation=disabled \
-Dpycamera=enabled
ninja -C build
sudo ninja -C build install
sudo ldconfig
次にGithubからrpicam-appsのソースをクローンします。
cd ~
git clone https://github.com/raspberrypi/rpicam-apps.git
cd rpicam-apps
ビルドします。
meson setup build \
-Denable_libav=disabled \
-Denable_drm=enabled \
-Denable_egl=enabled \
-Denable_qt=enabled \
-Denable_opencv=disabled \
-Denable_tflite=disabled \
-Denable_hailo=disabled
meson compile -C build
sudo meson install -C build
sudo ldconfig
/boot/firmware/config.txtの31行目を下記の内容に変更
camera_auto_detect=0
さらに下記の内容を追記します。
dtoverlay=imx219
下記のコマンドを実行してください。
sudo usermod -aG video pi
sudo reboot
次に各種パッケージをインストールします。
ターミナルで以下のコマンドを入力し、image-commonパッケージをインストールします。
sudo apt install ros-jazzy-image-common
次にcamera-rosパッケージインストールします。
sudo apt install ros-jazzy-camera-ros
vision-opencvパッケージをインストールします。
sudo apt install ros-jazzy-vision-opencv
最後にimage-pipelineパッケージをインストールします。
sudo apt install ros-jazzy-image-pipeline
サンプルプログラムのインストール
ライトローバーをカメラを使用して動作させるためのサンプルプログラムを準備します。
ターミナルで以下のコマンドを入力し、ros2_wsへ移動します。
cd ~/ros2_ws/src
以下のコマンドでGithubからlightrover_cam_optionパッケージをクローンします。
git clone -b jazzy https://github.com/vstoneofficial/lightrover_cam_option.git
ビルドします。
cd ~/ros2_ws
colcon build --packages-select lightrover_cam_option
続いて、導入したpythonスクリプトに以下のコマンドで実行権限を付けます。
sudo chmod +x ~/ros2_ws/src/lightrover_cam_option/scripts/*.py
サンプルプログラムの実行
次のコマンドでサンプルプログラムを実行しましょう。
sudo chmod 777 /dev/i2c-*
. install/setup.bash
ros2 launch lightrover_cam_option rover_cam.launch.py
サンプルプログラムを実行すると、画面にカメラの画像が表示されます。
赤い物体がカメラの画像内に表示されると、その部分が赤枠で囲まれ、
それに追従するようにライトローバーが動作します。
サンプルプログラムを変更することで、別の色の物体を追跡することなども可能になります。