Skip to content

Commit

Permalink
Updated README
Browse files Browse the repository at this point in the history
  • Loading branch information
Divelix committed May 24, 2021
1 parent 983d920 commit 0291276
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 8 deletions.
27 changes: 19 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,21 @@
# omni-platform control system
This project aims to develop control system for omnidirectional wheeled platform.
# Introduction
This repository is part of [OmniCar project](https://divelix.github.io/OmniCar/) and represents program for Arduino MEGA that solves omni platform kinematics to get wheel odometry solution and reach desired velocity.

(c) ITMO University and contributors
GNU GENERAL PUBLIC LICENSE
# Showcase
Arduino MEGA runs code of this repository and placed on the 1st floor of the mobile platform. It has `Freeduino Motor Shield V3` and special power board (reduces wiring) mounted on top of it.

# Introduction
The code in this repository is intended to control mobile platform that consists of:
* 4 DC motors with encoders (JGB37-520) + mecanum wheels
* Arduino MEGA 2560
The platform has 4 mecanum wheels based on JGB37-520 DC motors with incremental encoders. Each encoder uses 2 interrupt pins.
Chosen configuration has only 4 free interrupt pins (other ones are used or unreachable because of motor shield): 18, 19, 20, 21 - they are used by 2 front wheels. Two rear wheels use "fake" interrupts via `PinChangeInterrupt` library: 50, 51, 52, 53.
![First floor of the platform](res/first_floor.jpg)

# Structure
The project structure consists of two blocks: car control (`Car`) and serial communication (`SerialTransceiver`).

`Car` controls 4 wheels with tuned PID-controllers and calculates robot velocity by solving backward kinematics problem and robot position by solving forward kinematics problem (dedicated theory described in [Modern Robotics](http://hades.mech.northwestern.edu/images/7/7f/MR.pdf) book, p.519).

`SerialTransceiver` receives control vector from Raspberry Pi (3 bytes) and transmits robot position in global coordinate system (12 bytes). It uses CRC8 algorithm to check message integrity.

![UML diagram of GUI](res/UML.jpg)

# Prerequisites
This project was created using [PlatformIO](https://platformio.org/) IDE, so you need to install it to load code on your Arduino MEGA (or just copy all classes to Arduino IDE).
Binary file added res/UML.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added res/first_floor.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 0291276

Please sign in to comment.