|
|
(159 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
| Short note on installation of (parts of) mobotware on Raspberry Pi
| | Back to [[Robobot]] |
|
| |
|
| === Prerequisite ===
| | Back to [[Flexbot]] |
|
| |
|
| 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 http://elinux.org/RaspberryPiBoardBeginners
| |
|
| |
|
| Assuming this is up and running - with internet access
| | == Prerequisite == |
|
| |
|
| === Configure ===
| | * Raspberry pi - version 3 or 4 |
| | * SD-card preferably at least 16Gb |
| | * Monitor with HDMI (version 3) or micro HDMI (version 4) cable |
| | * keyboard - and optional a mouse |
| | * Access to network (wired or wifi) |
| | * Power - either an USB charger or cable to a PC (micro USB (version 3) or USB-C (version 4) |
|
| |
|
| Using raspi-config enable
| | It should be possible to start using USB or wifi connection from a PC without extra screen or keyboard, find solutions on internet - I have not tried. |
| Expand Filesystem
| |
| Enable Camera
| |
| Set hostname
| |
| Enable SSH
| |
| Enable i2c - load module as default
| |
| Disable Serial login
| |
|
| |
|
| reboot
| | ====Make SD card a FAT32 partision, if reusing an old card==== |
|
| |
|
| === Login ===
| | A new SD-card is fine as is, else |
|
| |
|
| login as pi, password raspberry
| | see http://qdosmsq.dunbar-it.co.uk/blog/2013/06/noobs-for-raspberry-pi/ for instruction to prepare any old or new SD-card |
|
| |
|
| add a user called local
| | ====Add boot-files to SD card==== |
|
| |
|
| sudo adduser local
| | =====RPI imager ===== |
| sudo usermod -a --groups adm,cdrom,sudo,audio,video,plugdev,games,users,netdev,input,spi,gpio local
| |
|
| |
|
| switch user to local, and ensure groups are OK, and network is running
| | Version 10 (buster) is easily installed using the 'Raspberry pi imager', |
| | on Linux install with |
|
| |
|
| su - local | | snap install rpi-imager |
| groups | | rpi-imager |
| ifconfig
| |
|
| |
|
| Note the inet address.
| | and follow the screen |
|
| |
|
| Now it is possible to login from network.
| | =====manual ===== |
|
| |
|
| '''Do NOT login as root'''
| | or |
|
| |
|
| === Packages needed for Mobotware RHD/MRC ===
| | Get the install zip-file from https://www.raspberrypi.org/downloads/noobs/ |
|
| |
|
| The following packages needs to be installed - e.g. using apt-get like:
| | Then unpack NOOBS zip-file to the new disk (use the newest version), like |
| | for the network version |
| | unzip NOOBS_lite_v3_5_1.zip -d /media/xxx/yyyy or |
| | unzip ~/Downloads/raspberry/NOOBS_lite_v3_5_1.zip (if you are on the empty flash) |
| | or for the full version |
| | unzip NOOBS_v3_5_1.zip -d /media/xxx/yyyy or |
| | unzip ~/Downloads/raspberry/NOOBS_v3_5_1.zip (if you are on the empty flash) |
|
| |
|
| sudo apt-get install subversion
| | ====Reboot==== |
|
| |
|
| Package list:
| | * Insert SD card on Raspberry, |
| | * Mount a heatsink - especially needed on version 4, |
| | * Connect monitor, keyboard and (USB) power |
|
| |
|
| subversion (to fetch mobotware from SVN)
| | That is all, Raspberry should boot on that, and take some time to prepare the SD-Card. |
| libexpat-dev (RHD)
| | Or see instructions on e.g.: https://www.raspberrypi.org/help/noobs-setup/ |
| pciutils-dev (RHD)
| |
| libncurses-dev (RHD)
| |
| bison (MRC)
| |
| libsdl-dev (MRC)
| |
| telnet (MRC test)
| |
| sudo apt-get install subversion libexpat-dev pciutils-dev libncurses-dev bison libsdl-dev telnet
| |
|
| |
|
| === Additional for AURS (e.g. camera server) ===
| | * Boot the raspberry and install the Raspberry Pi OS full (Debian). |
| | * On the bottom of the screen select keyboard layout and language, |
|
| |
|
| Package list
| | Settings |
| 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
| |
|
| |
|
| === Get Mobotware ===
| | * Leave the pi password as is (for future reuse) |
| | * Select language (prefer English - also for future reuse) |
| | * select wifi access - if not using a cable. |
|
| |
|
| | ==Usefull Linux commands== |
|
| |
|
| | Here are some common commands in Linux |
|
| |
|
| Get and unpack mobotware - you need the following directories only for RHD and MRC:
| | ls (directory file list) |
| mobotware/aumat | | cd (change to home directory) |
| mobotware/mrc | | cd some_directory (change to a subdirectory) |
| mobotware/rhd | | exit (logout, e.g. of a ssh session) |
| mobotware/build | | grep -n string_to_look_for_in_a_file *.cpp (find a string in a file, e.g. a variable or a function) |
| The rest of the directories can be deleted, so can rhd/branches
| | sudo some_command (execute a command as "root" - root is a superuser with administrator rights to everything) |
| | pkill some_application_name (stop (or kill) a running process with name "some_application_name") |
| | pgrep some_application_name (see if a process is running - good to use before a kill) |
| | mv from_file to_file (rename a file) |
| | cp from_file to_file (copy a file) |
| | rm some_file (remove (delete) a file) |
| | nano some_file (simple text editor) |
| | zip, unzip (pack or unpack files - try zip --help to see how. |
| | top (see process load and memory usage) |
| | make (compile all as described in the "Makefile" in the same directory) |
| | make -j4 (compile using up to 4 CPU cores - faster if more files need to be compiled) |
|
| |
|
| === Modify makefiles ===
| | All commands have an online help if you add --help or -h after the command. |
| | If this is not enough, then try |
| | man ls |
| | to get the manual page for the ls command. |
|
| |
|
| Enter the mobotware directory
| | == Configure == |
|
| |
|
| cd mobotware-XXX
| | ==== Raspberry ==== |
|
| |
|
| ==== main Makefile ====
| | use raspi-config, start a terminal: |
|
| |
|
| nano -w Makefile | | sudo raspi-config |
|
| |
|
| Change this section
| | Using ''raspi-config'' |
| | | Enable Camera |
| APPSUBDIRS = aumat/trunk \
| | Set hostname (one word, no space) |
| aurobotservers/trunk/include \
| | Enable SSH |
| aurobotservers/trunk/libs \
| | Disable Serial login |
| mapbase/trunk \
| | boot as a console with login |
| rhd/trunk \
| | Update firmware |
| mrc/trunk \
| | Set locale to "en_DK.UTF-8 UTF-8" (danish keyboard, but English language) |
| hakoclient/trunk \
| |
| aurs-plugins/aumanager aurs-plugins/aumrcobst aurs-plugins/auplanner/trunk \
| |
| aurs-plugins/auzoneobst \
| |
| aurobotservers/trunk \
| |
| simulator/trunk
| |
| | |
| to 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
| |
| cruizcore simstage3
| |
| | |
| ==== Camera server libraries Makefile ====
| |
| | |
| goto AURS library
| |
| | |
| cd mobotwareXXX/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/trunk/src/
| |
| nano -w Makefile
| |
| | |
| Change line
| |
| | |
| apps = auclient auservertest ucamserver uclient ulmsserver userver qclient
| |
| to
| |
| apps = auclient auservertest ucamserver uclient ulmsserver userver
| |
| | |
| ==== AURS plugins Makefile ====
| |
| | |
| Goto plugin directory
| |
| | |
| cd mobotwareXXX/trunk/plugin/
| |
| nano -w Makefile
| |
| | |
| in the section
| |
| | |
| plugins := auavoid auavoidk auball auballkl audrivepos augps \
| |
| aukeep aulaserifscan aupar aurhdif \
| |
| austereo auvarmrc ucamif \
| |
| aucamcog aucron auefline augraphplan \
| |
| aukinect aulobst aumapobst aupoly auroaddrive \
| |
| ausmr locater ulmspassable \
| |
| aucamfocus audisp aufile auimu \
| |
| aulaserif aulocalize2 \
| |
| auobj3d aupplfinder aurule \
| |
| ausockbin autof mapbase ulmsv360 aucamrectify aupipi \
| |
| aulaserbox aufzclass auviewer aupcp aupcltest auv4lgst \
| |
| aucroprow autof2 auptgrey \
| |
| aulocalize
| |
| | |
| remove
| |
| aukinect (5th line)
| |
| auviewer aupcp aupcltest (11th line)
| |
| auptgray (12th line)
| |
| | |
| === Build ===
| |
| Build the needed parts of mobotware, e.g.:
| |
| cd ~/mobotwareXXX
| |
| make
| |
| | |
| This should now compile with warnings only
| |
| | |
| (augraphplan.h not found may complain,
| |
| but try a make more, then t 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):
| |
| | |
| <?xml version="1.0" ?> | |
| <!-- | |
| Configuration file for
| |
| Robot Hardware Daemon
| |
| -->
| |
| <!-- Starting RHD Configuration -->
| |
| <rhd>
| |
| <!-- *** Core Components Configuration *** -->
| |
| <!-- Sheduler configuration -->
| |
| <sheduler>
| |
| <period value="12000"/><!--in usec-->
| |
| <type value="LXRT"/><!--"usleep","itimer","LXRT" -->
| |
| </sheduler>
| |
| <!-- Server configuration -->
| |
| <server>
| |
| <port value="24902"/>
| |
| <clients number="10" allwriters="1"/>
| |
| </server>
| |
| <!-- *** Plugins Configuration *** -->
| |
| <plugins basepath="/usr/local/smr/lib/rhdplugin/">
| |
| <!--
| |
| Add your plugin here after this comment and
| |
| leave joycontrol and log - they may be usefull.
| |
| -->
| |
| <joycontrol enable="true"
| |
| lib="libjoycontrol.so.1"
| |
| critical="false"
| |
| safety="1">
| |
| <joystick port="/dev/input/js0"/>
| |
| <!-- speed:
| |
| maxfwd is max speed reference value send to device
| |
| maxturn is max turn-angle angle-vel send to device
| |
| fastBut is button number on joypad (0..10)
| |
| slowFactor used when fastBut is not pressed (0.1 .. 1.0) 1.0 is default -->
| |
| <speed maxfwd="900"
| |
| maxturn="900"
| |
| fastBut="5"
| |
| slowFactor="0.3"/>
| |
| <!-- deadband for joy-controll in joy-control units (+/- 32000) -->
| |
| <deadband max="767" min="-767"/>
| |
| <control enable="true"/>
| |
| </joycontrol>
| |
| <!-- rhdlog will open a file rhdlog.txt and write all symbol values here as fast as possible.
| |
| it may not keep up writeing with the tick interval specified (can be changed online)
| |
| interval = 0 (default) for no log - can be set online from rhdtest or MRC.
| |
| interval = N if N=1 every tick, N=2 every other, N=3..
| |
| File is created in default directory.
| |
| After each write operation the data is flushed to disk (using fflush()).
| |
| each line starts with a unix timestamp (gettimeofday) - set at tick call -->
| |
| <rhdlog enable="true"
| |
| lib="rhdlog.so.1"
| |
| critical="false"
| |
| interval="1"
| |
| safety="2"
| |
| debug="0">
| |
| </rhdlog>
| |
| </plugins>
| |
| </rhd>
| |
| | |
| === Test Mobotware ===
| |
| | |
| ==== RHD ===
| |
| Start RHD
| |
| | |
| rhd | |
| | |
| It should end saying "RHD is running"
| |
| | |
| Stop it by ctrl-C
| |
| | |
| ==== MRC ====
| |
| | |
| 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.
| |
| | |
| ==== Camera server ====
| |
| | |
| Start the camera server
| |
| | |
| ucamserver
| |
| | |
| 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
| |
| | |
| === Test ===
| |
| | |
| make a test directory and fill it with the needed configuration and binary files, e.g.
| |
| mkdir live
| |
| cd live
| |
| cp -r ~/mobotware/build/config/ROBOT_TYPE/* .
| |
| ln -s ~/mobotware/rhd/trunc/build/bin/rhd .
| |
| ln -s ~/mobotware/rhd/trunk/build/bin/rhdtest .
| |
| ln -s ~/mobotware/mrc/trunk/mrc/mrc .
| |
| echo "" >calib/wdssparam.dat
| |
| | |
| You now need to modify the rhdconfig.xml file:
| |
| Change the path to plugins, using e.g. nano
| |
| nano -w rhdconfig.xml | |
| Change the line (assuming you use the default pi user)
| |
| from: <plugins basepath="/usr/local/smr/lib/rhdplugin/"> | |
| to: <plugins basepath="/home/pi/mobotware/rhd/trunk/build/lib/rhdplugin/">
| |
| In the rhdconfig.xml there is already a number og plugins, this list need to be updated to your configuration.
| |
| | |
| To test if the RHD is running you may just change the attribute critical="true" to critical="false", the RHD will then continue even if the plugin fails to initialize. If some plugin is not found - e.g. maestro12ch.so.1 (it is not compiled by default) - then delete it from the rhdconfig.xml file, or change enable="true" to enable="false" for this plugin.
| |
| | |
| The file calib/robot.conf needs update too.
| |
| You may use the configuration files in mobotware/build/config for inspiration
| |
| | |
| Now start the RHD (in the live directory):
| |
| ./rhd
| |
| It should end by saying "RHD is running", else check the rhdconfig.xml as above.
| |
| | |
| Open a new terminal tab and run rhdtest to see if it is alive:
| |
| ./rhdtest
| |
| And type
| |
| connect
| |
| You should now see a list of variables, where at least the Tick is updating.
| |
| | |
| Stop the rhdtest with ctrl-c
| |
| | |
| ===MRC test===
| |
| Start the MRC (while the RHD is running) using socket interface:
| |
| ./mrc -t1
| |
| In another terminal window use telnet to connect to the MRC
| |
| telnet localhost 31001
| |
| MRC commands like
| |
| eval $time
| |
| Should now be avilable
| |
|
| |
|
| If all this is OK, then the raspberry Pi is running, and you only need to connect it to your robot througt an appropriate set of rhd plug-ins and make a MRC script to make it run.
| | === Update operating system === |
|
| |
|
| ===Performance===
| | Ensure you have internet access, then |
|
| |
|
| The RHD and MRC running in idle with an update rate of 100 HZ is consuming about 3-4% CPU load each.
| | sudo apt-get update |
| | sudo apt-get dist-upgrade |
| | sudo reboot |
Back to Robobot
Back to Flexbot
Prerequisite
- Raspberry pi - version 3 or 4
- SD-card preferably at least 16Gb
- Monitor with HDMI (version 3) or micro HDMI (version 4) cable
- keyboard - and optional a mouse
- Access to network (wired or wifi)
- Power - either an USB charger or cable to a PC (micro USB (version 3) or USB-C (version 4)
It should be possible to start using USB or wifi connection from a PC without extra screen or keyboard, find solutions on internet - I have not tried.
Make SD card a FAT32 partision, if reusing an old card
A new SD-card is fine as is, else
see http://qdosmsq.dunbar-it.co.uk/blog/2013/06/noobs-for-raspberry-pi/ for instruction to prepare any old or new SD-card
Add boot-files to SD card
RPI imager
Version 10 (buster) is easily installed using the 'Raspberry pi imager',
on Linux install with
snap install rpi-imager
rpi-imager
and follow the screen
manual
or
Get the install zip-file from https://www.raspberrypi.org/downloads/noobs/
Then unpack NOOBS zip-file to the new disk (use the newest version), like
for the network version
unzip NOOBS_lite_v3_5_1.zip -d /media/xxx/yyyy or
unzip ~/Downloads/raspberry/NOOBS_lite_v3_5_1.zip (if you are on the empty flash)
or for the full version
unzip NOOBS_v3_5_1.zip -d /media/xxx/yyyy or
unzip ~/Downloads/raspberry/NOOBS_v3_5_1.zip (if you are on the empty flash)
Reboot
- Insert SD card on Raspberry,
- Mount a heatsink - especially needed on version 4,
- Connect monitor, keyboard and (USB) power
That is all, Raspberry should boot on that, and take some time to prepare the SD-Card.
Or see instructions on e.g.: https://www.raspberrypi.org/help/noobs-setup/
- Boot the raspberry and install the Raspberry Pi OS full (Debian).
- On the bottom of the screen select keyboard layout and language,
Settings
- Leave the pi password as is (for future reuse)
- Select language (prefer English - also for future reuse)
- select wifi access - if not using a cable.
Usefull Linux commands
Here are some common commands in Linux
ls (directory file list)
cd (change to home directory)
cd some_directory (change to a subdirectory)
exit (logout, e.g. of a ssh session)
grep -n string_to_look_for_in_a_file *.cpp (find a string in a file, e.g. a variable or a function)
sudo some_command (execute a command as "root" - root is a superuser with administrator rights to everything)
pkill some_application_name (stop (or kill) a running process with name "some_application_name")
pgrep some_application_name (see if a process is running - good to use before a kill)
mv from_file to_file (rename a file)
cp from_file to_file (copy a file)
rm some_file (remove (delete) a file)
nano some_file (simple text editor)
zip, unzip (pack or unpack files - try zip --help to see how.
top (see process load and memory usage)
make (compile all as described in the "Makefile" in the same directory)
make -j4 (compile using up to 4 CPU cores - faster if more files need to be compiled)
All commands have an online help if you add --help or -h after the command.
If this is not enough, then try
man ls
to get the manual page for the ls command.
Configure
Raspberry
use raspi-config, start a terminal:
sudo raspi-config
Using raspi-config
Enable Camera
Set hostname (one word, no space)
Enable SSH
Disable Serial login
boot as a console with login
Update firmware
Set locale to "en_DK.UTF-8 UTF-8" (danish keyboard, but English language)
Update operating system
Ensure you have internet access, then
sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot