Speed, steering, and object detection for an autonomous RC car
Branch | Ubuntu x86_64 | macOS High Sierra |
---|---|---|
Master | ||
Steering | ||
Speed | ||
Image | ||
GPU | ||
Interfacing |
Stuff required for the car to drive, majority of the program.
- Image processing.
- Speed control.
- Pedestrian & object detection.
- Steering.
- PWM / Arduino Interfacing.
Stuff we would like to complete.
- GPU parallelization.
- Arduino driver rewrite.
- Raspberry Pi.
- Website.
- TrakSim replacement.
This project is mostly focused on the software side of the problem but we are running it on real hardware
- RC Car
- Onboard SBC - LattePanda (insert specific version here).
- Arduino integrated with LP to control servos.
- Frontmounted camera - FLIR Chameleon 3 Camera.
- Aparapi - Open-source framework for executing native Java code on the GPU through OpenCL.
- Fly2Cam - Tom explains it better here.
- JSSC - Java Simple Serial Connector.
- Firmata - The Arduino Firmata library implements the Firmata protocol for communicating with software on the host computer.
Standalone driving simulation to test code without the required hardware
- APW3
- TrakSim and its supporting classes, as well as an exmple track to run it with.
- DriveDemo - Deprecated since eb8e01c
- A program designed to demonstrate how to use both TrakSim and the servo & camera interfaces simulated by TrakSim.
- Fly2Cam
- A minor revision of the Java interface to the JNI (C-coded) DLL which accesses the Pt.Grey Chameleon3 or FireFly camera driver DLLs. FlyCamera.dll is included here.
- noJSSC
- A non-functional (stub) plug-compatible substitute for the JSSCAPI, which may be used in its place when running TrakSim in stand-alone mode on any computer.
- FakeFirm
- A Java clone of the C# API released by LP for driving digital outputs and servos that diverts a copy of the servo commands to TrakSim.
Setup the included Gradle project and make sure to include the Aparapi and Raspivid-j libraries.
Compile and run MrModule.java in the com.apw.carcontrol
package, by default its set to run on a car with the expected hardware and driver dlls but if
you are running it on your own computer with TrakSim or any equivalent use the cmd argument sim
, this should launch a new TrakSim window and start driving the car.
If you wish to run the program with no visual display/window run with the argument nosim
.
- [1] - Clicking anywhere on the minimap in the top right will move the car to your click location.
- [2] - Clicking anywhere on the map in the bottom right will turn your car to the angle from the car to your click.
- [3] - Clicking on the bottom middle of the window on the small brownish bar will start driving.
- UP - Increase manual speed by 1.
- DOWN - Decrease manual speed by 1.
- LEFT - Steer left by 5.
- RIGHT - Steer right by 5.
- P - Tell the car that its stopped at a red light.
- O - Tell the car that its stopped at a yellow light.
- I - Tell the car that its stopped at a green light.
- U - Tell the car that its stopped at a stop sign.
- Y - Increments stop distance.
- B - Enable/disable blob rendering.
- V - Enable/disable overlay rendering.
- F - Begins camera calibration.
- C - Enable/disable writing blobs to console.
- S - Enable/disable writing speed to console.
- M - Increment blob color mode.
- SPACE - Change image filter.
- F11 - Toggle Fullscreen window (if using WindowModule).
TrakSim was originally designed to simulate the PatsAcres go-kart track, but now has a "Build Map" function so you can design your own track layouts using a (somewhat crude) text specification file described here.
Traksim was written by Tom Pittman and is extensively documented on his website, read it if you desire a better understanding of the program.
or contact Tom at TPittman@IttyBittyComputers.com
This project was created and is maintained by a group of highschool students in Portland, Oregon.
Bugs and requests: submit them through the project's issues tracker.
Questions: ask them at StackOverflow with the tag REPO.
Website: AVP_HS
Google Java Style Guide, enforced by Google Java Formatter with google-java-format-gradle-plugin.