工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Roomberry Surveillance Robot:Roomba + Pi Zero + Camera

Roomberry is Raspberry Pi Zero Wとカメラモジュールを使用したルンバをベースにした監視ロボット。数年前、RN-VXWiFlyモジュールを搭載したArduinoOneを使用してルンバをリモートで制御するためのテストを開始しました。

先月、アイデアを活性化することにしましたが、新しい目的は、ルンバを写真や動画を撮影できる監視ロボットに変えることです。最初のアイデアは、Arducamモジュールを使用して写真をキャプチャするマイクロコントローラーとしてArduinoを使い続けることでした。しかし、Arduinoの画像処理能力は私の興味にはあまりにも制限されていることにすぐに気付きました。 2番目のオプションは、プラットフォームを変更し、カメラモジュールでRaspberry Pi ZeroWを使用することでした。この代替案は、特に電力供給に関していくつかの課題を意味しましたが、より多くの可能性も提供しました。この投稿では、Raspberry Pi Zero Wとカメラモジュールを使用して、ルンバをベースにした監視ロボットであるRoomberryを構築する方法について説明します。

ルームベリーの機能とウェブインターフェースのデモンストレーション それと相互作用するために開発されたものは、次のビデオで見ることができます。

iRobot Roomba

iRobotのルンバはオープンインターフェースを提供します (OI)ミニDINコネクタを介してロボットと対話します。 OIは、ルンバクリエーター2(シリーズ600の適応)用に設計されたソフトウェアインターフェイスです。ただし、シリーズ500および700とも完全に互換性があります。それでも、プラットフォームと使用するファームウェアのバージョンによっては、いくつかのバグがあります。ソフトウェアインターフェースを使用すると、ルンバの動作を操作してセンサーを読み取ることができます。その機能の完全な説明は、このドキュメントにあります。

ミニDINコネクタ

ルンバミニDINコネクタ ルンバセリエ700の正面右側にあり、7本のピンがあります。その位置はシリーズ600でわずかに異なり、その位置はルンバの右後部にあり、スナップ式のプラスチックガードの下にあります。 ミニDIN7 オスコネクタは購入が複雑ですが、より一般的なミニ DIN8ピンオスコネクタ 互換性もあります。

ポートのスムーズで信頼性の高い接続/切断を確実にするために、メスコネクタ付きの5ピンケーブル(LEDストリップ用に設計)を、ピン1〜2を使用してミニDIN8ピンオスコネクタにはんだ付けしました。 (電源)、6-7(アース)、3(RxD)、4(TxD)、および5(BRC)。ただし、後でコメントするように、電源/アース接続は最終的には必要ありませんでした。得られたケーブルは次の写真で見ることができます。


ルンバシリアルポート

OIを使用するには、コマンド 双方向シリアル通信を介して送信する必要があります ミニDIN7ピン3(RxD)および4(TxD)で作成されます。このUARTポートは TTLレベルで動作します (0 – 5V)。この電圧は、ほとんどのArduinoボードのように、5Vロジックを使用するマイクロコントローラーにはまったく問題ありません。ただし、電圧ロジックレベルが低いもの(Raspberry Piなど)には適していません。

理論的には、ピン3(RxD)は3.3Vを高論理レベルとして使用します。ただし、ルンバはピン4(TxD)で5Vを出力するため、Raspberry PiZeroが損傷する可能性があります。ハードウェアを安全に保つために、ロジックレベルシフター 使用すべきです。これを行う最も簡単な方法は、以前のプロジェクトであるCalduinoですでに実装されているように、抵抗分割器を使用することですが、これは高速では機能しない可能性があります(Roombaのシリアルポートは115200ボーで機能します)。

その代わりに、アクティブなレベルシフターが望ましいです。独自の回路を構築する場合は、ここで説明するように電界効果トランジスタAN10441を使用してください。はるかに簡単なオプションは、Adafruitのこのような既存の双方向ロジックレベルコンバーターの1つを使用することです。このデバイスは、最大4つの信号を管理し、それらを5Vから3.3Vに安全に降圧できます。同時に、信号を3.3Vから5Vにステップアップします。

ルンバからラズベリーパイに電力を供給する

ルンバのバッテリーを介して電源を供給するためのいくつかの選択肢があります:

ミニDIN7からの電力供給

