-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
19 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. | ||
 | ||
|
||
# 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. | ||
|
||
 | ||
|
||
# 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). |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.