ここでの取り組みは、インターフェース2020年3月号を参考にしています。
【走行制御の基本メカニズム】
カメラを使った自動走行には、白線検出してラインをまたいで走行したり、ライン間の中央を走行させたりするのが一般的ですが、今回はARマーカを張り付
けたブロックをいくつか置くだけで、その周りを自立走行させるものです。
ARマーカーには、ID番号が振られており例えば右側に偶数番号、左側には奇数番号を置くことで進行方向、コース位置などを知ることができます。
ここでの進め方としていきなりロボットカーを製作するのではなく、個別ユニットの確認をしながら機能を高めていく方向としています。
カメラによる自立走行ロボットのキーテクノロジーとしては画像処理がありこの部分を徹底して確認していきます。
【 制御プログラムの構成&開発環境 】
制御CPUにRaspbrryPi3を使用しますが、クライアント処理(後述記載)は外部PCで処理をします。
従ってプログラム処理としては、「サーバー処理」、「クライアント処理」「画像処理」と大きく3つのブロックに分かれます。
1.車体側(RaspbrryPi側)で動くプログラムが、サーバーになります。
サーバープログラムの役割は、画像を基にした信号処理とモーター制御です。
取得した画像を基に find_marker モジュールで、OpenCV を用いてマーカー検出を行います。
次に undistort_points モジュールを利用して検出したマーカーの座標からレンズ歪を考慮して歪成分を取り除きます。
その後 track_marker モジュールで車体の自己位置推定とマップ生成を行います。
最後に follow_path モジュールで制御量を計算し、moter_ctrl モジュールから GPIO 制御ライブラリ( pigpio )を呼び出すことでモーター制御を
行います。
この時画像取得に著者自作の、raspivideocap というライブラリを用います。
このライブラリでは、RaspbrryPi用のマルチメディア・ライブラリである MMAL の関数を呼び出すことで画像を取得しています。
サーバプログラムは WiFi 上のソケット通信を介して、PC上のクライアントプログラムと通信を行いますが、それにはサーバとクライアント共通の
comm_socket モジュールを使用します。
<プログラムの入手>
著者のGitHubにプログラムが公開されています。 https://github.com/coyote009/coyote_racer
上記に加えて画像読み込みライブラリも公開されています。https://github.com/coyote009/raspivideocap
OpenCV を Raspbian でインストールする場合、Linuxの通常の apt-get は、Ver 2.4 系しか使えないのでソースコードをダウンロードしてビルドする必要
があります。
Raspbian 公式サイトからのダウンロードは1時間程度かかり解凍もWin10標準解凍ツールではエラーとなるので、7-Zipによる解凍が必要(Fullパッケージ)
日本ミラーサイトでは、数分でダウンロード終了するがファイルサイズが半分(関連ライブラリ数が少ない)

今回は、正式版のフルサイズRaspbianを使用します。SDカードフォーマット後、書込みを行います。(7.4GB)
RaspbrryPiにSDカードを立ち上げ各種設定後、困った事は日本語選択して表示は日本語表記されているが日本語入力できない事です。
次の操作が必要です。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ibus-mozc
sudo reboot
OpenCVのインストール方法
https://docs.opencv.org/3.4.3/d7/d9f/tutorial_linux_install.html

[コンパイラ]をインストールする。
sudo apt-get install build-essential OK、問題なくインストール完了
[必須]ツールをインストールする。
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev OK、問題なくインストール完了
[オプション]をインストールする。
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
一部のファイルのダウンロードでエラーが出ていたが、時間をおいて再実行し正常終了した。
<OpenCVのソースコードを入手>
作業ディレクトリとして「work」を作成
mkdir work 作業エリアとして「work」ディレクトリを作成
cd work 作業ディレクトリーへ移動
git clone https://github.com/opencv/opencv.git GitHubのOpenCVからクローン作成
git clone https://github.com/opencv/opencv_contrib.git

<CMakeを使用してソースからOpenCVを構築する>


これでOpenCV+拡張モジュール共にビルド完了できたのか不明だが、次のステップに進み確認していきます。