目次
1. toio™の紹介
ソニーの toio™ は、現実世界とのインタラクションを通じて、あらゆる年齢層のユーザーにエンターテイメント体験を提供するように設計された、刺激的なロボット製品です。この製品は柔軟性とカスタマイズ性に優れており、プログラミング初心者、上級ユーザー、プロの開発者の多様な STEAM 学習およびプログラミング ニーズに対応します。
toio™ Core Q は、ピンポン球ほどの大きさの白い立方体ですが、さまざまなアプリケーションやエンターテイメントのオプションを作成できます。このオープンソースロボットの仕様やアプリケーションプログラミングインターフェースは公開されており、JavaScript、Python、Unity、ビジュアルプログラミングなど、さまざまなプログラミング言語やプラットフォームを通じて、さまざまなリッチなアプリケーションやクリエイティブな作品を作成することができます。toio™ を通じて、開発者はより直観的な方法でデジタル世界と対話し、体の動き、ジェスチャー、音、その他の方法を通じて革新的で没入型のエクスペリエンスを生み出すことができます。
データアドレス:
Python チュートリアル: https://github.com/toio/toio.py/blob/main/SETUP_GUIDE.zh.md
CSDN レポート:開発アイデア、インスピレーション、ソニー toio™ アプリケーションのクリエイティブ開発募集が始まります_CSDN 情報ブログ - CSDN ブログ
公式サイト:ソニー toio™ エデュケーションソリューション
2. クリエイティブ分析
2.1 クリエイティブなデザイン
自動花水やりシステム toio™ をベースに、創造性をさらに広げ、インテリジェントな植物管理システムを構築できます。このシステムは、センサーを通じて土壌水分、気温、光の強さを監視し、設定された条件に基づいてインテリジェントにプラントのメンテナンスを実行できます。このシステムは、土壌水分、光の強さ、温度などの植物の成長データを収集して分析できます。機械学習アルゴリズムを通じて、システムはさまざまな植物の成長パターンを徐々に学習し、実際の条件に応じて最適化および調整して、よりパーソナライズされたメンテナンス ソリューションを提供できます。
2.2 創造的な実装
情報を確認したところ、Qbao は実際にはおもちゃであり、外部インターフェイスがなければセンサー情報を受け取ることができないため、動作をシミュレートするしかありません。ここでは、Python を直接使用して、時間の経過とともに減衰する土壌密度関数を作成しています。土壌密度が臨界値に達すると、Qbao はリマインダーを発行して土壌密度関数をリセットします。合計 2 つの Q 宝が使用されます。1 つの Q 宝は土壌密度の検出に使用されます。臨界値に達すると、Q 宝が赤く点灯します。1 つの Q 宝は移動してリセットされます。メッセージと対話を行うと、検出機能がリセットされます。それがリセットされるかどうかは、後で検討します。Bluetooth 経由で実際のセンサー データを受信する機能。
3. 創造的な実現
3.1 環境のインストール
環境のインストールは主にGithubの情報に従いますが、主なスクリプトは以下の通りです。
セットアップツール
次のコマンドを使用して、setuptools ソフトウェア パッケージをインストールします。
python -m pip install setuptools --upgrade
toio.py
次のコマンドを使用して、toio.py ソフトウェア パッケージをインストールします。
python -m pip install toio-py --upgrade
暗い
次のコマンドを使用して、ブリーク ソフトウェア パッケージをインストールします。
python -m pip install bleak
ipyカーネル
次のコマンドを使用して ipykernel ソフトウェア パッケージをインストールします。
python -m pip install ipykernel
確認する
コマンド プロンプトで次のコマンドを実行して、toio.py が成功したかどうかを確認します。
python -c "インポート toio.scanner; print('ok')"
画面に「ok」が表示されれば、toio.pyは正常にインストールされています。
画面に「ImportError」が表示された場合は、インポートが失敗したことを意味します。.wh1 ファイルを再インストールし、ファイルが保存されているディレクトリを入力していることを確認してください。インストールが再度失敗する場合は、Python のバージョンを確認し、Python のバージョンが 3.11 以降であることを確認してください。
3.2 コアゲームプレイ
コアコード:
import asyncio
from asyncio import sleep
from toio import *
green_cube_location = None
red_cube_arrived = True
wait_time = 30
async def check():
global green_cube_location
global red_cube_arrived
# 获得位置
def pos_handler(payload: bytearray):
global green_cube_location
id_info = IdInformation.is_my_data(payload)
if isinstance(id_info, PositionId):
green_cube_location = id_info.center
def move_handler(payload: bytearray):
global red_cube_arrived,wait_time
motor_response = Motor.is_my_data(payload)
if isinstance(motor_response, ResponseMotorControlTarget):
print(motor_response)
red_cube_arrived = True
wait_time = 30
# 连接两个cube
dev_list = await BLEScanner.scan(2)
assert len(dev_list) == 2
detector_cube = ToioCoreCube(dev_list[0].interface)
change_detect = ToioCoreCube(dev_list[1].interface)
print("连接成功")
await asyncio.gather(detector_cube.connect(), change_detect.connect())
red = IndicatorParam(duration_ms=0, color=Color(r=255, g=0, b=0))
green = IndicatorParam(duration_ms=0, color=Color(r=0, g=255, b=0))
await asyncio.gather(
detector_cube.api.indicator.turn_on(green), change_detect.api.indicator.turn_on(red)
)
print("展示吧小宝贝")
while True:
wait_time = wait_time -1
# 时间到了,移动过去
if wait_time == 0:
await detector_cube.api.id_information.register_notification_handler(
pos_handler
)
await change_detect.api.motor.register_notification_handler(move_handler)
for _ in range(30):
if green_cube_location is not None and red_cube_arrived:
red_cube_arrived = False
print("change_detect: move to", str(green_cube_location))
await change_detect.api.motor.motor_control_target(
timeout=5,
movement_type=MovementType.Linear,
speed=Speed(
max=100,
speed_change_type=SpeedChangeType.AccelerationAndDeceleration,
),
target=TargetPosition(
cube_location=green_cube_location,
rotation_option=RotationOption.AbsoluteOptimal,
),
)
await asyncio.sleep(1)
await change_detect.api.motor.unregister_notification_handler(move_handler)
await detector_cube.api.id_information.unregister_notification_handler(
pos_handler
)
# 停一秒
await sleep(1)
print("结束,断开链接")
await asyncio.gather(detector_cube.disconnect(), change_detect.disconnect())
# 启动
asyncio.run(check())
解決された問題
- Qbaoに接続してプログラムをアップロードします
- Qbaoは通信します
- Qbaoモバイル
- 土壌機能の減衰とリセット
- Qトレジャーが点灯
上記のコードは基本的に公式コードのパッチワークであり、使用するのは比較的簡単です。
要約する
1. テストプロセス中、Qbao の公式 Web サイトと github には十分な情報と詳細なコード例が提供されており、プログラミングの経験がある学生にとっては非常に便利で、少しの組み合わせで独自のゲームプレイを開発できます。
2. Toio™ は現在、子供たちにとって非常に優れたおもちゃであり、利用可能な条件下でいくつかの興味深いことができ、子供の思考能力も鍛えられます。
Qbaoのような小型ロボットの将来の方向性は、教育と訓練にあるはずです。小型ロボットは、教育分野で強力なアシスタントになる可能性があります。個別化された指導方法と対話型学習を通じて、子供たちの学習への関心を高め、教育の質を向上させることができます。
3. インターネットに接続できないためデータ取得が制限される、外部接続できないため拡張性が制限されるなど、現時点ではまだ不便な点があり、価格が少し高いため、教材としても活用できる道具。しかし、上級バージョンを追加できれば、いくつかの拡張インターフェースを上級バージョンに追加できるため、Qbao はより柔軟で拡張性があり、将来的にはより良く開発されるでしょう。