作者:徐柏宁, 李一成, 王晨, 曹玉波, 钟玉杰
单位:太原理工大学
教练:韩嘉瑜, 任
花粉从花药到柱头的运动称为授粉,这是植物结出果实所必需的过程。 根据植物授粉方式的不同,可分为自然授粉和人工辅助授粉两大类。 随着现代机械的出现,人工授粉的效率显著提高,果实产量也相应提高。 另一方面,全球人口老龄化和农业工人短缺,催生了对“机器一代”的强烈需求。 不难看出,机器人技术正在农业领域发挥作用,通过结合机器人和3D建模等技术,精准授粉系统可以将花粉精确地输送到正确的地方。 因此,团队根据实际情况,研究设计了一种用于农业生产的授粉机器人,与现有的农业机器人不同。 该机器人面向农业生产,旨在解决认知决策控制困难、操作高效精准、自主导航行走、手足协调、自动化程度低等问题。
模型图。
现代农业已经迈向智能化、精细化的时代,很多农业生产场景需要类似人工灵巧操作的机器。 农业机器人应运而生,可以承担农业从业者“做不到”、“做不好”、“做不到快”、“不想做”、“无害做”等工作。 然而,也存在一些技术挑战,例如:难以控制认知决策难以高效准确地工作自主导航和行走难度大,自动化程度低;手脚很难一起工作;高成本挑战。
授粉机器人通过视觉处理模块、控制板、伺服、灰度传感器、光电传感器等组件的配合,扫描周围环境生成三维模型,其流程如下:视觉处理模块采集数据,获取植物坐标、障碍物坐标等信息,同时进行物体场景认知, 然后通过LOD算法进行三维建模,从而解决认知决策控制困难的问题。
授粉机器人决定通过建立的三维模型进行选择性授粉,从而在不伤害植物的情况下进行授粉,从而解决高效、准确运行的问题。 授粉机器人通过对农田进行初步合理的规划,规定植株间距,机器人识别,转弯标记点,实现标准化农田。 通过灰度传感器和光电传感器的配合,可以解决自主导航困难、自动化程度低的问题。 授粉机器人通过特定的手眼协同算法,进一步提高了机器人的灵活性,解决了手足协调困难的问题。
未来,机器人将越来越轻量化、功能丰富、自动化,并与大数据技术、物联网技术、机器学习领域、人工智能领域、机器自动编程、自动化操作相结合,从根本上将人力与农业生产分开,实现农业生产效率的最大化。
首先对农田进行初步合理规划,根据厂房类型规定合理的厂房间距,机器人扫描识别标点和转弯标点,从而规范农田。
在起点运行机器人的环境扫描程序,通过控制舵机调整角度,帮助视觉处理模块实时识别周围环境,获取包括障碍物坐标、植物雌花等数据在内的数据,同时进行物体场景认知, 并在此基础上利用LOD算法建立三维环境模型,从而解决决策控制问题。关键性能指标:扫描灵敏度、扫描精度、模型形成率、决策合理性。
在起点运行授粉机器人的授粉程序,通过现有物体场景认知建立的三维模型结果,对植物周边的雌花进行授粉,避免对植株造成伤害,从而解决高效精准运行的问题。 关键性能指标:植株损伤率、外围雌花授粉率、植株损伤程度。
授粉机器人的下一个工作行为是通过灰度传感器扫描到标记点并发送到控制板主控板的信号和光电传感器扫描到标记点并发送到控制板主控板的信号来判断的, 例如:灰度传感器向控制板的主控板发送高电平信号,光电传感器向控制板的主控板发送低电平信号,然后机器人进行翻转操作。灰度传感器向控制板的主控板发送高电平信号,光电传感器向控制板的主控板发送高电平信号,机器人对接。 这有助于传粉媒介提高自动化率。 关键性能指标:自动化率、识别准确率、识别灵敏度、人工辅助次数。
通过手眼协调算法,通过伺服的微调,减少机器人停止的误差,从而解决手脚协调困难的问题。 当机器人到达授粉点时,机器人伺服控制授粉装置接近雌花,到达雌花附近后,通过形状识别和色域识别的组合识别方式判断图像中雌花柱头的坐标,如果雌花偏向左, 视觉处理模块向主控板发送相应的信号,主控板控制舵机向左进行微调,同样可以得到各个方向的微调模式,待花朵位于预设的坐标中心区域后进行下一步授粉操作, 从而完成授粉。关键性能指标:运动精度、返回坐标值、授粉成功率。
通过模块化分区加工降低成本,如机械臂、机器人底盘等部件的模块化加工,通过选用新型低成本耐磨材料来增加耐久性和降低成本,并进一步丰富授粉机器人的功能,如在授粉机器人中增加可控的人工蜂巢,通过视觉处理模块监测病虫害和植物健康,增加产品附加值,降低成本。 关键性能指标:产品耐久性、产品附加值、产品成本。
3.1 项目背景
中国是世界上番茄种植面积最大、产量最大的国家,约占蔬菜总量的7%。 如果大面积种植西红柿时不进行人工干预,结果是授粉率只能占一半,严重影响产量和经济效益。 在政策方面,《数字农村发展战略纲要》鼓励粮食作物生产与智慧农业生态相结合。 由此可见,农业机器人的研发极为重要,具有广阔的市场前景。
3.2 介绍
针对不同授粉条件开发的授粉机器人主要由机器人底盘和机器人机械臂两部分组成。 机器人底盘主要完成机器人行走、识别授粉作物和对接等功能。 授粉机械臂主要完成机器人对花朵的识别和授粉。
授粉机器人的底盘主要由铝板砧板、直流电机、轮子、灰度传感器、光电传感器等组成。 通过对农业生产生活条件的详细研究,确定采用光电传感器和灰度传感器控制车身,在标定处实现直线行驶和精准转弯;然后,对每个组件进行设计,并确定每个组件的机箱尺寸和安装位置。
授粉机器人机械臂采用四自由度铰接机械臂,采用舵机作为关节驱动,使机械臂自由移动控制面板作为主控制器,伺服控制面板控制舵机以特定角度旋转,控制机械臂进行授粉作业在机械臂末端安装有授粉装置,视觉处理模块位于授粉装置**中,主要用于检测授粉位置,配合机械臂完成精准授粉。 使用标准传粉器对花朵进行标记,以模拟杂花植物人工授粉的授粉过程。
3.3 创新
优化结构:通过力学分析减少底盘,使底盘部件布局紧凑,使车身更加稳定。
手眼与组件协调(特征偏差):图像由视觉处理模块的摄像头采集,在程序中设置视觉处理模块扫描的花朵的标准面积和偏差值,当授粉装置靠近花朵时,将摄像头扫描的花朵面积值反馈给上位机, 检测是否在偏差范围内,控制机械手的微调。
平面定位系统:利用光电传感器识别待授粉作物;灰度传感器用于检测车身姿态,使车身稳定向前移动,灰度传感器扫描农田标线点进行精准转弯。
利用LOD算法完成3D建模:舵机控制视觉处理模块扫描周围环境,获取植物、障碍物等信息的坐标,同时对场景进行感知,并在此基础上运行LOD算法进行3D建模。
3.4、机械结构设计
本课题组设计的授粉机器人整体结构如下图所示:
授粉机器人的整体结构。
机器人车身底板11采用铝合金板材,车身前端和后端对称分布四个实心胶轮14,四个胶轮的速差实现转动;底板后端安装8个灰色传感器9,左右两侧对称安装光电开关10,传感导航模块引导机器人底盘跟随导航。 执行机构为四自由度机械臂,包括旋转云台13和自由度连杆机构6,连杆机构可绕旋转云台旋转,由铰接舵机8和5、大机械臂6、小机械臂4和铰接舵机5组成。 舵机控制每对旋转,可以使机器人灵活地完成不同方向和高度的授粉目标的授粉动作。 旋转云台底座13与车身底板12连接。 1为视觉系统的视觉处理模块,控制机械臂实现精准授粉2为授粉枪,授粉枪由小型舵机进行授粉;3.在一个自由度内控制旋转。 整个小车的动力系统由电池仓7中的电池提供。
3.5 设计过程
3.5.1.分析授粉环境
在实际生产中,场地为压实过道的温室农田,垄宽50 70cm,垄高10 15cm,作物间距20cm,土壤相对湿度在15%45%范围内,番茄生长高度约150cm,结果高度在30 120cm之间, 一株番茄植株有5 8个花序,每个花序有3 7朵花,花是黄色的,直径通常为2cm。 机器人必须为生长在空中的花朵授粉。 在授粉过程中,机器人自主完成所有动作,无法远程控制。
3.5.2 选择授粉机器人所需的传感器
在授粉工作中,授粉机器人需要解决自主导航、智能避障、音频通信、目标识别、花卉授粉等功能,授粉机器人底盘主要由铝板切割板、直流电机、轮子、灰度传感器、光电传感器等组成。 通过对农业生产生活实践的详细研究,我们确定灰度传感器和光电传感器可用于控制车身直线行驶并在标记处精确转弯。
授粉机器人以控制面板为主控制器,通过伺服控制面板控制舵机以特定角度旋转,控制机械臂进行授粉作业。 在机械臂末端安装有授粉装置,视觉处理模块位于授粉装置**中,主要用于检测授粉位置,配合机械臂完成精准授粉。
3.5.3.设置机箱尺寸、机械臂配置和传感器安装位置
底盘尺寸的设计需要根据农业生产现场道路的宽度,根据相关的田间测量,田间最窄道路的宽度约为400mm,因此设计授粉机器人的底盘尺寸为385mm和320mm。 考虑到机械臂具有一定的重量,为了避免授粉机器人造成的倾倒危险等危险,机械臂在底盘上的安装位置大致位于底盘内。
控制面板和伺服控制面板可以放置在机箱的适当位置。 在机械臂末端安装有授粉装置,视觉处理模块位于授粉装置**中,主要用于检测授粉位置,配合机械臂完成精准授粉。 光电传感器放置在底盘的左右两侧,灰度传感器放置在车身前部,方便识别标记点,用于控制车身,实现直线行驶和精准转弯。
3.5.4.优化机器人结构
通过力学分析和结构分析减小底盘的尺寸,一方面使底盘部件的布局更加紧凑,另一方面,缩小的底盘可以使车身穿过农田的狭窄部分,同时对底盘重心的位置进行微调,使车身更加稳定。
3.5.5.授粉机器人运动控制系统
根据现场需求,设计授粉机器人主控方案根据授粉作物的高度,设计机械臂动作组,实现精准授粉主控制器与伺服驱动器、电机驱动器、视觉模块之间的通信控制授粉机器人,实现作物的直线行程、精准转弯、精准授粉。
3.5.6. 进行现场测试以优化控制系统程序
在模拟场中,通过优化编码器参数,控制授粉机器人在无灰度传感器线的场内行驶,并辅以陀螺仪使其笔直。 利用建立的三维模型返回的具体参数,将小车停在授粉作物旁边,通过正反转运动学分析和手眼协调算法控制机械臂的授粉。 在标记的转弯处,通过调整四个车轮的转速来实现精确的转弯。
3.6 后续改进
3.6.1.优化机器人结构
将轮胎改为履带式,进一步降低授粉机器人陷入泥潭无法操作的风险,进一步提高机器人的密封性,防止在外部工作的恶劣环境下损坏机器人的电子元件。
3.6.2.丰富机器人的功能
在授粉机器人中加入蜂箱,放入养殖的蜜蜂,利用蜜蜂进行辅助授粉,可以更彻底地为植物授粉,使授粉工作更加完美。
3.6.3.改进程序算法
进一步,利用障碍物、花朵坐标等数据建立三维环境模型,并利用机器学习的智能决策算法确定路径。
通过视觉处理模块监测病虫害以及植物健康。
建立传粉识别云数据库,提升传粉识别能力,丰富传粉植物物种。
进一步,利用障碍物、花朵坐标等数据建立三维环境模型,并利用机器学习的智能决策算法确定路径。
优化授粉手眼协调算法,提高授粉准确率和成功率。
授粉愿景 170.py
import sensor, image, time
from pyb import uart
import json
import pyb
import math
sj=9def modified_data(data):
data = int(data)
str_data=''
if data < 10:
str_data = str_data + '000' + str(data)
elif data >= 10 and data < 100:
str_data = str_data + '00' + str(data)
elif data >=100 and data <1000:
str_data = str_data + '0' + str(data)
else:str_data = str_data + str(data)
return str_data.encode('utf-8')
kernel_size = 1
kernel = [-2, -1, 0, \
区域 C 的阈值。
threshold_0 = [(46, 79, -56, 43, 34, 106),(64, 79, -44, 34, 55, 106),(67, 100, -44, 10, 52, 106),52, 100, -44, 25, 37, 109),(52, 100, -110, 37, 37, 109),(70, 100, -80, 19, 43, 115),64, 100, -62, 19, 46, 127),(21, 46, -46, 31, 7, 79),(27, 100, -82, 49, 16, 70)]
b 阳性区的阈值。
threshold_1 = [(52, 88, -64, 8, 37, 106), 61, 100, -106, 20, 22, 112),(59, 100, -128, 96, 22, 127),(68, 100, -128, 63, 28, 127),68, 100, -128, 90, 16, 127),(68, 100, -128, 90, 31, 127),(65, 100, -128, 87, 49, 127),65, 100, -128, 87, 49, 127),(66, 100, -56, 28, 46, 115),(24, 100, -74, 19, 43, 106)]
b-逆。
threshold_2 = [(67, 96, -58, 27, 60, 115),(76, 100, -58, 39, 60, 106),70, 100, -55, 42, 45, 112),(52, 100, -55, 42, 45, 112),(88, 100, -55, 95, -11, 124)]
b. 所有人的门槛。
threshold_3=[(67, 96, -58, 27, 60, 115),(76, 100, -58, 39, 60, 106),70, 100, -55, 42, 45, 112),(52, 100, -55, 42, 45, 112),(88, 100, -55, 95, -11, 124),(63, 97, -128, 64, 7, 103),(52, 88, -64, 8, 37, 106),61, 100, -106, 20, 22, 112),(59, 100, -128, 96, 22, 127),(68, 100, -128, 63, 28, 127),68, 100, -128, 90, 16, 127),(68, 100, -128, 90, 31, 127),(65, 100, -128, 87, 49, 127),65, 100, -128, 87, 49, 127),(66, 100, -56, 28, 46, 115),(24, 100, -74, 19, 43, 106),(22, 52, -76, 29, 2, 127),27, 100, -82, 49, 16, 70)]
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
while(true):
clock.tick()
if uart.any():
sj = uart.read(1)
sj=int(sj)
print(sj)
如果 SJ==6:B 正 SJ=2
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=2print(sj)
Elif SJ==7: 班蒂斯=3
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=3print(sj)
ELIF SJ==8:区域 C 中的 SJ=1
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=1print(sj)
C区识别程序
while (sj==1):
if uart.any():
sj = uart.read(1)
sj=int(sj)
print(sj)
如果 SJ==6:B 正 SJ=2
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=2print(sj)
Elif SJ==7: 班蒂斯=3
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=3print(sj)
ELIF SJ==8:区域 C 中的 SJ=1
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=1print(sj)
sensor.set_pixformat(sensor.grayscale)
img = sensor.snapshot().lens_corr(1.8)
img.morph(kernel_size, kernel)
img.laplacian(1, sharpen=true)
for c in img.find_circles(threshold = 6000, x_margin = 10, y_margin = 10, r_margin = 10,r_min =15, r_max = 100, r_step = 2):
area = (c.x()-c.r(),c.y()-c.r(),2*c.r(),2*c.r())
print('发现圆C层')
sensor.set_pixformat(sensor.rgb565)
img = sensor.snapshot().lens_corr(1.8)
blob=img.find_blobs(threshold_0, roi=area,area_threshold=566, margin=20)
if blob:
img.draw_rectangle(area, color = (255,255,255))
img.draw_cross(c.x(),c.y())
mj=4*c.r()*c.r()
xzb = modified_data(c.x())
yzb = modified_data(c.y())
mjzb = modified_data(mj)
uart.write('st')
uart.write(xzb)
uart.write(yzb)
uart.write(mjzb)
print(xzb, yzb,mjzb)
print('one')
b 阳性识别程序。
while (sj==2):
if uart.any():
sj = uart.read(1)
sj=int(sj)
print(sj)
如果 SJ==6:B 正 SJ=2
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=2print(sj)
Elif SJ==7: 班蒂斯=3
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=3print(sj)
ELIF SJ==8:区域 C 中的 SJ=1
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=1print(sj)
sensor.set_pixformat(sensor.rgb565)
img = sensor.snapshot().lens_corr(1.8)
blob=img.find_blobs(threshold_1,area_threshold=580, margin=10)
if blob:
sensor.set_pixformat(sensor.grayscale)
img = sensor.snapshot().lens_corr(1.8)
img.morph(kernel_size, kernel)
img.laplacian(1, sharpen=true)
gain_scale = 2.0
current_gain_in_decibels = sensor.get_gain_db()
sensor.set_auto_gain(false, gain_db = current_gain_in_decibels * gain_scale)
for c in img.find_circles(threshold = 4700, x_margin = 10, y_margin = 10, r_margin = 10,r_min = 18, r_max = 100, r_step = 2):
print("我发现一个圆圈b阳性")
area = (c.x()-c.r(),c.y()-c.r(),2*c.r(),2*c.r())
area1 = (c.x()-c.r(),c.y()-c.r(),c.r(),c.r())
sensor.set_pixformat(sensor.rgb565)
img = sensor.snapshot().lens_corr(1.8)
blob=img.find_blobs(threshold_1, roi=area1,area_threshold=132, margin=10)
if blob:
img.draw_rectangle(area, color = (255,255,255))
img.draw_cross(c.x(),c.y())
mj=4*c.r()*c.r()
xzb = modified_data(c.x())
yzb = modified_data(c.y())
mjzb = modified_data(mj)
uart.write('st')
uart.write(xzb)
uart.write(yzb)
uart.write(mjzb)
print(xzb, yzb,mjzb)
print('two')
B.反识别程序。
while (sj==3):
if uart.any():
sj = uart.read(1)
sj=int(sj)
print(sj)
如果 SJ==6:B 正 SJ=2
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=2print(sj)
Elif SJ==7: 班蒂斯=3
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=3print(sj)
ELIF SJ==8:区域 C 中的 SJ=1
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=1print(sj)
sensor.set_pixformat(sensor.rgb565)
img = sensor.snapshot().lens_corr(1.8)
blob=img.find_blobs(threshold_1,area_threshold=580, margin=10)
if blob:
sensor.set_pixformat(sensor.grayscale)
img = sensor.snapshot().lens_corr(1.8)
img.morph(kernel_size, kernel)
img.laplacian(1, sharpen=true)
gain_scale = 2.0
current_gain_in_decibels = sensor.get_gain_db()
sensor.set_auto_gain(false, gain_db = current_gain_in_decibels * gain_scale)
for c in img.find_circles(threshold = 4909, x_margin = 10, y_margin = 10, r_margin = 10,r_min = 18, r_max = 100, r_step = 2):
area = (c.x()-c.r(),c.y()-c.r(),2*c.r(),2*c.r())
area1 = (c.x()-c.r(),c.y()-c.r(),c.r(),c.r())
print("发现通告B反转")
sensor.set_pixformat(sensor.rgb565)
img = sensor.snapshot().lens_corr(1.8)
blob=img.find_blobs(threshold_2, roi=area1,area_threshold=205, margin=10)
if blob:
img.draw_rectangle(area, color = (255,255,255))
img.draw_cross(c.x(),c.y())
mj=4*c.r()*c.r()
xzb = modified_data(c.x())
yzb = modified_data(c.y())
mjzb = modified_data(mj)
uart.write('st')
uart.write(xzb)
uart.write(yzb)
uart.write(mjzb)
print(xzb, yzb,mjzb)
print('three')
一个。
img = sensor.snapshot().lens_corr(1.8)
img.morph(kernel_size, kernel)
img.laplacian(1, sharpen=true)
for c in img.find_circles(threshold = 6799, x_margin = 10, y_margin = 10, r_margin = 10,r_min = 15, r_max = 100, r_step = 2):
area = (c.x()-c.r(),c.y()-c.r(),2*c.r(),2*c.r())
print("圆圈 A 被识别")
# sensor.set_pixformat(sensor.rgb565)
# img = sensor.snapshot().lens_corr(1.8)
# blob=img.find_blobs(threshold_0, roi=area,area_threshold=900, margin=10)
if 1>0:
img.draw_rectangle(area, color = (255,255, 255))
img.draw_cross(c.x(),c.y())
mj=4*c.r()*c.r()
xzb = modified_data(c.x())
yzb = modified_data(c.y())
mjzb = modified_data(mj)
uart.write('st')
uart.write(xzb)
uart.write(yzb)
uart.write(mjzb)
print(xzb, yzb,mjzb)
print('zero')
if uart.any():
sj = uart.read(1)
sj=int(sj)
print(sj)
如果 SJ==6:B 正 SJ=2
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=2print(sj)
Elif SJ==7: 班蒂斯=3
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=3print(sj)
ELIF SJ==8:区域 C 中的 SJ=1
sensor.reset()
sensor.set_pixformat(sensor.grayscale)
sensor.set_framesize( sensor.qqvga)
uart = uart(3, 115200)
sensor.skip_frames(time = 300)
sensor.set_auto_gain(false)
sensor.set_auto_whitebal(false)
clock = time.clock()
sensor.设置 vflip(0) 是新的。
sensor.设置 hmirror(false)。
sj=1print(sj)
有关更多详细信息,请参阅:【S041】一种用于农业生产的授粉机器人