yconst / burro Goto Github PK
View Code? Open in Web Editor NEWPlatform for small-scale self-driving vehicles.
License: Other
Platform for small-scale self-driving vehicles.
License: Other
Also see #28
Raspirobot is a popular motor controller.
There's a library available so it should be straightforward.
https://learn.adafruit.com/adafruit-dc-and-stepper-motor-hat-for-raspberry-pi/overview
Necessary HAL should be implemented and support added to the Composer class.
Rovers implementing this board should automatically function with differential steering.
How to connect different configurations, drivers etc.
Images are saved in the wrong path when running drive script. The path is relative to the burro/burro
path, while it should be absolute.
How to drive a Burro, using gamepad or RC control
Hi,
Training using the training branch causes the following error:
sudo ./train.sh -d '/####/sessions/2018_01_22__10_31_06_PM' -n "#model" -m categorical
Using TensorFlow backend.
[ 28 9 9 115 40 77 169 2578 1721 1616 1751 1648 1759 1105
380]
[-30. -26.02 -22.04 -18.06 -14.08 -10.1 -6.12 -2.14 1.84 5.82
9.8 13.78 17.76 21.74 25.72 29.7 ]
Input shape: (99, 132, 3)
Layer (type) Output Shape Param #
conv2d_1 (Conv2D) (None, 48, 64, 24) 1824
conv2d_2 (Conv2D) (None, 22, 30, 32) 19232
conv2d_3 (Conv2D) (None, 9, 13, 64) 51264
conv2d_4 (Conv2D) (None, 7, 11, 64) 36928
flatten_1 (Flatten) (None, 4928) 0
dense_1 (Dense) (None, 100) 492900
dropout_1 (Dropout) (None, 100) 0
dense_2 (Dense) (None, 50) 5050
dropout_2 (Dropout) (None, 50) 0
angle_out (Dense) (None, 15) 765
Total params: 607,963
Trainable params: 607,963
Non-trainable params: 0
None
Best model saved in /#/model-model-adam-100-50-Thu Jan 25 14:16:50 2018.h5
2018-01-25 14:16:52.415660: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
Epoch 1/200
Traceback (most recent call last):
File "/home/flx/projects/burro-trainer/burro/burro/train.py", line 38, in
main()
File "/home/flx/projects/burro-trainer/burro/burro/train.py", line 35, in main
train_categorical(data_dir, model_name)
File "/home/flx/projects/burro-trainer/burro/burro/trainers/trainer.py", line 101, in train_categorical
callbacks=[tb, model_cp, e_stop])
File "/usr/local/lib/python2.7/dist-packages/keras/legacy/interfaces.py", line 87, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/keras/models.py", line 1117, in fit_generator
initial_epoch=initial_epoch)
File "/usr/local/lib/python2.7/dist-packages/keras/legacy/interfaces.py", line 87, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 1840, in fit_generator
class_weight=class_weight)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 1559, in train_on_batch
check_batch_axis=True)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 1234, in _standardize_user_data
exception_prefix='input')
File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 140, in _standardize_input_data
str(array.shape))
ValueError: Error when checking input: expected conv2d_1_input to have shape (None, 99, 132, 3) but got array with shape (256, 120, 160, 3)
keras version is 2.0.6
tensorflow is 1.4.1
I am pretty clueless here
Felix
Automatic pilots (such as NN) should remain in pilots
. Manual pilots (RC, gamepad) should all function at the same time, and be moved to a different module category. They could even be merged with remotes
.
This will allow i. corrective steering/throttle while an automatic pilot drives and ii. a new training mode where training samples are collected only when correcting the automatic pilot.
Currently RC input is always considered. This causes problems if more than one controllers are connected.
Either change input handling to take the sum of all controls, or introduce a flag that shows if the control is active and/or armed.
If the websocket is disconnected the page needs to be refreshed to reconnect.
There should be two pilot options, one for throttle and one for steering. One of the two should have a "same" option to allow single choice.
It is challenging to support Raspirobot, due to it's non-standard connections to Pi. Move submodule and relevant driver code to a separate branch that users of Raspirobot can clone and experiment.
Currently models are selected only through command line argument.
Allow dynamic changing on the fly through the web interface.
Add driver support for Raspberry's native hardware PWM generators.
This should allow driving several other boards based on that with ease.
A dict will give the opportunity to expose more information by the Pilot class to consumers such as recorders and remotes.
Currently the image is converted to PNG separately for saving image and for remote display, leading to reduced performance while saving images. Optimize this.
User should be able to download current session data through the web UI.
Currently calls to NAVIO drivers are scattered inside several modules. Refactor modules to abstract direct hardware calls. This will allow Burro to be usable with different hardware.
Specifically:
The installation script should ask the user whether to install system-wide packages or not.
Currently packages must be installed manually.
Is there a way to configure burro to use input from a USB camera, instead of the Raspberry Pi camera module?
Sometime when on the field it may be useful to have the option to start recording images on startup by default.
This should be added to config, and optionally as command line parameter as well.
Currently the config.py
file that holds configuration options is sufficient. However, it would be ideal to allow users to specify their own options in another file (e.g. user_config.py
) and have them override the defaults.
Two models should be included:
So that when using a smartphone user can control Burro steering by tilting their device, and when using a computer with a gamepad.
Hi,
I am trying an identical build with a mini-trooper, the same ESC, wide-angle camera, Navio2 and Logitech F710, only minor difference is that I am using a rpi 3 instead of rpi 2. I am using the emlid raspbian jessie image, the stretch image did not work with the install-burro.sh.
The web interface starts and I see the camera feed, steering from the F710 works, but the throttle does not. I cannot start the car, 0 is displayed for throttle on the web interface. Am I missing something simple? In donkey I have to calibrate and enter PWM values for neutral, forward and reverse, is this necessary with burro?
When I start start.sh, I get the following output:
pi@navio:~/burro/burro $ sudo ./start.sh
2018-01-15 07:17:52,489 - Found NAVIO2 HAT
2018-01-15 07:17:52,689 - Gamepad initialized
2018-01-15 07:17:54,694 - Loaded F710 Gamepad module
2018-01-15 07:17:54,724 - Loaded RC module
2018-01-15 07:17:54,729 - Setting up Ackermann car
2018-01-15 07:17:55,774 - PiVideoStream loaded.. .warming camera
/home/pi/burro/local/lib/python2.7/site-packages/picamera/encoders.py:545: PiCameraResolutionRounded: frame size rounded up from 160x120 to 160x128 width, height, fwidth, fheight)))
Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/home/pi/burro/burro/burro/sensors/cameras.py", line 95, in update
self.rawCapture, format="rgb", use_video_port=True):
File "/home/pi/burro/local/lib/python2.7/site-packages/picamera/camera.py", line 1625, in capture_continuous
camera_port, output_port = self._get_ports(use_video_port, splitter_port)
File "/home/pi/burro/local/lib/python2.7/site-packages/picamera/camera.py", line 545, in _get_ports
'The camera is already using port %d ' % splitter_port)
PiCameraAlreadyRecording: The camera is already using port 0
After this, as I mentioned, the web interface starts, just the throttle does not work.
Hope you can help me,
thanks,
Felix
Excuse me, something in how I'm updating my fork is not working correctly. I don't know why Github wants to update the master copy as well.
Hi,
After installation there is no config.py in /burro/burro. Is it automatically generated? Is there a template I can use?
Thanks,
Felix
Using the Logitech game pad, I'm able to give one command to the Navio2 (i.e. steering, or throttle), before it dies off and no longer accepts commands. The entire internet connectivity on the raspberry pi fails, even ssh fails.
(It's connected through WiFi)
Depending on available hardware different vehicle types may be supported. Add a way to undertake the task of setting up a vehicle automatically, depending on available hardware
Currently web telemetry is limited. It only shows an image, a steering indicator and the selected model and record option.
It should be enriched with the following for starters:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.