コンテンツにスキップ

ハードウェアセットアップ

ライトローバーにカメラを取り付けます。以下の手順で作業を行ってください。

カメラのマウントをライトローバー本体にM3ネジとナットで固定します。

image image

Raspberry Piの所定の位置(画像赤丸)にカメラのケーブルを差し込みます。

image

コネクタのロックを引き上げます。

image

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

image image

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

image

以上でハードウェアのセットアップは完了です。

カメラで色認識をしよう

赤い物体を認識し、それを追跡するサンプルプログラムを用意しました。

ライブラリのセットアップ

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


サンプルプログラムを実行すると、画面にカメラの画像が表示されます。
赤い物体がカメラの画像内に表示されると、その部分が赤枠で囲まれ、
それに追従するようにライトローバーが動作します。

image

サンプルプログラムを変更することで、別の色の物体を追跡することなども可能になります。