概念
家を出た後、アイロンを切ったかどうか覚えていないようなことをしたことがありますか?友人とそのような別のケースについて話し合うと、家事を遠隔で視覚的にチェックするためのロボットを作るという漫画のアイデアが現れました。そして、一般的には、膝の上にあるスマートフォンからカメラで制御される「スパイ」ロボットを作りたかったのです。このアイデアは長い間私たちによって孵化されましたが、私たちは今それを手に入れました。そしてすぐに最寄りのバーに行って話し合いました。実際、それをロボットと呼ぶのは完全に正しいわけではありません。むしろ、それはインターネットを介した遠隔測定制御を備えた自走式プラットフォームです。ただし、この記事では、「ロボット」という用語を使用するのは、それがより親しみやすいからです。
WebRTCテクノロジーは、2つのピア間でのビデオ、オーディオ、およびデータチャネルの転送を最小限の信号遅延で整理するのが非常に簡単であるため、私たちに完全に適合しました。そして、私たちはこのテクノロジーの経験がなかったので、本当に試してみたかったのです。
システム全体の簡略図を図に示します。ユーザー-オペレーターとロボット-RaspberryPIは、それぞれ独自のWebページに入り、シグナルサーバーに接続します。その後、WebRTCセッションが作成され、ロボットからのビデオストリームがユーザーに送信され、制御信号がロボットに送信されます。さらに、ロボットはそのlocalhostに制御信号を送信し、そこで別のサービスがそれらを処理してGPIOに出力し、モーターを制御します。すべてが単純に見えます。この段階で得られたものは次のとおりです。
次に、これらすべてについてさらに詳しく説明します。
コンポーネント
, . , . , .
Raspberry Pi (3b 4), , OS Raspbian. , OpenCV, .. , .
()
- ( ), FPS . Logitech QuickCam Connect Logitech C270 12$. Raspicam, .
— — , -, . . , :
, .
, . .
Raspberry Pi . 3.7 DC-DC MT3608, , “”. - . Samsung. , . power- Xiaomi , - . Raspbery Pi4.
L9110, DC-DC , L293N. , . .
, "", -. “” 1$. Power- , . , Raspberry Pi. . , . , . -. - power-.
, , . . JavaScript Python. . , .
NodeJS . :
, .
, .. -.
SignalEmitter. . id - , isControl - . signalServer - uri . .
const se = new SignalEmitter({
id: searchParams.get('id'),
isControl: false,
signalServer: config.signalServer
});
WebRTC
RTC. - options SignalEmitter, . isControl - . platformSocket - uri localhost' .
const webrtc = new RTC({
isControl: false,
platformSocket: config.platformSocket},
se);
Vue.js, . /public. :
Selenium
, Selenium WebDriver + geckodriver headless . , robot-signal-server/selenium/index.js. , . , . /etc/network/if-up.d/ .
Python. - websocket , GPIO. , : [0…+-1, 0…+-1] JSON. .. , , -1 +1 0.01. , - . (. GItHub )
, . production- - , . , . .
3/4/5G , . :