GAZEBO - 3D simulace
http://gazebosim.org/
Stage - 2D simulace
http://playerstage.sourceforge.net/index.php?src=stage
Player - klient pro GAZEBO nebo STAGE
http://playerstage.sourceforge.net/index.php?src=player
Coppelia Robotics v-rep
http://www.coppeliarobotics.com/downloads.html
Robocode
http://robocode.sourceforge.net/
Instalace:
Vyzkouseno na Ubuntu 14.04 TLS ve virtualni image VMWare Player.
Instalace Gazebo 5.0.1 - bez problemu podle navodu z distribuce
Instalace Stage 4.1.1 - bez problemu, build projektu
Instalace Player 3.0.2 -
make hlasi chybu /usr/bin/ld: cannot find -lgeos
reseni: opraveno pridanim linku v /usr/lib:
cd /usr/lib
sudo ln -s libgeos_c.so.1.8.2 libgeos.so.1
sudo ln -s libgeos_c.so.1.8.2 libgeos.so
dale make hlasi:
playerclient.cc:171:34: error: expected unqualified-id before numeric constant
reseni: sleduj odkaz http://sourceforge.net/p/playerstage/mailman/message/32992365/
To work around this problem until the next Player release comes out, you
can just substitute "boost::TIME_UTC_" for "boost::TIME_UTC" in
client_libs/libplayerc++/playerclient.cc
dale make hlasi:
readlog.cc:714:62: error: cannot convert ‘FILE* {aka _IO_FILE*}’ to ‘gzFile’ for argument ‘1’ to ‘char* gzgets(gzFile, char*, int)’
reseni: sleduj odkaz http://sourceforge.net/p/playerstage/mailman/message/28994223/
v server/drivers/shell/readlog.cc
change the line
>
> ret = gzseek(this->file,0,SEEK_SET);
>
> to
>
> ret = gzseek((gzFile)this->file,0,SEEK_SET);
a take
ret = (gzgets(this->file, this->line, this->line_size) == NULL);
to
ret = (gzgets((gzFile)this->file, this->line, this->line_size) == NULL);
dale make hlasi:
/usr/bin/ld: CMakeFiles/camera.dir/camera.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
reseni: sleduj http://player-stage-gazebo.10965.n7.nabble.com/TIME-UTC-is-not-a-member-of-boost-td11642.html
For each error : undefined reference to symbol '_ZN5boost6system15system_categoryEv'
add the flag -lboost_system after -lboost_signals in the file player-3.0.2/build/examples/libplayerc++/CMakeFiles/*.dir/link.txt
For example : player-3.0.2/build/examples/libplayerc++/CMakeFiles/camera.dir/list.txt will be :
/usr/bin/c++ -Wall CMakeFiles/camera.dir/camera.o -o camera -rdynamic -L/usr/local/lib ../../client_libs/libplayerc++/libplayerc++.so.3.0.2 ../../client_libs/libplayerc/libplayerc.so.3.0.2 ../../libplayerinterface/libplayerinterface.so.3.0.2 ../../libplayercommon/libplayercommon.so.3.0.2 -lm -lz -lgeos -lgeos_c -lboost_thread -lboost_signals -lboost_system -lm ../../libplayerjpeg/libplayerjpeg.so.3.0.2 -ljpeg ../../libplayerwkb/libplayerwkb.so.3.0.2 ../../libplayercommon/libplayercommon.so.3.0.2 -lgeos -lgeos_c -Wl,-rpath,/usr/local/lib:/home/doizuc/Downloads/player-3.0.2/build/client_libs/libplayerc++:/home/doizuc/Downloads/player-3.0.2/build/client_libs/libplayerc:/home/doizuc/Downloads/player-3.0.2/build/libplayerinterface:/home/doizuc/Downloads/player-3.0.2/build/libplayercommon:/home/doizuc/Downloads/player-3.0.2/build/libplayerjpeg:/home/doizuc/Downloads/player-3.0.2/build/libplayerwkb
Opravu provest v
examples/libplayerc++/CMakeFiles/camera.dir/link.txt
examples/libplayerc++/CMakeFiles/clientgraphics.dir/link.txt
examples/libplayerc++/CMakeFiles/clientgraphics3d.dir/link.txt
examples/libplayerc++/CMakeFiles/example0.dir/link.txt
examples/libplayerc++/CMakeFiles/example1.dir/link.txt
examples/libplayerc++/CMakeFiles/example2.dir/link.txt
examples/libplayerc++/CMakeFiles/example3.dir/link.txt
examples/libplayerc++/CMakeFiles/example4.dir/link.txt examples/libplayerc++/CMakeFiles/goto.dir/link.txt
examples/libplayerc++/CMakeFiles/grip.dir/link.txt
examples/libplayerc++/CMakeFiles/laserobstacleavoid.dir/link.txt
examples/libplayerc++/CMakeFiles/ptz.dir/link.txt
examples/libplayerc++/CMakeFiles/randomwalk.dir/link.txt
examples/libplayerc++/CMakeFiles/sonarobstacleavoid.dir/link.txt
examples/libplayerc++/CMakeFiles/speech.dir/link.txt
examples/libplayerc++/CMakeFiles/speech_cpp_client.dir/link.txt
examples/libplayerc++/CMakeFiles/wallfollow.dir/link.txt
utils/playerjoy/CMakeFiles/playerjoy.dir/link.txt
utils/playerprint/CMakeFiles/playerprint.dir/link.txt
utils/playerprop/CMakeFiles/playerprop.dir/link.txt
priklad hromadneho prikazu na replace textu v souborech
cd ~/player-3.0.2/build
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/camera.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/clientgraphics.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/clientgraphics3d.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/example0.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/example1.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/example2.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/example3.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/example4.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/goto.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/grip.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/laserobstacleavoid.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/ptz.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/randomwalk.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/sonarobstacleavoid.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/speech.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/speech_cpp_client.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' examples/libplayerc++/CMakeFiles/wallfollow.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' utils/playerjoy/CMakeFiles/playerjoy.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' utils/playerprint/CMakeFiles/playerprint.dir/link.txt
sed -i -- 's/-lboost_signals/-lboost_signals -lboost_system/g' utils/playerprop/CMakeFiles/playerprop.dir/link.txt
dale
make install bylo potreba volat s admin pravy: sudo make install
Otestovani funkcnosti Player/Stage
player ~/stg/share/stage/worlds/simple.cfg
Objevila se chyba:
error : Sorry, no support for shared libraries, so can't load plugins.
error : You should install libltdl, which is part of GNU libtool, then re-compile player.
reseni: nastavit export LD_LIBRARY_PATH=/usr/local/lib64:/home/tomas/stg/lib64
Dale se objevila chyba:
error : Failed to load plugin stageplugin.
error : libtool reports error: file not found
error : plugin search path: /home/tomas/player-3.0.2/build:/home/tomas/stg/share/stage/worlds:/usr/local/lib/
error : failed to load plugin: stageplugin
reseni: doplneni cesty k plugin adresari do LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/tomas/stg/lib64
Objevilo se okno Stage se zakladnim prostredim a jednim robotem.
Uff. Tim je prostredi a robot pripraveny na klientske pripojeni a rizeni. Dalo to trochu prace, ale nakonec se zdarilo. Simon bude mit radost...
Rizeni robota v playerv
Spustit prikaz
playerv -h marvin --position2d --laser
Bohuzel s parametrem --laser playerv okamzite ukonci cinnost, pri pouziti
playerv -h marvin --position2d klient funguje. Zarizeni position2d i obe zarizeni ranger funguji.
Rizeni robota pouzitim playerc a jazyka Python
Priklad v Python zde:
http://playerstage.sourceforge.net/doc/Player-svn/player/group__libplayerc__py__example.html
Neco o nastaveni:
https://packages.debian.org/unstable/python-playerc
Instalace python-playerc:
sudo dpkg -i ~/python-support_1.0.14ubuntu2_all.deb
sudo dpkg -i ~/python-playerc_3.0.2+dfsg-3ubuntu2_amd64.deb
sudo chmod 755 /usr/local/lib/python2.7/site-packages/_playerc.so
export LD_LIBRARY_PATH=/usr/local/lib64:/home/tomas/stg/lib64:/usr/lib/pyshared/python2.7
export PYTHONPATH=/usr/local/lib/python2.7/site-packages:/usr/lib/pyshared/python2.7:/usr/share/pyshared
Python editor:
Eric6 - http://eric-ide.python-projects.org/eric-download.html
Velmi jednoduchy priklad pro pohyb:
# Jizda dopredu
import time
import math
from playerc import *
# Pripojeni k robot simulatoru
c = playerc_client(None, 'localhost', 6665)
c.connect()
# Prihlaseni se k zarizeni pohybu robota
p = playerc_position2d(c,0)
if p.subscribe(PLAYERC_OPEN_MODE) != 0:
raise playerc_error_str()
# Rozjeti robota rychlosti 1
p.set_cmd_vel(1.0,0.0,0.0,1)
# Cekani 10 x 1 sekunda
for i in range(0,10):
time.sleep(1)
print i
# Zastaveni pohybu robota
p.set_cmd_vel(0.0, 0.0, 0.0, 1)
# Odhlaeni se od zarizeni pohybu
p.unsubscribe()
# Odpojeni od simulatoru
c.disconnect()
Instalace python player pro 32bit potřebuje tyto knihovny:
sudo dpkg -i libstdc++6_5.1.1-6_i386.deb
sudo dpkg -i libstdc++6_5.1.1-6_i386.deb
sudo dpkg -i gcc-5-base_5.1.1-6_i386.deb
sudo dpkg -i libstdc++6_5.1.1-6_i386.deb
sudo dpkg -i libgeos-3.4.2_3.4.2-7_i386.deb
sudo dpkg -i libgeos-c1_3.4.2-7_i386.deb
sudo dpkg -i libjpeg62-turbo_1.4.0-7_i386.deb
sudo dpkg -i libplayercommon3.0_3.0.2+dfsg-4.2+b1_i386.deb
sudo dpkg -i libplayerinterface3.0_3.0.2+dfsg-4.2+b1_i386.deb
sudo dpkg -i libplayerjpeg3.0_3.0.2+dfsg-4.2+b1_i386.deb
sudo dpkg -i libplayerwkb3.0_3.0.2+dfsg-4.2+b1_i386.deb
sudo dpkg -i libplayerc3.0_3.0.2+dfsg-4.2+b1_i386.deb