{{http://carmen.sourceforge.net/images/carmen-logo-big.png}} Carnegie Mellon Robot Navigation Toolkit http://carmen.sourceforge.net/ == How-To Download, Configure, and Make Carmen on Ubuntu 7.04 == === Download Carmen from SourceForge === http://downloads.sourceforge.net/carmen/carmen-0.6.6-beta.tgz?modtime=1178804560&big_mirror=0 Extract file ==== tar -xzvf carmen" ==== Make symlink ==== ln -s carmen carmen ==== === Install following the Installation Guidelines === http://carmen.sourceforge.net/getting_carmen.html ./configure will give you many errors. Here is how to correct most of them quick and dirty. Read below to see step by step how to arrive at these packages: {{{#!cplusplus apt-get install --yes --force-yes libgtk2.0-* libwrap0-deb libjpeg-dev lib*zlib* doxygen doxygen-doc doxygen-docs doxygen-gui swig swig-doc swig-examples g++ libgtk1.2-dev gdk-imlib-dev rm -rf laser ./configure --no-java }}} *Answer N to Python bindings {{{#!cplusplus numbering=off Should Python Bindings be installed: [y/N] N }}} *Answer N to oldlaser (we want new laser) {{{#!cplusplus numbering=off Should the old laser server be used instead of the new one: [y/N] N }}} *Accept all robots but SegWay {{{#!cplusplus numbering=off Robot numbers [*]: 1,2,3,4,5,6,7,8 Compiling base support for: pioneer rflex scout orc4 orc5 }}} *Remove camera from Makefile packages ---- == ./configure == Address the output of ./configure piece by piece: {{{#!cplusplus ./configure Using $CC as gcc... Found processor unknown. Congratulations. You are running Linux. Found kernel 2.6.20-16-generic. This doesn't look like SuSE! Searching for canlib... Could not find Kvaser canlib header file. I looked for /usr/include/canlib.h but it does not seem to exist. Searching for GTK... not found. I tried to execute pkg-config gtk+-2.0 and got this response: Package gtk+-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gtk+-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'gtk+-2.0' found If you do not have graphics, CARMEN's display modules will not compile, but all other modules should compile without problem. Please install gtk 2.0, or re-run ./configure with --nographics. }}} ---- == Kvaser Canlib == {{{#!cplusplus Could not find Kvaser canlib header file. I looked for /usr/include/canlib.h }}} Kvaser canlib.h can be found here: http://www.kvaser.com/download/index_developer.htm tar -xzvf the archive and then copy canlib.h to appease ./configure === cp ~/linuxcan_v2/include/canlib.h /usr/include/canlib.h === ---- == gtk+-2.0 == {{{#!cplusplus Searching for GTK... not found. I tried to execute pkg-config gtk+-2.0 and got this response: Package gtk+-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gtk+-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'gtk+-2.0' found }}} === apt-get install libgtk2.0-* === ---- == libraries and .h files == {{{#!cplusplus Searching for tcpd.h... found Searching for jpeglib.h... found Searching for zlib.h... found Searching for Wand... not found Searching for Java... found Searching for doxygen... found Searching for SWIG... found Searching for Python... found }}} Now the .h files will need some libraries installed. First vi /etc/apt/source.list and uncomment the restricted universe repositories. Then apt-get update; apt-get install the following packages gtk+-2.0 = apt-get install libgtk2.0-* tcpd.h = apt-get install libwrap0-deb jpeglib.h = apt-get install libjpeg-dev zlib.h = apt-get install lib*zlib* Wand = ? Java = apt-get install j2sdk1.4 doxygen = apt-get install doxygen doxygen-doc doxygen-docs doxygen-gui SWIG = apt-get install swig swig-doc swig-examples * Typically only the -dev or lib packages are required, but why not get the docs and tools as well. ---- == JAVA_HOME == give configure the environment variable JAVA_HOME to find /usr/bin/javac === export JAVA_HOME=/usr === {{{#!cplusplus sub verify_java { my $error = undef; print "Searching for Java... "; if (defined $ENV{JAVA_HOME}) { if (-x "$ENV{JAVA_HOME}/bin/javac") { print "found\n"; return $ENV{JAVA_HOME} } print< Starting make ---- Compiling ipcjava.c to ipcjava.o (C) In file included from /usr/include/_G_config.h:44, from /usr/include/libio.h:32, from /usr/include/stdio.h:72, from ipcjava.c:67: /usr/include/gconv.h:72: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/gconv.h:88: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/gconv.h:97: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/gconv.h:174: error: expected specifier-qualifier-list before ‘size_t’ In file included from /usr/include/stdio.h:72, make[3]: *** [ipcjava.o] Error 1 exit: 7: Illegal number: -1 make[2]: *** [libraries] Error 2 make[1]: *** [phase1] Error 2 exit: 1: Illegal number: -1 make: *** [phase1] Error 2 }}} ---- == ./configure --nojava == So, let's ./configure again and skip java {{{#!cplusplus carmen/src# ./configure --nojava Using $CC as gcc... Found processor unknown. Congratulations. You are running Linux. Found kernel 2.6.20-16-generic. This doesn't look like SuSE! Searching for canlib... Found canlib header at /usr/include/canlib.h Searching for GTK... found, version 2.10.11 Searching for joystick... found at /usr/include/linux/joystick.h It looks like this is a system include, so I won't add it to the standard include path. Adding partial system include paths is usually a recipe for disaster. If this is the wrong thing to do, you could add the following line to Makefile.vars: JOYSTICK_INCLUDE = -I/usr/include/linux/joystick.h Searching for tcpd.h... found Looks like your system supports access control. Very good. Searching for jpeglib.h... found Searching for zlib.h... found Searching for Wand... not found Searching for doxygen... found Searching for SWIG... found Searching for Python... found Should Python Bindings be installed: [y/N] N Should the old laser server be used instead of the new one: [y/N] N Type the install prefix to use for public installs, or hit enter to keep the default as /usr/local. (This prefix is not currently used by any rules.) Install path [/usr/local/]: You must have Linux kernel 2.0.20 to compile: Nomadic Technologies XR4000 These are the robot types CARMEN currently supports: 1. ActiveMedia Pioneer I 2. ActiveMedia Pioneer II 3. iRobot ATRV 4. iRobot ATRV-JR 5. iRobot B21R 6. Scout 7. OrcBoard v.4 8. OrcBoard v.5 (Experimental) 8. Segway RMP 9. * Please select which robots you wish to compile base modules for. e.g., 1, 2, 6 would compile support for both Pioneer types and a Scout. Hit enter to compile them all, or type "none" to compile no base module support, for example, if you will be working exclusively in simulation. Robot numbers [*]: Very well, compiling support for all base types. }}} === ./configure --nojava successful === ---- == IPC == === IPC requires g++ to be installed === {{{#!cplusplus carmen/src# make **************************************************************** * Module : IPC * Comment : Flexible communications package written by Reid Simmons **************************************************************** --> Starting make ---- Archiving ipc.o queryResponse.o marshall.o timer.o list.o behaviors.o tcModError.o datamsg.o formatters.o hash.o idtable.o key.o primFmttrs.o reg.o sendMsg.o tcaMem.o tcaRef.o comModule.o com.o globalM.o globalMUtil.o strList.o modLogging.o modVar.o resMod.o parseFmttrs.o lex.o printData.o into libipc.so.1 (C) make[3]: g++: Command not found make[3]: *** [libipc.so.1] Error 127 exit: 7: Illegal number: -1 make[2]: *** [binaries] Error 2 make[1]: *** [phase2] Error 2 exit: 1: Illegal number: -1 make: *** [phase2] Error 2 }}} * make[3]: g++: Command not found === apt-get install g++ === ---- == SEGWAY == make again and it will probably error out on the Segway: {{{#!cplusplus **************************************************************** * Module : SEGWAY * Comment : Segway RMP Base Module **************************************************************** --> Starting make ---- Compiling segwaycore.c to segwaycore.o (C) In file included from segwaycore.c:30: /usr/include/canlib.h:13:21: error: canstat.h: No such file or directory In file included from segwaycore.c:30: /usr/include/canlib.h:130: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canSetDriverMode’ /usr/include/canlib.h:135: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canClose’ /usr/include/canlib.h:137: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canGetRawHandle’ /usr/include/canlib.h:139: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canBusOn’ /usr/include/canlib.h:141: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canResetBus’ /usr/include/canlib.h:143: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canBusOff’ /usr/include/canlib.h:145: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canSetBusParams’ /usr/include/canlib.h:153: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canGetBusParams’ /usr/include/canlib.h:161: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canSetBusParamsC200’ /usr/include/canlib.h:165: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canSetBusOutputControl’ /usr/include/canlib.h:168: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canGetBusOutputControl’ /usr/include/canlib.h:171: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canAccept’ /usr/include/canlib.h:175: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canReadStatus’ /usr/include/canlib.h:178: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canReadErrorCounters’ /usr/include/canlib.h:183: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canWrite’ /usr/include/canlib.h:187: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canWriteWait’ /usr/include/canlib.h:191: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canWriteSync’ /usr/include/canlib.h:194: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canReadWait’ /usr/include/canlib.h:202: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canRead’ /usr/include/canlib.h:210: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canTranslateBaud’ /usr/include/canlib.h:217: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canGetErrorText’ /usr/include/canlib.h:231: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canIoCtl’ /usr/include/canlib.h:234: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canReadTimer’ /usr/include/canlib.h:236: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canGetNumberOfChannels’ /usr/include/canlib.h:238: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canGetChannelData’ /usr/include/canlib.h:242: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘canSetNotify’ cc1: warnings being treated as errors segwaycore.c: In function ‘segway_update_status’: segwaycore.c:49: warning: implicit declaration of function ‘canReadWait’ segwaycore.c:54: warning: implicit declaration of function ‘canBusOn’ segwaycore.c: In function ‘segway_initialize’: segwaycore.c:140: warning: implicit declaration of function ‘canSetBusParams’ segwaycore.c: In function ‘segway_free’: segwaycore.c:158: warning: implicit declaration of function ‘canClose’ segwaycore.c: In function ‘segway_kill’: segwaycore.c:166: warning: implicit declaration of function ‘canWrite’ make[6]: *** [segwaycore.o] Error 1 exit: 7: Illegal number: -1 make[5]: *** [libraries] Error 2 make[4]: *** [all] Error 2 make[3]: *** [segway] Error 2 exit: 7: Illegal number: -1 make[2]: *** [binaries] Error 2 make[1]: *** [phase2] Error 2 exit: 1: Illegal number: -1 make: *** [phase2] Error 2 }}} ---- == ./configure to skip SEGWAY == === Robot numbers [*]: 1,2,3,4,5,6,7,8 === * If you cannot make the segway, ./configure again and choose the other robots {{{#!cplusplus /carmen/src# ./configure --nojava Using $CC as gcc... Found processor unknown. Congratulations. You are running Linux. Found kernel 2.6.20-16-generic. This doesn't look like SuSE! Searching for canlib... Found canlib header at /usr/include/canlib.h Searching for GTK... found, version 2.10.11 Searching for joystick... found at /usr/include/linux/joystick.h It looks like this is a system include, so I won't add it to the standard include path. Adding partial system include paths is usually a recipe for disaster. If this is the wrong thing to do, you could add the following line to Makefile.vars: JOYSTICK_INCLUDE = -I/usr/include/linux/joystick.h Searching for tcpd.h... found Looks like your system supports access control. Very good. Searching for jpeglib.h... found Searching for zlib.h... found Searching for Wand... not found Searching for doxygen... found Searching for SWIG... found Searching for Python... found Should Python Bindings be installed: [y/N] N Should the old laser server be used instead of the new one: [y/N] N Type the install prefix to use for public installs, or hit enter to keep the default as /usr/local. (This prefix is not currently used by any rules.) Install path [/usr/local/]: You must have Linux kernel 2.0.20 to compile: Nomadic Technologies XR4000 These are the robot types CARMEN currently supports: 1. ActiveMedia Pioneer I 2. ActiveMedia Pioneer II 3. iRobot ATRV 4. iRobot ATRV-JR 5. iRobot B21R 6. Scout 7. OrcBoard v.4 8. OrcBoard v.5 (Experimental) 8. Segway RMP 9. * Please select which robots you wish to compile base modules for. e.g., 1, 2, 6 would compile support for both Pioneer types and a Scout. Hit enter to compile them all, or type "none" to compile no base module support, for example, if you will be working exclusively in simulation. Robot numbers [*]: 1,2,3,4,5,6,7,8 Compiling base support for: pioneer rflex scout orc4 orc5 }}} ==== ./configure --nojava ==== ==== Should Python Bindings be installed: [y/N] N ==== ==== Should the old laser server be used instead of the new one: [y/N] N ==== ==== Robot numbers [*]: 1,2,3,4,5,6,7,8 ==== ---- == gtk-config == === MAP-EDITOR requires gtk-config === === apt-get install libgtk1.2-dev gdk-imlib-dev === {{{#!cplusplus **************************************************************** * Module : MAP_EDITOR * Comment : Provides photoshop-like map editor. **************************************************************** --> Starting make ---- Compiling map_editor.c to map_editor.o (C) /bin/sh: gtk-config: not found map_editor.c:29:21: error: gtk/gtk.h: No such file or directory In file included from map_editor.c:31: map_editor.h:37:23: error: gdk_imlib.h: No such file or directory In file included from map_editor.c:31: carmen/src# gtk-config The program 'gtk-config' is currently not installed. You can install it by typing: apt-get install libgtk1.2-dev bash: gtk-config: command not found }}} === apt-get install libgtk1.2-dev === === apt-get install gdk-imlib-dev === ---- == QUICKCAM == This should get you all the way to the Phillips Camera {{{#!cplusplus **************************************************************** * Module : QUICKCAM * Comment : Phillips Camera Module **************************************************************** --> Starting make ccvt_mmx.S:31:27: error: linux/linkage.h: No such file or directory make[6]: *** [ccvt_mmx.o] Error 1 exit: 7: Illegal number: -1 make[5]: *** [libraries] Error 2 make[4]: *** [all] Error 2 make[3]: *** [quickcam/libquickcam.a] Error 2 exit: 7: Illegal number: -1 make[2]: *** [binaries] Error 2 make[1]: *** [phase2] Error 2 exit: 1: Illegal number: -1 make: *** [phase2] Error 2 }}} ---- == linkage.h == === QUICKCAM requires linkage.h === * I don't know how to fix this error, but I have the pwc.ko module compiled on another platform so this is not a show stopper at the moment. {{{#!cplusplus carmen/src# locate linkage.h /usr/src/linux-headers-2.6.20-15-generic/include/linux/linkage.h /usr/src/linux-headers-2.6.20-16-generic/include/linux/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-x86_64/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-s390/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-sh64/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-xtensa/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-sh/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-i386/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-sparc64/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-mips/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-m68knommu/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-m32r/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-sparc/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-um/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-v850/clinkage.h /usr/src/linux-headers-2.6.20-16/include/asm-v850/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-alpha/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-avr32/linkage.h /usr/src/linux-headers-2.6.20-16/include/linux/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-h8300/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-arm26/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-parisc/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-frv/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-m68k/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-ia64/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-cris/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-powerpc/linkage.h /usr/src/linux-headers-2.6.20-16/include/asm-arm/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-x86_64/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-s390/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-sh64/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-xtensa/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-sh/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-i386/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-sparc64/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-mips/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-m68knommu/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-m32r/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-sparc/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-um/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-v850/clinkage.h /usr/src/linux-headers-2.6.20-15/include/asm-v850/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-alpha/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-avr32/linkage.h /usr/src/linux-headers-2.6.20-15/include/linux/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-h8300/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-arm26/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-parisc/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-frv/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-m68k/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-ia64/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-cris/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-powerpc/linkage.h /usr/src/linux-headers-2.6.20-15/include/asm-arm/linkage.h }}} ---- == skip camera == * The quickest way to get around this is to remove the camera package from the Makefile {{{#!cplusplus PACKAGES = ipc global param_daemon base laser robot simulator robotgui \ maptools mapeditor logger logtools hmap \ localize navigator vasco proccontrol \ *camera* joystick pantilt gps }}} Makefile with camera package removed: {{{#!cplusplus PACKAGES = ipc global param_daemon base laser robot simulator robotgui \ maptools mapeditor logger logtools hmap \ localize navigator vasco proccontrol \ joystick pantilt gps }}} ---- == make == Now you should be able to make {{{#!cplusplus carmen/src# make *********** E X P O R T *********** ***************** L I B R A R I E S ***************** **************************************************************** * Module : IPC * Comment : Flexible communications package written by Reid Simmons **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : GLOBAL * Comment : CARMEN global functions **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : PARAMDAEMON * Comment : Module providing central repository for module parameters **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : BASE * Comment : Generic interface to all robot bases **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : LASER * Comment : The new laser module for SICK and Hokuyo lasers **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : ROBOT_DAEMON * Comment : Module integrating all robot sensors and configuration **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : SIMULATOR * Comment : simulates the readings of a robot on a map **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : ROBOTGUI * Comment : Module for displaying output of robot, lasers and sonars and odometry **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : MAPTOOLS * Comment : Tools for mapping etc. **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : MAP_EDITOR * Comment : Provides photoshop-like map editor. **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : LOGGER * Comment : Modules for logging, displaying, and playing back data. **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : LOGTOOLS * Comment : Log tools, like the famous log2pic **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : HMAP * Comment : mapserver add-on for heirarchical maps (hmaps). **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : LOCALIZE * Comment : Markov Localization Module **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : NAVIGATOR * Comment : The motion planner! **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : VASCO * Comment : Scan-matching mapper by Dirk Haehnel **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : PROCCONTROL * Comment : Process controller for CARMEN **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : JOYSTICK * Comment : Joystick library and control modules **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : PANTILT * Comment : Module for pantilt interface - direct perception **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : GPS * Comment : NMEA GPS Module **************************************************************** --> Starting make <-- Make done *************** B I N A R I E S *************** **************************************************************** * Module : IPC * Comment : Flexible communications package written by Reid Simmons **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : GLOBAL * Comment : CARMEN global functions **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : PARAMDAEMON * Comment : Module providing central repository for module parameters **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : BASE * Comment : Generic interface to all robot bases **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : LASER * Comment : The new laser module for SICK and Hokuyo lasers **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : ROBOT_DAEMON * Comment : Module integrating all robot sensors and configuration **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : SIMULATOR * Comment : simulates the readings of a robot on a map **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : ROBOTGUI * Comment : Module for displaying output of robot, lasers and sonars and odometry **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : MAPTOOLS * Comment : Tools for mapping etc. **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : MAP_EDITOR * Comment : Provides photoshop-like map editor. **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : LOGGER * Comment : Modules for logging, displaying, and playing back data. **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : LOGTOOLS * Comment : Log tools, like the famous log2pic **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : HMAP * Comment : mapserver add-on for heirarchical maps (hmaps). **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : LOCALIZE * Comment : Markov Localization Module **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : NAVIGATOR * Comment : The motion planner! **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : VASCO * Comment : Scan-matching mapper by Dirk Haehnel **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : PROCCONTROL * Comment : Process controller for CARMEN **************************************************************** --> Starting make <-- Make done **************************************************************** * Module : JOYSTICK * Comment : Joystick library and control modules **************************************************************** --> Starting make ---- Compiling wingman_control.c to wingman_control.o (C) ---- Linking wingman_control.o joyctrl.o to wingman_control (C) ---- Copying wingman_control to ~/carmen/bin <-- Make done **************************************************************** * Module : PANTILT * Comment : Module for pantilt interface - direct perception **************************************************************** --> Starting make ---- Compiling io.c to io.o (C) ---- Compiling ipc.c to ipc.o (C) ---- Compiling utils.c to utils.o (C) ---- Compiling main.c to main.o (C) ---- Linking io.o ipc.o utils.o main.o to pantilt (C) ---- Compiling pantilt-test.c to pantilt-test.o (C) ---- Linking pantilt-test.o to pantilt-test (C) ---- Copying pantilt to ~/carmen/bin ---- Copying pantilt-test to ~/carmen/bin <-- Make done **************************************************************** * Module : GPS * Comment : NMEA GPS Module **************************************************************** --> Starting make ---- Compiling gps-io.c to gps-io.o (C) ---- Compiling gps-ipc.c to gps-ipc.o (C) ---- Compiling gps-nmea.c to gps-nmea.o (C) ---- Compiling gps-main.c to gps-main.o (C) ---- Linking gps-io.o gps-ipc.o gps-nmea.o gps-main.o to gps-nmea (C) ---- Compiling gps-test.c to gps-test.o (C) ---- Linking gps-test.o gps_nmea_interface.o to gps-test (C) ---- Copying gps-nmea to ~/carmen/bin <-- Make done Done making binaries... }}} === make successful === ---- == RUN == Congratulations you have now downloaded, configured and made Carmen on Ubuntu! Running instructions are here: http://carmen.sourceforge.net/using_carmen.html ---- == SICK S300 == *CarmenSickLaserS300 == Additional issues while Make-ing Carmen on Ubuntu 9.10 == === Error: warn_unused_result === On Ubuntu 9.10, I got several warn_unused_result errors. The problem is the -Werror flag given to gcc and g++ by Makefile.conf, which asks the compiler to treat warnings as errors. To solve this, remove -Werror from both gcc and gXX command in Makefile.conf, and now the warnings will appear as warnings and not errors. In file Makefile.conf: {{{#!cplusplus pathsearch = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH))))) CFLAGS += -Wall -W -Werror -D_REENTRANT CFLAGS += `getconf LFS_CFLAGS` CFLAGS += -D_LARGEFILE64_SOURCE ifdef NO_STRICT_ALIASING CFLAGS += -Wno-strict-aliasing endif ifeq (x86_64,$(PROCESSOR)) CFLAGS += -fPIC CXXFLAGS += -fPIC endif CXXFLAGS += -Wall -W -Werror -D_REENTRANT ifdef CARMEN_DEBUG CFLAGS += -g CXXFLAGS += -g else CFLAGS += -O3 CXXFLAGS += -O3 endif }}} === Error: asm/linkage.h: No such file or directory === I got the following error: {{{#!cplusplus **************************************************************** * Module : QUICKCAM * Comment : Phillips Camera Module **************************************************************** --> Starting make In file included from ccvt_mmx.S:31: /usr/src/linux-headers-2.6.31-17-generic-pae/include/linux/linkage.h:5:25: error: asm/linkage.h: No such file or directory make[6]: *** [ccvt_mmx.o] Error 1 exit: 7: Illegal number: -1 make[5]: *** [libraries] Error 2 make[4]: *** [all] Error 2 make[3]: *** [quickcam/libquickcam.a] Error 2 exit: 7: Illegal number: -1 make[2]: *** [binaries] Error 2 make[1]: *** [phase2] Error 2 exit: 1: Illegal number: -1 make: *** [phase2] Error 2 }}} Solution: I created a symbolic link to the asm-generic version of linkage.h in the latest ubuntu kernel. This might be a temporary solution and must be repeated with every kernel update. The command I used was: {{{#!cplusplus sudo ln -s /usr/src/linux-headers-2.6.31-17-generic-pae/include/asm-generic/linkage.h /usr/src/linux-headers-2.6.31-17-generic-pae/include/asm/ }}} ---- <> == Notes on installing on Ubuntu 10.04 LTS with Carmen 0.7.4-beta == As of May 2011, the latest version of Carmen is 0.7.4-beta http://sourceforge.net/projects/carmen/files/carmen/carmen-0.7.4-beta/carmen-0.7.4-beta.tgz/download Download and extract: {{{ wget http://sourceforge.net/projects/carmen/files/carmen/carmen-0.7.4-beta/carmen-0.7.4-beta.tgz/download tar -xzvf carmen-0.7.4-beta.tgz }}} === Additional packages === You will need to install the following packages: {{{ sudo apt-get install libgtk2.0-dev libwrap0-dev libjpeg62-dev zlib1g-dev doxygen doxygen-doc doxygen-gui swig swig-doc swig-examples }}} === Java === To install Sun Java: (This is no longer in the main repository, so we have to add it) {{{ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" sudo apt-get update sudo apt-get install sun-java6-jre sun-java6-jdk }}} If the JAVA_HOME environment variable is not set properly: {{{ export JAVA_HOME=/usr/lib/jvm/java-6-sun }}} === Kvaser canlib library (If you don't use the Segway platform, you can skip this) === Download the Kvaser Linux Drivers and SDK: http://www.kvaser.com/index.php?option=com_php&Itemid=288&swprod=6481f6f00ad4ef8aa5ce3c8fcee03afe&ean=0000000000000 Extract: {{{ tar -xzvf linuxcan_beta.tar.gz }}} Build and install: (You may be able to get away with just installing the canlib library, but I have not tried this) {{{ cd linuxcan_v4 make sudo make install }}} === Hack libgdk_imlib dependency === The config script checks for gdk_imlib, but this is part of GTK 1.2 and we have GTK 2.0 and it seems Carmen is OK without it. As suggested by http://ubuntuforums.org/showthread.php?t=1417074 , we just remove the check from the configure file. Everything seems to compile and run OK without it. In the src folder of the carmen distribution: {{{ gedit configure & }}} Comment out lines 274 to 286 (the comment symbol is #): {{{ # print "Searching for libgdk_imlib.a..."; # if (-e "/usr/lib/libgdk_imlib.a" or # -e "/usr/local/lib/libgdk_imlib.a" or # -e "/opt/gnome/lib/libgdk_imlib.a") { # print " found\n"; # } else { # # print " ${red}not found ${normal}\n\n"; # print "Could not find libgdk_imlib.a in /usr/lib,\n"; # print "/usr/local/lib, nor in /opt/gnome/lib/\n"; # print "Please install libgdk_imlib.a or\n${red}re-run $PROGRAM_NAME with --nographics${normal}\n"; # die "\n"; # } }}} === Build Carmen === At this point, you should be able to run: {{{ ./configure }}} if that is successful, build with: {{{ make }}} Assuming all is well, you can optionally install with: {{{ sudo make install }}}