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

本文主要是介绍索尼 toio™ 应用创意开发征文 | 如何用Python控制Q宝进行机器人擂台赛,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于青少年来说,操控自己的机器人打擂台是非常有成就感的活动。如今,索尼toio™就能让他们梦想成真。我们可以在布置好的场地中使用键盘或操作杆操控两个Q宝机器人互相攻击,先被挤出场地的一方判负。下面我会分享如何使用toio™机器人来实现一场精彩刺激的机器人擂台赛。

toio™机器人擂台赛准备:

在准备阶段,我们需要准备两个toio™Q宝机器人、一台PC以及一个自制的擂台;在软件方面,由于我们将使用Python语言进行控制,因此需要安装相关的软件包,包括setuptools、toio、bleak、ipykernel和asyncio等。

在这里插入图片描述

toio™机器人擂台赛实现:

使用toio™Q宝进行机器人擂台赛的关键在于如何通过编程控制它的运动。Q宝的编程控制有两种方式:一种是在索尼toio™的官方网站上进行可视化编程,另外就是我们可以选择自己熟悉的开发语言,并利用官方为我们提供的代码库来进行自主编程(我们选择使用Python语言)。下面会对两种控制方式都进行简单的介绍。

可视化编程控制Q宝

可视化编程网站是索尼toio™的官方所提供的,网站地址为:https://toio.github.io/toio-visual-programming/c/

进入该网站,我们可以在这个位置来对我们的Q宝进行蓝牙连接,连接成功就会显示绿色的对号提示。

在这里插入图片描述

然后我们就可以进行可视化编程啦,通过从左边拖拽相关组件,最后形成我们的程序,当然,要想控制Q宝的前进,后退移动以及左右旋转,官网也已经为我们提供好了现成的示例代码(https://www.sonystyle.com.cn/minisite/intelligent/toio/visual_programming/vp3/keyboard_controller.sb3),下载完成后,我们只需要选择“文件”选项进行导入就可以啦。下面的这块代码就是用来控制Q宝的移动的:

在这里插入图片描述

通过以上程序,我们就可以使用我们键盘的上下左右键对Q宝的前进,后退,左旋,右旋进行随心所欲的控制,我们还可以对宝的速度的进行设置,另外,还可以将Q宝的行动轨迹在画布上进行绘制。

Python编程控制Q宝

以下是我们使用Python语言对Q宝进行编码控制的步骤,包括下载相关软件包,连接Q宝与电脑,以及编写代码来控制Q宝的移动。

1.下载相关软件包

首先我们要确保我们的电脑安装了Python3.11或更高版本(https://www.python.org/),然后就可以安装相关的软件包了,安装命令如下:

# 安装setuptools软件包
python -m pip install setuptools --upgrade# 安装toio.py软件包
python -m pip install toio-py --upgrade# 安装bleak软件包
python -m pip install bleak --upgrade# 安装ipykernel软件包
python -m pip install ipykernel --upgrade# 安装toio包
python -m pip install toio-py --upgrade

2.将toio™核心Q宝连接到电脑

在编写代码之前,需要将toio™核心Q宝连接到电脑,可以使用USB线或蓝牙来实现连接,需要扫描并连接到方块设备,可以通过以下代码实现:

import asynciofrom toio import *
# 定义一个异步函数来连接toio™ Q宝
async def cube_connect():device_list = await BLEScanner.scan(1)assert len(device_list) > 0cube = ToioCoreCube(device_list[0].interface)await cube.connect()return cube# 定义一个异步函数来断开toio™ Q宝的连接
async def cube_disconnect(cube):await cube.disconnect()await asyncio.sleep(2)

asyncio和toio模块提供了异步编程和与方块通信的功能,我们定义一个cube_connect函数,用来扫描并连接到方块设备,返回一个cube对象,另外定义一个cube_disconnect函数,用来断开与方块的连接,并等待2秒。

3.用Python代码控制Q宝的移动

要使用索尼toio™进行机器人擂台赛,最好的方式就是使用键盘来对Q包的移动进行控制,以下是使用Python代码控制Q宝移动的核心代码,包括控制Q宝的前进、后退、左转和右转。

# 导入所需的库
import asyncio
import keyboard
import time
from toio import ( BLEScanner,Motor,ToioCoreCube,
)# 定义一个异步函数来连接toio™ Q宝
async def cube_connect():# 扫描并连接最近的toio™ Q宝device_list = await BLEScanner.scan(1)assert len(device_list) > 0cube = ToioCoreCube(device_list[0].interface)await cube.connect()return cube# 定义一个异步函数来断开toio™ Q宝的连接
async def cube_disconnect(cube):await cube.disconnect()await asyncio.sleep(2)# 连接toio™ Q宝
cube = await cube_connect()# 定义键盘监听事件# 上键往前移动,参数分别为左电机速度、右电机速度和持续时间
keyboard.on_press_key("up", lambda _: cube.api.motor.motor_control(100, 100, 1000))
# 下键往后移动,参数分别为左电机速度、右电机速度和持续时间  
keyboard.on_press_key("down", lambda _: cube.api.motor.motor_control(-100, -100, 1000))  
# 左键逆时针旋转,参数分别为左电机速度、右电机速度和持续时间
keyboard.on_press_key("left", lambda _: cube.api.motor.motor_control(-100, 100, 1000))  
# 右键顺时针旋转,参数分别为左电机速度、右电机速度和持续时间
keyboard.on_press_key("right", lambda _: cube.api.motor.motor_control(100, -100, 1000))  # 使程序持续运行,以便持续监听键盘输入
while True:time.sleep(1)

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

Q宝机器人擂台赛

我们也可以为机器人制作个性化的装扮:

在这里插入图片描述

再开始擂台赛,体验就更好了:

Q宝机器人擂台赛

利用场地变化,我们也可以开发更多的擂台赛规则。例如,我们可以操控机器人在圆形的跑道上赛跑,比赛过程中机器人超出跑道范围者判负,先到达终点胜利;我们也可以操控机器人将小玩具从擂台的一个位置推到另一个位置,过程中机器人和己方的小玩具都不能被对方挤出擂台;我们还可以将这些玩法组合起来,通过多局对决来比出最终的胜负。总之,基于简单的擂台赛机制,小孩子可以使用Q宝机器人开发出很多玩法,增添更多乐趣。

这篇关于索尼 toio™ 应用创意开发征文 | 如何用Python控制Q宝进行机器人擂台赛的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/439073

相关文章

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、