GitXplorerGitXplorer
l

donkeybouncecar

public
0 stars
0 forks
0 issues

Commits

List of commits on branch master.
Unverified
bce9fbfb32952fb300cb7adad8b01adf3089e8f1

works new board

llookfwd committed 5 years ago
Verified
c16a620a3f142166f8bba3df3a512b2243fdd7ec

xsvf player screenshot

llookfwd committed 5 years ago
Unverified
16f3d5a958386a4d31a3ad1a9cb17b5cae2e9568

vq44 version JTAG files

llookfwd committed 5 years ago
Unverified
ac8b5e0ad32cd16062fc02f68ac4852130cfa454

Documents the CPLD protocol

llookfwd committed 5 years ago
Unverified
7ad3120b89db099e5b13ff64188742240efdc028

file cleanup and restructuring

llookfwd committed 5 years ago
Unverified
2f509ebde3e7217e7e6a0f7f82046a2b7cddfa94

Brings back readme

llookfwd committed 5 years ago

README

The README file for this repository.

Donkey Bounce Car

The Donkey Bounce Car is the Donkey Car + super fancy extra hardware and software.

Videos

Watch the video

Watch the video

Donkey Bounce Shield II

Goal

The second version of the Donkey Bounce Shield, uses a CPLD to accuratelly measure Servo signals from the Remote Control (RC). It creates PWM signals that drive both steering and throttle and by default it mirrors the signals of the RC. Alternatively, Arduino's serial port can override RC settings and drive the car. It also now supports various types of GPSs and both 6-axis and 9-axis absolute position sensors.

  • You can find the PCB here.
  • You can find the CPLD design and JTAG files here.
  • You can find the latest Arduino Sketch here.
  • You can find the updated ServoTimer1 library here.

The schematic

or -

The Shield

Rationale

As soon as I started using the first version of the Donkey Bounce Shield, several limitations became aparent:

  1. Servo pulse width measurements were highly inaccurate. Even after using interrupts and other techniques the accuracy was bad.
  2. I would have to manually unplug the Remote Control signals in order to create control signals from Arduino.
  3. When, after several modifications I was able to have arduino as man-in-the-middle, between the RC and the motors, Donkey Car was making flaky small moves as inaccurate measurements where propagated to the PWM controller.

The reason for inaccurate measurements was the sensitivity on interrupts. More specifically the cli command stops interrupts and it's used very often. For example, it's used by the micros() Arduino command and it's also very heavily used by the SoftwareSerial module. We need that module in order to read GPS signals.

Bottom line; In order to accurately read PWM signals you need to measure latencies with microsecond-level precision and an Arduino can't do that when it's as busy as it is in our case. I offloaded this work to custom hardware and more specifically an XC2C64A Xilinx CPLD.

References

Donkey Bounce Shield I

What

A shield that adds a GPS, a gyro, PWM monitors and a distance sensor

The schematic

The Shield

You can find details about the PCB here.

How to

ssh pi@192.168.1.124

If it's on Ellipsis Jetpack 15BF:

ssh pi@192.168.1.11

Wifi notes: Setting WiFi up via the command line https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md

Ellipsis Jetpack 15BF

$ python a.py

This was a good attempt - but didn't work:

./usbrawserial /dev/ttyACM0

Ref:

$ cd ~/mycar/
$ python manage.py drive

http://192.168.1.124:8887 http://192.168.1.11:8887

GPS

  • GPS Receiver - LS20031 5Hz (1, 2, 3)

References

Todo

Create a UI using 1, 2, 3.