Open2

SEQSENSEのクラウドシステムのアーキテクチャ

riddle_tecriddle_tec


https://findy-tools.io/companies/seqsense/165/43


ロボットを制御するクラウドシステムとはどういうものか簡単に説明します。
ロボットを操作するためには「地点Aまで移動せよ」とか「充電のために帰還せよ」といったコマンドをロボットに送信します。その際、ロボットの周囲の様子を知るためにロボットに搭載したカメラの映像もリアルタイムに視聴できます。このようなカメラ映像を見ながら操作できるWebアプリケーションを警備室にいる警備員が操作して警備業務を行います。またロボットの位置情報など各種情報が随時クラウドシステムに送られてきます。
警備ロボットサービスのクラウドシステムはこのような仕組みをAWSの各種サービスを活用して実現しています。
クラウドシステムの主な構成要素として次が挙げられます。

コマンドを送信したりロボットからの各種情報を受け取る相互通信
映像の保存や配信の機能
ロボットとの相互通信には AWS IoT を利用しています。クラウドシステムは主に Go で実装していますがロボットはそうではありません。異なる言語間でもIF定義を共有して通信するためにgRPCを採用しています。AWS IoT のプロトコルは MQTTのため、実際には gRPC over MQTT (HTTP/2の代わりにトランスポートプロトコルとしてMQTTを使用する)ということになります。
一方、映像の録画には AWS Kinesis Video Stream を利用しています。ロボットから SRTP でビデオストリームを受け、録画しつつリアルタイムの配信も行っています。

現在の課題と今後の改善予定

警備ロボット事業は着実に導入件数を増やしてきており、市場として成長しつつあると感じています。 それに伴い求められるユースケースが増えてきています。しばらくはこれらに対応するための開発が続くと思います。
また、警備ロボットで培った自律走行技術を活用して屋内配送ロボットサービスの開発も進めています。例えば警備では決まった時間に決まったルートを巡回することが多いのに対し、配送では定期的な配送もあるのですが、随時に任意の場所への配送が求められるなどユースケースが異なります。開発当初は警備サービスと同じAPIでロボットを操作していましたが、配送サービスに適したAPIを開発し移行を進めています。
いずれも新しい市場を作りながらの事業であるため試行錯誤しながら開発を進めているところです。それ故、サービス分野ごとに変わる部分と共通の部分の整理などサーバのリプレースや分割などを行い、必要に応じてアーキテクチャも見直す必要が出てくると考えています。

riddle_tecriddle_tec

予備知識


https://www.seqsense.com/product

これが走り回ってるらしい。初めて見た

https://youtu.be/F967UhRQhd4

気になったこと

1. ロボットで gRPC サーバが動いている

MQTT client かなとおもったけど、MQTT で受け付けた後に gRPC してる。なんでだ。
あーー。gRPC over MQTT ってかいてあった。初めて聞いたなこれ。

Bidirectional streaming じゃだめなのかな。

ロボットとの相互通信には AWS IoT を利用しています。クラウドシステムは主に Go で実装していますがロボットはそうではありません。異なる言語間でもIF定義を共有して通信するためにgRPCを採用しています。AWS IoT のプロトコルは MQTTのため、実際には gRPC over MQTT (HTTP/2の代わりにトランスポートプロトコルとしてMQTTを使用する)ということになります。

これどうやってるんだろう、grpc-go だと http/2 と強く結びついてるので mqtt の上にさらに丸ごと http/2 & grpc が乗っかるので相当ペイロード長ありそうだけど。MQTTの上に純粋な gRPC 実装して動かしてるとかやってたりするのかな?しないか。

うーん、Protobuf over MQTT ではないのかな??


https://speakerdeck.com/kamatama41/aws-summit-tokyo-2023?slide=10

2. REST つかったり GraphQL つかったりしてる

統一してないのなんでだろう?歴史的経緯かな。それとも用途かな。

社内用の管理アプリケーションは歴史的経緯から、現在Django + jQueryで構築されているのですが、メンテナンス性に課題があるため *5 現在React (Next.js) + GraphQLの構成の新アプリケーションに移行中です。

https://kamatama41.hatenablog.com/entry/2020/08/11/190000

3. Timestream DB つかってる!

つかってるのはじめてみた

パトロール結果は Amazon Relational Database Service (Amazon RDS) に、動作モードやエラー、バッテリー残量等のロボットの最新ステータスは Amazon ElastiCache for Redis に、ロボットの移動履歴データは Amazon TimeStream に保存されます。

https://aws.amazon.com/jp/blogs/news/aws-empowers-seqsense-to-build-autonomous-security-robots/

4. 他社エレベータ制御システムおもしろいな

https://www.nikkei.com/article/DGXMZO53304410T11C19A2000000/