索尼 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

相关文章

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互