Skip to content

MRsoymilk/toy-car

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

toy-car

环境:

  • 树莓派3B+
  • raspbian 32位

uname -a

Linux raspberrypi 5.4.79-v7+ #1373 SMP Mon Nov 23 13:22:33 GMT 2020 armv7l GNU/Linux

文件夹说明

car

概述

├── car                       # 快捷命令
├── config.ini                # toy-car 配置文件
├── control                   # 目录:手动控制相关
│   ├── Car.py                # 读取配置文件,判断_Cmd.py或_View.py
│   ├── _Cmd.py               # 基于命令行的采集工具
│   ├── GetChar.py            # 类文件:实时获取输入字符
│   └── _View.py              # 基于图形化界面的采集工具
├── html                      # nginx图片服务器目录
│   ├── data                  # 训练测试使用数据
│   ├── index.html            # 网页文件
│   └── rwby.jpg              # 测试图片
├── network                   # 网络模型文件夹
│   ├── _AutoAcc.py           # 使用OpenVINO加速的寻路程序
│   ├── _Auto.py              # 使用Raspberry Pi CPU的寻路程序
│   ├── Car.py                # 读取配置文件,判断_Auto.py或_AutoAcc.py
│   ├── model                 # 模型文件
│   │   ├── model.bin         # 计算棒使用,包含权重和偏差二进制数据。
│   │   ├── model.mapping     # 计算棒使用,映射文件
│   │   ├── model.onnx        # onnx格式网络数据文件
│   │   ├── model.pth         # pytorch格式网络数据文件
│   │   └── model.xml         # 计算棒使用,描述网络拓扑。
│   ├── Net.py                # 网络模型
│   ├── pytorch2onnx.py       # pytorch格式转onnx格式
│   └── Train.py              # 模型训练文件
├── README.md                 # 说明文件
└── tools                     # 工具目录
    └── check.py              # 移除空文件

执行./car init后生成完整目录,增加目录:

├── html
│   └── data                  # 网络训练测试使用数据
│       ├── a                 # 左转方向数据
│       ├── d                 # 右转方向数据
│       └── w                 # 直行方向数据
└─ network
    └── model

一些文件详细说明

car

详情请使用./car help

help
usage:
car               -- Simplified operation
| ./car init      -- init basic folder
| ./car help      -- help infomation
| ./car camera    -- adjust car camera by computer
| ./car start     -- control car by computer
| ./car check     -- check if picture is empty
| ./car train     -- train network
| ./car auto      -- control car by network
| ./car clean     -- clean useless image and model
V
         _____________________________ 
        |                             |
        | q w                       p |
        | a   d              h j k l  |
        |                             |
        |                             |
        |            _____            |
        |           |space|           |
        |            -----            |
        |_____________________________|

    w:  car start, adjust direction to forward
    a:  car start, adjust direction to left
    d:  car start, adjust direction to right
    h:  car camera, adjust camera left
    j:  car camera, adjust camera down
    k:  car camera, adjust camera up
    l:  car camera, adjust camera right
    p:  car auto, stop toy-car
    q:  car start/auto, end program
space:  car start/auto, forward then stop; stop then forward

config.ini

Pin: 相应引脚

  • CameraH:水平方向调节舵机
  • CameraV:垂直方向调节舵机
  • MotorA:电机接口
  • MotorB:电机接口
  • Direction:方向控制舵机

Car: 电机(Motor)速度和舵机(Servo)转向角度

  • Speed:速度控制
  • Left:左转角度
  • Right:右转角度

Network:

  • BatchSize:一次处理数量
  • Data:训练数据目录
  • Epoch: 训练更新次数
  • LearnRate: 学习率
  • Model: 模型存放位置
  • OpenVINO:Intel Neural Compute Stick 2是否可用(True可用,False不可用)

View:

  • View:图形化界面是否可用(True可用,False不可用)

主要依赖库

其它

配置nginx图片服务器

安装nginx

sudo apt install nginx

编辑配置文件/etc/nginx/sites-available/default

sudo vim /etc/nginx/sites-available/default

修改内容,其中root位置具体到项目可能有所不同。

root /home/pi/toy-car/html;

location / {
    try_files $uri $uri/ =404;
    autoindex on;
}

可选:nginx 默认时间是UTC,修改为本地

编辑文件/etc/nginx/nginx.conf,在http内加入

autoindex_localtime on;

安装opencv

sudo apt install python3-opencv

安装pytorch

pytorch官网没有arm版本,可以在网上找别人打包的.whl文件(我打包的raspberry-torch)或者手动编译安装。

使用打包文件

git clone https://gitee.com/mrsoymilk/raspberry-torch
cd raspberry-torch
pip3 install ./torch-1.7.0a0-cp37-cp37m-linux_armv7l.whl
pip3 install ./torchvision-0.8.0a0+c36dc43-cp37-cp37m-linux_armv7l.whl

打开python3验证:

import torch
import torchvision

无报错说明成功。

问题:libopenblas.so.0: cannot open shared object file or directory

解决:sudo apt install libopenblas-dev

手动编译

swap扩容

不扩容的话会非常慢,导致异常的失败。

  1. 暂时停止 swap
sudo dphys-swapfile swapoff
  1. 修改 swap 大小

编辑文件:/etc/dphys-swapfile,修改CONF_SWAPSIZE

扩容至至少 1G(我选择了 2G)

CONF_SWAPSIZE=1024
  1. 应用修改
sudo dphys-swapfile setup
  1. 启动 swap
sudo dphys-swapfile swapon
安装依赖
sudo apt install libopenblas-dev libblas-dev m4 cmake python3-yaml libatlas-base-dev
编译pytorch
编译torch

获取pytorch

git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
git submodule sync
git submodule update --init --recursive

设置环境变量

export USE_CUDA=0
export USE_MKLDNN=0
export USE_NNPACK=0
export USE_QNNPACK=0
export USE_DISTRIBUTED=0
export USE_NUMPY=1
export NO_CUDA=1
export NO_DISTRIBUTED=1
export NO_MKLDNN=1
export NO_NNPACK=1
export ONNX_ML=1
export MAX_JOBS=3

编译(可以直接使用install,默认构建)

sudo -E python3 setup.py build
sudo -E python3 setup.py install

可选:在./dist目录下生成.whl文件

sudo -E python3 setup.py bdist_wheel
编译torchvision

获取torchvision

git clone https://github.com/pytorch/vision.git

编译(可以直接使用install,默认构建)

sudo -E python3 setup.py build
sudo -E python3 setup.py install

可选:在./dist目录下生成.whl文件

sudo -E python3 setup.py bdist_wheel

安装OpenVINO

参考网址:Install OpenVINO™ toolkit for Raspbian* OS

Releases

No releases published

Packages

No packages published