索尼 toio™ 应用创意开发征文 | 如何用Python控制Q宝进行机器人擂台赛

你是否曾经想过,如果能用编程来控制真实的物体,那该有多有趣?如果能让一个小方块按照你的指令来移动、旋转、闪烁,那该有多酷?如果能让一个小方块和其他小方块互动,那该有多神奇?这些想法,都可以通过索尼toio™来实现。

索尼toio™是一款由索尼公司开发的可以激发创意灵感的机器人产品,它可以通过蓝牙连接到手机或电脑,并通过专用的应用或编程语言来控制,可以为从儿童到成人的不同群体带来丰富的互动娱乐体验。

索尼toio™不仅是一款富有创意和娱乐性的玩具,也是一款具有教育意义的工具。toio™具有开放性和可塑性,可为编程初学者、进阶用户以及专业人士提供多样化的STEAM学习和编程开发体验,可以让孩子们在玩乐中学习编程的基本概念和技能。

toio™已经成为帮助许多开发者发挥想象力的伙伴,下面让我们一起来感受一下toio™的魅力吧!

一、索尼toio™简介

索尼toio™是一款由索尼公司开发的智能玩具方块,用乒乓球大小的白色立方体——toio™核心Q宝,即可创作非常广泛的应用和玩法。toio™核心Q宝是一个开源机器人,其产品规格和应用程序编程接口开源,可通过JavaScript、Python、Unity、可视化编程等语言和平台创造出丰富的应用和作品。它可以通过蓝牙连接到手机或电脑,并通过专用的应用或编程语言来控制。它不仅是一款富有创意和娱乐性的玩具,也是一款具有教育意义的工具,可以让孩子们在玩乐中学习编程的基本概念和技能。

在这里插入图片描述

索尼toio™由两个小方块组成,每个方块都配置了高性能马达,最大可以带动200g的物品。方块还内置了传感器,可以感知自身的位置、方向、倾斜角度、碰撞等信息,并通过声光信号来反馈。方块之间还可以相互通信,实现协同运动,可应用于艺术创作、游戏、人工智能与深度学习等领域的研究开发。

索尼toio™提供了多种玩法,可以根据不同的年龄段和兴趣选择。对于3岁以上的儿童,可以使用专用的应用来控制方块,进行各种有趣的游戏和挑战。对于6岁以上的儿童,可以使用图形化编程语言Scratch来编写自己的程序,实现更多的创意和功能。对于成人用户,还可以使用Python等高级编程语言来控制方块,开发更复杂的应用和项目。

索尼toio™是一款集创造、体验、灵感于一体的机器人玩教具产品,它可以让用户从儿童到成人阶段都能享受到互动娱乐的乐趣,并培养跨学科思考能力和编程技能。

二、用Python控制方块运动

我是武汉理工大学的一名研究生,最近有幸体验了索尼toio™,并用Python语言来控制它的运动。下面,我将分享我的初体验感受,并展示一些我写的代码和效果。

1、下载相关软件包

