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

news2025/7/18 21:23:50

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

from toio import *
async def cube_connect():
    device_list = await BLEScanner.scan(1)
    assert len(device_list) > 0
    cube = ToioCoreCube(device_list[0].interface)
    await cube.connect()
    return cube

async 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.coloradmin.cn/o/990443.html

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

相关文章

Jmeter系列-插件安装(5)

前言 jmeter4.0以上,如现在最新的5.2.1版本是有集成插件的只需要在官网下载 plugins-manager.jar 包,放在jmeter安装路径的lib/ext目录下即可使用:https://jmeter-plugins.org/install/Install/但并不能满足所有需求,仍然需要安装…

CSS读书笔记

——————————————精华部分—————————————— 1、选择器 (1)基本选择器: 标签选择器 body{} 类选择器 class .class名称{} ID选择器 id #id名称{} 优先级:ID选择器 > 类选择器 > 标签选择器 &am…

乐鑫 ESP-Mesh-Lite:轻松覆盖更大范围,连接更多设备

乐鑫科技 (688018.SH) 基于 Wi-Fi 协议推出了 Mesh 组网方案 ESP-Mesh-Lite,支持更多设备在更大范围内轻松联网。这一创新性的 Wi-Fi Mesh 技术通过构建灵活、可靠的物联网组网方案,使用户可以享受到快速、稳定且安全的 Wi-Fi 覆盖,不再受到设…

解耦只是一个巧合?

本文分享一篇在IJCAI2023看到的文章:Overlooked Implications of the Reconstruction Loss for VAE Disentanglement 首先回顾下VAE,其loss函数有两项,一项是重构误差,另一项是正则项: L r e c ( x , x ^ ) E q ϕ (…

GPU编程(基于Python和CUDA)(四)——Mandelbort集

系列文章目录 GPU编程(基于Python和CUDA)(一)——零基础安装pycuda GPU编程(基于Python和CUDA)(二)——显示GPU信息 GPU编程(基于Python和CUDA)(…

excel功能区(ribbonx)编程笔记--3 editbox与状态按钮togglebutton控件

从上次发布编程笔记2后,反响还不错,短短一个星期,访问量就达到了1500,说明虽然这个只是有写古老,但是再实际的工作中,excel的编程功能还是有或多人关注的,还不是很小众,比如我就是平时的统计就是使用excle,为了更好的实现自动统计,会添加部分vba代码到里面,就像我的…

直播|DITA内容发布工具解析 - 问答总结

9月6日,我们进行了一场名为“DITA内容发布工具解析”的直播。通过直播,大家了解到: DITA-OT简介 默认输出效果 定制以后输出效果 发布过程与样式定制 在问答环节,大家进行了热烈沟通。我将几个大家关心的问题和答复总结如下&…

图像文件的操作MATLAB基础函数使用

简介 MATLAB中的图像处理工具箱体统了一套全方位的标准算法和图形工具,用于进行图像处理、分析、可视化和算法开发。这里仅仅对常用的基础函数做个使用介绍。 查询图像文件的信息 使用如下函数 imfinfo(filename,fmt) 函数imfinfo返回一个结构体的info&#xff…

27.方向标

题目 描述 一位木匠收到了一个木制指示牌的订单。每块木板必须与前一块垂直对齐,要么与前一个箭头的基部对齐,要么与相反的一侧对齐,在那里用特制的螺钉固定。两块木板必须重叠。木匠将设计师发送的草图编码成了一个整数序列,但…

达梦数据库MAIN表空间导致磁盘满问题的处理和总结

前言 在达梦数据库使用中,建议对数据库表空间使用进行规划,业务用户创建单独的表空间使用。 如果不创建单独的用户表空间会遇到什么问题呢?通过下面的问题和测试说明合理的表空间规划是有必要的。 问题 某开发项目组使用DM8 1-2-192 版本。…

Window安装Node.js npm appium Appium Desktop

Window安装Node.js npm appium appium Desktop 1.安装nodejs 参考链接: https://blog.csdn.net/weixin_42064877/article/details/131610918 1)打开浏览器,并前往 Node.js 官网 https://nodejs.org/ ↗。 2)在首页中,您可以看到当前 Node.…

解决防火墙导致虚拟机不能ping通宿主机的问题

今天,无缘无故的,虚拟机突然用不了,网络连上不了,一番折腾翻找,最后才发现,是因为虚拟机ping不同宿主主机了,连网关都ping不通了,但是,宿主主机却可以ping通虚拟机 。 最…

工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…

Netty(一)NIO-基础

Netty 分布式根基于网络编程,Netty恰是java网络编程的王者,致力于高性能编程。 前置 适用于网络开发,服务器开发。多线程,线程池,maven。 大纲 NIO编程(Selector,ByteBuffer和Channel&…

即拼七人拼团系统开发模式,如何助力电商平台提升产品销量和复购率?

对于电商平台来说,如何提高产品销量和复购率,是每个其他都在面临的最大挑战。而应对这个挑战最好的方法就是结合一款合适的商业模式,一个姓王的客户就运用即拼七人拼团模式,成功提升了产品销量和复购率。 这个王客户运营的电商平台…

全栈自主可控!移动云边缘智能小站EIS新突破

8月中旬,移动云为福建泉州惠安某储能制造公司打造的边缘智能小站EIS正式上线。该项目是中国移动首个正式上线的软硬一体、全栈自主可控的超融合边缘智能小站项目。 边缘智能小站(EIS,Edge Intelligence Site)是基于移动云边缘超融…

Unity的UI面板基类

使用这个组件实现淡入淡出 public abstract class BasePanel : MonoBehaviour {//控制面板透明度 用于淡入淡出private CanvasGroup canvasGroup;//淡入淡出速度private float alphaSpeed 10;//隐藏还是显示public bool isShow false;//隐藏完毕后做的事private UnityAction …

中秋国庆双节将至,企业如何进行软文推广?

节点营销是每个企业都会面临的课题,中秋国庆双节将至,这两个节日不仅是人们消费的高峰期,也是各大企业通过节日营销提高品牌知名度和美誉度的最佳时机,节点营销的方式之一就是软文推广,那么企业应该如何利用双节来进行…

【ccf-csp题解】第1次csp认证-第四题-无线网络-特殊点个数限制的单源最短路径

题目描述 思路讲解 可以把题目抽象为&#xff1a;从第1个点到第2个点&#xff0c;经过特殊点的数量不超过k的单源最短路径&#xff08;其中每条边的权重均为1&#xff09; 可以使用bfs解决这个问题&#xff0c;但是dist[][]数组和队列中放置的pair<int,int>元素不再是单…

Python web 框架web.py「简约美」

web.py is a web framework for Python that is as simple as it is powerful. web.py is in the public domain, you can use it for whatever purpose with absolutely no restrictions. web.py 是一个简单而强大的 Python Web 框架。web.py 属于公共领域&#xff0c;您可以…