索尼 toio™ 应用创意开发征文互动小企鹅

news2024/12/24 21:45:02

文章目录

  • 背景介绍
  • 产品应用
  • 动手实践
    • 环境安装
    • 工具安装
      • 更新 setuptools 到最新版本
      • 安装 toio.py
      • 安装 bleak
      • 安装 ipykernel
      • 检查是否安装成功
    • 定义电子小企鹅的功能和逻辑
      • 小企鹅移动
      • 小企鹅脸变色
      • 小企鹅尖叫
      • 综合实现
  • 总结

背景介绍

索尼推出的toio™ 是一款创新的游戏玩具,结合了物理和数字元素,通过编程和物理互动,可以提供丰富多样的游戏和应用体验,激发用户的创造力和想象力。无论是儿童还是成年人,都可以通过 toio™ 探索和享受其中的乐趣。

toio™ 具有开放性和可塑性的特点,它不仅适用于进阶用户和专业人士,甚至对编程新手也非常友好,可以为用户提供多样化的 STEAM 学习和编程开发体验。

在这里插入图片描述

toio™创意基础套件包括:一个toio™核心Q宝充电器和两个立方体小机器人toio™核心Q宝。

在这里插入图片描述

图中的两个小型的乒乓球大小的白色立方体,我们称之为核心Q宝。核心Q宝包含轮子和传感器,可以进行移动和检测周围环境。它作为一个开源机器人,可以提供广泛的应用和玩法创作空间。

产品应用

toio™ 通过内置的加速度计、陀螺仪、距离传感器等提供了丰富的交互功能。用户可以通过编程或者与核心Q宝的物理互动来控制它们。

在这里插入图片描述

●toio™ 支持编程,用户可以使用编程语言(如 Python)或可视化编程工具来创建自己的应用程序和游戏。
●toio™ 提供了多种游戏和应用程序,涵盖了不同的领域,如迷宫、赛车、音乐、编程挑战等。
●多个 toio™ 立方体可以进行群体互动,用户可以将它们连接起来形成复杂的场景和玩法。
●toio™ 提供了一种有趣和教育性的学习工具,可以帮助儿童培养解决问题、创造力和合作精神等技能。

在这里插入图片描述

动手实践

我是一个父亲,我认为利用toio™ 核心 Q 宝可以设计一款小企鹅儿童玩具,小企鹅儿童玩具可以通过孩子的说话指令进行移动、发出叫声,并且可以利用toio™ 的灯光来改变小企鹅的表情颜色锻炼孩子的专注力,还可以使用Python来编写代码,控制小企鹅移动的速度和发声的频率,实现个性化的创作体验,我希望为我的孩子设置独一无二的游戏体验。

环境安装

我们使用的是 Python 语言,我们需要安装一下 toio™ 运行所需要的环境:
1.首先需要的系统是Windows10(21H2)及以上版本;
2.需要安装Python(Version 3.11 or later);

工具安装

我使用的编译器是IDEA,直接在控制台的 Terminal 执行的命令:

更新 setuptools 到最新版本

setuptools库的前身是distutils(一个python标准库),setuptools本身不是标准库,所以需要自行安装。setuptools提供的主要的功能有:
●python库的打包分发
●依赖包安装与版本管理
●python环境限制
●生成脚本
●c/c++ 拓展

执行命令:

python -m pip install setuptools --upgrade

在这里插入图片描述

安装 toio.py

toio.py是一个用于控制 toio™ 立方体玩具的 Python 库。通过 toio.py,您可以编写 Python 程序来控制 toio 玩具的移动、声音和灯光等功能。

执行命令

python -m pip install toio-py --upgrade

在这里插入图片描述

安装 bleak

Bleak 是一款 BLE GATT客户端软件,能够连接到充当 GATT 服务器的 BLE 设备。它旨在提供一个异步的、跨平台的 Python API 来连接和通信。

执行命令

python -m pip install bleak

在这里插入图片描述

安装 ipykernel

ipykernel是一个用于在Jupyter 中运行Python代码的包,它可以将Python代码转化为可以在IPython内核上运行的格式。

执行指令

python -m pip install ipykernel

安装时间较长,请耐心等待一下😃

在这里插入图片描述

检查是否安装成功

执行指令

python -c "import toio.scanner; print('ok')"

在这里插入图片描述

如果您看到ok,则toio.py已成功安装。如果收到ImportError,则表示安装不起作用。如果您尝试再次安装toio.py,但它不起作用,请尝试重新安装Python。

