如何建设个人免费网站教程视频,如何做网站搭桥链接,温州网站推广,怎么把自己做的网站发布虽然索尼toio Q宝机器人主要是为儿童教育娱乐开发的#xff0c;但我认为它在工业等领域也有一定应用潜力。例如#xff0c;工业领域经常会有某些平面在实际作业中持续震动#xff0c;导致零件过疲劳、平台失去稳定等问题。而这样的平台往往位于机器内部#xff0c;从外部很…虽然索尼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_ms0,colorColor(r255, g0, b0)
)green IndicatorParam(duration_ms0,colorColor(r0, g255, b0)
)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(pointPoint(x384, y331), angle95)
target2 CubeLocation(pointPoint(x344, y337), angle94)# 记录初始位置
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(timeout5,movement_typeMovementType.Linear,speedSpeed(max100, speed_change_typeSpeedChangeType.AccelerationAndDeceleration),targetTargetPosition(cube_locationtarget2,rotation_optionRotationOption.AbsoluteOptimal,),)await cube_1.api.motor.motor_control_target(timeout5,movement_typeMovementType.Linear,speedSpeed(max100, speed_change_typeSpeedChangeType.AccelerationAndDeceleration),targetTargetPosition(cube_locationtarget1,rotation_optionRotationOption.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宝的潜能发挥到最大水平。