carmen
http://carmen.sourceforge.net/images/carmen-logo-big.png
Carnegie Mellon Robot Navigation Toolkit http://carmen.sourceforge.net/
How-To Download, Install, and Make Carmen on Ubuntu 7.04
1. Download Carmen from SourceForge
http://downloads.sourceforge.net/carmen/carmen-0.6.6-beta.tgz?modtime=1178804560&big_mirror=0
Extract file with "tar -xzvf carmen<tab>"
Make symlink for yourself "ln -s carmen<tab> carmen"
2. Install following the Installation Guidelines http://carmen.sourceforge.net/getting_carmen.html
Address the output of ./configure piece by piece:
./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.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
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 = libgtk2.0-* tcpd.h = libwrap0-deb jpeglib.h = libjpeg-dev zlib.h = lib*zlib* Wand = ? Java = j2sdk1.4, and then give configure it the environment variable it wants
"export JAVA_HOME=/usr"
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<<EOF;
- if (-x "$ENV{JAVA_HOME}/bin/javac") {
${red}not found${normal}.
doxygen = doxygen doxygen-doc doxygen-docs doxygen-gui SWIG = swig swig-doc swig-examples
--
Now you should be ready to ./configure again
root@hwilde-r60u:/home/hwilde/carmen/src# ./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... 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 Java... 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 ERROR: The directory called laser exitsts. Please remove it and run configure again.
root@hwilde-r60u:/home/hwilde/carmen/src# ls -lr laser total 0 root@hwilde-r60u:/home/hwilde/carmen/src# rm -rf laser
For this first example we answered N to the Python bindings.
root@hwilde-r60u:/home/hwilde/carmen/src# ./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... 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 Java... 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.
Now you should be ready to make
{root@hwilde-r60u:/home/hwilde/carmen/src# make
**************************************************************** * 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 : CAMERA * Comment : General Camera Module ****************************************************************
--> 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
**************************************************************** * Module : JAVA LIBRARIES * Comment : Module for interfacing java programs with Carmen! ****************************************************************
--> 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,
- from ipcjava.c:67:
/usr/include/libio.h:328: error: expected specifier-qualifier-list before ‘size_t’ /usr/include/libio.h:360: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/libio.h:369: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/libio.h:485: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘_IO_sgetn’ In file included from ipcjava.c:67: /usr/include/stdio.h:306: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdio.h:313: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdio.h:355: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdio.h:357: error: format string argument not a string type /usr/include/stdio.h:359: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdio.h:608: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘fread’ /usr/include/stdio.h:614: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘fwrite’ /usr/include/stdio.h:636: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘fread_unlocked’ /usr/include/stdio.h:638: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘fwrite_unlocked’ ipcjava.c:68:17: error: jni.h: No such file or directory In file included from ../ipc/libc.h:643,
- from ../ipc/globalM.h:390, from ipcjava.c:69:
/usr/include/stdlib.h:140: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘ctype_get_mb_cur_max’ In file included from /usr/include/sys/types.h:133, /usr/include/linux/time.h:10: error: expected specifier-qualifier-list before ‘time_t’ /usr/include/linux/time.h:16: error: expected specifier-qualifier-list before ‘time_t’ In file included from /usr/include/sys/select.h:46, /usr/include/bits/time.h:70: error: redefinition of ‘struct timeval’ In file included from ../ipc/libc.h:643, /usr/include/stdlib.h:455: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdlib.h:485: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdlib.h:487: error: nonnull argument with out-of-range operand number (argument 1, operand 4) /usr/include/stdlib.h:589: error: expected ‘)’ before ‘ /usr/include/alloca.h:33: error: expected ‘)’ before ‘
- from ../ipc/globalM.h:390, from ipcjava.c:69:
/usr/include/stdlib.h:617: error: expected ‘)’ before ‘size’ /usr/include/stdlib.h:622: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdlib.h:622: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdlib.h:776: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdlib.h:776: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdlib.h:777: error: nonnull argument with out-of-range operand number (argument 1, operand 5) /usr/include/stdlib.h:781: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdlib.h:781: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdlib.h:782: error: nonnull argument with out-of-range operand number (argument 1, operand 4) /usr/include/stdlib.h:854: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdlib.h:857: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdlib.h:861: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdlib.h:865: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdlib.h:874: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/stdlib.h:877: error: expected ‘)’ before ‘*’ token /usr/include/stdlib.h:881: error: expected declaration specifiers or ‘...’ before ‘wchar_t’ /usr/include/stdlib.h:885: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘mbstowcs’ /usr/include/stdlib.h:888: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘wcstombs’ In file included from ../ipc/libc.h:649, /usr/include/string.h:39: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/string.h:43: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/string.h:52: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/string.h:59: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/string.h:62: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/string.h:66: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/string.h:88: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/string.h:96: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/string.h:102: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/string.h:109: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘ /usr/include/bits/string2.h:969: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘ /usr/include/asm-i386/signal.h:13: error: conflicting types for ‘sigset_t’ /usr/include/sys/select.h:38: error: previous declaration of ‘sigset_t’ was here In file included from /usr/include/asm/signal.h:7, /usr/include/asm-i386/signal.h:114: error: expected specifier-qualifier-list before ‘size_t’ In file included from /usr/include/asm-i386/siginfo.h:4, /usr/include/asm-generic/siginfo.h:55: error: expected specifier-qualifier-list before ‘timer_t’ /usr/include/asm-generic/siginfo.h:74: error: expected specifier-qualifier-list before ‘clock_t’ In file included from ../ipc/libc.h:655, /usr/include/sys/time.h:58: error: redefinition of ‘struct timezone’ /usr/include/sys/time.h:96: error: expected identifier before numeric constant /usr/include/sys/time.h:110: error: redefinition of ‘struct itimerval’ In file included from ../ipc/libc.h:656, /usr/include/sys/timeb.h:34: error: expected specifier-qualifier-list before ‘time_t’ In file included from /usr/include/sys/uio.h:29, /usr/include/bits/uio.h:47: error: expected specifier-qualifier-list before ‘size_t’ In file included from /usr/include/sys/socket.h:35, /usr/include/bits/socket.h:221: error: expected specifier-qualifier-list before ‘size_t’ /usr/include/bits/socket.h:235: error: expected specifier-qualifier-list before ‘size_t’ /usr/include/bits/socket.h: In function ‘ /usr/include/sys/socket.h: At top level: /usr/include/sys/socket.h:136: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/sys/socket.h:143: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/sys/socket.h:150: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/sys/socket.h:161: error: expected declaration specifiers or ‘...’ before ‘size_t’ In file included from ../ipc/libc.h:666, /usr/include/arpa/inet.h:78: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/arpa/inet.h:84: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/arpa/inet.h:90: error: expected declaration specifiers or ‘...’ before ‘size_t’ In file included from /usr/include/netdb.h:33, /usr/include/rpc/netdb.h:61: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/rpc/netdb.h:65: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/rpc/netdb.h:69: error: expected declaration specifiers or ‘...’ before ‘size_t’ In file included from ../ipc/libc.h:668, /usr/include/netdb.h:162: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/netdb.h:169: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/netdb.h:175: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/netdb.h:181: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/netdb.h:232: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/netdb.h:238: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/netdb.h:244: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/netdb.h:304: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/netdb.h:310: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/netdb.h:315: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/netdb.h:370: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/netdb.h:375: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/netdb.h:380: error: expected declaration specifiers or ‘...’ before ‘size_t’ /usr/include/netdb.h:430: error: expected declaration specifiers or ‘...’ before ‘size_t’ In file included from /usr/include/sys/ioctl.h:30, /usr/include/bits/ioctl-types.h:29: error: redefinition of ‘struct winsize’ /usr/include/bits/ioctl-types.h:38: error: redefinition of ‘struct termio’ In file included from /usr/include/sys/wait.h:143, /usr/include/bits/siginfo.h:34: error: redefinition of ‘union sigval’ /usr/include/bits/siginfo.h:52: error: redefinition of ‘struct siginfo’ /usr/include/bits/siginfo.h:65: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘ ../ipc/tca.h:663: error: expected ‘)’ before ‘size’ ../ipc/tca.h:663: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ In file included from ../ipc/globalM.h:428, ../ipc/tcaMem.h:143: error: expected ‘)’ before ‘amount’ In file included from ipcjava.c:69: ../ipc/globalM.h:580: error: expected ‘)’ before ‘size’ ../ipc/globalM.h:582: error: expected ‘;’ before ‘const’ In file included from ipcjava.c:70: IPC.h:42: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘
So, let's ./configure again and remove java
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. root@hwilde-r60u:/home/hwilde/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
If you get this error you need to install g++ and make again. It will probably error out on the Segway:
**************************************************************** * 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
If you cannot make the segway, ./configure again and choose the other robots
/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
make again, you might see this error message.
**************************************************************** * 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
This should get you all the way to the Phillips Camera
**************************************************************** * 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
I don't know where it is looking for linkage.h or 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.
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
The quickest way to get around this is to remove the camera package from the Makefile
PACKAGES = ipc global param_daemon base laser robot simulator robotgui \
- maptools mapeditor logger logtools hmap \ localize navigator vasco proccontrol \ camera joystick pantilt gps
Now you should be able to make
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 /home/hwilde/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 /home/hwilde/carmen/bin
Copying pantilt-test to /home/hwilde/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 /home/hwilde/carmen/bin
<-- Make done
Done making binaries... }
Running instructions are here: