当前位置: 首页 > news >正文

索尼 toio™应用创意开发征文|检测工业平台震动

虽然索尼toio Q宝机器人主要是为儿童教育娱乐开发的,但我认为它在工业等领域也有一定应用潜力。例如,工业领域经常会有某些平面在实际作业中持续震动,导致零件过疲劳、平台失去稳定等问题。而这样的平台往往位于机器内部,从外部很难直接观察。为此,我们可以使用Q宝机器人来持续监测平台的震动情况,当震动导致机器人位移过多,就让机器人移动到预定位置报警,提前避免潜在的风险。

具体操作中,我们需要为机器人预置一个周期间隔,每一个间隔结束后机器人检测自身位置是否发生变化,如果发生变化就移动到预定位置闪灯报警。代码如下:

import asyncio
from toio import *green_cube_location = None
red_cube_location = None
red_cube_arrived = Truedef id_notification_handler(payload: bytearray):global green_cube_locationid_info = IdInformation.is_my_data(payload)if isinstance(id_info, PositionId):green_cube_location = id_info.centerdef id_notification_handler_red(payload: bytearray):global red_cube_locationid_info = IdInformation.is_my_data(payload)if isinstance(id_info, PositionId):red_cube_location = id_info.centerdef motor_notification_handler(payload: bytearray):global red_cube_arrivedmotor_response = Motor.is_my_data(payload)if isinstance(motor_response, ResponseMotorControlTarget):print(motor_response)red_cube_arrived = Trueinit_green_cube_location = green_cube_location.pointdev_list = await BLEScanner.scan(2)
assert len(dev_list) == 2
cube_1 = ToioCoreCube(dev_list[0].interface)
cube_2 = ToioCoreCube(dev_list[1].interface)print("connect cube_1")
await cube_1.connect()
print("connect cube_2")
await cube_2.connect()red = IndicatorParam(duration_ms=0,color=Color(r=255, g=0, b=0)
)green = IndicatorParam(duration_ms=0,color=Color(r=0, g=255, b=0)
)await cube_1.api.indicator.turn_on(green)
await cube_2.api.indicator.turn_on(green)print("start")
await cube_1.api.id_information.register_notification_handler(id_notification_handler)
await cube_2.api.id_information.register_notification_handler(id_notification_handler_red)
await cube_2.api.motor.register_notification_handler(motor_notification_handler)target1 = CubeLocation(point=Point(x=384, y=331), angle=95)
target2 = CubeLocation(point=Point(x=344, y=337), angle=94)# 记录初始位置
init_green_cube_location = green_cube_location.point
init_red_cube_location = red_cube_location.point
print(init_green_cube_location)
print(red_cube_location)# 检测坐标是否改变
while True:if init_green_cube_location != green_cube_location.point or init_red_cube_location != red_cube_location.point:tmp_green_cube_location = green_cube_locationprint(green_cube_location)print("位置变了")# 变红await cube_1.api.indicator.turn_on(red)await cube_2.api.motor.motor_control_target(timeout=5,movement_type=MovementType.Linear,speed=Speed(max=100, speed_change_type=SpeedChangeType.AccelerationAndDeceleration),target=TargetPosition(cube_location=target2,rotation_option=RotationOption.AbsoluteOptimal,),)await cube_1.api.motor.motor_control_target(timeout=5,movement_type=MovementType.Linear,speed=Speed(max=100, speed_change_type=SpeedChangeType.AccelerationAndDeceleration),target=TargetPosition(cube_location=target1,rotation_option=RotationOption.AbsoluteOptimal,),)breakawait asyncio.sleep(1)
await cube_1.api.indicator.turn_on(red)
await cube_2.api.indicator.turn_on(red)
await asyncio.sleep(10)
print("check end  ")
await cube_2.api.motor.unregister_notification_handler(motor_notification_handler
)
await cube_1.api.id_information.unregister_notification_handler(id_notification_handler
)
await cube_2.api.id_information.unregister_notification_handler(id_notification_handler_red
)
print("end")
await cube_1.disconnect()
await cube_2.disconnect()

