複数ロボット会話システムと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

pythonプログラミング言語の人気

LINEで送る
Pocket

pythonプログラミング言語の人気

pythonプログラミング言語の人気が上昇中!

1年前のbook storeでのpython関連書籍は、それほど多くはなかった。
しかし、2018年になるとプログラミング言語書籍コーナーでのpythonプログラミング言語関連書籍の順位は、トップとなった。

pythonプログラミング言語
pythonプログラミング言語
pythonプログラミング
pythonプログラミング言語
pythonプログラミング
pythonプログラミング

 

Python(パイソン)は、汎用のプログラミング言語です。
コードがシンプルで、C言語などに比べて、プログラムを分かりやすく、少ないコード行数で書けるといった特徴があります。

Pythonは、人工知能ソフトの開発、ビッグデータのデータ解析、IoTのソフト開発の現場でよく使われるプログラミング言語です。

Pythonは、特定の企業団体からの影響を受けにくいオープンソースで管理運営されていますので、幅広いジャンルの開発企業から支持されています。

Pythonは教育目的で設計されたわけではないが、単純さから子供が最初に学ぶ、プログラミング教育用の言語としても利用が増えています。

pythonプログラミング言語を開発したグイド・ヴァンロッサムはPython設計以前に教育用言語であるABCの開発にかかわり、教育用としての利用について期待感を示したこともあり、方針として非技術者向けといった利用を視野に入れているとされることもあります。

「私の大好きなPython利用法は、騒ぎ立てずに、言語教育でプログラミングの原理を教えること。」
 スラッシュドット・ジャパン『 グイド・ヴァンロッサム へのインタビュー』より。

ライブラリ[編集]
Pythonには「電池が付属しています(”Battery Included”)」の思想があり、プログラマがすぐに使えるようなライブラリや統合環境をあらかじめディストリビューションに含めるようにしています。
このため標準ライブラリは非常に充実しています。

人工知能ソフトの開発
Pythonは、人工知能ソフト、中でもディープラーニングや機械学習を用いたソフト開発の標準的なプログラミング言語として有名です。
ディープラーニングや機械学習のプログラム処理に高度な数値計算が必要となり、そしてコンパイル不要で手早くテストランできる環境が求められることから Pythonがよく使われる理由です。

IoTシステム開発
IoTとはモノをインターネットにつなぐことです。
IoTは”Internet of Things”の略でモノのインターネットと訳されています。
IoTとはモノがインターネット経由で通信することを意味します。

今、ニュースや新聞でも話題ですね。
プログラミング未経験者からするとIoTって遠い存在のように感じるかもしれませんが、意外と身近な存在です。

IoTシステムは、ラズベリーパイというコンピューターを使って、植木鉢内の水分量を確認するセンサーアプリやビニールハウス内の温度や湿度などをLINEでお知らせしたり、セキュリティーシステムを作ったりといろいろな場面で活躍しています。
単にプログラム・コードを書くだけでなく、センサーと連動したりして「リアル」と連動しながら手軽に学べるのはPythonならではといえます。

ロボット制御
ロボット制御というとCやC++、Javaが代表的なプログラミング言語になりますが、Pythonでもロボット制御が行われています。
Pythonの場合、特に教育現場でのロボット制御が有名で、レゴのマインドストリーム EV3もPythonを使って制御することが可能です。
普通マインドストリーム EXV3は、ビジュアル・プログラミング言語でロボット制御しますが、Pythonで制御することでワンランク上の学習ステージに上がることができます。

Webアプリ
Pythonは、PHPやRuby、Javaのようにサーバーサイドで動くプログラムになります。
PHPに比べると読み書きしやすく、Rubyに比べるとC/C++との相性がよく、Javaに比べると記述量が少なく、コンパイル不要とあってPythonでWebアプリを開発する事例も多数存在します。

Pythonを使って開発されているWebアプリの事例:
YouTube
Instagram
Quora
Reddit

 

群馬プログラミングカレッジでのプログラミング学習では、主にpythonプログラミング言語を学びます。

子どもたちの子どもプログラミング教室では、最初は、Scratchからプログラミングを学び、高学年生はpythonプログラミング言語を学びます。

群馬プログラミングカレッジの「たかポンロボット」、「複数ロボット自然会話システム」、「案内ロボット」などは、pythonプログラミング言語、PHPプログラミング言語で開発されています。

 

 

LINEで送る
Pocket