Install on raspberry
(→Camera server) |
(→Get filesystem on normal PC) |
||
Line 79: | Line 79: | ||
mkdir pi (where the filesystem will be mounted) | mkdir pi (where the filesystem will be mounted) | ||
− | sshfs local@10.59.8.141: pi (replace IP number with inet address from above) | + | sshfs local@10.59.8.141: pi (replace IP number with inet address from above, or use ''sshfs local@hostnale.local: pi'') |
Then in directory pi the user files on the raspberry can be manipulated. | Then in directory pi the user files on the raspberry can be manipulated. | ||
− | for other access, use (with IP address as found above) | + | for other access, use (with IP address as found above, or replaced with 'hostname.local') |
ssh -X local@10.59.8.141 | ssh -X local@10.59.8.141 |
Revision as of 15:40, 17 May 2015
Short note on installation of (parts of) mobotware on Raspberry Pi (or Beagle-bone)
For Beagle-bone skip to "Login" with adduser or installation o, the rest should work, as they are both almost the same processor and operating system. Note this guide is not pt. tested on beagle-bone.
Prerequisite
First install 2012-10-28-wheezy-raspbian on the raspberry Pi flashdisk and expand the flash-disk to at least 4GB - see the instructions on e.g.: http://elinux.org/RaspberryPiBoardBeginners
Assuming this is up and running - with internet access
I2C clock stretching
NB! pt. (may 2015) the i2c interface driver do not support clock stretching for data, this will often be seen as the MSB is missing (at times), dependent on the speed of the slave device.
One option is to reduce bus-speed to e.g. 50kHz, or to use a faster slave, that do not need clock-stretching.
Hopefully the I2C driver will be cured soon, as the hardware should support the stretching.
Configure
Using raspi-config
Expand Filesystem (if not OK already) Enable Camera Set hostname Enable SSH Enable i2c - load module as default Disable Serial login Update firmware
Update operating system
Ensure you have internet access, then
sudo apt-get update sudo apt-get dist-upgrade sudo reboot
Login
login as pi, password raspberry
add a user called local
sudo adduser local sudo usermod -a --groups adm,cdrom,sudo,audio,video,plugdev,games,users,netdev,input,spi,gpio,i2c local
switch user to local, and ensure groups are OK, and network is running
su - local groups ifconfig
Note the inet address.
Now it is possible to login (as local) from network.
Get access using hostname
To get access to the raspberry using hostname mey be convinient if the allocated IP changes.
Install the avahi-daemon
sudo apt-get install avahi-daemon sudo service avahi-daemon restart
Now from another PC on the local network
ping hostname.local
where "hostname" is replaced with the hostname you assigned.
Get filesystem on normal PC
From another (Linux) PC, mount the raspberry filesystem
mkdir pi (where the filesystem will be mounted) sshfs local@10.59.8.141: pi (replace IP number with inet address from above, or use sshfs local@hostnale.local: pi)
Then in directory pi the user files on the raspberry can be manipulated.
for other access, use (with IP address as found above, or replaced with 'hostname.local')
ssh -X local@10.59.8.141
Packages needed for Mobotware RHD/MRC
The following packages needs to be installed - e.g. using apt-get like:
sudo apt-get install subversion
Package list for RHD and MRC:
subversion (to fetch mobotware from SVN) libexpat-dev (RHD) pciutils-dev (RHD) libncurses-dev (RHD) bison (MRC) libsdl-dev (MRC) telnet (MRC test) sshfs (may be a good idea to access filesystem from another PC) sudo apt-get install subversion libexpat-dev pciutils-dev libncurses-dev bison libsdl-dev telnet sshfs
Additional for AURS (e.g. camera server)
Package list
cmake libopencv-dev libreadline-dev libudev-dev libusb-dev libv4l-dev python-dev libgstreamer0.10-dev libboost-dev libboost-system-dev sudo apt-get install cmake libopencv-dev libreadline-dev libudev-dev libusb-dev libv4l-dev python-dev libgstreamer0.10-dev libboost-dev libboost-system-dev
Camera driver source
To use the raspberry camera (and compile the aupicam plugin) the userland sourcecode (from https://github.com/raspberrypi/userland):
git clone https://github.com/raspberrypi/userland.git userland-master
This needs to compile and install (NB! I had some PATH issues, and they were probably solved by editing CMakeLists.txt)
cd userland-master mkdir build cd build cmake .. make sudo make install
This will copy the needed header and library files to /opt/vc and other places.
Mount filesystem
As an option, mount the home directory on raspberry-pi to your local PC for easy file modification.
On your PC type make a directory for the filesystem
mkdir rpi sshfs local@10.59.8.141: rpi ls rpi
with your IP address
Get Mobotware
Get and unpack mobotware - see main page of this wiki for info
Either from SVN - if you have access, or from our lab-computers as a mobotware-XXX.tar.gz file, where XXX is version number.
unpack if a .gz file
tar -xzf mobotware-XXX.tar.gz
this makes a mobotware directory with all the files.
Modify makefiles
Not all parts of Mobotware runs on a raspberry, so some parts must be removed from the Makefiles:
Enter the mobotware directory
cd mobotware-XXX
main Makefile
nano -w Makefile
Change this section
APPSUBDIRS = aumat/trunk \ aurobotservers/trunk/include \ aurobotservers/trunk/libs \ mapbase/trunk \ rhd/trunk \ mrc/trunk \ hakoclient/trunk \ aurs-plugins/aumanager aurs-plugins/aumrcobst aurs-plugins/auplanner/trunk \ aurs-plugins/auzoneobst \ aurobotservers/trunk \ simulator/trunk
delete the lines
hakoclient/trunk (GUI for HAKO tractor) simulator/trunk (simulator will not run on raspberry)
so that it looks like
APPSUBDIRS = aumat/trunk \ aurobotservers/trunk/include \ aurobotservers/trunk/libs \ mapbase/trunk \ rhd/trunk \ mrc/trunk \ aurs-plugins/aumanager aurs-plugins/aumrcobst aurs-plugins/auplanner/trunk \ aurs-plugins/auzoneobst \ aurobotservers/trunk
Remember to remove the last back-slash
RHD plugins Makefile
cd rhd/trunk/plugins nano -w Makefile
In this section
PLUGINLIST := auserial gps crossbow fogyro hakocan smrdserial rflex \ rs232linesensor powercube esm slugs usbiss sf9dof \ joycontrol gdm8246 buspiratei2c buspiratead \ herkulex saberandmagenc imu gps2\ smrarm rhdlog hexakopter gbprofibus roboteq gpsSocket \ fieldsteer fielddrive fieldfrontenc \ dynamixel cruizcore simstage3
Remove
gbprofibus simstage3
Camera server libraries Makefile
goto AURS library
cd ~/mobotwareXXX/aurobotservers/trunk/libs/ nano -w Makefile
in this section
BASELIBS = ../include ../lib \ ugen4 urob4 umap4 ucam4 \ liblineext dglib freenect \ aulibextractfeatures utils \ ../src/ulmsserver
remove
freenect (kinect library)
AURS application Makefile
Goto the src directory
cd mobotwareXXX/aurobotservers/trunk/src/ nano -w Makefile
Change line
apps = auclient auservertest ucamserver uclient ulmsserver userver qclient to apps = auclient auservertest ucamserver uclient ulmsserver userver
Plug-ins
Some plug-ins are excluded from raspberry pi (kinect and point-cloud related plug-ins) in the Makefiles in the plugin directory.
Build
Build mobotware:
cd ~/mobotwareXXX make
This should now compile with warnings only
(augraphplan.h not found may appear, but try one more make, then it usually works @todo - find out why)
install
The easyest way to use Mobotware is then to install into /usr/local/smr.
This is done by
sudo make install
setup path
Add the mobotware bin-directory into default PATH in /etc/profile
sudo nano -w /etc/profile
append the 2 PATH lines with :/usr/local/smr/bin, like:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/smr/bin"
And add mobotware AURS library path into .bashrc
nano -w ~/.bashrc
append a line like this
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/smr/lib"
Make a Mobotware test configuration
Logout and login to ensure that the PATH settings gets implemented
Make a directory to run from
mkdir ~/live cd ~/live
Copy a robot configuration file
cp -r /usr/local/etc/mobotware/calib .
make a rhdconfig.xml file with this content (loads a joystick and log plugin only). Look in mobotware/build/config for specific versions for different robots.
<?xml version="1.0" ?> <rhd> <sheduler> <period value="12000"/> <type value="LXRT"/> </sheduler> <server> <port value="24902"/> <clients number="10" allwriters="1"/> </server> <plugins basepath="/usr/local/smr/lib/rhdplugin/"> <joycontrol enable="true" lib="libjoycontrol.so.1" critical="false" safety="1"> <joystick port="/dev/input/js0"/> <speed maxfwd="900" maxturn="900" fastBut="5" slowFactor="0.3"/> <deadband max="767" min="-767"/> <control enable="true"/> </joycontrol> <rhdlog enable="true" lib="rhdlog.so.1" critical="false" interval="1" safety="2" debug="0"> </rhdlog> </plugins> </rhd>
Test Mobotware
RHD
Hardware abstraction layer (Robot Hardware Daemon)
Start RHD
rhd
It should end saying "RHD is running"
(Stops with ctrl-C)
MRC
Mobile Robot Control.
While the RHD is running (in another terminal)
start the MRC
cd ~/live mrc
This should show a list of options
-press 5 to quit
Laser scanner server
Start laser scanner server
ulmsserver
There will be some errors as there is no laserscanner ...
Press enter a few times to get a prompt ">>"
Type
help
this should show a list of loaded plugins, like
... Available commands (from currently loaded modules): - push q server help shelp module do BASH alive quit exit - scanGet scanPush scanSet - odoPose odoPosePush - mapPose mapPosePush - utmPose utmPosePush - var varPush - poly - mapbase - settable addline setinitpose setinitcov localizeMHF localize resetlocalizer outputdist odoposeupdate resample localizeUKF ...
Try e.g.
scanget fake=3
this should show a lot of HEX numbers and a few more errors.
Press q to quit
Camera server
Start the camera server - and optionally load the camera plug-in.
ucamserver >> module load=aupicam.so.0
This should end with something like this
Camera_server 2.1966 (May 1 2015 13:42:21 jca@oersted.dtu.dk) - on port 24920 - type h for help, q for quit
Pres q to quit