定义电子小企鹅的功能和逻辑

●利用其可以移动的特性,让小企鹅完成移动的指令;
●利用其灯光变色的特性,让小企鹅的表情颜色进行变换;
●利用其发声的特性,让小企鹅发出叫声与孩子互动;

小企鹅移动

首先我们来定义小企鹅移动的逻辑:让它实现圆周运动,代码如下:

def move():
    targets = ((30, 30), (30, -30), (-30, -30), (-30, 30), (30, 30))
    print("** 激活Q宝")
    with SimpleCube() as cube:
        print("** 连接")
        for target in targets:
            target_pos_x, target_pos_y = target
            print(f"move to ({target_pos_x}, {target_pos_y})")
            success = cube.move_to(speed=70, x=target_pos_x, y=target_pos_y)
            print(f"arrival: {success}")
            if not success:
                print("Position ID missed")
                break
            cube.sleep(0.5)
    print("** 断开连接")

打印日志如下:
在这里插入图片描述

运行视频如下:

圆周运动

小企鹅脸变色

我们利用Q宝的灯光变色的特性来模拟一下小企鹅表情颜色的变化,让他的灯光由白色变为红色,接着变为绿色,最后变为蓝色。代码如下:

def color():
    print("** 激活Q宝")
    with SimpleCube() as cube:
        print("** 连接")
        print("** CUBE NAME:", cube.get_cube_name())

        print("** WHITE")
        cube.turn_on_cube_lamp(r=255, g=255, b=255, duration=2)
        print("** RED")
        cube.turn_on_cube_lamp(r=255, g=0, b=0, duration=2)
        print("** GREEN")
        cube.turn_on_cube_lamp(r=0, g=255, b=0, duration=2)
        print("** BLUE")
        cube.turn_on_cube_lamp(r=0, g=0, b=255, duration=2)
        print("** OFF")
        cube.turn_off_cube_lamp()

    print("** 断开连接")

打印日志如下:

在这里插入图片描述

运行视频如下:

颜色变色

小企鹅尖叫

我们利用Q宝发声音的的特性来模拟一下小企鹅的叫声,代码如下:

def sound():
    print("** 激活Q宝")
    with SimpleCube() as cube:
        print("** 连接")
        print("CUBE NAME:", cube.get_cube_name())

        cube.play_sound(note=80, duration=25, wait_to_complete=False)
        cube.sleep(2)
        cube.play_sound(note=70, duration=20, wait_to_complete=False)
        cube.play_sound(note=70, duration=20, wait_to_complete=False)
        cube.play_sound(note=70, duration=20, wait_to_complete=False)
        cube.play_sound(note=70, duration=20, wait_to_complete=False)
        cube.play_sound(note=70, duration=20, wait_to_complete=False)
        cube.play_sound(note=70, duration=20, wait_to_complete=False)
        cube.sleep(2)
        cube.play_sound(note=80, duration=22, wait_to_complete=False)
        cube.play_sound(note=80, duration=22, wait_to_complete=False)
        cube.play_sound(note=80, duration=22, wait_to_complete=False)
        cube.play_sound(note=80, duration=22, wait_to_complete=False)
        cube.play_sound(note=80, duration=22, wait_to_complete=False)
        cube.play_sound(note=80, duration=22, wait_to_complete=False)
        cube.play_sound(note=80, duration=22, wait_to_complete=False)
        cube.play_sound(note=80, duration=22, wait_to_complete=False)
        cube.play_sound(note=80, duration=22, wait_to_complete=False)
        cube.sleep(2)
        print("stop")
        cube.stop_sound()
   
    print("** 断开连接")

运行视频如下:

声音

综合实现

我们把上边的三个特性结合起来,模拟小企鹅运动、表情变化、发声来实现最终的小玩具。让它先做圆周运动,然后发出叫声,最后表情变为红色,一直循环往复与小朋友进行互动。

def test():
    print("** ACTIVATE")
    targets = ((30, 30), (30, -30), (-30, -30), (-30, 30), (30, 30))
    with SimpleCube() as cube:
        print("** CONNECTED")
        # 游戏主循环
        while True:
            for target in targets:
                target_pos_x, target_pos_y = target
                print(f"move to ({target_pos_x}, {target_pos_y})")
                success = cube.move_to(speed=70, x=target_pos_x, y=target_pos_y)
                print(f"arrival: {success}")
                if not success:
                    print("Position ID missed")
                    break
            cube.sleep(0.5)
            # 进行互动动作
            cube.play_sound(note=80, duration=25, wait_to_complete=False)
            # 稍微延时一下,控制互动频率
            cube.sleep(0.5)
            cube.turn_on_cube_lamp(r=255, g=0, b=0, duration=2)

        print("** END")

