Upgrading Basil Faulty to DonkeyCar v3.1.0

Today I’m upgrading my DonkeyCar Basil Faulty to donkey v3.1.0! A number of members of the Hackerspace have got the DonkeyCar training working on Windows (rather than a Linux Virtual Machine) and there have been a number of updates since my last install so what better time to upgrade?

The DonkeyCar Docs to install on Windows has been updated since I first tried the Windows install and the main install went without any error messages.

A major improvement with using the native Windows install instead of the Virtual Machine - Tensorflow has been optimised for PCs with Nvidia graphics cards (such as my laptop with a GTX 1050) using Cuda SDK.

Issue: Pi Camera Permissions

The errors came on the Pi itself - a permissions problem with the camera:

(env) twulz@basilFaulty:~/mycar $ python manage.py drive
using donkey v3.1.0 ...
loading config file: /home/twulz/mycar/config.py
loading personal config over-rides

config loaded
cfg.CAMERA_TYPE PICAM
cfg.CAMERA_TYPE PICAM
mmal: mmal_vc_shm_init: could not initialize vc shared memory service
mmal: mmal_vc_component_create: failed to initialise shm for 'vc.camera_info' (7:EIO)
mmal: mmal_component_create_core: could not create component 'vc.camera_info' (7)
Traceback (most recent call last):
  File "manage.py", line 572, in <module>
    meta=args['--meta'])
  File "manage.py", line 100, in drive
    cam = PiCamera(image_w=cfg.IMAGE_W, image_h=cfg.IMAGE_H, image_d=cfg.IMAGE_DEPTH)
  File "/home/twulz/projects/donkeycar/donkeycar/parts/camera.py", line 20, in __init__
    self.camera = PiCamera() #PiCamera gets resolution (height, width)
  File "/usr/lib/python3/dist-packages/picamera/camera.py", line 367, in __init__
    with mo.MMALCameraInfo() as camera_info:
  File "/usr/lib/python3/dist-packages/picamera/mmalobj.py", line 2346, in __init__
    super(MMALCameraInfo, self).__init__()
  File "/usr/lib/python3/dist-packages/picamera/mmalobj.py", line 633, in __init__
    prefix="Failed to create MMAL component %s" % self.component_type)
  File "/usr/lib/python3/dist-packages/picamera/exc.py", line 184, in mmal_check
    raise PiCameraMMALError(status, prefix)
picamera.exc.PiCameraMMALError: Failed to create MMAL component b'vc.camera_info': I/O error

SOLUTION: I found the solution from this link - I just needed to change the permissions on the /dev/vcsm directory:

(env) $ ls -la /dev/vcsm
crw-rw---- 1 root video 244, 0 Oct 16 10:17 /dev/vcsm
(env) $ sudo chmod ugo+rw- /dev/vcsm
(env) $ ls -la /dev/vcsm
crw-rw-rw- 1 root video 244, 0 Oct 16 10:17 /dev/vcsm

Installing the PS3 Controller

Getting the Ps3 controller working: follow the instructions here for bluetooth:

The ps3 controller instructions have also been updated and were very straight-forward, the only change I had to make was I needed to use sudo bluetoothctl instead, otherwise no devices will show up.

Outputs:

sudo apt-get install bluetooth libbluetooth3 libusb-dev
sudo systemctl enable bluetooth.service
sudo usermod -G bluetooth -a pi
sudo reboot
wget http://www.pabr.org/sixlinux/sixpair.c
gcc -o sixpair sixpair-c -lusb
ls
gcc -o sixpair sixpair.c -lusb
sudo ./sixpair
sudo bluetoothctl
systemctl start hciuart
sudo systemctl start hciuart
ls /dev/input/js0
sudo reboot

Issue: Permission denied on i2c

Next I was getting this error: PermissionError: [Errno 13] Permission denied: '/dev/i2c-1' so I needed to add myself to the i2c user group:

sudo usermod -a -G i2c twulz
exit

Log back in

Then the problem was the joystick permissions, so to fix I needed to see what group owns the joystick permissions then add to the ‘input’ group:

ls -l /dev/input/js0
sudo usermod -a -G input twulz
exit

log back in, then:

cd mycar/
python manage.py drive --js

Success! Now I can go ahead with the training again!