我们可以在平台不同位置安放两个机器人,从而提高检测精度,同时避免单个机器人故障带来的检测失效问题。实际的检测效果示意如下:

检测工业平台震动1

检测工业平台震动2

可以看到,无论哪个机器人的位置发生移动,都会向另一个机器人发出通知,之后两个机器人一同移动到预定位置闪红灯报警。我们还可以增加更多机器人,即使在更大的平面上也能实现较为可靠的检测效果。

从本案例可以看出,Q宝机器人并非只能用于Q12教学用途,在其他领域也有待挖掘的应用潜力。未来,随着Q宝机器人的能力不断迭代,我们或许可以发现更多可以利用Q宝低成本实现的工业等场景的生产力用途。即便无法直接投入实际生产场景,Q宝机器人也可以用来快速搭建设备原型,为更成熟的产品设计提供参考。未来,希望更多开发者加入Q宝生态,将Q宝的潜能发挥到最大水平。

相关文章:

索尼 toio™应用创意开发征文|检测工业平台震动

虽然索尼toio Q宝机器人主要是为儿童教育娱乐开发的,但我认为它在工业等领域也有一定应用潜力。例如,工业领域经常会有某些平面在实际作业中持续震动,导致零件过疲劳、平台失去稳定等问题。而这样的平台往往位于机器内部,从外部很…...

【已解决】 Expected linebreaks to be ‘LF‘ but found ‘CRLF‘.

问题描述 团队都是用mac,只有我自己是windows,启动项目一直报错 Expected linebreaks to be ‘LF‘ but found ‘CRLF‘. 但我不能因为自己的问题去改团队配置,也尝试过该vscode配置默认是LF还是报错 思路 看文章vscode如何替换所有文件的…...

Java8 Lambda.stream.sorted() 方法使用浅析分享

文章目录 Java8 Lambda.stream.sorted() 方法使用浅析分享sorted() 重载方法一升序降序 sorted() 重载方法二升序降序多字段排序 mock代码 Java8 Lambda.stream.sorted() 方法使用浅析分享 本文主要分享运用 Java8 中的 Lambda.stream.sorted方法排序的使用! sorted…...

Neural Networks for Fingerprint Recognition

Neural Computation ( IF 3.278 ) 摘要: 在采集指纹图像数据库后,设计了一种用于指纹识别的神经网络算法。当给出一对指纹图像时,算法输出两个图像来自同一手指的概率估计值。在一个实验中,神经网络使用几百对图像进行训练&…...

ChatGPT推出全新功能,引发人工智能合成声音担忧|百能云芯

人工智能AI科技企业OpenAI公司25日宣布,其聊天应用程序ChatGPT如今具备「看、听、说」能力,至少能够理解口语、用合成语音回应并且处理图像;但专家忧心,以假乱真与深度伪造的乱象可能变本加厉。 国家广播公司新闻网(NBC News)报导…...

Java 实现遍历一个文件夹,文件夹有100万数据,获取到修改时间在2天之内的数据

目录 1 需求2 实现1(第一种方法)2 实现2 (推荐使用这个,快)3 实现3(推荐) 1 需求 现在有一个文件夹,里面会一直存数据,动态的存数据,之后可能会达到100万&am…...

持续集成部署-k8s-命令行工具:基础命令的使用

持续集成部署-k8s-命令行工具:基础命令的使用 1. 资源类型与别名2. 资源操作2.1 创建对象2.2 显示和查找资源2.3 更新资源2.4 修补资源2.5 编辑资源2.6 scale 资源2.7 删除资源3. 格式化输出1. 资源类型与别名 资源类型缩写别名clusterscomponentstatusescsconfigmapscmdaemon…...