以上就是我自己实现的一个简单的可以与孩子进行互动的小企鹅玩具的全过程,如果可以给核心Q宝做一个小企鹅的外观,那就在合适不过了。

总结

文章的最后,我们来总结下toio可编程性的特点吧:
●具有造性和创新性:通过编程 toio 玩具,可以释放孩子的创造力并创造出各种有趣和独特的交互体验。
●具有学习编程的乐趣:toio 提供了一个很好的学习平台,使初学者对编程感兴趣。无论是儿童还是成人,通过编写程序来控制 toio 玩具,可以激发对编程的热情,并帮助他们掌握编程基础。
●具有手眼协调和问题解决能力:通过编程 toio 玩具,孩子们需要使用逻辑思维和问题解决技巧来设计和实现各种功能。这有助于提高手眼协调能力、培养解决问题的能力和逻辑思维能力。
●联机游戏和合作项目:toio 玩具支持多个设备之间的联机连接,这意味着您可以创建多人游戏或合作项目。通过编程 toio 玩具,您可以与朋友、家人或同学一起合作,共同设计和实现有趣的互动体验。
●可以与其他平台集成:toio 提供了丰富的开发文档和 API,使其可以轻松地与其他平台和设备进行集成。您可以将 toio 玩具与虚拟现实、增强现实、机器人等技术相结合,创造出更加丰富和多样化的体验。

总之,toio 玩具的可编程性为用户提供了极大的创造和学习空间,可以充分激发大家的想象力,并促进编程和问题解决能力的发展。它是一个令人兴奋和有趣的工具,适合各个年龄段的人使用。看到这儿,你还不赶紧行动吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/985351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

改进深度学习网络的几个思路

由于要优化网络,老师给提供的几个思路: 个人学习后的几个认知: 1.联级特征融合模块 主要用于残差网络最后的残差块融合上 其中 R5 是经过 Res5 通过 33 的卷积获得的特征图,该特征图保持空间分辨率不变,并将通道的数…

dnmp运行时404报错