ミニDIN7は、規制されていない直接接続を提供します。 ルンバのバッテリーにピン1/2(Vcc)– 6/7(Gnd)で。接続は 200 mA に制限されています PTCリセット可能ヒューズ 。それは2Wの電力で0.2Aに制限された20.5と10Vの間の電圧を提供します。これらの2つのピンからの連続引き込みは200mAを超えてはなりません。 500 mAを超えるピークを描画すると、ヒューズがリセットされます。

ラズベリーパイゼロWはこの電源を使用して動作できるはずです。 Raspberry Pi Foundationは、一般的なベアボードのアクティブな消費電流を150mAで評価します。このベンチマークは、 120 mA の間に配置されます アイドル ステータスと 180mAのストレス下 (たとえば、FullHDビデオの再生)。ただし、ここではカメラの余分な消費は考慮されていません。私の測定によると、このカメラ(バージョン1の公式Piカメラと同じセンサーを備えたこのカメラを使用)は、消費電力を300 mA以上に増やし、ピークは450mAです。私のテスト中、ビデオの録画中にヒューズが数回トリップしました。

結論として、既存のサーモヒューズは、この接続を使用してRaspberry Pi Zero Wに電力を供給することを拒否しています。ボードからヒューズを取り外すことが可能で、安全かどうかを確認できませんでした。他のコンポーネントに損傷を与えることなく。

外部パワーバンクからの電力供給

このヒューズの制限を回避するためのいくつかの選択肢があります。一方では、より簡単な解決策は、パワーバンクを使用することです。 Raspberry PiZeroに外部電源を供給します。ただし、ユーザーは定期的に充電する必要があります。もう1つのオプションは、ミニDIN7電源とパワーバンク間のシリアル接続を設計することです。いくつかの電子部品があれば、ルンバのバッテリーを使ってパワーバンクを充電できるはずです。設計を簡素化するために、追加の電源の使用を避けることにしました。

バッテリーからの電力供給

ついにバイパスすることにしました ヒューズ 直接接続を構築する バッテリーパックへ 。このオプションに対応するのは、ロボットを部分的に分解する必要があるということです。 。ルンバシリーズ600には、ドックボタンの下のバッテリーパックに直接接続された2つの大きなパッドがあります。ルンバシリーズ700/800では、さらにいくつかのコンポーネントを分解する必要があります。次の動画を6分まで見て、ロボットのマザーボードにアクセスする方法を段階的に確認してください。 。完了したら、次の写真に示すように、2本のケーブルをバッテリーパッドにはんだ付けします。


これらのケーブルは、ヒューズによって制限されることなく、バッテリーへの直接接続を提供します。バッテリーの充電レベルに応じて、20.5〜10Vを供給します。ただし、Raspberry Pi ZeroWには安定化された5V電源が必要です。 電圧を下げるには、ステップダウン 使用されている。安価なリニアレギュレータの使用から、これを行うための多くのオプションがあります。 (7805 TO-220など)スイッチングレギュレータを取り付けるためのコンデンサがいくつかあります 。

そのより高い効率による 、常に接続されていることを考慮して、高品質を使用/購入することをお勧めします (中国の模倣は避けてください)降圧スイッチングレギュレータ 。最大36Vの入力を取り、最大出力電流500mAで5Vに下げるPololuD24V5F5バックレギュレータを使用しました。その効率は85%から90%の間で評価され、ドロップアウトは非常に低くなっています。 RCの世界で一般的に使用されているようなUBEC(ユニバーサルバッテリー除去回路)を使用することもできます。電圧レギュレーターをロボットの中央、右側にある空きスペースに配置しました。

接続は熱収縮で適切に保護され、D24V5F5モジュールは絶縁プラスチックで覆われていました(この写真は撮りませんでした)。モジュール出力をマイクロUSBケーブルにはんだ付けしました。これにより、モジュールをRaspberry Pi ZeroW電源入力に直接接続できます。


回転式ドリルツールとサンドペーパーを使用して、ルンバの上部カバーに小さな切り込みを入れて、マイクロUSBケーブルのきれいな出口を作成しました。次の写真。

ルンバOIモード

ルンバOIには、オフ、パッシブ、セーフ、フルの4つの動作モードがあります。

オフモード :バッテリー交換後、または最初に電源を入れたとき、OIはオフモードになっています。この状態では、ルンバはデフォルトのボーレート(115200)でポートをリッスンし、開始コマンドを待機します。コマンドのリセットと停止はいつでも送信でき、OIもオフモードになります。