(1)首先我们要确保我们的电脑安装了Python3.11或更高版本(https://www.python.org/)

(2)安装setuptools软件包,命令如下:

python -m pip install setuptools --upgrade

(3)安装toio.py软件包,命令如下:

python -m pip install toio-py --upgrade

(4)安装bleak软件包,命令如下:

python -m pip install bleak

(5)安装ipykernel软件包,命令如下:

python -m pip install ipykernel

(6)确认,在命令提示符下执行以下命令进行验证,查看toio.py是否安装成功:

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

若屏幕中显示“ok”,说明toio.py已成功安装。

更详细的安装步骤可以参考toio.Python代码库中的技术指导:https://github.com/toio/toio.py/blob/main/SETUP_GUIDE.zh.md

2、用Python编写程序

(1)在编写代码之前,需要将toio™核心Q宝连接到电脑,可以使用USB线或蓝牙来实现连接。

(2)需要扫描并连接到方块设备,这可以通过以下代码实现:

import asynciofrom toio import *
async def cube_connect():device_list = await BLEScanner.scan(1)assert len(device_list) > 0cube = ToioCoreCube(device_list[0].interface)await cube.connect()return cubeasync def cube_disconnect(cube):await cube.disconnect()await asyncio.sleep(2)

这段代码导入了asyncio和toio模块,这两个模块提供了异步编程和与方块通信的功能。然后定义了一个cube_connect函数,用来扫描并连接到方块设备,返回一个cube对象。最后定义了一个cube_disconnect函数,用来断开与方块的连接,并等待2秒。

(3)定义一个notification_handler函数,用来处理方块发来的通知数据,比如电机信息:

def notification_handler(payload: bytearray):motor_info = Motor.is_my_data(payload)print(type(motor_info), str(motor_info))

(3)测试一:测试方块的电机控制功能,让方块向前行驶一段距离,可以通过以下代码实现:

async def test_motor_1():"""example ToioCoreCube.api.motor.motor_control()"""cube = await cube_connect()await cube.api.motor.motor_control(10, 10)await asyncio.sleep(2)await cube.api.motor.motor_control(0, 0)await cube_disconnect(cube)

这段代码定义了一个test_motor_1函数,用来测试方块的电机控制功能。这个函数先连接到方块,然后调用cube.api.motor.motor_control方法,传入两个参数分别表示左右两个轮子的速度。这里我设置了10的速度,表示方块以较慢的速度向前行驶。然后等待2秒,再调用同样的方法,传入0的速度,表示方块停止。最后断开连接。

(4)测试二:测试方块的电机控制目标功能,让方块以线性运动,并加速和减速,可以通过以下代码实现:

async def test_motor_2():"""example ToioCoreCube.api.motor.motor_control_target()"""cube = await cube_connect()await cube.api.motor.register_notification_handler(notification_handler)await cube.api.motor.motor_control_target(timeout=5,movement_type=MovementType.Linear,speed=Speed(max=100, speed_change_type=SpeedChangeType.AccelerationAndDeceleration),target=TargetPosition(cube_location=CubeLocation(point=Point(x=200, y=200), angle=0),rotation_option=RotationOption.AbsoluteOptimal,),)await asyncio.sleep(4)await cube.api.motor.motor_control(0, 0)await cube_disconnect(cube)

这个函数先连接到方块,并注册通知处理函数。然后让方块以线性运动方式,在5秒内以最大速度100,并有加速和减速效果,移动到(200, 200)的位置,并转向0度角。最后停止并断开连接。

(5)测试三:测试方块的电机控制多个目标功能,可以通过以下代码实现:

async def test_motor_3():"""example ToioCoreCube.api.motor.motor_control_multiple_targets()"""cube = await cube_connect()await cube.api.motor.register_notification_handler(notification_handler)targets = [TargetPosition(cube_location=CubeLocation(point=Point(x=250, y=250), angle=0),rotation_option=RotationOption.AbsoluteOptimal,),TargetPosition(cube_location=CubeLocation(point=Point(x=120, y=170), angle=0),rotation_option=RotationOption.AbsoluteOptimal,),]await cube.api.motor.motor_control_multiple_targets(timeout=5,movement_type=MovementType.Linear,speed=Speed(max=100, speed_change_type=SpeedChangeType.AccelerationAndDeceleration),mode=WriteMode.Overwrite,target_list=targets,)await asyncio.sleep(5)await cube_disconnect(cube)

这个函数先连接到方块,并注册通知处理函数。然后定义了两个目标位置,分别是(250, 250)和(120, 170),都是绝对最优的旋转方式。然后让方块以线性运动方式,在5秒内以最大速度100,并有加速和减速效果,依次移动到这两个目标位置。最后断开连接。

(6)依次调用test_motor_1, test_motor_2和test_motor_3三个函数:

async def main():print("1: motor_control()")await test_motor_1()print("2: motor_control_target()")await test_motor_2()print("3: motor_control_multiple_targets()")await test_motor_3()

定义的main函数用来依次调用test_motor_1, test_motor_2和test_motor_3三个函数,并打印出对应的序号和函数名。

(7)使用asyncio.run(main())来运行main函数:

asyncio.run(main())

运行Python代码,就可以观察到toio™核心Q宝做出的相应反应和表现啦。

三、索尼toio™的机器人擂台赛

你知道机器人武术擂台赛吗?你有没有想过就是这么小巧玲珑的两个Q宝,我们也可以对其进行设计,从而可以进行机器人擂台赛?

机器人武术擂台赛是把智能机器人技术和中国的传统武术文化、创客精神和理念充分结合起来的机器人赛事。参赛队伍需要设计制作完全自主的机器人,双方的机器人在擂台上使用各种传感器检测自身和对手的位置,根据设计的程序算法变化自己的进攻和防守策略,并利用各种执行器(武器)攻击对手,把对手打下擂台获胜。

机器人武术擂台赛是一种模拟中国传统擂台格斗的机器人竞技活动,要求参赛队员设计制作能够完成指定任务的自动化或半自动化机器人,并在规定时间内进行对抗。机器人武术擂台赛可以培养参赛者的创新思维和动手能力,让他们在实践中学习和掌握机器人相关的技术知识,如机械设计、电路设计、编程控制、传感器应用;可以提高参赛者的团队协作和沟通能力,让他们在合作中分工明确、相互配合、共同解决问题,提升团队的整体实力和效率;可以增强参赛者的竞争意识和挑战精神,让他们在对抗中不断优化自己的机器人,追求更高的性能和更好的效果,展现自己的智慧和勇气。机器人武术擂台赛是一种富有教育意义和娱乐价值的机器人竞技活动,它可以让参赛者在快乐中学习,在挑战中成长,在创造中表达。

机器人武术擂台赛能够为我们带来极大的乐趣和多方面不同的体验。而就是这么两个小小的Q宝,也能满足我们对于机器人武术擂台赛的体验。上边已经为大家分享了如何通过Python代码来控制Q宝的移动,当我们能够灵活控制Q宝的移动和其他动作时,想让两个Q宝来一场机器人擂台赛也就不是难事了!

看!当给Q宝带上一个“面具”,是不是就更活灵活现了呢!再给它装配上武器装备,是不是看起来战斗力爆满呢?

索尼toio™的机器人擂台赛

用Q宝进行机器人擂台赛的乐趣不仅仅在于控制它们的移动和动作,还在于设计它们的战术和策略。我们可以根据不同的对手和场地,调整Q宝的速度、方向、攻击方式和防御姿态,让它们在擂台上展现出不同的风采。我们也可以给Q宝设置不同的声音和灯光效果,让它们在战斗中发出各种各样的声响和光芒,增加擂台赛的气氛和趣味。

用Q宝进行机器人擂台赛的意义不仅仅在于提升自己的编程能力和机器人知识,还在于培养自己的创造力和想象力。可以根据自己的喜好和风格,给Q宝装饰上各种各样的面具、武器、装备,让它们变成我们心目中的英雄或者反派,或者是我们自己创造的角色。我们也可以根据自己的故事和情节,给Q宝编排上各种各样的剧本、对话、动作,让它们在擂台上演绎出你想象中的场景和故事。

下面经过我们装饰的Q宝是不是更迅猛无比了呢!

在这里插入图片描述

总之,用Q宝进行机器人擂台赛是一种富有乐趣、意义、过程的机器人竞技活动,它可以让你在玩中学,在学中玩,在玩中创,在创中玩。

四、索尼toio™之真实体验

在体验了索尼toio™之后,其编程功能让我印象深刻,因为它让我可以自由地控制toio™核心Q宝的行为,实现了对于Q宝的创意想法——机器人比赛。索尼toio™的操作非常简单,提供了各种库和API,使得编写控制和交互代码变得非常容易,从而可以方便的控制它进行灵活的移动和各种不同的动作。无论是对于有编程经验的人,还是对于初学者,都是一个很好的学习和实践工具,通过阅读代码和文档,可以快速地掌握编程接口和逻辑。

在这里插入图片描述

核心Q宝搭载了姿势检测和高性能马达等尖端科技!不仅可以检测三维姿势和动作,还可以对外界的刺激和事件做出各种反应。2台核心Q宝之间的碰撞,不仅可以模拟人的互动,还可模拟各种生物做出反应和不可思议的动作。这些都得益于其中的尖端科技元素。拿两个Q宝来一场竞技,真是体验感满满!

我一直对机器人很感兴趣,所以当我听说有一款可以自由操控的智能机器人Q宝时,我就迫不及待地想要试试。Q宝是一款内置了各种奇怪语音的立方体小机器人,它可以通过一个环形的控制器来移动和做出反应。我觉得这样的设计非常有趣。

我想要用Q宝来参加一个机器人擂台赛,所以先给它们装上了一些积木和手工制作的武器,让它们看起来更加强悍。然后我用控制环来操纵Q宝,让它们在一个特制的竞技场上进行对战。竞技场上有各种障碍物和陷阱,需要灵活地控制Q宝的方向和速度,同时还要注意躲避对方的攻击。Q宝之间的碰撞和互动会发出各种有趣的声音,让我觉得非常有趣。

索尼toio™的机器人擂台赛

在机器人擂台赛中,我体验到了Q宝的灵巧和精准,以及它们的可塑性和反应灵敏度。我觉得Q宝是一款非常有创意和互动性的机器人玩具,它可以让我发挥想象力,创造出自己的玩法。我也感受到了机器人擂台赛的刺激和乐趣,以及策略和反应能力的锻炼。我觉得这是一种非常好的娱乐方式,也是一种很好的学习方式。

在体验过程中,我也遇到了一些挑战,比如连接和通信的问题,有时候toio™核心Q宝不能正确地接收我的指令,或者反应很慢。通过检查我的代码和网络设置,以及重启toio™核心Q宝来解决了问题。

索尼toio™的机器人擂台赛

toio™机器人还有非常多的有趣应用,包括通过编程使三个toio™核心Q宝一齐发出音效;通过toio™核心Q宝制作教具;为toio™核心Q宝配备两个机械脚,设计编程代码使toio™核心Q宝能够自主向前行进;给toio™核心Q宝两侧配备两个轮胎,使小车具备越野能力;将两个 toio™ 核心Q宝与 4 个机械轮组合,制作一个四轮车等。

总之,toio™不仅能够创作出有趣的互动作品,还可用于探索未来智能新应用,toio™机器人还有超多的趣味玩法有待我们亲自去探索!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试/测试开发丨跨平台 api 对接 学习笔记

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27139 跨平台 api 对接 测试平台需求 稳定 功能 调用脚本报告获取分布式支持 API 调用 开源 Jenkins 环境准备 Jenkins 满足所有调度平台的需求 需…

MindFusion.Diagramming for ASP.NET MVC 4.2 Crack

ASP.NET MVC 4.2 的 MindFusion.Diagramming 添加对多个图表页面和选项卡式图表视图的支持。 2023 年 9 月 8 日 - 16:57新版本 特征 多个图表页面-添加了DiagramDocument 类,它表示图表页面或工作表的集合。 可以将新页面添加到文档中,并且可以删除或重…

容器编排学习(一)容器技术

一 容器 1 Linux 容器的起源 容器的起源可以追溯到1979年 UNIX 系统中提供的chroot命令,容器的最初的设计目标是为了隔离计算机中的各类资源以便降低软件开发、测试阶段的风险,或者充当蜜罐,吸引黑客的攻击,以便监视黑客的行为…

Logstash--logstash-syslog-putput插件安装及使用

这篇文章讲的是如何在Linux服务器上安装logstash-syslog-output插件及使用,是集网上之大成,择选出一条正确有效简短的路。 安装 插件logstash-syslog-output,如果你的logstash没有,则需要安装。 查看logstash是否含有这个插件的…

二分搜索树节点的查找(Java 实例代码)

目录 二分搜索树节点的查找 Java 实例代码 src/runoob/binary/BinarySearchTreeSearch.java 文件代码: 二分搜索树节点的查找 二分搜索树没有下标, 所以针对二分搜索树的查找操作, 这里定义一个 contain 方法, 判断二分搜索树是否包含某个元素, 返回一个布尔型变…

SpringMVC之CRUD------增删改查

目录 前言 配置文件 pom.xml文件 web.xml文件 spring-context.xml spring-mvc.xml spring-MyBatis.xml jdbc.properties数据库配置文件 generatorConfig.xml log4j2日志文件 后台 PageBaen.java PageTag.java 切面类 biz层 定义一个接口 再写一个实现类 …

C++设计模式_03_模板方法Template Method

文章目录 1. 设计模式分类1.1 GOF-23 模式分类1.2 从封装变化角度对模式分类 2. 重构(使用模式的方法)2.1 重构获得模式 Refactoring to Patterns2.2 重构关键技法 3. “组件协作”模式4. Template Method 模式4.1 动机( Motivation&#xff…

【Linux从入门到精通】通信 | 共享内存(System V)

本篇文章接着上篇文章通信 | 管道通信(匿名管道 & 命名管道)进行讲解。本篇文章的中点内容是共享内存。 文章目录 一、初识与创建共享内存 1、1 什么是共享内存 1、2 共享内存函数 1、2、1 创建共享内存 shmget 1、2、2 ftok 生成 key 1、2、3 获取共…

YOLO目标检测——红火蚂蚁识别数据集+已标注yolo格式标签下载分享

实际项目应用:目标检测红火蚂蚁识别数据集在农业、生态学、环境保护、城市管理和学术研究等领域都有着广泛的应用。通过准确识别和定位红火蚂蚁,可以帮助我们更好地了解和管理这一入侵物种,从而减少其对环境和经济的负面影响。数据集说明&…

一文看懂微信小程序新版隐私协议(附带弹窗组件)

一、前言 微信小程序近期又迎来了一次改革–9月15日之后如果小程序涉及调用微信的隐私接口获取用户的信息的,需要用户手动同意协议后才可正常调用接口,否则会返回报错信息。 隐私接口目前常用的有:手机号快捷获取、读取照片、获取用户的头像…

【爬虫】实验项目三:验证码处理与识别

目录 一、实验目的 二、实验预习提示 三、实验内容 实验要求 基本要求: 改进要求A: 改进要求B: 四、实验过程 基本要求 五、源码如下 六、资料 一、实验目的 部分网站可能会使用验证机制来阻止用户无效登录或者是验证用户不是用程…

自己设计CPU学习之路——基于《Xilinx FPGA应用开发》

1. 一个32组位宽为32的寄存器堆 框图 代码 regfile.h ifndef __FEGFILE_HEADER__define __REGFILE_HEADER__define HIGH 1b1define LOW 1b0define ENABLE_ 1b0define DISABLE_ 1b1define DATA_W 32define DataBus 31:0define DATA_D 32d…

socket编程

网络协议指的是计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则的集合。一般系统网络协议包括五个部分:通信环境,传输服务,词汇表,信息的编码格式,时序、规则和过程。 Socket是应用层和TIP/IP协议簇通…

Middleware ❀ Kafka功能与使用详解

文章目录 1. 概述1.1. 消息队列1.2. 应用场景1.3. 工作模式1.4. 基础结构1.4.1. 结构组件1.4.2. 数据同步1.4.3. ACK机制1.4.4. 分区机制1.4.4.1. 使用Partition Key写入1.4.4.2. 轮询写入 - 默认规则1.4.4.3. 指定Partition写入 1.4.5. Offset偏移量1.4.5.1. 消息顺序性1.4.5.…

linux系统中驱动框架基本分析

大家好,今天分享一篇Linux驱动软件设计思想的文章。由于文章较长,可以先收藏后再慢慢看。 一、Linux驱动的软件架构 1.1 出发点 为适应多种体系架构的硬件,增强系统的可重用和跨平台能力。 1.2 分离思想 为达到一个驱动最好一行都不改就…

Apache DolphinScheduler - 快速扩展 TaskPlugin 从入门到放弃

目前在大数据生态中,调度系统是不可或缺的一个重要组件。Apache DolphinScheduler 作为一个顶级的 Apache 项目,其稳定性和易用性也可以说是名列前茅的。而对于一个调度系统来说,能够支持的可调度的任务类型同样是一个非常重要的因素&#xf…

国内访问香港服务器选择什么路线?

​  国内访问香港服务器可以选择多种路线。首先,我们了解下各个线路的速度延迟。 一、CN2直连:解决了不同互联网服务提供商之间访问的难题,不需要绕到国际网络再从中国的三个网络入口进入。 二、优化直连:全国平均延迟60ms&…

Ubuntu----Linux命令-----防火墙(查看、关闭、启动)

一、查看防火墙状态 命令:ufw status 说明: 活动:防火墙是开启的 不活动:防火墙是关闭的 二、开启防火墙 命令:sudo ufw enable 开启防火墙后,可以查看防火墙状态 三、关闭防火墙 命令:sud…

如何通过构建遥感光谱反射信号与地表参数之间的关系模型来准确估算植被参数?植被参数光学遥感反演方法(Python)及遥感与生态模型数据同化算法

目录 专题一 植被参数遥感反演理论 专题二 植被叶片及冠层反射率模拟与处理 专题三 植被遥感模型参数敏感性分析 专题四 基于查找表(LUT)方法反演植被参数 专题五 基于优化算法反演植被参数 专题六 基于机器学习反演植被参数 专题七 遥感数据同化理论 专题八 同化遥感反…

单目标应用:基于成长优化算法(Growth Optimizer,GO)的微电网优化调度MATLAB

一、微网系统运行优化模型 微电网是由分布式电源、储能装置和能量转换装置等组成的小型发配电系统,具有成本低、电压低、污染小等特点。由于环保和能源压力,清洁可再生能源和分布式能源工业发展潜力巨大。微电网控制器可实现对电网的集中控制&#xff0…