myles-parfeniuk / 2d_lidar_scanner_ti_28379D

Two dimensional lidar scanner utilizing the TI F2837x launchpad development board with a tms320f28379D controller.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

image

Table of Contents
  1. About
  2. System Overview
  3. Prototype Device
  4. Results
  5. To Do
  6. License
  7. Contact

About

Two dimensional lidar scanner project utilizing the TI F2837x launchpad development board with a tms320f28379D controller.

In its current state this project is fully functional, one working prototype has been constructed; however, a vast amount of improvements could be made which are outlined in the "To Do" section.

All firmware is currently written in C, with use of TI SYS/BIOS RTOS. The project also contains a plotting script written in python that interprets the data from the controller and illustrates a map for the user to view. There is also a C++ plotting program; however, its implementation is not yet completed.

(back to top)

System Overview

See below, a block diagram of the system and its interconnections. image

(back to top)

Prototype Device

See below, an image of the assembled prototype. There are a few mistakes in the CAD files that must be corrected before I feel comfortable releasing them, I will update this repo with them at some point. image

(back to top)

Results

Some very crude tests were performed to verify the functionality of the prototype which are outlined in this section. Further testing will be performed once more of the "To Do" section has been completed.

Accuracy

To test accuracy, the device was placed into a rectangular bin of a known size. Points were measured from the LiDAR sensors to the edges of the bin in multiple locations with a measuring tape and compared to the map illustrated by the python client. It was determined that at close ranges, the device had no deviations greater than 3cm, well within spec according to the TF-Mini-S product manual. The relevant table from the manual is depicted below:

image

Mapping a Room

To determine if the accuracy still held up at ranges larger than 6m, the previous test was scaled up by generating a map of my suite. Note that the device was placed near the ceiling to avoid its view being obstructed by furniture and lab equipment.
This test was a success, confirming that any distances greater than 6m were within 1% of their actual value.

image

CPU Utilization

To test the CPU utilization API calls from TI SYS/BIOS load module were utilized, the results are summarized in the table below. The documentation for these functions can be viewed here.

image

The results indicated that there is a massive amount of processing time wasted by drawing to the OLED screen. This screen has no functional purpose beyond indicating when the device is in its zeroing state, or the most recent distance measured while it is in its scanning state. It will be removed in future revisions of the project.

(back to top)

To Do

Hardware

  • Make custom PCB to miniaturize device and avoid use of development board
  • Update CAD files to fix mistakes in print (incorrect spacing on some mounting holes)
  • Scale down and miniaturize enclosure for PCB
  • Remove OLED display and encoder
  • Switch to regular DC motor, eliminate use of stepper motor

Firmware

  • Port from deprecated TI SYS/BIOS RTOS to freeRTOS
  • Write driver for DC motor
  • Update sampling algorithm/method for faster refresh rate (currently it is very high fidelity, but much too slow)

PC Client

  • Finish CPP client

(back to top)

License

Distributed under the GPL-3.0 License. See LICENSE.md for more information.

(back to top)

Contact

Myles Parfeniuk - myles.parfenyuk@gmail.com

Project Link: https://github.com/myles-parfeniuk/2d_lidar_scanner_ti_28379D

(back to top)

About

Two dimensional lidar scanner utilizing the TI F2837x launchpad development board with a tms320f28379D controller.

License:GNU General Public License v3.0


Languages

Language:C 93.1%Language:Makefile 2.4%Language:Batchfile 1.9%Language:C++ 1.1%Language:Python 0.9%Language:Java 0.5%Language:XS 0.1%Language:HTML 0.0%Language:Tcl 0.0%