RaspberryPiとRCB-4との連携について
はじめに
外部のボードやPCから弊社のロボット(RCB-4)に接続するには、コマンドリファレンスに沿ってプログラムする必要があり、1から作業するには手間がかかりました。
Arduino向けライブラリを公開しましたので、Arduinoから手軽に接続することができるようになりましたし、RCB-4変換基板を利用して他のボードへの接続も可能になりました。最もご要望が多い内容は「カメラを搭載したい!」ということでしたが、Arduinoのようなマイコンでは非力で画像処理をさせるのが困難となります。そこで、入手しやすくカメラの接続が容易でサンプルも多い「RaspberryPi」と連携するためにRCB4と通信するためのPythonのライブラリをご用意しました。
RaspberryPiはシングルボードのLinux等OSを走らせることのできるコンピュータです。低価格で入手性も良く、たくさんの参考書が発売されています。今回は、例としてRaspberryPiを使用しますが、Linux等でPythonが実行できるコンピュータでしたら何でもかまいません。
RaspberryPiを使用すると、カメラで画像を入力したり、スピーカで音を発するなど物理的なもの以外にもネットワーク経由の接続もできるようになりますので、ロボットを動作させる幅が広がります。
デモ動画
KXR-L4T カメ型ロボットのバックパック部にRaspberryPiを搭載し、USBカメラを接続したデモ機を作製しました。頭部に上下方向(ピッチ軸)用のサーボを追加しています。KXRシリーズですので、パーツを組み合わせるだけで簡単にロボットを拡張できます。
ロボットが赤いものを追いかけるようにプログラムしました。一定の距離まで近づくとバタバタします。
デモのアルゴリズム
・カメラ部分
カメラで取得した画像から赤色を抽出し、その画像の重心位置と画像の大きさを取得します。
その重心位置から首に配置したピッチ軸、ヨー軸のサーボモータに指令を与えます。
サーボモータは重心位置をカメラ中心に向けるように指示をします。
画像の大きさに関しては、物の大きさが同じであれば近いほど映る部分が大きいので近いか遠いかを判断します。
・ロボット動作部分
カメラの画像から赤い目標の位置がわかるので、
●近い場合はバタバタするモーションを再生
●遠い場合、
・右に物がある場合は右に旋回をする
・左に物がある場合は左に旋回をする
・正面に物がある場合は前進をする
●何もない場合は移動しない
前進や旋回、バタバタするモーションは、RCB-4に登録されたKXR-L4Tのサンプルモーションを使用しています。
(首のピッチ軸とヨー軸を振るため少々サンプルモーションを改造しています)
・実装環境
●Raspberry Pi 3 Model B
Description: Raspbian GNU/Linux 9.4 (stretch)
●Python 3.5.3
●opencv 3.2.0
・使用部品
KRS-3301ICS or KRS-3302ICS (カメラパンチルト用)
Raspberry Pi 3 Model B
USBカメラ(BSW200MBK(BUFFALO)(120度広視野角))
モバイルバッテリー(Raspberry Pi 給電用)
その他:カメラマウント、バッテリーマウント
※このデモの内容はRCB-4HVでも同じように再現できます。
・接続方法
接続方法についてはこちらをご覧ください。
また、Raspberry PiのUARTを使用しなくてもDual USBアダプターHSを経由してUSBポートから通信することが可能です。
ソフトウェアについて
RCB-4の発売当初はVisualStudioの.net(C#)環境のライブラリを配布していました。
もちろん、C#のライブラリでも実装は可能なのですが、近年ではPythonで書かれる人が多いので、Pythonのライブラリも用意いたしました。
ライブラリについては下記のページをご覧ください。
『RCB-4 Library for Python ver.1.0.0B』
デモ用機体の実行プログラムについては、ハードウェア等がからむので配布の予定がありません。
展望
RaspberryPiと弊社ロボットを接続できることでカメラ画像からロボットに指令を与えることができるようになりました。
Pythonのライブラリを利用すればRapsberryPiだけでなく、ほかのシングルボードコンピュータでも接続できるようになります。
ハードウェアをあまりいじったことない人でも気にせず認識、上位の行動系、深層学習などのAIのソフトウェアを作ることができ、ロボットに組み込めますので、ロボットの開発が取り掛かりやすくなります。
ROBO-ONE autoなど自律系の大会が増えてきていますので、ぜひチャレンジしてみてはいかがでしょうか?
関連記事
RCB-4 Library for Python ver.1.0.0B
RCB-4 Library Arduino版(V1.1)とPython版(V1.0.0B)の違いについて
KHR-3HV Ver.3.1 リフェバッテリー付きセットの詳細をみる KHR-3HV Ver.3 リフェバッテリー付きセットの詳細をみる RCB-4HVボードのみの詳細をみる KMR-M6 Ver.3 リフェバッテリー付きセットの詳細をみる RCB-4miniの詳細をみる KHR-3HV Ver.2 リフェバッテリー付きセットの詳細をみる KXR-L2 ヒューマノイド型 Ver.2の詳細をみる KXR-L4T-R カメ型・ローバー型 Ver.2(アカデミックパック)の詳細をみる KXR-A5 アーム型 Ver.2の詳細をみる KXR アドバンスセットA Ver.2の詳細をみる KXR アドバンスセットB Ver.2の詳細をみる