パッシブモード: 開始コマンドが送信されると、ルンバはパッシブモードに入ります 。このステータスでは、任意のセンサーコマンドを使用してセンサーデータを要求および受信できます。ただし、アクチュエーター(モーター、スピーカー、ライト、ローサイドドライバー、デジタル出力)の現在のコマンドパラメーターを変更することはできません。ルンバはパッシブモードに入ります クリーニングモードコマンド(スポット、クリーン、シークドックなど)の1つが送信された場合も同様です。

パッシブモードでは、ルンバはオフモードになります 電力を節約し、バッテリーを節約するために5分間操作しない後。 iRobotのドキュメントによると、これらの5分が経過する前に、BRCピンを定期的にローにパルスするだけでスリープを無効にすることができます。各パルスは、この5分のカウンターをリセットする必要があります。私が(ルンバ780で)実行したテストでは、BRCを低くするとロボットはウェイクアップするだけですが、省電力モードへの移行を妨げることはありません。ロボットが目を覚ますとビープ音が鳴ります(ドックステーションで充電されていない場合)。

セーフモード :ルンバはセーフモードになります 安全なコマンドが送信された場合。セーフモードでは、ロボットを完全に制御でき、すべてのモーターとLEDがオフになります。ただし、安全関連の条件が満たされない場合、ロボットは自動的にパッシブモードに変わります。 。これらの安全条件は次のとおりです。前進中の崖の検出、ホイールの落下、充電器の接続。このモードでは、ルンバは充電されず(ドックにいる間)、5分間操作がないとオフモードに切り替えても電力を節約できません。この点は非常に重要です。パッシブモードまたはオフモードに切り替えないと、ロボットのバッテリーが消耗して損傷する可能性があります。

フルモード :フルコマンドをOIに送信すると、ルンバはフルモードになります 。ロボットはセーフモードとまったく同じように動作しますが、以前にコメントした安全関連の状態は考慮されないため、リスクに注意してください!

バッテリーに関する注意事項 :コメントしたように、パッシブモードでは、バッテリーの電力を維持するために、ルンバは5分間操作がないとスリープします。安全モードとフルモードでは、ルンバは決して眠ることはなく、この状態で長時間放置すると、充電器に接続していても、バッテリーを深く放電します。充電器はすべてのモードでルンバに電力を供給しますが、セーフモードまたはフルモードではバッテリーを充電しません。ルンバを保護するために、仕事が終わったら、および/または電池残量が少なくなったときに、ルンバをパッシブモードまたはオフモードに戻すことが重要です。

ラズベリーパイゼロW

ラズベリーパイゼロW は、無線LAN を備えたRaspberryPiZeroの更新バージョンです。 および Bluetooth 。このモデルには、1 GHzシングルコアCPU、512 MBのRAM、ミニHDMI、マイクロUSB OTGポート、電源用マイクロUSB、40ピンヘッダー、コンポジットビデオ、リセットヘッダー、カメラコネクタ、および新しいワイヤレス機能。 802.11b / g / n Wi-Fi(2.4GHzのみ)とBluetooth 4.0(Raspberry Pi 3モデルBと同じチップ)をサポートするワイヤレスチップCypressCYW43438を使用します。ヘッダー(はんだ付けされていない)とアダプターを備えたPimoroniで16ユーロで購入しました。

カメラ

Raspberry Pi Zero WCSIカメラコネクタはPi3コネクタよりも小さいです。すでにカメラをお持ちの場合は、使用するアダプターを購入する必要があります。それ以外の場合は、このカメラモジュールを購入することをお勧めします。このモジュールには、5 MPセンサー(バージョン1の公式Piカメラと同じ)が組み込まれており、1080pで動画を録画できます。それは18€かかります。 IRカットの広角カメラを選びました。夜は何も見えないことはわかっていますが、IR LEDを使うとエネルギー消費量が増えるので、低く抑えたいと思いました。いつでもPhilipsHUEライトを使用して、ホームライトをリモートで制御できます。

ラズベリーパイゼロWに電力を供給

Pi Zeroの電源に関しては、いくつかの考慮事項があります。まず第一に、より大きなモデルとは異なり、Pi Zero には規制やヒューズがありません 過電圧または電流スパイクから保護します。これは、安定した電源を供給する必要があることを意味します 電源は右側のマイクロUSB(Pwr In)またはGPIOヘッダーの5Vピンに接続できます。どちらも同じ行です。誤った電圧が印加されたり、ラインに電流スパイクが発生したりすると、おそらく損傷が発生することを確認してください。 RaspberryPiを永続的に

