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