索尼 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中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息