Web Analytics

K Lab.

モノ作りしたり、写真撮ったり。

相棒になれるロボット「pal」開発計画①

どうもこんにちは、K Lab.です。 実は約3年前からpalというロボットを開発していました。
ですが、無計画すぎて開発が滞っているので頭の整理のためにこれから記事を書いていこうと思っています。

開発コンセプト

昔からアニメや映画等で、相棒と言えるような存在に憧れていました。
ですが、現実には、相棒と言えるような存在は居ませんでした。
なのでロボットで作ってみよう。というのが今回のコンセプトです。

相棒になるためには何が必要か。

さぁ、相棒という存在とはどんなものなんでしょうか。

ここでは、以下のような存在を相棒として考えます。 ・いつでも一緒に行動する
・困っている時助けてくれる存在
・なんでも言える関係
・居なくてはならない存在
・一緒に居ると安心する関係
・友達という存在を内包している存在
・家族という存在を内包している存在
・ある程度知的な存在
などのことが思い浮かびます。

また、相棒とは関係がないですが、「可愛い」というのも重要な要素だと考えています。
これをもっと具体的に考えてみましょう。

シーンとして考えてみる

・出かけている時に外の景色について感想を述べたりする
・家の中を自由に徘徊する
・自分についてくる
・感情を持っているような動作をさせる
・抱きしめることができる
・家に帰ってきたら迎えに来てくれる
・天気予報を教えてくれる
・自分のしたことに反応してくれる
・話しかけると反応してくれる
・生きてるような動作をする
・顔を向けてくれる

必要な技術を検討

前述したシーンを実現するにはどうすれば良いでしょうか?
必要な技術をできる限り書き出してみます。

出かけている時に外の景色について感想を述べたりする

画像認識、文章生成AI等の技術が必要でしょう。画像認識はローカルで処理して、文章生成AIはクラウドで処理しようと考えています。 また、画像認識にカメラも必要だと考えられます。ある程度の処理能力を持ったコンピュータも必要でしょう。

家の中を自由に徘徊する

SLAM、行動計画等の技術が必要でしょう。また、移動するための足回りも必要です。足回りは、差動二輪方式を採用します。
SLAMをするのに必要なオドメトリや、LIDAR等も必要だと考えられます。
また、落下防止のために床面監視用のセンサが必要になると考えられます。 LIDARで検知できなかった物体にぶつかったことを検知するために衝突検知システムも必要になると思われます。

自分についてくる

画像認識、SLAM、行動計画等の技術が必要でしょう。

感情を持った動作をさせる

これには、知っている限り、Chat GPTが使えるかなという感じです。また、好きな人と嫌いな人によって態度を変えるというのも良さそうですね。

抱きしめることができる

抱きしめるのにちょうど良い大きさに作れば良さそうですね。

家に帰ってきたら迎えに来てくれる

これには人間が帰ってきたことを検知するために、ドアの音を識別する等の技術が必要になりそうです。

天気予報を教えてくれる

天気予報API等から情報を取得すれば良さそうですね。

自分のしたことに反応してくれる

画像認識、音声合成、文章生成等の技術が必要になりそうです。それに伴って、スピーカ等も必要でしょう。

話しかけると反応してくれる

音声認識音声合成、文章生成等の技術が必要になりそうです。また、音声認識のためのマイクも必要ですね。

生きてるような動作をする

目にディスプレイを搭載して表情豊かにします。また、首の部分にサーボモータを搭載します。

必要な技術は以下のようになると推測されます。
・SLAM
・画像認識
・文章生成
・行動計画
・天気予報情報取得
音声認識
・感情生成
音声合成
・自走システム
・電源システム
・ディスプレイ表示システム
・センサ制御システム
・落下防止システム
・衝突検知システム

上記の技術を実装するのに何が必要か考えていきます。

SLAM

オドメトリ、IMU、LIDARが必要になりそうです。
また、処理するためのコンピュータも必要です。コンピュータはRaspberry pi 4Bを使います。
ソフトウェアではslam_toolboxを使う予定です。それに伴いROSを使用します。

画像認識

カメラ、Raspberry pi が必要そうです。

文章生成

最近流行りのChat GPTを使用したいと考えています。

行動計画

ROSのパッケージを使用したいと考えています。

天気予報情報取得

適当なAPIを使って実装しようと考えています。

音声認識

Juliusを使用しようと考えています。

感情生成

Chat GPTを使用し、疑似的に感情を生成してみようと思っています。

音声合成

できれば自前で開発したものを使いたいですが、できなかった場合、インターネットで公開されているものを使おうと思っています。

自走システム

差動二輪型にします。
ステッピングモータ、ホイール、モータドライバ、ボールキャスターが必要になりそうです。
また、モータドライバを制御するのにはESP32を使用します。

電源システム

バッテリー、バッテリー保護回路、電源基板が必要になります。
電源基板は、各デバイスに電力を供給、センサ類のハブの機能を持たせます。

ディスプレイ表示システム

ディスプレイは、I2C通信で制御します。制御はESP32が担当します。

センサ制御システム

LIDAR、IMU等のデバイスを制御します。IMUはESP32が制御、LIDARはRaspberry piが制御する予定です。

落下防止システム

床面監視センサとしてフォトリフレクタ等を使用しようと思っています。

衝突検知システム

IMUから取得した値と発令している命令を比較して衝突を検知させようと考えています。
例に示すと、前に進んでいるはずなのに、IMUからの値では、前に進んでいない。そういう場合に衝突したとして処理します。
また、加速度センサを使っても衝突検知ができるのでどちらかの方法を使って実装しようと思います。

まとめ

必要になるハードウェアのリストを前述した必要技術を基に作成します。

コンピュータ

・メインコンピュータ : Raspberry pi
・サブマイコン : ESP32

外界センサ

・LIDAR : YDlidar GS2
・カメラ : Raspberry pi Camera V3

内界センサ

・IMU : BNO055
・バッテリー残量センサ : ESP32

アクチュエータ

・モータ : 28byj-48
・モータドライバ : ULN2003
サーボモータ : SG90,MG92B

ユーザインターフェース

・I2C接続のディスプレイ : SSD1306
・ディスプレイ : SSD1306
・電源スイッチ : 適当なトグルスイッチ
・スピーカー : 適当なスピーカー
・マイク : 適当なマイク

電源モジュール

・バッテリ : 21700バッテリ
・バッテリ保護回路 : TP4056
・DCDCコンバータ
・ターミナルブロック
・ピンヘッダ

衝突検知システム

・フォトリフレクタ

その他

・ボールキャスター
・ホイール
・ねじ
・リード線
・冷却用ファン
ヒートシンク