今回はラズベリーパイ(Raspberry Pi)をコントローラとして動作する4足歩行ロボット、PiCrawlerの自律制御機能の一部が実装できたので記事にしたいと思います。
Raspberry Pi(ラズベリーパイ)とは
Raspberry Pi 5は、Raspberry Pi財団が開発した最新のシングルボードコンピュータで、従来モデルよりも大幅な性能向上を実現しています。
搭載される64ビットクアッドコアプロセッサは、クロック速度が最大2.4GHzに達し、前世代よりも処理速度が格段に向上しました。また、4GBまたは8GBのRAMを選択できるため、教育用途からリソースを必要とするプロジェクトまで幅広く対応可能です。
グラフィックス性能も強化され、4K解像度でのデュアルディスプレイ出力をサポートしています。さらに、新たにPCIeインターフェイスが追加され、外部ストレージや高速デバイスとの接続が容易になりました。Wi-Fi 6やBluetooth 5.2の導入により、無線通信も高速かつ安定。
教育、IoT、AI開発、メディア再生など、多様な用途に対応するRaspberry Pi 5は、初心者から上級者まで幅広いユーザーにとって魅力的な選択肢となっています。
Raspberry Piでできることについては以下の記事で解説していますので、あわせてご覧ください。
使用するラズパイロボット PiCrawler
使用するロボットはSunfounderが販売しているラズベリーパイベースの多脚ロボット、PiCrawlerです。詳細は以下のページをご覧ください。
ロボットの制御で使用しているマイコンボードはRaspberri Pi 3Bです。Raspberry Pi 4でも同様の制御が可能です。
制御するプログラムは全てPythonでコーディングしています。
やりたいこと
今回はラズベリーパイに接続されているカメラモジュールの映像の中に映った人間をディープラーニングを使ってリアルタイムに検出し、その人間がいる方向にロボット本体の向きを変えるという動作をさせてみたいと思います。
物体認識はPINTOさんが公開されている学習済みライブラリ「TensorFlow Lite-bin」を使用させて頂きいています。この学習済みモデルの「Person」というラベルに対応するオブジェクトが検出された場合のみ、サーボモーターを制御してロボットの向きを変えています。
PINTOさんのリポジトリは以下となります。
ベースとなるアプリケーション
オブジェクトの位置検出
ディープラーニングによるオブジェクト検出については、以下の記事でソースコード付きで解説しています。オブジェクトの検出だけでなく、オブジェクトがロボットに対してどちらの方向にあるのかという情報もOpenCVを使って検出しています。
サーボモーター制御
オブジェクトの位置情報を元にサーボモーターを動かすための制御プログラムは、以下の記事でソースコード付きで解説しています。
今回はこの2つの記事で記載している機能の調停を行うプログラムを作成し、ディープラーニング側のプロセスが持っているオブジェクトの位置情報を、プロセス間通信を使ってサーボ制御プロセスにリアルタイムに渡せるようにしました。
実際にうごかしてみた
実際にプログラムを改修して動かしてみた動画です。
人間の手を検出するとそちらへロボットの向きを変えていることが確認できました。
手だけだとディープラーニングでの検出精度が低いので私自身の全身で検出するように動画を撮ってみました。
少し離れた位置で試すとうまく追従して動いてくれました。
まとめ
今回はラズベリーパイロボット PiCrawlerを、人間に追従して向きをかえるという処理を実装してみました。
目標となるオブジェクトとの距離が近すぎたり、目標の移動速度が速すぎたりするとうまく追従できない場合があったので、移動平均フィルターを入れるなどのチューニングをして精度を上げていきたいと思います。
機械学習を勉強したい方向けに以下の記事で公開していますので、ぜひご覧ください。
また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。
スキルアップや副業にぜひ活用してみてください。
スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。
講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。
それでは、また次の記事でお会いしましょう。
コメント