An UGV-system using SoC-FPGA developed for FPGA design competition held on ICFPT2019.
Our team won first place! 🎉 🎉 🎉
-
Localization and Motion Planning are implemented in the UGV-system
-
Efficient data flow that image data captured by image sensor are processed by FPGA before transferring to DRAM
-
Peripheral devices (e.g. DC motor) can be handled transparently from Zynq PS by a system that synchronize registers between multiple FPGAs with UART
- The UGV-system is divided into five layers, and it is descending order of abstraction
- Avnet Ultra96 V1
- Digilent Cmod A7-35T
- 96Boards MIPI Adapter Mezzanine
- Pcam5C
- Web Camera (Buffalo BSW20KM11BK)
- Stereo Camera (Optor)
- Anker PowerCore+ 26800 PD
- DC Motor/Gearbox (1:53 Gear Ratio)
A part of this repository structure is shown below:
ZybotR2-96-fpt19
├── assets
│ ├── cad
│ ├── script
│ └── tools
├── cmod-a7
│ └── vivado
│ ├── prj
│ └── src
└── ultra96
├── BOOT_FS
├── ROOT_FS
│ ├── app
│ │ ├── fad
│ │ └── other
│ ├── driver
│ │ ├── cp210x
│ │ ├── usbserial
│ │ └── v4l2
│ ├── dts
│ ├── firmware
│ ├── lib
│ │ ├── control
│ │ ├── improc
│ │ ├── optor
│ │ ├── planner
│ │ └── zynqpl
│ └── package
└── vivado
├── ip
├── prj
└── src
assets/
- 3DCAD data for the vehicle parts, scripts which install libraries such as OpenCV, and tools are stored
cmod/vivado/
- RTL files and scripts which create project are stored
- A Registers synchronization module, a motor controller, and an OLED controller are implemented
ultra96/BOOT_FS/
- Binary files for booting Linux on Ultra96 are stored
- These files are prepared with reference to ikwzm/ZynqMP-FPGA-Linux
ultra96/ROOT_FS/app/
- An application of FAD(FPGA Autonomous Driving), test applications of devices, and so on are stored
ultra96/ROOT_FS/lib/
- Shared libraries are stored
planner
is based on kyk0910/sampling-based-plannersoptor
is prepared with reference to optor-vis/optor_vi-stereo-v1
ultra96/ROOT_FS/driver/
- Device drivers are stored
v4l2
which is Linux V4L2 driver which deals with the Xilinx VDMA IP is prepared with reference to fixstars/ultra96_design
ultra96/ROOT_FS/dts/
- DTS(Device Tree Source) files are stored
- We reflect some of device information to kernel using Device Tree Overlay which is feature of Linux kernel
ultra96/ROOT_FS/firmware/
- A bitstream file and firmware of wireless LAN modules are stored
- A bitstream file is loaded with FPGA Region which is feature of Linux kernel
ultra96/ROOT_FS/package/
- Debian packages of linux-headers and linux-image are stored
- There are also prepared with reference to ikwzm/ZynqMP-FPGA-Linux
ultra96/vivado/
- RTL files, HLS sources, IPs made by Digilent and scripts which create project are stored
preimproc
module is based on kyk0910/HLS-canny-edge-detection
- Offload computation heavy processes such as Informed-RRT*, Particle Filter, path tracking algorithms, and calculating Visual Odometry
- Implement more accurate image recognition algorithms
- Yuya Kudo
- Atsushi Takada
- Yuta Ishida
- Prof. Tomonori Izumi
MIT