In the javadoc apidocs you'll also find generated uml-diagrams like this one: https://rc-dukes.github.io/dukes/dukes/apidocs/nl/vaneijndhoven/daisy/package.svg
# | picture | part | example sources | documents | ~ price |
---|---|---|---|---|---|
1 | ![]() |
1:10 RC Car chassis | 70 € | ||
2 | ![]() |
Speed Control | Modelcraft Carbon Series Speed Control "20 Turns" | de/en/fr/nl | 21 € |
3 | ![]() |
RC-Car servo | de/en | 10 € | |
4 | 16 € | ||||
5 | ![]() |
Battery Charger | 27 € | ||
6 | ![]() |
Raspberry PI 3 B+ | Raspberry PI 3 B+ | en | 35 € |
7 | ![]() |
microSD Card | SanDisk 16 GB | 7 € | |
8 | ![]() |
Raspberry PI Camera | 1080 p Camera Module | 23 € | |
9 | ![]() |
DC/DC Converter 12 V-> 5V | 12 V->5 V Converter Module | 7 € | |
10 | ![]() |
Micro USB Connector | Delock USB 2.0 Micro USB | 6 € | |
Total | 199 € | ||||
a | ![]() |
Breadbord Kit | MB102 Breadbord Kit | 7 € | |
b | ![]() |
Ulrasound Sensor | 5 x HC-SR04 + Cables | 10 € |
To run the Raspberry PI from the 7.4 Volt Battery of the car the DC-DC converter has to be soldered into the voltage supply chain. You might want to select a converter with enough power for your usecase
This configuration works if you only want to run a Raspberry PI and directly control the motor and steering servos of the RC car.
This configuration is currently tried for running the servos over an Adafruit 16 channel servo controller and using extra servos.
see Raspberry PI
cd /usr/local/src
sudo git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.git
cd RPi_Cam_Web_Interface/
./install.sh
cd /usr/local/src
sudo git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.git
cd RPi_Cam_Web_Interface/
./install.sh
A message like:
#mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1)
sh: 1: /var/www/html/macros/error_hard.sh: Permission denied
Indicates that you might have a cabling problem.
wf@pibee:~ $ cd /usr/local/src
wf@pibee:/usr/local/src $ sudo git clone https://github.com/srcshelton/servoblaster
cd servoblaster
sudo make install
sudo reboot
sudo apt-get install openjdk-8-jdk
sudo apt-get install screen
see also OpenCV
If you'd like to generally use OpenCV you can get it e.g. from the macports project:
sudo port install opencv +java
ls /opt/local/share/OpenCV/java
libopencv_java343.dylib opencv-343.jar
For your convenience you'll find these two files in the lib directory.
sudo port install dpkg
You might want to use scripts/opencvubuntu to download the 75 MByte libopencv_java343.so and install the backports libjasper libraries that are not published with Ubuntu 18 by default. You'll find some other links in the script that might also give you hints on how to proceed if you have another environment or different needs. You might want to create an Issue if you run into trouble.
Help Wanted -please file an issue if you want to try to get things running on Windows.
Deploying to your Raspberry is done by compiling e.g. on a laptop and then transferring the results to your PI.
scripts/install.sh
There is a usage for this script if you call it with scripts/install.sh -h. Essentially this is doing a mvn clean install. The clean part is important to get the platform specific native openCV Library integrated into the server code.
You need to configure your PI's host address and user in a file ~/dukes/dukes.ini in the remotecar section. Also you need to check your GPIO pins and the servo settings for your car for LED,Engine and Wheels. You might want to try these things out before using the software the first time.
The original wiring is:
The software uses the standard Servoblaster ID's above which are hard-coded at this time. The GPIO configuration will only work with other devices which we intend to support in the future.
#
# WF 2019-06-21
#
# rc-duke configuration file
# remote car raspberry PI configuration
remotecar.host=picaro
remotecar.user=wf
# camera url format
camera.url=http://picaro/html/cam_pic_new.php
# webserver configuration
webcontrol.port=8080
imageview.port=8081
# watchdog
# how often to send a heart beat in milliseconds
watchdog.heartbeat.interval.ms=150
# how many beats may be missed before remote car is forced to stop
watchdog.max.missed.beats=6
# use servoblaster as servo control
servo.command=servoblaster
# be careful with your GPIO configuration
# you might damage your PI with a misconfiguration!
# led configuration
led.gpio=24
led.on=250
led.off=0
# wheel configuration
wheel.gpio=18
# positive - higher values mean go right
wheel.orientation=+
wheel.center=144
wheel.stepsize=1
wheel.max.left=115
wheel.max.left.angle=-18.0
wheel.max.right=158
wheel.max.right.angle=14
# engine configuration
engine.gpio=17
# positive - higher values means going quicker
engine.orientation=+
engine.speed.zero=130
engine.stepsize=1
engine.min.speed.reverse=127
engine.max.speed.reverse=122
engine.min.speed.forward=133
engine.max.speed.forward=138
engine.max.velocity.reverse=-1.0
engine.min.velocity.reverse=-0.5
engine.min.velocity.forward=0.23
engine.max.velocity.forward=1.0
The deploy script as a help option that shows how it can be used:
deploy.sh [-a|-d|-h|-m|-s]
-a |--autostart : configure the remotecar app to autostart on reboot
-d |--debug : debug this script
-m |--maven : run maven install
-h |--help : show this usage
-s |--start : deploy and start remotecar (duke) fat jar
- start 'CarServer' in module 'rc-server' in IDE - point your browser to http://localhost:8080
scripts/install.sh
There is a usage for this script if you call it with scripts/install.sh -h. Essentially this is doing a mvn clean install. The clean part is important to get the platform specific native openCV Library integrated into the server code.
You need to configure your PI's host address and user in a file ~/dukes/dukes.ini in the remotecar section. Also you need to check your GPIO pins and the servo settings for your car for LED,Engine and Wheels. You might want to try these things out before using the software the first time.
The original wiring is:
The software uses the standard Servoblaster ID's above which are hard-coded at this time. The GPIO configuration will only work with other devices which we intend to support in the future.
#
# WF 2019-06-21
#
# rc-duke configuration file
# remote car raspberry PI configuration
remotecar.host=picaro
remotecar.user=wf
# camera url format
camera.url=http://picaro/html/cam_pic_new.php
# webserver configuration
webcontrol.port=8080
imageview.port=8081
# watchdog
# how often to send a heart beat in milliseconds
watchdog.heartbeat.interval.ms=150
# how many beats may be missed before remote car is forced to stop
watchdog.max.missed.beats=6
# use servoblaster as servo control
servo.command=servoblaster
# be careful with your GPIO configuration
# you might damage your PI with a misconfiguration!
# led configuration
led.gpio=24
led.on=250
led.off=0
# wheel configuration
wheel.gpio=18
# positive - higher values mean go right
wheel.orientation=+
wheel.center=144
wheel.stepsize=1
wheel.max.left=115
wheel.max.left.angle=-18.0
wheel.max.right=158
wheel.max.right.angle=14
# engine configuration
engine.gpio=17
# positive - higher values means going quicker
engine.orientation=+
engine.speed.zero=130
engine.stepsize=1
engine.min.speed.reverse=127
engine.max.speed.reverse=122
engine.min.speed.forward=133
engine.max.speed.forward=138
engine.max.velocity.reverse=-1.0
engine.min.velocity.reverse=-0.5
engine.min.velocity.forward=0.23
engine.max.velocity.forward=1.0
The deploy script as a help option that shows how it can be used:
deploy.sh [-a|-d|-h|-m|-s]
-a |--autostart : configure the remotecar app to autostart on reboot
-d |--debug : debug this script
-m |--maven : run maven install
-h |--help : show this usage
-s |--start : deploy and start remotecar (duke) fat jar
- start 'CarServer' in module 'rc-server' in IDE - point your browser to http://localhost:8080
../scripts/install.sh -h
usage: install.sh [-d|-f|-j|-q]* [-h]?
-d |--debug : debug this script
-f |--fatjar : create a fat jar
-j |--javadoc : with javadoc (default is without)
-q |--quick : no tests, no javadoc
-h |--help : show this usage
From the rc-server directory ../scripts/install.sh -f -q should create a fat jar with the maven assembly-plugin
java -jar target/rc-server-0.0.2-jar-with-dependencies.jar
(Please replace 0.0.2 with the current version of the project)
Should then start the server and the web ui should be available by either using
http://localhost:8080 or using the index.html file or detect.html files from the sources in rc-webcontrol/src/main/resources/web/
The start script will let you pick the components you'd like to start.
scripts/start -h
start [-d|-h]
-a |--all : run all parts of the software
-c |--car : run car software on pi
-s |--server : run server software
-r |--remote : point webbrowser to remot control
-w |--web : point webbrowser to detect.html
-d |--debug : debug this script
-h |--help : show this usage
So scripts/start -a will start
These are just some experiments with the Raspberry PI, Ultrasonic Sensors and Servos that might you get warmed up for the real challenge of getting your 1:10 RC self driving car going. You don't need to go thru all theses experiments. The basic car only uses the camera and two servos and no ultrasonic sensors.
Author: Wolfgang Fahl