すでにコメントされているように、ストレステストの実行中に、カメラを接続した状態で400mAの消費ピークが測定されました。 Raspberry Pi Foundationは、少なくとも1.2 Aの電源を推奨しています。ただし、降圧レギュレータによって提供される0.5Aで十分です。これまで、電源に関連する問題は見つかりませんでした。

消費電力の削減

ラズベリーはルンバのバッテリーで動作することを考えると、削減するのは興味深いことです。 消費電力 できるだけ。たとえば、Pi Zeroはヘッドレスで(モニターが接続されていない状態で)実行され、SSH経由でのみアクセスされることを知っているので、ディスプレイ回路に電力を供給する必要はありません。 HDMIポートを無効にすると、最大25mAを節約できます。これを行うには、/ usr / bin / tvservice -oを実行します(または-pを指定して再度有効にします)。 /etc/rc.localに短いスクリプトを配置しました。このスクリプトは、HDMIケーブルが接続されているかどうかを確認し、それに応じてHDMIポートを無効にします。

#現在のビデオ出力タイプを取得し、重要でないビットを取り除きます
video =“ $(tvservice -s | sed“ s /^.*\[\([^]*\).*$/\1/ ”)“

if [“ $ video“!=“ HDMI”];次に
printf「HDMIが検出されません。オフにします。\ n”
tvservice -off> / dev / null
else
printf“ HDMIが検出されました。\ n”
fi

消費電力を削減するもう1つの方法は、PiのLEDを無効にすることです。 Raspberry Pi Zeroには、SDカードにアクセスするたびに点滅するアクティビティLEDが1つだけあります。その消費量は約5mAです。完全に無効にするには、/ etc /rc.localファイルに次の行を追加します。

#Pi Zero ACTLEDトリガーを「none」に設定します
echo none | sudo tee / sys / class / leds / led0 / trigger

#Pi Zero ACTLEDをオフにします
echo 1 | sudo tee / sys / class / leds / led0 / brightness

これは、/ etc /config.txtファイルを編集して行うこともできます。

#PiZeroのACTLEDを無効にする

dtparam =act_led_trigger =none
dtparam =act_led_activelow =on

これが実際の消費量の削減につながるかどうかはわかりませんが、使用されないため、/ etc / configに次の行を追加することで、PiZeroのBluetoothモジュールを無効にできます。 .txt:

#PiZeroでBluetoothを無効にする

dtoverlay =pi3-disable-bt

最後に、PiZeroにインストールされ実行されているソフトウェアを減らしてみてください。たとえば、 Raspbian lite を使用します デスクトップバージョンの代わりに、本当に必要な場合を除いて、追加のソフトウェアをインストールしないでください。マシンで実行されているプロセスが多いほど、消費量も多くなります。

その他の考慮事項

  • PiZeroにリセットボタンを作成すると非常に便利です。これにより、システムを再起動するたびに電源装置を切断して接続する必要がなくなります。これを行うには、実行でマークされたラズベリーの穴を接続するだけです。 瞬間的なスイッチで。 Sparkfunのこのいずれかを使用しました。
  • Raspbian Stretchlite以降を搭載した新しい新しいMicroSDカードが必要になります。この投稿で説明されているように、できるだけ大きなカードを使用することをお勧めします。ここで適用される構成はディスク書き込みを削減しようとしますが、十分な空き容量を残すことでSDカードの寿命を延ばすことができます。
  • このチュートリアルでは、使用されているRaspberry PiZeroが RaspbianStretchヘッドレスを実行していることを考慮しています。 。以前の投稿で、Rasbianをインストールし、新しいユーザーを作成し、SSHを使用して接続する方法を読むことができます。

ルームベリーの構築

すべての要素が説明されたら、RoombaとのRaspberryインターフェースであるRoomberryを構築して実行する方法を見てみましょう。

私の目的は、すべてのポートとSDカードに簡単にアクセスできる安定したケースにコンポーネント(Raspberry Pi Zero、カメラモジュール、ロジックレベルコンバーター、スイッチボタン)をカプセル化することでした。自分の3Dデザインを印刷することを除いて、私が見つけた唯一のオプションはこれでした。このケースはすべての要件を満たし、必要ないくつかの電子部品を備えたアドオンボードであるHAT(Hardware Attached on Top)を取り付けることができます。次の画像は、PCBスキーマを示しています。実行ピンは、HATではなくPiZeroに配置されていることに注意してください。それを構築するには、12 x10ピンのPCBボードで十分です。 PCBを切断するために、回転工具を使用しました。

ロジックレベルコンバータ GPIOから取得できる高電圧と低電圧の両方が必要になります(Pi Zeroには、PAM2306AYPKEという名前の5〜3.3 Vの降圧コンバータが含まれています)。 切り替えボタンを配置しました HATの拡張であるため、PiZeroの真ん中にあります。そうすることで、ボタンのステムがケースを際立たせ、外部から押すことができるようになります。ケースにいくつかの穴を開ける必要があります。1つはボタンスチーム用で、もう1つはカメラ用の(そしてより大きな)穴です。さらに、ケーブルを180度回転させるためのスペースを確保するために、CSIコネクタ用に設計されたケースのスペースを慎重に研磨する必要がありました。次の写真は結果を示しています:


ラズビアンストレッチの構成

ルンバをルンバのミニ​​DIN7コネクタに接続する前に、いくつかの設定手順を実行する必要があります。 Raspberry Pi Zero Wが最後のバージョンのRaspbianを実行していて、すでにヘッドレスに設定されていると仮定します。

マイクロUSB電源を接続します PiZeroに以前に構築されました。数秒後、システムは稼働しているはずです。 piZeroへのSSH接続を開きます。

デフォルトでは、Piのシリアルポートはコンソールの入力/出力に使用されるように構成されています。 。このポートを介してルンバと通信するには、シリアルコンソールログインを無効にする必要があります。これは、raspi-configchoosingメニュー5 –インターフェースオプションおよびP6 –シリアルで実行できます。回答いいえ 「シリアル経由でアクセスできるようにシェルにログインしますか?」という質問に答えます。およびはい 「シリアルポートハードウェアを有効にしますか?」まだシステムを再起動しないでください。または、コンソール定義にコメントを付けて、ファイルの最後に/ boot / config次の行を追加することもできます。

#コンソール定義の検索とコメント
#console =serial0,115200
...
enable_uart =1

まだ行っていない場合は、カメラモジュールを有効にします 。繰り返しになりますが、raspi-configでメニュー5とP1オプションを選択することでそれを行うことができます。一方、ファイル/ boot / configを編集して、これらの変更を含めることもできます(カメラのLEDを無効にする必要はありませんが、電力を節約することをお勧めします):

start_x =1
gpu_mem =128
disable_camera_led =1

カメラモジュールが使用されているときにgpu_memoryとして割り当てるRAMの最適な量がわかりません。これまで、カメラの操作中に「リソース不足」エラーは検出されなかったため、128Mbが適切な選択であると思います。

すべてのスワップを無効にする / tmpディレクトリを50メガバイトの容量のRAMディスクにマウントします。この場所は、カメラスナップやルンバステータスファイルなどの一時的なファイルを保存するために使用されます。 etc / fstabのコミット時間を30分に増やし、SDパーティションにnoatimeオプションを含めます。この投稿でコマンドを見つけてください。

次に、すべてが正しく機能しているかどうかをテストします。 Piの電源を切り、シリアルポートをルンバに接続します。ルンバを充電ドックに置きます 。システムを起動し、すべてが期待どおりに機能していることを確認します(そして、ロボットが奇妙なことをしていないことを確認します)。

シリアルポートからの読み取りをテスト :ルンバから送信されたデータを読み取るためにミニコムを使用しました。インストールするには、次のように入力します:

sudo apt-get minicom

次の手順でルンバのシリアルポートに接続します。

minicom –b 115200 -o -D / dev / serial0

ルンバが充電中の場合、ルンバの充電状態を毎秒報告する次の画像のようなテキストが表示されます。 Ctrlキーを押しながらAキーとXキーを押して、ミニコムを終了します。

Read More Detail  :Roomberry Surveillance Robot:Roomba + Pi Zero + Camera


製造プロセス

  1. Arduino + RaspberryPiロボットプラットフォームの作り方
  2. BrickPi Bookreader
  3. ラズベリーパイCDボックスロボット
  4. ローリングアラームロボット
  5. Minecraftクリーパーロボットを作成する
  6. アルキメデス:AIロボットフクロウ
  7. Roomberry Surveillance Robot:Roomba + Pi Zero + Camera
  8. Open CV Robot
  9. ROS Robot
  10. シンプルなパイロボット
  11. ロボットは監視、検査、メンテナンスの雑用のために壁を登ります