当前位置: 首页 > 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宝的潜能发挥到最大水平。

http://www.lryc.cn/news/181349.html

相关文章:

  • 【已解决】 Expected linebreaks to be ‘LF‘ but found ‘CRLF‘.
  • Java8 Lambda.stream.sorted() 方法使用浅析分享
  • Neural Networks for Fingerprint Recognition
  • ChatGPT推出全新功能,引发人工智能合成声音担忧|百能云芯
  • Java 实现遍历一个文件夹,文件夹有100万数据,获取到修改时间在2天之内的数据
  • 持续集成部署-k8s-命令行工具:基础命令的使用
  • 使用python脚本的时间盲注完整步骤
  • C++项目:仿mudou库one thread one loop式并发服务器实现
  • 【算法训练-贪心算法 一】买卖股票的最佳时机II
  • 单阶段目标检测与双阶段目标检测的联系与区别
  • Mysql技术文档--设计表规范式-一次性扫盲
  • python socket 传输opencv读取的图像
  • APACHE NIFI学习之—UpdateAttribute
  • BIT-7文件操作和程序环境(16000字详解)
  • 冥想第九百二十八天
  • 深入浅出,SpringBoot整合Quartz实现定时任务与Redis健康检测(一)
  • Lucene-MergePolicy详解
  • 数据的加解密
  • 【Spring】更简单的读取和存储对象
  • 【LeetCode热题100】--108.将有序数组转换为二叉搜索树
  • Redis学习笔记(下):持久化RDB、AOF+主从复制(薪火相传,反客为主,一主多从,哨兵模式)+Redis集群
  • 【智能家居项目】裸机版本——设备子系统(LED Display 风扇)
  • [Linux]记录plasma-wayland下无法找到HDMI接口显示器的问题解决方案
  • 【计算机网络】高级IO之select
  • 如何设计一个高效的应用缓冲区【一个动态扩容的buffer类】
  • 图像处理初学者导引---OpenCV 方法演示项目
  • 管道-匿名管道
  • 【JavaEE基础学习打卡08】JSP之初次认识say hello!
  • 使用序列到序列深度学习方法自动睡眠阶段评分
  • 【算法】排序——选择排序和交换排序(快速排序)