Full installation instructions

From Rsewiki
(Difference between revisions)
Jump to: navigation, search
(Sound)
(ROBOBOT bridge)
Line 106: Line 106:
 
  ln -s radetzky-marsch_Schloss-Schoenbrunn-Konzerte_Wien_full-length.mp3 music.mp3
 
  ln -s radetzky-marsch_Schloss-Schoenbrunn-Konzerte_Wien_full-length.mp3 music.mp3
  
== ROBOBOT bridge ==
+
=== ROBOBOT bridge ===
 +
 
 +
This software connects and combines access to REGBOT, gamepad and the small o-led display.
 +
 
 +
Get the software - if not there already.
 +
 
 +
svn checkout svn://repos.gbar.dtu.dk/jcan/regbot/robobot_bridge robobot_bridge
 +
 
 +
To update - if there is a newer version
 +
 
 +
cd ~/robobot_bridge
 +
svn up
 +
 
 +
Go to the build directory to build. "make" and "sudo make install" will maybe do.
 +
 
 +
cd ~/robobot_bridge
 +
mkdir -p build
 +
cd build
 +
cmake ..
 +
make
 +
sudo make install
 +
 
 +
To make the bridge start at reboot, then add
 +
 
 +
sudo nano /etc/rc.local
 +
 
 +
add the line before "exit 0", or everything if empty
 +
 
 +
#!/bin/sh -e
 +
#
 +
# rc.local
 +
#
 +
# This script is executed at the end of each multiuser runlevel.
 +
# Make sure that the script will "exit 0" on success or any other
 +
# value on error.
 +
#
 +
# In order to enable or disable this script just change the execution
 +
# bits.
 +
#
 +
# By default this script does nothing.
 +
# Print the IP address
 +
_IP=$(hostname -I) || true
 +
if [ "$_IP" ]; then
 +
  printf "My IP address is %s\n" "$_IP"
 +
fi
 +
cd /home/local/robobot_bridge/build && ./robobot_bridge -a &
 +
exit 0
 +
 
 +
 
 +
 
  
 
===ROBOBOT mission demo C++===
 
===ROBOBOT mission demo C++===

Revision as of 08:50, 20 January 2019

Back to Robobot


Contents

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).

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.4.zip https://downloads.sourceforge.net/project/raspicam/raspicam-0.1.4.zip?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fraspicam%2F%3Fsource%3Dtyp_redirect&ts=1486483484&use_mirror=netix

Once fetched and available on the raspberry, then

Unpack and install:

unzip raspicam-0.1.3.zip
cd raspicam-0.1.3
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

export CMAKE_PREFIX_PATH=/usr/local/lib

(needs a re-logon to be activated, or repeat on the command line)

Userland-master

To be able to install mobotware (not used pt on ROBOBOT)

Follow the guide under REGBOT for userland-master install - Install on raspberry

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 (for eth0)

dhcp-range=eth0,192.168.0.100,192.168.0.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

Add the following lines at the end of /etc/dhcpcd.conf to have a fall back behaviour for eth0 and eth1.

# define static profile
profile static_eth0
static ip_address=192.168.0.2/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.0.2

Sound

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

The second line allows to play sound files, like

play -v0.1 music.mp3

This line plays the a mp3 file with volume reduced by a factor 0.1. The at startup the blue button on the gamepad playes 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

ROBOBOT bridge

This software connects and combines access to REGBOT, gamepad and the small o-led display.

Get the software - if not there already.

svn checkout svn://repos.gbar.dtu.dk/jcan/regbot/robobot_bridge robobot_bridge

To update - if there is a newer version

cd ~/robobot_bridge
svn up

Go to the build directory to build. "make" and "sudo make install" will maybe do.

cd ~/robobot_bridge
mkdir -p build
cd build
cmake ..
make
sudo make install

To make the bridge start at reboot, then add

sudo nano /etc/rc.local

add the line before "exit 0", or everything if empty

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
cd /home/local/robobot_bridge/build && ./robobot_bridge -a &
exit 0



ROBOBOT mission demo C++

This is an example software in C++ to access both raspberry camera and REGBOT, and with an example mission controlled from the raspberry.

Get the ROBOBOT software from the svn repository:

svn checkout svn://repos.gbar.dtu.dk/jcan/regbot/mission mission

To be able to compile the demo software CMAKE needs also to use the user installed library (raspicam installed above), so add the following line to ~/.bashrc:

export CMAKE_PREFIX_PATH=/usr/local/lib

Then build Makefiles and compile:

cd mission
cd build
cmake ..
make

Then test-run the application:

./mission

It should print that the camera is open and connected to the robot (bidge).

Software structure

The software is structures as shown in figure 1 below.

500px

Figure 1. The example mission software intended as basis for full mission control. In the main.cpp file, three objects are created: bridge (UBridge reg(127.0.0.1)), camera (UCamera cam()) and mission (UMission mission(&reg, &cam)). The bridge handles communication and stores all data from the robot and the gamepad. The camera can capture images and image processing is intended here. The mission object is intended for splitting long missions into mission snippets that the REGBOT can execute.

The mission class has access to robot data and the camera at all times using the pointers "bot->" and "cam->". e.g. the heading (relative to the start position) and if the yellow gamepad button is pressed, can be fetched as:

float heading = bot->pose.h;
bool yellowButton = bot->joy.button[3];

The sound system can be used for debugging, e.g. add a C++ line like:

system("espeak \"bettina reached point 3\" -a30 -s130");

This line makes the robot say "bettina reached point 3" the parameters "-a30" turns amplitude down to 30%, and "-s130" makes the speech a little slower and easier to understand. It requires that espeak is installed (sudo apt install espeak).

USB as SOCKET for REGBOT client

This is not compatible with use of ROBOBOT_BRIDGE, so don't use it here

To use the REGBOT client through (not on) the raspberry pi, the serial connection /dev/ttyACM0 on the raspberry can be converted to a network port by SOCAT. So install:

sudo apt install socat

Add the following line to /etc/rc.local

socat TCP-LISTEN:24001,fork,reuseaddr FILE:/dev/ttyACM0,raw,echo=0 &

This creates a TCP socket server, listening to port 24001 and piping /dev/ttyACM0 to the socket (with no local echo). This only takes the data from the /dev/ttyACM0 when a client is connected to the socket.

Works after a reboot, or the same line on the command prompt.

This is good for configuring the REGBOT (in REGBOT client connect wifi to IP of robot, e.g. 192.168.0.2).

Share files from windows

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.

Share files on Linux

On the 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"

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox