Giter Site home page Giter Site logo

smart_car_paddle's Introduction

SmartCarToolKits

将SmartCarToolKits工程放到/root/workspace/下

串口或者网口进入Edgeboard中linux系统。(具体详见 FZ3B可视化访问的方法说明手册)

c++

camera2video

依赖的源文件

SmartCarToolKits/c++/demo中:camera2video.cpp

功能介绍:

将摄像头实时采集到的结果,转换成灰度视频。通过ctrl+c暂停。程序执行时间不宜过长。

准备工作:

将摄像头插入EdgeBoard中。

编译方法:

cd /root/workspace/SmartCarToolKits/c++
mkdir build
cd build
cmake .. 
make camera2video -j

会在 build目录下产生一个 camera2video的应用程序

使用方式:

在build目录下执行 ./camera2video

./camera2video 

产生效果:

会在 build目录下得到一个灰度的 camera.avi视频文件。

camera_display

依赖的源文件

SmartCarToolKits/c++/demo中的 camera_display.cpp

功能介绍:

实时显示,外接显示器直接显示或者通过vnc显示

准备工作:

连接好网口。

将摄像头插入 EdgeBoard上的 USB口中。

连接好显示器,或者通过vnc显示(具体详见 FZ3B可视化访问的方法说明手册)

编译方法:

cd /root/workspace/SmartCarToolKits/c++
mkdir build
cd build
cmake .. 
make camera_display -j

会在 build目录下产生一个 camera_display的应用程序

使用方式:

build目录下执行 :

./camera_display

产生效果:

可以在 VNC或者显示器中,看到一个名为 usbcamera的视频框。

rgb_mat2gray_array

依赖的源文件:

SmartCarToolKits/c++/demo中:rgb_mat2gray_array.cpp

功能介绍:

将一张 RGB图转换成灰度图

准备工作:

将准备要转换的图片文件夹放到 /root/workspace/路径下,以命名为 train为例(可任意命名)。

假设 train中的图片以0.jpg,1.jpg,2.jpg ...等格式递增。

编译方法:

cd /root/workspace/SmartCarToolKits/c++
mkdir build
cd build
cmake .. 
make rgb_mat2gray_array -j

会在 build目录下产生一个 rgb_mat2gray_array的应用程序

使用方式:

build目录下执行 ./rgb_mat2gray_array 图片的路径

./rgb_mat2gray_array /root/workspace/train/0.jpg

产生效果:

会在 build目录下得到 0.jpg灰度的文件,命名为 gray.jpg

predict

依赖的源文件:

SmartCarToolKits/c++/demo中:predict.cpp

功能介绍:

查看训练的模型识别情况。

准备工作:

将想要识别的地标放到赛道。

将小车放到赛道上,

连接好网口

将摄像头插入 EdgeBoard上的 USB口中。

连接好显示器,打开VNC。(具体详见 FZ3B可视化访问的方法说明手册)

将准备含有模型的文件夹放到 /root/workspace/路径下,以命名为 mobilenet-ssd为例(可任意命名)。

模型文件夹:

mobilenet-ssd为例,包含四个文件

config.jsonlabel_list.txtmobilenet_v2_ssd-modelmobilenet_v2_ssd-params

config.json中内容:

{
	"model_file_name":"mobilenet_v2_ssd-model",
	"params_file_name":"mobilenet_v2_ssd-params",

	"labels_file_name":"label_list.txt",

	"format":"RGB",
	"input_width":300,
	"input_height":300,
	
	"mean":[127.5,127.5,127.5],
    "scale":[0.007843,0.007843,0.007843],
	"threshold":0.5
}

参数说明:

model_file_name:指定模型文件的名字

params_file_name:指定模型参数文件的名字

labels_file_name:指定标签文件的名字

label_list.txt中内容:

background
Exit Two
Exit One
Pedestrian
Safety Cone
Gas Station
Prohibitory
Flooded Area

按照顺序排列训练的模型标签名字。

编译方法:

cd /root/workspace/SmartCarToolKits/c++
mkdir build
cd build
cmake .. 
make predict -j

会在 build目录下产生一个 predict的应用程序

使用方式:

build目录下执行 ./predict 模型所在文件夹的路径

./predict /root/workspace/SmartCarToolKits/mobilenet-ssd/

产生效果:

VNC或者显示器中查看自己训练的模型的识别情况。

串口通信

EdgeBoard支持两种串口通信:USBUARTUART,下面分别描述两种使用方法。

USB转UART

依赖的源文件

usb_uart_send.cpp

usb_uart_recv.cpp

功能介绍

usb_uart_sendEdgeBoard通过 usb转串口,循环1s发送 00-09的数据

usb_uart_recvEdgeBoard通过 usb转串口,超时接收一个字节的数据

准备工作
  1. 软件:将 SmartCarToolKits工程放到板子上的 /root/workspace/文件夹下。
  2. 硬件:三根杜邦线(TXRXGND)、2个 USB转串口工具、PC电脑上安装串口调试助手。 USB转UART连接方式

串口协议规定为下图交叉相连方式。

USB转串口原理图

注意:有的 USB转串口的 TXRX标识是转换后的,不需要交叉。

编译方式
cd /root/workspace/SmartCarToolKits/c++
mkdir build
cd build
cmake .. 
make usb_uart_send -j
make usb_uart_recv -j
使用方式
  1. 按照准备工作中的连接示意图连接并且保证 电脑安装了对应的 USB转串口驱动。
  2. 打开电脑上的串口调试助手,选择串口号,并在串口调试助手中设置:波特率为115200,8位数据位,无校验位。

串口调试助手

  1. 发送实验:EdgeBoard发送,电脑接收

    EdgeBoard:执行 ./usb_uart_send程序

    电脑串口调试助手:查看接收结果,接收区会显示 EdgeBoard发过来的数据,十六进制显示为 00-09

    接收区
  2. 接收实验:EdgeBoard接收,电脑发送

    电脑串口调试助手:发送十六进制数据。以 0x56为例

    EdgeBoard:执行 ./usb_uart_recv程序,显示如下结果

USB——linux接收

问题排查方法

EdgeBoard 目前支持的 USB转串口的 控制器芯片: CH341CP210x

  1. 查看硬件是否连接良好。
  2. lsusb 查看是否有新设备 :证明 USB设备已经被识别了。

lsusb

  1. 执行 lsmod 命令,查看驱动是否被加载:

lsmod

  1. 查看 USB转串口的设备节点:ls /dev/tty.USB*

查看设备文件节点

UART

依赖的源文件

uart_send.cpp

uart_recv.cpp

功能介绍

主要有 uart_senduart_recv应用程序

uart_sendEdgeBoard通过串口,循环1s发送 00-09的数据

uart_recvEdgeBoard通过串口,超时接收接收一个字节的数据

准备工作
  1. 软件:软件:将 SmartCarToolKits工程放到板子上的 /root/workspace/文件夹下。
  2. 硬件:三根杜邦线(TXRXGND)、1个 USB转串口工具、电脑上安装串口调试助手

串口通讯连接方式

串口通讯连接原理

注意:有的 USB转串口的 TXRX标识是转换后的,不需要交叉。

TXRX

编译方式
cd /root/workspace/SmartCarToolKits/c++
mkdir build
cd build
cmake .. 
make uart_send -j
make uart_recv -j
使用方式

USBUART章节

问题排查的方法
  1. 查看硬件是否连接良好。

  2. 串口 TXRX是否反接

  3. 查看设备节点是否存在:ls /dev/ttyPS1

RS485通信

依赖的源文件:

rs485_send.cpp

rs485_recv.cpp

功能介绍

rs485_sendEdgeBoard通过 485接口,间隔1s发送 0x56的数据

rs485_recvEdgeBoard通过 485接口,超时5000ms接收,接收一个字节的数据

准备工作

  1. 软件:将SmartCarToolKits工程放到板子上的 /root/workspace/文件夹下。

  2. 硬件:两根杜邦线、1个USB转RS-485转换器、PC电脑上安装串口调试助手。

