拳力以赴!基于 RT-Thread 与瑞萨 VisionBoard 的 AIoT 猜拳系统实战 | 技术集结

本项目的题目为: 石头剪刀布猜拳识别。本项目实现了基本猜拳识别、根据识别 猜拳结果,与机器内的手势对比,根据结果控制舵机的行为,并且将识别的结果同步显示在上位机。

目录

项目概述

硬件清单

舵机控制引脚

软件与运行环境

固件编译

创建数据集

模型训练

代码结构与主要函数

使用方法

常见问题

项目源码

1 项目概述

  • 目标: 在3秒以内识别猜拳的结果,并且根据猜拳输赢控制舵机旋转,将识别结果显示在上位机

  • 平台: 瑞萨visionboard(摄像头、GPIO)

  • 核心思路:

    • 通过瑞萨visionboard采集照片数据作为数据集进行模型训练

    • 将采集的数据集通过edge impulse进行训练

    • 使用mqttx接受来自瑞萨visionboard的识别数据

    • 根据识别猜拳结果控制舵机行为

  • 使用手册: RA8D1 Group User’s Manual: Hardware(https://www.renesas.cn/zh/document/mah/ra8d1-group-users-manual-hardware?r=25456556)

  • 使用烧写工具: Renesas Flash Programmer V3.12(https://en.freedownloadmanager.org/Windows-PC/Renesas-Flash-Programmer.html)

  • openmv固件: openmv固件(https://github.com/RT-Thread-Studio/sdk-bsp-ra8d1-vision-board)

2 硬件清单

  • 瑞萨visionboard开发板(摄像头)

  • 摄像头(RGB565,工作分辨率 320×240,ov5640)

  • 360度 SG90舵机

3 舵机控制引脚

  • P008 —> 舵机

  • P008地址: 0x4040_0000 + 0x0020 × m(参考RA8D1 Group User’s Manual: Hardware 655页)

4 软件与运行环境

  • openmv固件(https://github.com/RT-Thread-Studio/sdk-bsp-ra8d1-vision-board)

  • 主要依赖: sensor、time、tf、network、uctypes

5 固件编译

  1. 从github(https://github.com/RT-Thread-Studio/sdk-bsp-ra8d1-vision-board)仓库上将代码拉取到本地

  2. 运行链接脚本后,进入到 sdk-bsp-ra8d1-vision-board-master\projects\vision_board_openmv,打开 RT-Thread Env Tool,输入 scons —target=mdk5

  3. 项目生成后在C++ 预处理加上MICROPYTHON_USING_UCTYPES 的 define

  4. (可以在sdk-bsp-ra8d1-vision-board-master\projects\vision_board_openmv\packages\micropython-v1.13.0\port\mpconfigport.h查看定义),

  5. 编译后在objects文件夹下得到rtthread.hex的openmv固件

  6. 使用Renesas Flash Programmer V3.12 烧写固件,将 Enable address check of program file 选项去除勾选

6 创建数据集

使用瑞萨visionboard进行训练图片采集,这样可以保持输入输出 的一致,一定程度上提高了识别的准确率。

import sensor, image, time, ossensor.reset()sensor.set_pixformat(sensor.RGB565)sensor.set_framesize(sensor.QVGA)  # 320x240sensor.set_windowing((240,240))sensor.skip_frames(time=2000)img_counter = 0while True:    img = sensor.snapshot()    filename = "/dataset/scissors/scissors_img_%03d.jpg" % img_counter    img.save(filename)    print("Saved:", filename)    img_counter += 1    time.sleep_ms(500)if img_counter >= 550:  # 停止条件break

运行时需要插入sd卡,并且提前创建对应的文件夹

7 模型训练

使用edge impulse训练模型, 使用Transfer learning,图片大小为240*240,训练时将图片输入改为灰度,减少干扰

8 代码结构与主要函数

  • mqttx:

    • def publish(self, topic, msg, retain=False, qos=0): 发送消息到mqttx

def publish(self, topic, msg, retain=False, qos=0):      pkt = bytearray()      # MQTT publish header      header = 0x30      if retain:          header |= 0x01      if qos == 1:          header |= 0x02      elif qos == 2:          header |= 0x04      pkt.append(header)      # 计算剩余长度      remaining_length = 2 + len(topic) + len(msg)      if qos > 0:          remaining_length += 2  # 包含packet id      # 先编码剩余长度      def encode_len(length):          encoded = bytearray()          while True:              digit = length % 128              length = length // 128      &nbs
【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值