Blog Archives

Raspberry Pi Mouse / Cat を遠隔操作(音声通話編)

1.はじめに

こんにちは.鈴本です.
前回の記事「Raspberry Pi Mouse / Catを中継サーバー経由で遠隔操作」の続きとして
双方向音声通話機能を実装しました.

構成は前回記事と同様,

ロボット

  • Raspberry Pi Mouse / Cat
  • Ubuntu Server 16.04.5 LTS (Xenial Xerus)
  • Node.js v10.14.2

PC

  • Microsoft Windows 10 Home 1803 (64bit)
  • Google Chrome 72.0.3626.121 (Official Build) (64bit) or Firefox 65.0.2 (64 bit)

中継サーバー

  • Raspberry Pi 3 Model B
  • Ubuntu Server 16.04.5 LTS (Xenial Xerus)
  • Node.js v10.14.2

通信プロトコル

  • WebSocket

です.

また,これも前回同様ソースコードは
ソースコードを GitHub で公開しています.

どうやら,ChromeブラウザからPCのマイクへアクセスするには,
サイトがHTTPSであることが必須なようで,マイクの動作確認はFirefoxのみで行いました.

2.実装(ロボット→PC)

Node.jsの以下の2つのモジュールを利用しました.

ロボット側は

なかんじで,PC側も

なかんじ.

ロボット側ではマイク入力を, mic_input_stream のイベントを監視して取得し,WebSocketに流し,
PC側ではそれを中継サーバー経由で受け取って,Web Audio APIであるAudioContextで再生しています.

PC側のコードで,音声が途切れ途切れにならないようになっている部分は,
WebAudio+WebSocketでブラウザへの音声リアルタイムストリーミングを実装する
を参考に実装しました.

3.実装(PC→ロボット)

ラズパイでのスピーカーでの再生には,Node.jsの

モジュールを使いました.

ラズパイにRaspbianをインストールしていると,ラズパイ上のオーディオジャックが簡単につかえるのですが,
代わりにUbuntuをインストールしている環境では, /boot/config.txt を編集する必要があるようです.
(出典:How to enable sound on Raspberry Pi 3 running Ubuntu 16 –

続きを読む ›

Posted in Raspberry Pi Cat, Raspberry Pi Mouse, ブログ


Raspberry Pi Mouse / Catを中継サーバー経由で遠隔操作

1.はじめに

こんにちは.鈴本です.
Raspberry Pi MouseとCatを遠隔操作するためのシステムを作りました.

  • 同一LANにいなくても操作できる
  • 複数台あったとしても中央集権的に管理できる

などの要求から,中継サーバーを挟んでPCから遠隔地のロボットを操作できるようにします.

2.全体像と要求

全体像は上図のような感じです.
遠隔地のLAN間でも操作できるように,PCとロボットがそれぞれ中継サーバー(ここではRaspberry Pi)につなぎに行きます.
そこでデータなどをやり取りして,遠隔操作を行おう,というものです.

要求は,

  • ロボット,操作PCは静的グローバルIPを必要としない.
  • 中継サーバー1台あれば,複数の通信セッションも開設できる.
  • データを中央で管理できる.
  • LANをまたいだ遠隔操作(NAT超え)も可能である.
  • 可能な限りリアルタイム性を追求する.

です.

3.構成
ロボット

  • Raspberry Pi Mouse / Cat
  • Ubuntu Server 16.04.5 LTS (Xenial Xerus)
  • Node.js v10.14.2
  • ROS kinetic
  • UVC対応カメラ:LOAS MCM-15W or C270 HD WEBCAM

PC

  • Microsoft Windows 10 Home 1803 (64bit)
  • Google Chrome 71.0.3578.80 (Official Build) (64bit)

中継サーバー

  • Raspberry Pi 3 Model B
  • Ubuntu Server 16.04.5 LTS (Xenial Xerus)
  • Node.js v10.14.2

通信プロトコル

  • WebSocket

のような構成にしました.

操作コンソールにはブラウザを用いて,リアルタイム性より通信プロトコルはWebSocketを採用しました.
Webを使うので,サーバーサイドとロボットサイドのコードはNode.jsで実装しています.

4.環境構築
ロボットと中継サーバーへのUbuntu Serverインストール

ロボットも中継サーバーもRaspberry Piなので,公式ページよりRaspberry Pi用のイメージファイルをダウンロードしてきて,SDカードに展開します.
ここでは Unofficial images の Raspberry Pi 3: ubuntu-16.04-preinstalled-server-armhf+raspi3.img.xz (4G image,

続きを読む ›

Posted in Raspberry Pi Cat, Raspberry Pi Mouse, ブログ