使用python脚本的时间盲注完整步骤

文章目录 一、获取数据库名称长度二、获取数据库名称三、获取表名总长度四、获取表名五、获取指定表列名总长度六、获取指定表列名七、获取指定表指定列的表内数据总长度八、获取指定表指定列的表内数据 一、获取数据库名称长度 测试环境是bwapp靶场 SQL Injection - Blind - …...

C++项目:仿mudou库one thread one loop式并发服务器实现

目录 1.实现目标 2.HTTP服务器 3.Reactor模型 3.1分类 4.功能模块划分: 4.1SERVER模块: 4.2HTTP协议模块: 5.简单的秒级定时任务实现 5.1Linux提供给我们的定时器 5.2时间轮思想: 6.正则库的简单使用 7.通用类型any类型的实现 8.日志宏的实现 9.缓冲区…...

【算法训练-贪心算法 一】买卖股票的最佳时机II

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【贪心算法】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…...

单阶段目标检测与双阶段目标检测的联系与区别

🚀 作者 :“码上有钱” 🚀 文章简介 :AI-目标检测算法 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬简介 双阶段目标检测算法与单阶段目标检测算法在工作原理和性能方面存在一些相似与差异之处。下…...

Mysql技术文档--设计表规范式-一次性扫盲

阿丹: 在设计表的时候经常出现一些问题,其实自己很清楚就是因为在设计表的时候没有规范。导致后期加表的时候出现了问题。所以趁着这个假期卷一卷。同时只有在开始的时候 几大范式 在关系型数据库中,数据表设计的基本原则、规则就称为范式。…...

python socket 传输opencv读取的图像

python socket网络编程 将ros机器人摄像头捕捉的画面在上位机实时显示,需要用到socket网络编程,提供了TCP和UDP两种方式 TCP服务器端代码: 创建TCP套接字: s socket(AF_INET, SOCK_STREAM) 创建了一个TCP套接字。SOCK_STREAM 表示这是一个TCP套接字&…...

APACHE NIFI学习之—UpdateAttribute

UpdateAttribute 描述: 通过设置属性表达式来更新属性,也可以基于属性正则匹配来删除属性 标签: attributes, modification, update, delete, Attribute Expression Language, state, 属性, 修改, 更新, 删除, 表达式 参数: 如下列表中,必填参数则…...

BIT-7文件操作和程序环境(16000字详解)

一:文件 1.1 文件指针 每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明…...

冥想第九百二十八天

1.今天周三,今天晚上日语课上了好久,天气也不好, 2.项目上全力以赴的一天。 3.感谢父母,感谢朋友感谢家人,感谢不断进步的自己。...

深入浅出,SpringBoot整合Quartz实现定时任务与Redis健康检测(一)

目录 前言 环境配置 Quartz 什么是Quartz? 应用场景 核心组件 Job JobDetail Trigger CronTrigger SimpleTrigger Scheduler 任务存储 RAM JDBC 导入依赖 定时任务 销量统计 Redis检测 使用 ​编辑 注意事项 前言 在悦享校园1.0中引入了Quart…...

Lucene-MergePolicy详解

简介 该文章基于业务需求背景,因场景需求进行参数调优,下文会尽可能针对段合并策略(SegmentMergePolicy)的全参数进行说明。 主要介绍TieredMergePolicy,它是Lucene4以后的默认段的合并策略,之前采用的合并…...

数据的加解密