12

17

RS485协议规定为下图连接方式。

13

编译方式

cd /root/workspace/SmartCarToolKits/c++
mkdir build
cd build
cmake .. 
make rs485_send -j
make rs485_recv -j

使用方式

  1. 按照准备工作中的连接示意图连接并且保证电脑安装了对应的USBRS485转换器对应的驱动。

  2. 打开电脑上的串口调试助手,选择串口号,并在串口调试助手中设置:波特率为115200,8位数据位,无校验位。

2

  1. 发送实验:EdgeBoard发送,电脑接收

EdgeBoard:执行 ./rs485_send 程序

电脑串口调试助手:查看接收结果,接收区会显示 EdgeBoard发过来的数据,十六进制显示为 56

14

  1. 接收实验:EdgeBoard接收,电脑发送

电脑串口调试助手:发送十六进制数据。以 0xAA为例

EdgeBoard:执行 ./rs485_recv 程序,显示如下结果

15

问题排查的方法

  1. 查看硬件是否连接良好。

  2. 485_A485_B不需要反接。

  3. 查看设备节点是否存在:ls /dev/ttyS2ls /dev/gpiochip0

GPIO

EdgeBoard已经预留出6个GPIO口,预留的GPIO接口在44针扩展口上,电平标准为3.3V。

20

硬件管脚 软件参数
Pin9 82
Pin10 83
Pin11 84
Pin12 85
Pin13 86
Pin14 87

依赖的源文件:

gpioDemo.cpp

功能介绍

gpioDemo:GPIO输出电平,间隔1s翻转。

准备工作

  1. 软件:将SmartCarToolKits工程放到板子上的 /root/workspace/文件夹下。
  2. 硬件:三根杜邦线,一个电阻,一个发光二极管。

18

连接方式如下图所示。

19

编译方式

cd /root/workspace/SmartCarToolKits/c++
mkdir build
cd build
cmake .. 
make gpioDemo -j

使用方式

以硬件管脚Pin9为例:

  1. EdgeBoard:执行 ./gpioDemo 82程序。(如果使用不同的GPIO口,改变相应软件参数即可)

  2. 观察发光二极管:间隔1s 闪烁。

18

问题排查的方法

  1. 查看硬件是否连接良好。
  2. 查看引脚号使用是否正确。
  3. 查看设备节点是否存在:ls /dev/gpiochip0

python

进入到 SmartCarToolKits/python文件夹中,python相关功能属于非必须功能,用户选择性参考即可

cd /root/workspace/SmartCarToolKits/python/

capture.py

功能介绍:

通过摄像头抓取图片并保存到执行目录下

准备工作:

将摄像头插入到 Edgeboard上的 USB口中

使用方式:

cd /root/workspace/SmartCarToolKits/python/
python3  capture.py

产生效果:

python文件夹当中生成一个 0.jpg的文件,此文件为当前摄像头采集的图片。

collect.py

功能介绍:

测试手柄驱动:

准备工作:

将摄像头插入到 Edgeboard上的 USB口中。

将手柄插入到 Edgeboard上的 USB口中。

由于 Edgeboard资源限制。需要用到 USB扩展口。将 USB扩展口插入到 Edgeboard上。摄像头与手柄在扩展口上插上即可。

关于适配的 USB扩展口与摄像头详见 图像采集与WiFi使用说明

使用方式

执行此程序前先将小车架起来,因为执行此程序,小车会动起来。

cd /root/workspace/SmartCarToolKits/python/
python3  collect.py

双手抓住手柄。

点击右手食指部位的RB键。小车后轮会动起来。

晃动左手侧摇杆,小车前轮左右方向会跟随摇杆左右方向晃动而切换。

前侧左手食指部位的LB键。小车停止运动。

产生效果:

会在当前文件夹生成一个 train文件夹。

train文件夹中包含,执行 python3 collect.py后采集的图片序列,以及一个json文件。

smart_car_paddle's People

Contributors

chengruichang avatar hechengyu-gui avatar yangxiaofengloveaj avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.