EurekaMoments

ロボットや自動車の自律移動に関する知識や技術、プログラミング、ソフトウェア開発について勉強したことをメモするブログ

GROOVE Xが開発したLOVOTの記事を読んだ感想と気になったとこのメモ

目次

背景・目的

最近リリースされたこちらの記事にて、
GROOVE Xが開発した家庭向けロボット
「LOVOT」で活用されている技術に
ついての紹介を読みました。

xtech.nikkei.com

かなり読み応えのある内容でとても
面白かったので、読んだ感想と興味
深かったところについて調べたメモ
を残しておきます。

読んだ感想

目的別にどのようなソフトウェアが
使われているかが詳しく一覧として
纏められています。

Python, C/C++, Goといった複数の
言語を使い分けたり、地図データを
クラウド管理したり、独立させたい
ROS環境をDockerで閉じ込めたりする
など、今どきの技術が盛沢山な印象。
改めてロボット開発というのは、
いろんな技術の集合体なんだなと
感じました。

特に印象的だったのは、2次元アニメ
や3次元CGの制作経験があるアニメータ
人材がいて、彼らが自らPythonコード
を書くことでLOVOTの瞳を可愛らしく
見せる表現を作り出しているところ。

一見ロボット開発と関係が無さそう
な人材でもこれだけ最大限に活用
されてるところに、開発に対する
貪欲さのようなものを感じました。

ROSのPub/sub通信のオーバーヘッド

pub/sub通信のオーバーヘッドを懸念し、
ROSを事実上撤廃した形になっている
そうです。
特に画像などのセンサデータを送受信
する際のオーバーヘッドが大きいよう
なので、これは致命的ですね。

qiita.com

qiita.com

ros.youtalk.jp

この対策としてはNodeletを使う方法が
あったり、ROS2からはシリアライズ
機能というものが用意され、データを
バイナリ表現のまま送受信出来るように
なり、データサイズの削減が期待されて
いるようです。

MongoDBとMariaDB

Pythonによる画像認識や振る舞い生成
などの処理の部分でMongoDB, C/C++
によるSLAMや音声認識などの処理の
部分でMariaDBを使っています。

そもそもデータベースの知識がほぼ
無いので、それぞれについて基本的な
解説をしてくれている記事を調べ
ました。

kageura.hatenadiary.jp

kinsta.com

www.ossnews.jp

例えばSLAMであれば、各ロボットが
作った地図データをデータベースに
集約して一つの地図データに統合し、
各ロボット間で共有する事による
複数台制御が可能になります。

こちらから論文のPDFをダウンロード
出来ます↓
https://jsai.ixsq.nii.ac.jp/ej/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=9279&item_no=1&attribute_id=1&file_no=1&page_id=13&block_id=23

機械学習においては学習データを
管理するだけでなく、学習ロジック
も共にデータベース内に実装する
事で効率化を図る例があります。
enterprisezine.jp

PythonからMongoDBを利用するpymongo

今回の記事を読んで初めて存在を
知りました。こちらの記事で使い方
などが詳しく紹介されています。

qiita.com

PythonからC++の関数やクラスを呼び出すためのpybind11

こちらも初めて知りました。

qiita.com

qiita.com

eqseqs.hatenablog.com

自分はCythonを使うくらいしか
やり方を知りませんでしたが、
Wrapperのコードを書くのが面倒
なので他のやり方を探している
所でした。

Cythonと比べると、書かなければ
ならないコードが少なそうなので、
もっと楽に扱えそうです。

Go言語の使い道

LOVOTでは、機体間やクラウドとの
通信、アップデート、バックアップ
などの処理をする部分をGo言語で
で作成しています。

tech-camp.in

proengineer.internous.co.jp

Go言語はどういう用途に向いている
のか改めて調べましたが、一番は
やはりWebアプリ開発でしょうか。

LOVOTではクラウドとの通信技術が
使われているので、こういった部分で
Go言語は役立つのかもしれません。

GCP, AWSによるクラウド管理

LOVOTでは、ステータス管理をする
ためのクラウド基盤にGCP, 写真など
のバックアップにAWSを採用しています。

udemy.benesse.co.jp

udemy.benesse.co.jp

また、こういったデータをクラウドへ
送信するのに、MQTTというプロトコル
を採用しています。

kfep.jp

こういったデータ管理をするのに
クラウド技術は必須になってきて
いるので、少しずつキャッチアップ
していかなければいけません。

TrioによるPythonの並行処理

LOVOTではPythonのコードが
かなり使われているようですが、
画像認識や振る舞いの生成の
ために使われているので処理
速度は大丈夫なのかというのが
第一印象でしたが、恐らくは
このTrioによる並行処理で補って
いるのかもしれません。

qiita.com

今まで使った事がないので
どんなものか調べてみましたが、
割と分かりやすそうな書き方
なので、近々何かしらで試して
みようと思います。