# RoboCom机器人开发者大赛_智慧果园 **Repository Path**: LM_WJ/RoboCom ## Basic Information - **Project Name**: RoboCom机器人开发者大赛_智慧果园 - **Description**: 1、上位机系统采用NVIDIA Jetson Nano嵌入式平台,集成单目视觉相机模块,通过OpenCV计算机视觉算法实现目标检测与位姿估计。结合机械臂运动学逆解算法,实现六自由度机械臂的末端轨迹规划与控制,最终完成果球的识别与抓取任务。 2、基于STM32F103RCT6的底层运动控制,通过多路灰度传感器,驱动直流无刷减速电机完成精准运动控制,同时通过UART通信协议与上位机建立实时数据交互。 - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2025-08-16 - **Last Updated**: 2026-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: Competition, Python ## README # RoboCom机器人开发者大赛_智慧果园 ## 介绍 ​ 1、基于STM32F103RCT6的底层运动控制,通过多路灰度传感器,驱动直流无刷减速电机完成精准运动控制,同时通过UART通信协议与上位机建立实时数据交互。 ​ 2、上位机系统采用NVIDIA Jetson Nano嵌入式平台,集成单目视觉相机模块,通过OpenCV计算机视觉算法实现目标检测与位姿估计。结合机械臂运动学逆解算法,实现六自由度机械臂的末端轨迹规划与控制,最终完成果球的识别与抓取任务。 ### 整体实物图 ![输入图片说明](img/IMG_20220924_141743_edit_331393205139535.jpg) ![输入图片说明](img/IMG_20220924_141840.jpg) ## 设计构思 ![输入图片说明](img/%E6%80%9D%E7%BB%B4%E5%9B%BE.png) ## 开发环境 ### 底层控制 1. Keil uVision4 2. NetAssist ### 主控 1. Linux Ubuntu18.04 2. PyCharm ## 硬件架构 ### 主控系统 1. **底层控制:STM32F103RCT6** 2. **主控:NVIDIA Jetson Nano(机载计算机)** ### 运动系统 1. 4个直流无刷减速电机 2. 六自由度机械臂 ### 视觉系统 单目视觉相机 ### 感知系统 1. 激光雷达 2. 陀螺仪模块 3. 超声波模块 4. 3 合 1 灰度传感器探头 5. 无线图传模块 ### 人机交互系统 1. Linux Ubuntu18.04 2. 7 寸液晶显示屏 ### 通信系统 WiFi通讯模块 ### 收集系统 1. 果实收集桶 2. 果实收集桶固定架 ## 机械设计 ### 车身结构设计 **铝合金材质-实物图** ![输入图片说明](img/IMG_20220924_140848.jpg) ### 行进机构设计 使用直流无刷减速电机驱动麦克纳姆轮进行全向方位移动 **直流无刷减速电机实物图** ![输入图片说明](img/%E7%94%B5%E6%9C%BA.png) ### 机械臂机构 1. **六个舵机** 1-5轴活动角度:0-180°,第六轴活动角度:0-360° 2. **末端抓手** 机械抓手位于第六轴的舵机上,控制运动角度,可实现抓取果球和松开果球动作 3. **单目视觉相机固定架** 视觉相机位于第四轴的舵机上,在识别路标、二维码、果球种类时,舵机保持不动,提高识别精准度 **阳极氧化铝材质-实物图** ![输入图片说明](img/%E6%9C%BA%E6%A2%B0%E8%87%82.jpg) ### 收集桶设计 1. **果实收集桶** 用于机械臂抓取果球后,将果球存放的位置 **果实收集桶三维图** ![输入图片说明](img/%E6%94%B6%E9%9B%86%E6%A1%B6.jpg) 2. **果实收集桶固定架** 固定架在车身和机械臂的左侧,用于放置果实收集桶; 机械臂抓取果实收集桶,将果实倒入收集框中,再将果实收集桶放置在固定架上 **果实收集桶固定架三维图** ![输入图片说明](img/%E5%9B%BA%E5%AE%9A%E6%9E%B6.jpg) **果实收集桶和固定架实物图** ![输入图片说明](img/%E5%9B%BA%E5%AE%9A%E6%9E%B6%E5%AE%9E%E7%89%A9%E5%9B%BE.jpg) ## 主要功能 ### 模块技术说明 #### 嵌入式开发(底盘控制) ​ STM32F103RCT6核心板,控制小车4个直流无刷减速电机(前进、后退、左转、右转)、灰度传感器的功能实现,上位机与STM32的实时通讯的收发与状态更新,MCU外设的初始化和配置,外设中断的逻辑,系统时钟修改和延时功能配置,HAL库调用。 #### 视觉算法 ​ 路标方向牌、二维码、水果位置、水果种类检测。对于路标和二维码的识别,用到的是OpenCV传统算法提取标识牌区域,获取图像像素点的BGR、HSV、HLS值,模板匹配获得标识牌内容。采用了霍夫圆函数来进行水果的定位,水果是黄色或白色的乒乓球,其功能是计算边缘二值图中所有非零点的梯度向量,然后根据搜索的半径R,在该点梯度方向上距离该点R的两边各投一点,最后根据投票结果图确定圆心位置。 #### 上位机 Jetson Nano(机械臂、视觉、通讯) ​ 在Linux系统里利用机械臂运动学反解客户端与机械臂末端解算,视觉确定圆心位置,实现抓取果实和放置果实。转向识别与二维码识别以及水果位置、水果种类检测都是由上位机进行处理。与STM32核心板串口通信,实现小车前进、后退、左转、右转、停止。 ### 实现的过程 1. #### 识别路标 ​ 开始时放置在准备区,从准备区出发,灰度传感器启动,巡白线走,到达第一个十字路口停下,机械臂抬起并打开单目视觉相机,开始识别路标(左转、直行,右转),如:识别到是左转,左转后继续前进,到达第二个十字路口,停下,等待识别结果。 2. #### 识别二维码 ​ 机械臂抬起并打开单目视觉相机,开始识别二维码,如:识别到的数据是4321,这就是我们抓取果实种类和放置的顺序,继续巡白线走到达第一个T字路口,左转,继续巡白线走到第三个十字路口,达到果实区。 3. #### 识别与果实(成熟:黄色,不成熟:白色) ​ 左转,先识别左边第一个的果树上果实种类,并记录下来,按照识别到的抓取顺序,这是最后一个抓取的果实,先后退到第三个十字路口,摆正车身,并右转,识别右边第一个的果树上果实种类,并记录下来,到达第四个十字路口,其余两种果树以此往复。右边第二棵果树是第一歌被抓取的,机械臂抬起并打开单目视觉相机,开始识别果实的成熟度,根据机械臂末端解算数据,确定圆心位置,抓取第一个果实,放置到果实收集桶,以此往复,抓取完一颗果树,三颗果实,收集桶装满,前往放置区。 4. #### 识别放置区的种类标牌并放置果实 车辆到达第五个十字路口,停下,机械臂左转,先识别左侧第一个种类标示,随后机械臂右转,识别右侧第一个种类标示,如果这两个中没有符合第一颗果树种类的标示,则继续前进。有或者没有符合的,都会前进到第六个十字路口,停下,机械臂左转,先识别左侧第二个种类标示,随后机械臂右转,识别右侧第二个种类标示,如果这两个中有符合第一颗果树种类的标示,机械臂抓取果实收集桶,抬起,在果实收集框上方旋转180°倒出果实,回转180°收回机械臂,将果实收集桶放回到固定架里面。以此往复,直到所有果实全部抓取放置到果实收集框,车辆行驶至结束区,果实抓取结束,任务完成。