dnmp运行时404报错 问题截图: dnmp简介 M1芯片(Arm CPU) 环境中搭建PHPNGINXMYSQL的利器,docker容器管理当前使用的软件,可以简单安装软件和扩展。 localhost.conf 原始文件如下: server {listen 8…

21.5 CSS 网页布局方式

网页布局方式 网页布局方式: 是指浏览器对网页中的元素进行排版的方法.常见的网页布局方式包括: * 1. 标准流(文档流/普通流)布局: 这是浏览器默认的排版方式.元素按照其在文档中的位置依次排列, 可以使用CSS的盒模型属性进行水平和垂直布局.* 2. 浮动布局: 通过设置元素的fl…

uniapp项目实践总结(十二)封装通用请求上传以及下载方法

导语:在日常开发过程中,前端经常要和后端进行接口联调,获取并且渲染数据到页面中,接下来就总结一下 uniapp 中获取请求、文件下载和上传的一些方法。 目录 原理分析方法实现实战演练案例展示 原理分析 主要是使用uni.request方…

基于YOLOV8模型的海上船只目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOV8模型的海上船只目标检测系统用于日常生活中检测与定位海上船只目标(散装货船(bulk cargo carrier)、集装箱船(container ship)、渔船(fishing boat)、普通货船&#…

【嵌入式开发 Linux 常用命令系列 7.1 -- awk 过滤列中含有特定字符的行】

文章目录 awk 过滤列中字符串 上篇文章:嵌入式开发 Linux 常用命令系列 7 – awk 常用方法详细介绍 awk 过滤列中字符串 cat test.log | awk -F $31 {print $0}说明: -F 以什么分隔列,这里是以空格为分隔符;$3代表第3列;$3…

生存游戏手游推荐,适合长期玩的生存类手游

今天小编为大家带来了生存游戏手游推荐,适合长期玩的生存类手游。许多朋友现在喜欢冒险,想体验荒野生活,但在现实中,由于各种原因可能实现不了。游戏中的生存可以满足玩家对狂野生存的幻想,让现实中未实现的梦想在虚拟…

MyBatis-Plus学习笔记总结

一、查询 构造器分为QueryWrapper和LambdaQueryWrapper 创建实体类User package com.system.mybatisplus.model;import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.…

华为云云服务器评测|在云耀云服务器L实例上部署battle-city坦克大战小游戏

华为云云服务器评测|在云耀云服务器L实例上部署battle-city坦克大战小游戏 一、前言1.1 云耀云服务器L实例简介1.2 battle-city坦克大战小游戏简介 二、本次实践介绍2.1 本次实践简介2.2 本次环境规划 三、购买云耀云服务器L实例3.1 登录华为云3.2 购买云耀云服务器…

八种十倍提升API性能的方式

提起API,作为程序员来说并不陌生,很多程序员的大部分工作都是围绕着它, 然而,有些内容被大家忽略,API的性能会直接影响产品的用户体验,比如,一个视频软件,播放1s后需要加载5s&#x…

Android 状态栏显示运营商名称

Android 原生设计中在锁屏界面会显示运营商名称,用户界面中,大概是基于 icon 数量长度显示考虑,对运营商名称不作显示。但是国内基本都加上运营商名称。对图标显示长度优化基本都是:缩小运营商字体、限制字数长度、信号图标压缩上…

SAM论文翻译

文章目录 Abstract1、Introduction2、Related Work3、Methodology3.1、Semantic Graph3.2、Semantic Aware Module3.3、Decoder3.4、Loss Function 4、Experiments4.1、Datasets4.2、Implementation Details4.3、Evaluation Protocol4.4、Comparison with State-of-the-Art 论文…

SpringBoot粗浅分析

应用分析 1、依赖管理机制 在springBoot项目中,导入starter-web所有想换依赖都会被导入,甚至不用去规定它们的版本号。它是根据Maven的依赖传递原则来设置,只需要导入场景启动器,场景启动器自动把这个场景的所有核心依赖全部导入…

对极几何与三角化求3D空间坐标

一&#xff0c;使用对极几何约束求R,T 第一步&#xff1a;特征匹配。提取出有效的匹配点 void find_feature_matches(const Mat &img_1, const Mat &img_2,std::vector<KeyPoint> &keypoints_1,std::vector<KeyPoint> &keypoints_2,std::vector&l…

管理类联考——数学——汇总篇——知识点突破——数据分析——计数原理——减法原理除法原理

减法原理 正面难则反着做(“ − - −”号) 【思路】当出现“至少、至多”、“否定用语"等正面较难分类的题目&#xff0c;可以采用反面进行求解&#xff0c;注意部分反面的技巧以及“且、或"的反面用法。 除法原理 看到相同&#xff0c;定序用除法消序( “ &quo…

JavaScript中点号运算符与方括号运算符

这篇文章将介绍如何在对象中获取数据、修改数据。在JavaScript中&#xff0c;点号运算符和方括号运算符都可以用于访问对象的属性。 我们还是使用上节课的代码来演示 const ITshareArray { firstname: “张三”, secondname: “二愣子”, age: 2033-1997, job: “程序员”, fr…

自动化运维——ansible (五十二) (01)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、概述 1.1 为什么要用自动化运维软件 1.2 自动化运维 1.3 自动化运维要注意的方面 1.4 自动化运维主要关注的方面 1.5 常见的开源自动化运维软件 1.6 自动化运维软件…

Debian11安装MySQL8.0,链接Navicat

图文小白教程 1 下载安装MySQL1.1 从MySQL官网下载安装文件1.2 安装MySQL1.3 登录MySQL 2 配置Navicat远程访问2.1 修改配置2.2 Navicat 连接 end: 卸载 MySQL 记录于2023年9月&#xff0c;Debian11 、 MySQL 8.0.34 1 下载安装MySQL 1.1 从MySQL官网下载安装文件 打开 MySQ…

Unity 之 利用数组来管理资源

文章目录 在Unity中&#xff0c;资源数组&#xff08;Resource Arrays&#xff09;不是Unity的标准概念。然而&#xff0c;您可能在特定上下文中使用数组来管理资源或游戏对象。我将解释如何在Unity中使用数组来管理资源。 资源管理&#xff1a; 在Unity中&#xff0c;资源通常…

9.7 C高级day2 作业

#!/bin/bash mkdir ~/dir mkdir ~/dir/dir1 mkdir ~/dir/dir2 cp ./* ~/dir/dir1 -r cp ./*.sh ~/dir/dir2 cd ~/dir tar -cJf dir2.tar.xz dir2 mv dir2.tar.xz dir1 cd tar -xJf dir/dir1/dir2.tar.xz -C dir/dir1 tree ~/dir