【E2185】基于机器视觉的仿生机械手掌

2021-11-06 20:42:20      索炜达电子      599     

项目编号:E2185

文件大小:93M

源码说明:带中文注释

开发环境:C编译器

简要概述:

设计一种基于机器视觉的仿生机械手。该仿生机械手尝试运用OpenCV图像处理技术预处理摄像头采集到的数据,匹配对应模型实现机械手掌的动作,同时运用多舵机协同控制来提高手掌的可操作性以及灵活性

【E2185】基于机器视觉的仿生机械手掌

一、树莓派上的手势分类

首先需安装树莓派官方系统,搭建好opencv和tensorflow开发环境;


opencv安装方法请参考:https://blog.csdn.net/leaves_joe/article/details/67656340?utm_source=app


tensorflow安装方法:


首先安装pip3。


sudo apt-get install python3-dev

sudo apt-get install python-dev

查看python3的版本:


python3 -v

一般树莓派4使用的是python3.7,如果网速可以,直接安装:


sudo pip3 install tensorflow

如若安装失败,则请下载本地安装包,我这使用的是tensorflow-1.13.1-cp37-none-linux_armv7l.whl,在存放这个文件的文件夹下:


sudo pip3 install tensorflow-1.13.1-cp37-none-linux_armv7l.whl

如若报错少了h5py,则请下载h5py-2.7.1-cp37-cp37m-linux_armv7l.whl,先安装h5py,再安装tensorflow:


sudo pip3 install h5py-2.7.1-cp37-cp37m-linux_armv7l.whl

在安装完opencv和tensorflow后在终端输入python3后,键入:


import cv2

import tensorflow as tf

print(cv2.__version__)

print(tf.__version__)

如果正常打印出版本信息,则安装正确,会有警告,但无妨;


安装完环境后:


---------------------------------------------------------------------------********重点-------------------------------------------------------------------


最好将 树莓派4B上手势识别 这个文件夹重命名为英文,我这命名为:rps ;


在rps文件夹中新建一个文件夹 images。运行cam.py文件,会自动采集照片到images文件夹。文件名为imageX.jpg,其中X为序号。需采集“石头”“剪刀”“布”“干扰手势”,分别保存到“paper”"rock""scissors""others"


model.py: 卷积神经网络模型


read_image.py:将图片读入内存


train.py:训练模型


test.py :测试手势图片识别结果


rps.py:最终完成


test1.py:是一个测试脚本,需首先在当前文件夹中,新建一个文件夹testdata,在此文件夹放置石头剪刀布手势图片各100张,会生成识别结果图。


二、STM32舵机控制

没啥好说的,看原理图,本程序主要产生五路PWM信号控制舵机,并接收串口信息。STM32的基础操作请自行学习。


三、串口通信

采用树莓派的ttyAMA0的串口,但此设备默认给了蓝牙,所以需要改变映射规则,具体操作,请百度。


将 串口通信 文件夹重命名为serial。在serial文件夹中make。会生成libserial.so静态链接库,里面实现了具体的串口通信的方法,源码中有注释。

