Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
OPENMV
【24嵌入式设计大赛】基于RT_Thread Vision Board的光伏板清理机器人
发布于 2024-09-14 23:56:27 浏览:419
订阅该版
[tocm] ##1.前言 随着全球对可再生能源需求的日益增长,光伏发电作为一种清洁、可持续的能源形式,在能源结构中的地位逐渐提高。然而,光伏板的发电效率极易受到外部环境的影响,尤其是灰尘、污垢、鸟粪等遮挡物的积累,会显著降低光伏系统的能量输出。研究表明,光伏板表面附着的灰尘和污垢会导致发电效率下降5%至30%,甚至更高。因此,光伏板的定期清洁对于维持其高效运行至关重要。同时避免了人力维护成本高,投入时间长,部分难操作等情况。结合当前人工智能技术,有个能自动进行光伏板灰尘清理的机器人是个值得研究的方向。 ## 2.总体框架 总体的设计思想,通过RA8D1控制器搭载的RT-Thread操作系统,与TensorFlow Lite ,OpenMV实现光伏板上灰尘,障碍识别,然后对障碍物,灰尘等进行清理。实现发电效率最大化,以下是总体的设计结构。  清洁光伏板的前端,通过两个圆形的洗刷工具,自带电机,只需要给控制命令,不需要精确的控制。同时洗刷工具也接了导水管,给控制命令后即可开始清洗工作。  ## 3.开发配置 下载Vision Board相关资料,包括SDK,Openmv软件等,进入Vision Board\SDK\sdk-bsp-ra8d1-vision-board\projects\vision_board_openmv下,将library文件夹和rt-thread 文件夹复制到此路径。  右击工程空白的地方,使用ENV打开  输入menuconfig打开配置界面,Enable OpenMV for RT-Thread—>目录下,打开Enable tflite support功能,然后保存。  输入scons —target=mdk5重新生成mdk工程  点击新生产的工程文件,编辑,烧录  ## 4.模型训练 本次使用的是Edge impluse,需要先注册账号,然后新建project,依次点击Dashboard->Add existing data->Upload data。这里的素材需要提前准备好,以及图片的大小需要先处理好,选择相关文件后选择上传即可。  保存后点击左侧Impulse design->Create Impulse,依次点击Add a processing block、Add a learning block进行输入数据对象、训练模型的选择,并点击保存,为了生成特征  接下来点击左侧Image,Color depth选择RGB,点击保存。接下来会自动跳转到生成特征界面,点击生成特征按钮,等待特征生成。  本次生成的特征如下:  接下来开始训练,这里主要是提供的训练数据原因,导致的训练结果异常,这里可以通过调整参数来进行训练,直到达到自己想要的效果,下面是第一次训练  调整参数后:  ## 5.模型部署 如下图所示,点击部署,选择openmv库,生成压缩包  以下是解压后的估计,标签,训练模型以及代码  将代码重命名,且将这几个拷贝在内存卡里面即可  打开Openmv软件,连接开发板,打开main.py,同时可以打开终端看识别效果,当然代码自己做了调整,已经根据自己的需求进行调整。 ```c # Edge Impulse - OpenMV Object Detection Example import sensor, image, time, os, tf, math, uos, gc sensor.reset() # Reset and initialize the sensor. sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE) sensor.set_framesize(sensor.QVGA) # Set frame size to QVGA (320x240) sensor.set_windowing((240, 240)) # Set 240x240 window. sensor.skip_frames(time=2000) # Let the camera adjust. net = None labels = None min_confidence = 0.5 try: # load the model, alloc the model file on the heap if we have at least 64K free after loading net = tf.load("trained.tflite", load_to_fb=uos.stat('trained.tflite')[6] > (gc.mem_free() - (64*1024))) except Exception as e: raise Exception('Failed to load "trained.tflite", did you copy the .tflite and labels.txt file onto the mass-storage device? (' + str(e) + ')') try: labels = [line.rstrip('\n') for line in open("labels.txt")] except Exception as e: raise Exception('Failed to load "labels.txt", did you copy the .tflite and labels.txt file onto the mass-storage device? (' + str(e) + ')') colors = [ # Add more colors if you are detecting more than 7 types of classes at once. (255, 0, 0), ( 0, 255, 0), (255, 255, 0), ( 0, 0, 255), (255, 0, 255), ( 0, 255, 255), (255, 255, 255), ] clock = time.clock() while(True): clock.tick() img = sensor.snapshot() # detect() returns all objects found in the image (splitted out per class already) # we skip class index 0, as that is the background, and then draw circles of the center # of our objects for i, detection_list in enumerate(net.detect(img, thresholds=[(math.ceil(min_confidence * 255), 255)])): if (i == 0): continue # background class if (len(detection_list) == 0): continue # no detections for this class? print("********** %s **********" % labels[i]) for d in detection_list: [x, y, w, h] = d.rect() center_x = math.floor(x + (w / 2)) center_y = math.floor(y + (h / 2)) print('x %d\ty %d' % (center_x, center_y)) img.draw_circle((center_x, center_y, 12), color=colors[i], thickness=2) print(clock.fps(), "fps", end="\n\n") ``` ## 6.效果 光伏板上的障碍物检测效果:  [演示.zip](https://club.rt-thread.org/file_download/3b1071982b2c8001)
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Zght
这家伙很懒,什么也没写!
文章
7
回答
1
被采纳
0
关注TA
发私信
相关文章
1
OPENMV软件包怎么使用
2
OPENMV STM32H7 编译失败
3
openMV+micropy与RT1064的一个尝试
4
Vision Board连接不上OpenMV IDE
5
Vision Board使用openmv无法下载脚本
6
在visonboard开发中尝试在openmv中加载个人训练的YOLOv5模型,报错,超出内存
7
Vision Board 的openmv如何部署socket 模块
8
Vison Board 如何在openmv 、main.py脚本中实现和其它线程通信?
9
那个vision board 在 openmv ide 设置波特率的时候,是不是有一个小bug ,设置成0的时候就是115200?
10
Vision Broad连接OTG口后openMV显示错误:系统找不到指定的文件,Renesas Flash也显示连接不上
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
I2C_IIC
cubemx
UART
ESP8266
WIZnet_W5500
BSP
ota在线升级
PWM
flash
packages_软件包
freemodbus
潘多拉开发板_Pandora
ADC
GD32
定时器
编译报错
flashDB
keil_MDK
socket
中断
rt_mq_消息队列_msg_queue
Debug
ulog
SFUD
msh
C++_cpp
at_device
本月问答贡献
出出啊
1524
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
821
个答案
179
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部