Full installation instructions: Difference between revisions
(→espeak) |
|||
Line 206: | Line 206: | ||
wave_open_sound > Pa_OpenStream : err=-9997 (Invalid sample rate) | wave_open_sound > Pa_OpenStream : err=-9997 (Invalid sample rate) | ||
===Sound level=== | |||
On a Raspberry pi version 3+ (not tested on other versions) | On a Raspberry pi version 3+ (not tested on other versions) |
Revision as of 18:23, 5 February 2020
Back to Robobot
Installation instruction on the raspberry
Install raspberry pi version of Linux on a micro-SD, instructions can be found here:
Install on raspberry first section (prerequisites).
Opencv 3.4
To find installed version of opencv try
pkg-config --modversion opencv
Install opencv version 3.4 (as of Jan 2020 it is version 3.4.9)
cd mkdir -p git cd git # this method will install version 4.2 - that is not fully compatible (jan 2020) # git clone https://github.com/opencv/opencv.git # git clone https://github.com/opencv/opencv_contrib.git # use this to get a version compatible with opencv 3.4 # get source (jan 2020) wget -O opencv-3.4.zip https://github.com/Itseez/opencv/archive/3.4.zip unzip opencv-3.4.zip wget -O opencv_contrib-3.4.zip https://github.com/Itseez/opencv_contrib/archive/3.4.zip unzip opencv_contrib-3.4.zip # compile the lot, but ommit python3 support, as the compile will fail (as of jan 2020) cd opencv mkdir build cd build # create makefiles, also for all modules in the opencv_contrib (e.g. ArUco code detect) # cmake -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_opencv_python3=OFF -D OPENCV_EXTRA_MODULES_PATH=~/git/opencv_contrib/modules .. cmake -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_opencv_python3=OFF -D OPENCV_EXTRA_MODULES_PATH=~/git/opencv_contrib-3.4/modules .. # inspect printout to see if needed features are enabled # use -j2 option not to overload or overheat the processor (j2 means use 2 cores only) # this probably takes more than an hour. # if the compilation crashes about halfway or so, it is probably due to lack of memory # then just start the compile again, and it is likely to continue (at least for a while) make -j2 # install into /usr/local sudo make install # load environment settings sudo ldconfig
Raspicam
A rather short raspberry pi camera API is available from https://www.uco.es/investiga/grupos/ava/node/40. And can be downloaded from https://sourceforge.net/projects/raspicam/files/,
or get the file from sourceforge with no GUI, with:
wget --no-check-certificate -O raspicam-0.1.8.zip https://downloads.sourceforge.net/project/raspicam/raspicam-0.1.8.zip?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fraspicam%2F%3Fsource%3Dtyp_redirect&ts=1486483484&use_mirror=netix
or part of mission files on SVN (version 0.1.6)
Once fetched and available on the raspberry, then
Unpack and install:
unzip raspicam-0.1.8.zip cd raspicam-0.1.8 mkdir build cd build cmake .. make sudo make install sudo ldconfig
The library is installed in /usr/local, and therefore to make cmake find it the path needs to be added to startup configuration, in file ~/.bashrc
nano ~/.bashrc add at the end: export CMAKE_PREFIX_PATH=/usr/local/lib
(needs a re-logon to be activated, or repeat on the command line)
DNSMASQ
To enable the ROBOBOT to be connected directly to a PC, then it is easier if the ROBOBOT provides an IP for the PC.
Install DNSMASQ
sudo apt install dnsmasq
allow dnsmasq to provide IP to pear-to-pear networks Edit the /etc/dnsmasq.conf (nano is a small text editor, fine for editing configuration files owned by Linux root)
sudo nano /etc/dnsmasq.conf find and change/add the following line (a bit down, eg to serch use: ctrl-W dhcp-range) dhcp-range=192.168.17.100,192.168.17.150,12h
To work, the eth0 must have an IP, if noone provides one, change /etc/dhcpcd.conf (dhcp client deamon) to have a default IP, if no DHCP server is available
Edit of /etc/dhcpcd.conf to have a fall back behaviour for eth0 and eth1.
sudo nano /etc/dhcpcd.conf Add the following lines at the end (uncomment and modify): # define static profile profile static_eth0 static ip_address=192.168.17.1/24 # static routers=192.168.0.1 # static domain_name_servers=192.168.0.1 # fallback to static profile on eth0 interface eth0 fallback static_eth0
This will also give a default IP for an eventual second network (usb-to-cable) if needed
Now, after a reboot, you should be able to connect a PC directly with at network cable to a PC, and the PC should get an IP from the raspberry, so now
ssh local@192.168.17.1
Sound
NB! speach do not work - and I fail to sort out why
flite
Maybe flite is better - not tested.
sudo apt install flite
espeak
To use the sound system install
sudo apt install espeak sudo apt-get install sox libsox-fmt-all
The first speaks english using a command like
espeak -s120 -ven+f3 -a30 "This robot speaks English with a female voice and amplitude 30, at speed 120."
Code for other languages can be found at http://espeak.sourceforge.net/languages.html
Music files
This part works
Play sound files, like
play -v0.1 music.mp3
This line plays an mp3 file with volume reduced by a factor 0.1.
The at startup the blue button on the gamepad plays the file in /home/local/Music/music.mp3.
This is a symbolic link to some real music (Radetzky Marsch in this case):
ls ~/Music radetzky-marsch_Schloss-Schoenbrunn-Konzerte_Wien_full-length.mp3 cd ~/Music ln -s radetzky-marsch_Schloss-Schoenbrunn-Konzerte_Wien_full-length.mp3 music.mp3
Jack server
Espeak has problems - fixit!
Installed:
sudo apt install jackd1 alsa-tools
insert in ~/.bashrc - to allow jackd to run without display
export PA_ALSA_PLUGHW=1
start jackd with
jackd --no-realtime -d alsa
jackd starts OK, but espeak still fails
local@hannah:~/robobot_bridge/build $ espeak "hellow" Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924 Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924 ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21 ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21 ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40 ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41 ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50 ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51 ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71 ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958 ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958 ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958 ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline ALSA lib pcm_dmix.c:1108:(snd_pcm_dmix_open) unable to open slave ALSA lib pcm_hw.c:1822:(_snd_pcm_hw_open) Invalid value for card Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924 wave_open_sound > Pa_OpenStream : err=-9997 (Invalid sample rate) wave_open_sound > Pa_OpenStream : err=-9997 (Invalid sample rate) wave_open_sound > Pa_OpenStream : err=-9997 (Invalid sample rate) wave_open_sound > Pa_OpenStream : err=-9997 (Invalid sample rate)
Sound level
On a Raspberry pi version 3+ (not tested on other versions)
$ amixer Simple mixer control 'PCM',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback -10239 - 400 Mono: Playback 400 [100%] [4.00dB] [on]
An thus:
Setting the sound level can be done by:
amixer set PCM 0dB unmute
Setting to maximum (100%) is about the same as setting 4dB (may be too much for amplifier).
amixer set PCM 100% unmute
Regbot GUI
To run the regbot gui on the raspberry the following package is needed
Additional python packages used
- python-pyqtgraph
- python-qt4-gl
- python-serial
- python-scipy
sudo apt install python-pyqtgraph python-qt4-gl python-serial python-scipy
* no python-pyqtgraph
On my 14.04 32 bit ubuntu the python-pyqtgraph package was not found using apt-get, so I
downloaded from http://www.pyqtgraph.org/ the debian package python-pyqtgraph_0.9.10-1_all.deb and installed using:
sudo dpkg -i python-pyqtgraph_0.9.10-1_all.deb
sudo apt install python-pyqtgraph
To start the GUI
cd ~/regbot/qtgui python regbot.py
Connect to network localhost or kill the bridge and connect directly to "/dev/ttyACM0" (not com5 as is the default serial connection).
File sharing for development
Mirror the local disk on the Raspberry to a PC, make all file editing here, and then on a terminal connection to the robot to compile the software.
On the windows computer install "winscp" and use it to copy files to and from the raspberry disk as needed.
There are other methods too.
On a Linux PC use sshfs for sharing. Make an empty directory for the mapped disk, and then mount
mkdir robobotdisk sshfs local@192.168.0.2: robobotdisk
Unmount with
fusermount -u robobotdisk
Or use "sudo unmount robobotdisk"