文章目录 分类特点业务的使用补充 分类 对称加密算法非对称加密算法 特点 对称加密算法 : 加密效率高 !加密和解密都使用同一款密钥 但是有一个问题 : 密钥如何从服务端发给客户端? (假如你直接先将密钥发给对方,要是在过程中被黑客技术破解了,那后面的消息也就泄漏了) (后…...

【Spring】更简单的读取和存储对象

更简单的读取和存储对象 一. 存储 Bean 对象1. 前置工作:配置扫描路径2. 添加注解存储 Bean 对象Controller(控制器存储)Service(服务存储)Repository(仓库存储)Component(组件存储&…...

深入解析Trust Layer:声明式信任管理在微服务架构中的工程实践

1. 项目概述与核心价值最近在开源社区里,一个名为openclawunboxed/trust-layer的项目引起了我的注意。乍一看这个标题,可能会觉得有些抽象——“信任层”?这听起来像是一个偏学术或理论性的概念。但当我深入其代码仓库和设计文档后&#xff0…...

Neovim集成ChatGPT:AI编程助手插件配置与实战指南

1. 项目概述:当Neovim遇上ChatGPT,一个插件如何重塑你的编码体验 如果你是一个Neovim的深度用户,同时又对AI辅助编程抱有极大的热情,那么你很可能已经听说过或者正在寻找一个完美的结合点。 jackMort/ChatGPT.nvim 这个项目&…...

ARM PMU性能监控架构与寄存器详解

1. ARM PMU性能监控架构概述 性能监控单元(Performance Monitoring Unit, PMU)是现代处理器中用于硬件级性能分析的关键模块。作为ARM架构的重要组成部分,PMU通过一组可编程计数器来记录处理器运行过程中发生的各类微架构事件,为系统性能分析和优化提供数…...

为什么你的ChatGPT生成帖文零互动?揭秘Instagram 2024算法对AI内容的3重隐性过滤机制

更多请点击: https://intelliparadigm.com 第一章:为什么你的ChatGPT生成帖文零互动?揭秘Instagram 2024算法对AI内容的3重隐性过滤机制 Instagram 2024年Q2核心算法更新引入了「人类意图验证层(HIVL)」,该…...

如何构建高效的个人游戏串流服务器:Sunshine完整部署指南

如何构建高效的个人游戏串流服务器:Sunshine完整部署指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 在当今数字娱乐时代,游戏玩家面临着设备限制与体验…...

基于MCP协议构建AI知识库:解决会话失忆,实现知识持久化

1. 项目概述:让AI拥有自己的“亚历山大图书馆”如果你和我一样,长期与Claude Code、Cursor这类AI编程助手打交道,一定会遇到一个核心痛点:会话失忆。每次开启一个新对话,AI助手就像一张白纸,它对你项目的历…...

不止于Java:在Termux的Ubuntu子系统里,我这样配置Python/Node.js多语言开发环境

不止于Java:在Termux的Ubuntu子系统里配置Python/Node.js多语言开发环境 将手机变成便携式开发工作站早已不是天方夜谭。通过Termux和proot-distro搭建的Ubuntu子系统,开发者可以在Android设备上构建完整的Linux开发环境。与局限于单一语言的解决方案不同…...

汽车后市场品牌营销路径:以奇正沐古和康明斯为例

在汽车后市场,很多品牌真正的难题并非没有技术、没有产品、没有资源,而是这些优势到了终端之后,无法变成司机、经销商和维修点愿意相信、愿意推荐、愿意购买的理由。康明斯发动机润滑油就是个典型例子,康明斯作为全球柴油发动机技…...

光子储层计算在无人机动态补偿中的创新应用

1. 深度光子储层计算在无人机动态补偿中的创新应用在无人机控制领域,传统PID控制器面对复杂流体环境时往往力不从心。当无人机在狭窄空间或近地面飞行时,地面效应、天花板效应以及湍流再循环等未建模动力学因素会导致显著的性能下降。我在参与某城市峡谷…...

离线语音识别性能提升:Vosk API的3大架构优化策略实践

离线语音识别性能提升:Vosk API的3大架构优化策略实践 【免费下载链接】vosk-api Offline speech recognition API for Android, iOS, Raspberry Pi and servers with Python, Java, C# and Node 项目地址: https://gitcode.com/GitHub_Trending/vo/vosk-api …...