【ロボット】並列処理、フィードバック制御、SLAM、やってみたいことまとめ

  • URLをコピーしました!

こんにちは、むらさんです。
今回は現在製作しているロボットに今後、実装していきたい機能についてまとめてみたいと思います。ロボット製作を始めて1か月ほど経ちましたが、現在完成度は約50%程度というところまで来ました。ハードウェアの組み立てやサーボモーターを駆動することによる姿勢制御など、低レイヤーの部分はほぼ構築でき、これから自律制御のための上位アプリケーション実装に取り組んでいきたいと思っています。
そこで、一度ここまでで実装した機能と、これから実装していきたい機能を整理してみたいと思い記事にしてみました。

目次

これまで実装した機能

このブログに何度も登場しているRaspberry Piベースのスパイダーロボット、PiCrawlerですが、これまで少しずつ必要な機能を実装してきました。機能ごとにまとめた記事を書いています。

ロボットPiCrawlerについて

SunFounderのスパイダーロボット、PiCrawlerのキット内容、組み立て、サンプルで動作させている様子を下記の記事にまとめてあります。

距離センサーによる障害物までの距離検出

超音波センサーHC-SR04を使って障害物までの距離を計測し、回避する動作をPythonでプログラミングしました。

TensorFlow Liteによる物体検出

ロボットに搭載されているRaspberry Piでディープラーニングを使った推論処理をリアルタイムに実行し、Raspberry Piのカメラモジュールに写った物体を識別することができました。

以上のように少しずつできることが増えてきました。

今後実装していきたい機能

そんなPiCrawlerですが、まだまだ自律制御で動かすまでにはたくさんの機能必要です。現在、実装を考えている機能は以下の通りです。

マルチコア並列処理

これまで個別にサーボモーターの制御や画像処理を進めてきましたが、今後これらを同時に実行する場合は、マルチスレッドで実装することになります。一般的なマイコンでは各スレッドに優先順位を設定し、その優先度に基づいて一つのコアでスレッドをスイッチしながら処理が実行されることが多いかと思います。
ですので、優先度の高いモーションコントロール(サーボモーター制御)中は画像処理や通信処理は、高優先スレッドの処理が終了するのを待たなければなりません。

逆に、もしモーションコントロール中に他のスレッドが割り込んで来ると、ロボットが転んでしまったりすることも考えられます。
このように、ロボットで一度に複数のことをしようと思うと、ハードウェアの制約を考慮した上で、プログラムを構築する必要があります。

しかしRaspberry Pi 3、4は非常に高性能で4コアのSoCが搭載されています。このマルチコアを使えば、モーションコントロールとディープラーニングを使った画像処理を別々のコアに割り当て、ハート的に並列実行できるため、大幅なパフォーマンス向上が狙えます。

参考になりそうな書籍として、Interfaceの2021年11月号にPythonの並列処理について特集がありました。

Interface 20221年11月号

目標追従機能(フィードバック制御)

TensorFlow Liteを実装したことにより、カメラに写っている物体をディープラーニングを使って判別することができるようになりました。実際にその情報を制御系にフィードバックし、ロボットの動作をコントロールするという機能を追加していきたいと思います。

まだ構想段階ですが、例えば人間を判定したら、人間の写っている位置が常にカメラの中央に来るように、ロボットの方向を修正するというような制御をPID制御器を用いて実現できないかと考えています。

PID制御は、指令値と、センサーなどから取得した現在の状態との偏差とその積分、微分によって制御量を決定するというものです。詳細はwikiなどに詳しく解説がありますので、ご覧ください。

制御系のシステムをやっている方であれば、よく使われる手法だと思います。このようにフィードバック制御を用いることで、自動的に目標を追従するような動きをさせたいと思います。

SLAM 自己位置推定

ロボットの自立走行を実現するためには、走行ロボットがどこにいて、どの方向を向いているのかを知る必要があります。この自己位置推定と周辺マップデータを作成するのがSLAMです。ロボットと周辺物体との距離を計測するセンサーを使用して、ロボットが自ら地図を作り、そのデータを基に自分の位置を推定します。

SLAMを実装するにあたっては、まだまだ調査不足ですがセンサーやカメラ等、追加のハードウェアが必要になりそうな感じです。

SLAMに関しては私の手元にある書籍では、トランジスタ技術の2021年12月号に特集が載っていました。Raspberry Piを使った例ではありませんが、多少は参考になるかと思います。

トランジスタ技術 2021年12月号

書籍の入手先

よかったらシェアしてね!
  • URLをコピーしました!
目次