複数ロボット会話システムとTkinter連携

LINEで送る
Pocket

複数ロボット会話システムとTkinter連携

複数ロボット会話システムとTkinterによるGUIシステムを連携したロボット案内システムを開発した。

PythonのGUI(Graphical User Interface:グラフィカル・ユーザ・インタフェース)ライブラリの一つであるTkinterで案内画像や案内文をディスプレイに表示させて、複数のロボットが案内を行うシステムです。

TkinterはPythonの標準ライブラリに採用されているGUIライブラリです。
クロスプラットフォームでGUIアプリを作成できる点は他のライブラリと同様です。

Python/Tkinter は、イベント駆動方式です。
GUI アプリケーションの場合、ユーザーからの入力やシステムの状態変化(タイマーなど)など、ある出来事をきっかけにプログラムが実行されます。
この出来事を イベント(event) といい、イベントをきっかけにしてプログラムが起動されることを イベントドリブン(eventdriven:イベント駆動) といいます。

 

複数ロボット会話システム
複数ロボット会話システムとTkinter

後ろのディスプレイに案内画像と案内文を表示させます。
ロボットは3体で、左右のロボット(ぬいぐるみ)が交互に案内を音声でします。

また、3体のロボットは、首を振ったり手を動かしながら案内をします。

複数ロボット会話システムとTkinterによるGUIシステムは、インターネットに接続しており、各々の動作はWebサービスAPIで同期をとっています。

Tkinterは、起動して画面が表示されるまで、5~6秒程の遅延があります。
Tkinterが完全に立ち上がって画面が表示されるのを待って、ロボットは、案内を開始します。
Tkinterシステムが完全に立ち上がると、サーバーに立ち上がったことを知らせます。
ロボットは、WebサービスAPIで、立ち上がりを監視していて、立ち上がりを確認してから案内を開始します。

Tkinterの after() メソッドについて

今回は、TkinterによるGUIシステムですが、マウスによるクリック入力がなくても画像やテキストを更新さないといけなので、プログラム自身でなんらかのきっかけを作ってやる必要があります。
このような場合、役に立つメソッドがTkinterの after() です。
時間によるイベント駆動です。

root.after(msec, command)
指定した時間経過後 command を実行 (固有番号 id を返す)

このように、after() には単純な時間待ちを行うほかに、一定時間後に指定した command を起動するタイマーの働きも持っています。
たとえば、一定間隔で実行する関数を talk() とします。
この場合、talk() 関数の最後で after()メソッド を使って自分自身の起動を設定します。

具体的には次のようにプログラムします。

 

案内内容は、四万温泉の摩耶姫伝説の紙芝居です。

紙芝居の画像と紙芝居の文言をディスプレイに表示させて、下のロボットたちが交互に紙芝居の文言を発声します。

このシステムは、四万温泉観光協会で稼働しています。

複数ロボット会話システムとTkinterによるGUIシステム

複数ロボット会話システムとTkinterによるGUIシステム

複数ロボット会話システムとTkinterによるGUIシステム

群馬プログラミングカレッジでは、子どもから成人を対象にしたプログラミング教室です。

現在、開発しているシステムです。
・複数ロボット自然会話システム
・案内ロボット
・自然会話ロボット
・教育ロボット
・IOTシステム

開発言語は、python、PHPなどです。
ロボットは、Raspberry Pi などのマイクロコンピュータを使用しています。

子どもたちは、Scratchビジュアルプログラミング言語から学び、上級生は並行してpythonプログラミング言語を学びます。

Scratchプログラミング、pythonプログラミング、PHPプログラミング、IOTシステム開発、AIロボット開発に興味がある方は、ご連絡ください。

 

LINEで送る
Pocket

ラズパイ、テンキーで案内ロボット完成

LINEで送る
Pocket

ラズパイ、テンキーで案内ロボット完成

インターネット接続が難しいエリアや施設で、種々の案内をするロボットを開発しました。

・観光地での観光スポットや施設、お店、お食事処などの案内
・施設内での種々の芸術作品の案内
・店内での商品の案内
・公共施設でのサービス案内
など

様々なシーンで気軽に利用できる手のひらサイズの案内ロボットです。
ご当地のマスコットキャラクターに内蔵して利用することも出来ます。

利用形態は、
イヤホンをつけてテンキーを携帯し、
・案内ロボットを肩に掛けて散策しながら利用する。
・自転車で散策しながら利用する。

自転車の場合は、テンキーを自転車のハンドルに装着してキー入力ができます。

予め案内対象に番号を設定して、ロボットとBluetooth®(ブルートゥース)で接続したテンキーで番号をキー入力すると対象の案内をイヤホンでします。

インターネット接続が不要なため利用場所を選びません。
ビエンナーレ(biennale)などでも効果的に、ロボットがあらゆる案内をすることができます。

案内ロボットには、以下の機能があります。

  1. リピート機能
  2. 巻戻し機能
  3. 先送り機能
  4. 中断機能

リピート機能は、案内を最初から行う機能で何回も同じ案内を聞くことができます。
巻戻し機能は、1つ前のフレーズを再度聞くことができます。
先送り機能は、1つ先のフレーズを聞くことができます。
中断機能は、途中で案内を中断したい場合に利用する機能です。

案内は、案内文章を句読点の「。」と句読点の「、」で句切り、区切られたフレーズ毎にイヤホンまたはスピーカーで音声案内します。

案内中でも、新たな案内対象の番号がテンキーから入力された場合には、その新規の案内を優先的に行います。
いつでも割り込みができる仕様になっています。

番号を非同期に受付けるサーバーを立ち上げ、ソケット通信でテンキー入力の番号をクライアントに渡します。
クライアントは、番号に対応した案内文をフレーズ毎にスレッドを立て案内文を音声出力します。

その他の機能として、

  1. アンケート機能
  2. クイズ機能

などがあります。

開発プログラミング言語は、python バージョン3です。

群馬プログラミングカレッジでは、種々のロボット開発を行っています。

  1. 人工知能自然会話ロボット
  2. 人工知能音声認識案内ロボット
  3. julius音声認識案内ロボット
  4. テンキー案内ロボット

などのロボットを開発しました。

これからは、
・スマホと連携した案内ロボット
・ロボット同士の会話システム
・複数のロボット会話システム

などのロボットを開発予定です。

群馬プログラミングカレッジでは、ロボット開発に興味のある方(生徒)を募集しております。
随時、募集しておりますので、お気軽に当サイトからお問合せください。

小学生、中学生、高校生以上の方を募集しております。

LINEで送る
Pocket