目录│文件列表:

 └ Undergraduate-graduation-project

    │ h5py-2.7.1-cp37-cp37m-linux_armv7l.whl

    │ tensorflow-1.13.1-cp37-none-linux_armv7l.whl

    ├ STM32舵机控制

    │  ├ APP

    │  │  │ alldef.h

    │  │  │ control.c

    │  │  │ control.h

    │  │  │ led.c

    │  │  │ led.h

    │  │  │ pwm.c

    │  │  │ pwm.h

    │  │  │ tim.c

    │  │  │ tim.h

    │  │  │ usart.c

    │  │  │ usart.h

    │  │  └ LobotServoController

    │  │     │ bool.h

    │  │     │ LobotServoController.c

    │  │     └ LobotServoController.h

    │  ├ CORE

    │  │  │ core_cm3.c

    │  │  │ core_cm3.h

    │  │  │ startup_stm32f10x_hd.s

    │  │  │ system.c

    │  │  │ system.h

    │  │  │ SysTick.c

    │  │  └ SysTick.h

    │  ├ OBJ

    │  │  │ control.crf

    │  │  │ control.d

    │  │  │ control.o

    │  │  │ core_cm3.crf

    │  │  │ core_cm3.d

    │  │  │ core_cm3.o

    │  │  │ ExtDll.iex

    │  │  │ led.crf

    │  │  │ led.d

    │  │  │ led.o

    │  │  │ lobotservocontroller.crf

    │  │  │ lobotservocontroller.d

    │  │  │ lobotservocontroller.o

    │  │  │ main.crf

    │  │  │ main.d

    │  │  │ main.o

    │  │  │ misc.crf

    │  │  │ misc.d

    │  │  │ misc.o

    │  │  │ pwm.crf

    │  │  │ pwm.d

    │  │  │ pwm.o

    │  │  │ startup_stm32f10x_hd.d

    │  │  │ startup_stm32f10x_hd.o

    │  │  │ stm32f10x_exti.crf

    │  │  │ stm32f10x_exti.d

    │  │  │ stm32f10x_exti.o

    │  │  │ stm32f10x_gpio.crf

    │  │  │ stm32f10x_gpio.d

    │  │  │ stm32f10x_gpio.o

    │  │  │ stm32f10x_it.crf

    │  │  │ stm32f10x_it.d

    │  │  │ stm32f10x_it.o

    │  │  │ stm32f10x_rcc.crf

    │  │  │ stm32f10x_rcc.d

    │  │  │ stm32f10x_rcc.o

    │  │  │ stm32f10x_tim.crf

    │  │  │ stm32f10x_tim.d

    │  │  │ stm32f10x_tim.o

    │  │  │ stm32f10x_usart.crf

    │  │  │ stm32f10x_usart.d

    │  │  │ stm32f10x_usart.o

    │  │  │ system.crf

    │  │  │ system.d

    │  │  │ system.o

    │  │  │ system_stm32f10x.crf

    │  │  │ system_stm32f10x.d

    │  │  │ system_stm32f10x.o

    │  │  │ system_stm32f10x_1.crf

    │  │  │ system_stm32f10x_1.d

    │  │  │ system_stm32f10x_1.o

    │  │  │ systick.crf

    │  │  │ systick.d

    │  │  │ systick.o

    │  │  │ template.axf

    │  │  │ template.build_log.htm

    │  │  │ template.hex

    │  │  │ template.htm

    │  │  │ template.lnp

    │  │  │ template.sct

    │  │  │ template_Target 1.dep

    │  │  │ tim.crf

    │  │  │ tim.d

    │  │  │ tim.o

    │  │  │ usart.crf

    │  │  │ usart.d

    │  │  └ usart.o

    │  ├ TM32F10x_FWLib

    │  │  ├ inc

    │  │  │  │ misc.h

    │  │  │  │ stm32f10x_adc.h

    │  │  │  │ stm32f10x_bkp.h

    │  │  │  │ stm32f10x_can.h

    │  │  │  │ stm32f10x_cec.h

    │  │  │  │ stm32f10x_crc.h

    │  │  │  │ stm32f10x_dac.h

    │  │  │  │ stm32f10x_dbgmcu.h

    │  │  │  │ stm32f10x_dma.h

    │  │  │  │ stm32f10x_exti.h

    │  │  │  │ stm32f10x_flash.h

    │  │  │  │ stm32f10x_fsmc.h

    │  │  │  │ stm32f10x_gpio.h

    │  │  │  │ stm32f10x_i2c.h

    │  │  │  │ stm32f10x_iwdg.h

    │  │  │  │ stm32f10x_pwr.h

    │  │  │  │ stm32f10x_rcc.h

    │  │  │  │ stm32f10x_rtc.h

    │  │  │  │ stm32f10x_sdio.h

    │  │  │  │ stm32f10x_spi.h

    │  │  │  │ stm32f10x_tim.h

    │  │  │  │ stm32f10x_usart.h

    │  │  │  └ stm32f10x_wwdg.h

    │  │  └ src

    │  │     │ misc.c

    │  │     │ stm32f10x_adc.c

    │  │     │ stm32f10x_bkp.c

    │  │     │ stm32f10x_can.c

    │  │     │ stm32f10x_cec.c

    │  │     │ stm32f10x_crc.c

    │  │     │ stm32f10x_dac.c

    │  │     │ stm32f10x_dbgmcu.c

    │  │     │ stm32f10x_dma.c

    │  │     │ stm32f10x_exti.c

    │  │     │ stm32f10x_flash.c

    │  │     │ stm32f10x_fsmc.c

    │  │     │ stm32f10x_gpio.c

    │  │     │ stm32f10x_i2c.c

    │  │     │ stm32f10x_iwdg.c

    │  │     │ stm32f10x_pwr.c

    │  │     │ stm32f10x_rcc.c

    │  │     │ stm32f10x_rtc.c

    │  │     │ stm32f10x_sdio.c

    │  │     │ stm32f10x_spi.c

    │  │     │ stm32f10x_tim.c

    │  │     │ stm32f10x_usart.c

    │  │     └ stm32f10x_wwdg.c

    │  └ USER

    │     │ JLinkLog.txt

    │     │ JLinkSettings.ini

    │     │ main.c

    │     │ stm32f10x.h

    │     │ stm32f10x_conf.h

    │     │ stm32f10x_it.c

    │     │ stm32f10x_it.h

    │     │ system_stm32f10x.c

    │     │ system_stm32f10x.h

    │     │ template.uvguix.zhouzhou

    │     │ template.uvoptx

    │     │ template.uvprojx

    │     └ Listings

    │        │ startup_stm32f10x_hd.lst

    │        └ template.map

    ├ 串口通信

    │  │ bool.h

    │  │ makefile

    │  │ serial.c

    │  │ serial.h

    │  └ ServoController.h

    └ 树莓派4B上手势识别

       │ cam.py

       │ model.py

       │ read_image.py

       │ rps.py

       │ test.py

       │ test1.py

       └ train.py

TAG机械手掌
  • 4 次
  • 1 分