carmen

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<tab>"

Make symlink

ln -s carmen<tab> 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:

   1 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
   2 rm -rf laser
   3 ./configure --no-java

*Answer N to Python bindings

   1 Should Python Bindings be installed: [y/N] N

*Answer N to oldlaser (we want new laser)

   1 Should the old laser server be used instead of the new one: [y/N] N

*Accept all robots but SegWay

   1 Robot numbers [*]: 1,2,3,4,5,6,7,8
   2 Compiling base support for: pioneer rflex scout orc4 orc5

*Remove camera from Makefile packages


./configure

Address the output of ./configure piece by piece:

   1 ./configure 
   2 Using $CC as gcc...
   3 Found processor unknown.
   4 Congratulations. You are running Linux.
   5 Found kernel 2.6.20-16-generic.
   6 This doesn't look like SuSE!
   7 Searching for canlib... 
   8 Could not find Kvaser canlib header file. I looked for
   9 /usr/include/canlib.h
  10 but it does not seem to exist.
  11 
  12 Searching for GTK... not found. 
  13 I tried to execute pkg-config gtk+-2.0
  14 and got this response:
  15 
  16 Package gtk+-2.0 was not found in the pkg-config search path.
  17 Perhaps you should add the directory containing `gtk+-2.0.pc'
  18 to the PKG_CONFIG_PATH environment variable
  19 No package 'gtk+-2.0' found
  20 
  21 If you do not have graphics, CARMEN's display modules will not compile, but 
  22 all other modules should compile without problem. Please install gtk 2.0, 
  23 or re-run ./configure with --nographics.


Kvaser Canlib

   1 Could not find Kvaser canlib header file. I looked for
   2 /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

   1 Searching for GTK... not found. 
   2 I tried to execute pkg-config gtk+-2.0
   3 and got this response:
   4 
   5 Package gtk+-2.0 was not found in the pkg-config search path.
   6 Perhaps you should add the directory containing `gtk+-2.0.pc'
   7 to the PKG_CONFIG_PATH environment variable
   8 No package 'gtk+-2.0' found

apt-get install libgtk2.0-*


libraries and .h files

   1 Searching for tcpd.h... found
   2 Searching for jpeglib.h... found
   3 Searching for zlib.h... found
   4 Searching for Wand... not found
   5 Searching for Java... found
   6 Searching for doxygen... found
   7 Searching for SWIG... found
   8 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

   1 sub verify_java {
   2   my $error = undef;
   3 
   4   print "Searching for Java... ";
   5   if (defined $ENV{JAVA_HOME}) {
   6     if (-x "$ENV{JAVA_HOME}/bin/javac") {
   7       print "found\n";
   8       return $ENV{JAVA_HOME}
   9     }
  10     print<<EOF;
  11 ${red}not found${normal}.

* Even with this environment variable set and javac available, had to ./configure --nojava


laser exitsts

* Now you should be ready to ./configure again

   1 carmen/src# ./configure 
   2 Using $CC as gcc...
   3 Found processor unknown.
   4 Congratulations. You are running Linux.
   5 Found kernel 2.6.20-16-generic.
   6 This doesn't look like SuSE!
   7 Searching for canlib... Found canlib header at /usr/include/canlib.h
   8 Searching for GTK... found, version 2.10.11
   9 Searching for joystick... found at /usr/include/linux/joystick.h
  10 
  11 It looks like this is a system include, so I won't add it to the standard
  12 include path. Adding partial system include paths is usually a recipe for
  13 disaster. If this is the wrong thing to do, you could add the following
  14 line to Makefile.vars:
  15 JOYSTICK_INCLUDE = -I/usr/include/linux/joystick.h
  16 
  17 Searching for tcpd.h... found
  18 Looks like your system supports access control. Very good.
  19 Searching for jpeglib.h... found
  20 Searching for zlib.h... found
  21 Searching for Wand... not found
  22 Searching for Java... found
  23 Searching for doxygen... found
  24 Searching for SWIG... found
  25 Searching for Python... found
  26 Should Python Bindings be installed: [y/N] N
  27 Should the old laser server be used instead of the new one: [y/N] N
  28 ERROR: The directory called laser exitsts.

* This is just safeguarding to make sure you don't overwrite work

* If this is your first install, just delete the directory

   1 ERROR: The directory called laser exitsts.
   2 Please remove it and run configure again.
   3 
   4 carmen/src# ls -lr laser
   5 total 0
   6 carmen/src# rm -rf laser


Successful ./configure

   1 carmen/src# ./configure 
   2 Using $CC as gcc...
   3 Found processor unknown.
   4 Congratulations. You are running Linux.
   5 Found kernel 2.6.20-16-generic.
   6 This doesn't look like SuSE!
   7 Searching for canlib... Found canlib header at /usr/include/canlib.h
   8 Searching for GTK... found, version 2.10.11
   9 Searching for joystick... found at /usr/include/linux/joystick.h
  10 
  11 It looks like this is a system include, so I won't add it to the standard
  12 include path. Adding partial system include paths is usually a recipe for
  13 disaster. If this is the wrong thing to do, you could add the following
  14 line to Makefile.vars:
  15 JOYSTICK_INCLUDE = -I/usr/include/linux/joystick.h
  16 
  17 Searching for tcpd.h... found
  18 Looks like your system supports access control. Very good.
  19 Searching for jpeglib.h... found
  20 Searching for zlib.h... found
  21 Searching for Wand... not found
  22 Searching for Java... found
  23 Searching for doxygen... found
  24 Searching for SWIG... found
  25 Searching for Python... found
  26 Should Python Bindings be installed: [y/N] N
  27 Should the old laser server be used instead of the new one: [y/N] N
  28 
  29 Type the install prefix to use for public installs, or hit enter to keep the
  30 default as /usr/local. (This prefix is not currently used by any rules.)
  31 
  32 Install path [/usr/local/]: 
  33 
  34 You must have Linux kernel 2.0.20 to compile:
  35 Nomadic Technologies XR4000
  36 
  37 These are the robot types CARMEN currently supports:
  38 1. ActiveMedia Pioneer I
  39 2. ActiveMedia Pioneer II
  40 3. iRobot ATRV
  41 4. iRobot ATRV-JR
  42 5. iRobot B21R
  43 6. Scout
  44 7. OrcBoard v.4 
  45 8. OrcBoard v.5 (Experimental)
  46 8. Segway RMP
  47 9. *
  48 
  49 Please select which robots you wish to compile base modules for.
  50 e.g., 1, 2, 6 would compile support for both Pioneer types and a Scout.
  51 Hit enter to compile them all, or type "none" to compile no base module
  52 support, for example, if you will be working exclusively in simulation.
  53 
  54 Robot numbers [*]: 
  55 Very well, compiling support for all base types.


make

* Once you get a successful ./configure, you can run make


JAVA LIBRARIRES

I ended up skipping over java because of these errors:

   1 ****************************************************************
   2 * Module  : JAVA LIBRARIES
   3 * Comment : Module for interfacing java programs with Carmen!
   4 ****************************************************************
   5 
   6   --> Starting make
   7     ---- Compiling ipcjava.c to ipcjava.o (C)
   8 In file included from /usr/include/_G_config.h:44,
   9                  from /usr/include/libio.h:32,
  10                  from /usr/include/stdio.h:72,
  11                  from ipcjava.c:67:
  12 /usr/include/gconv.h:72: error: expected declaration specifiers or ‘...’ beforesize_t
  13 /usr/include/gconv.h:88: error: expected declaration specifiers or ‘...’ beforesize_t
  14 /usr/include/gconv.h:97: error: expected declaration specifiers or ‘...’ beforesize_t
  15 /usr/include/gconv.h:174: error: expected specifier-qualifier-list beforesize_t
  16 In file included from /usr/include/stdio.h:72,
  17 
  18 make[3]: *** [ipcjava.o] Error 1
  19 exit: 7: Illegal number: -1
  20 make[2]: *** [libraries] Error 2
  21 make[1]: *** [phase1] Error 2
  22 exit: 1: Illegal number: -1
  23 make: *** [phase1] Error 2


./configure --nojava

So, let's ./configure again and skip java

   1 carmen/src# ./configure --nojava
   2 Using $CC as gcc...
   3 Found processor unknown.
   4 Congratulations. You are running Linux.
   5 Found kernel 2.6.20-16-generic.
   6 This doesn't look like SuSE!
   7 Searching for canlib... Found canlib header at /usr/include/canlib.h
   8 Searching for GTK... found, version 2.10.11
   9 Searching for joystick... found at /usr/include/linux/joystick.h
  10 
  11 It looks like this is a system include, so I won't add it to the standard
  12 include path. Adding partial system include paths is usually a recipe for
  13 disaster. If this is the wrong thing to do, you could add the following
  14 line to Makefile.vars:
  15 JOYSTICK_INCLUDE = -I/usr/include/linux/joystick.h
  16 
  17 Searching for tcpd.h... found
  18 Looks like your system supports access control. Very good.
  19 Searching for jpeglib.h... found
  20 Searching for zlib.h... found
  21 Searching for Wand... not found
  22 Searching for doxygen... found
  23 Searching for SWIG... found
  24 Searching for Python... found
  25 Should Python Bindings be installed: [y/N] N
  26 Should the old laser server be used instead of the new one: [y/N] N
  27 
  28 Type the install prefix to use for public installs, or hit enter to keep the
  29 default as /usr/local. (This prefix is not currently used by any rules.)
  30 
  31 Install path [/usr/local/]: 
  32 
  33 You must have Linux kernel 2.0.20 to compile:
  34 Nomadic Technologies XR4000
  35 
  36 These are the robot types CARMEN currently supports:
  37 1. ActiveMedia Pioneer I
  38 2. ActiveMedia Pioneer II
  39 3. iRobot ATRV
  40 4. iRobot ATRV-JR
  41 5. iRobot B21R
  42 6. Scout
  43 7. OrcBoard v.4 
  44 8. OrcBoard v.5 (Experimental)
  45 8. Segway RMP
  46 9. *
  47 
  48 Please select which robots you wish to compile base modules for.
  49 e.g., 1, 2, 6 would compile support for both Pioneer types and a Scout.
  50 Hit enter to compile them all, or type "none" to compile no base module
  51 support, for example, if you will be working exclusively in simulation.
  52 
  53 Robot numbers [*]: 
  54 Very well, compiling support for all base types.

./configure --nojava successful


IPC

IPC requires g++ to be installed

   1 carmen/src# make
   2 
   3 ****************************************************************
   4 * Module  : IPC
   5 * Comment : Flexible communications package written by Reid Simmons
   6 ****************************************************************
   7 
   8   --> Starting make
   9     ---- 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)
  10 make[3]: g++: Command not found
  11 make[3]: *** [libipc.so.1] Error 127
  12 exit: 7: Illegal number: -1
  13 make[2]: *** [binaries] Error 2
  14 make[1]: *** [phase2] Error 2
  15 exit: 1: Illegal number: -1
  16 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:

   1 ****************************************************************
   2 * Module  : SEGWAY
   3 * Comment : Segway RMP Base Module
   4 ****************************************************************
   5 
   6   --> Starting make
   7     ---- Compiling segwaycore.c to segwaycore.o (C)
   8 In file included from segwaycore.c:30:
   9 /usr/include/canlib.h:13:21: error: canstat.h: No such file or directory
  10 In file included from segwaycore.c:30:
  11 /usr/include/canlib.h:130: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanSetDriverMode
  12 /usr/include/canlib.h:135: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanClose
  13 /usr/include/canlib.h:137: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanGetRawHandle
  14 /usr/include/canlib.h:139: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanBusOn
  15 /usr/include/canlib.h:141: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanResetBus
  16 /usr/include/canlib.h:143: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanBusOff
  17 /usr/include/canlib.h:145: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanSetBusParams
  18 /usr/include/canlib.h:153: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanGetBusParams
  19 /usr/include/canlib.h:161: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanSetBusParamsC200
  20 /usr/include/canlib.h:165: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanSetBusOutputControl
  21 /usr/include/canlib.h:168: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanGetBusOutputControl
  22 /usr/include/canlib.h:171: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanAccept
  23 /usr/include/canlib.h:175: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanReadStatus
  24 /usr/include/canlib.h:178: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanReadErrorCounters
  25 /usr/include/canlib.h:183: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanWrite
  26 /usr/include/canlib.h:187: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanWriteWait
  27 /usr/include/canlib.h:191: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanWriteSync
  28 /usr/include/canlib.h:194: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanReadWait
  29 /usr/include/canlib.h:202: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanRead
  30 /usr/include/canlib.h:210: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanTranslateBaud
  31 /usr/include/canlib.h:217: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanGetErrorText
  32 /usr/include/canlib.h:231: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanIoCtl
  33 /usr/include/canlib.h:234: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanReadTimer
  34 /usr/include/canlib.h:236: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanGetNumberOfChannels
  35 /usr/include/canlib.h:238: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanGetChannelData
  36 /usr/include/canlib.h:242: error: expected ‘=’, ‘,’, ‘;’, ‘asmor__attribute__beforecanSetNotify
  37 cc1: warnings being treated as errors
  38 segwaycore.c: In functionsegway_update_status’:
  39 segwaycore.c:49: warning: implicit declaration of functioncanReadWait
  40 segwaycore.c:54: warning: implicit declaration of functioncanBusOn
  41 segwaycore.c: In functionsegway_initialize’:
  42 segwaycore.c:140: warning: implicit declaration of functioncanSetBusParams
  43 segwaycore.c: In functionsegway_free’:
  44 segwaycore.c:158: warning: implicit declaration of functioncanClose
  45 segwaycore.c: In functionsegway_kill’:
  46 segwaycore.c:166: warning: implicit declaration of functioncanWrite
  47 make[6]: *** [segwaycore.o] Error 1
  48 exit: 7: Illegal number: -1
  49 make[5]: *** [libraries] Error 2
  50 make[4]: *** [all] Error 2
  51 make[3]: *** [segway] Error 2
  52 exit: 7: Illegal number: -1
  53 make[2]: *** [binaries] Error 2
  54 make[1]: *** [phase2] Error 2
  55 exit: 1: Illegal number: -1
  56 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

   1 /carmen/src# ./configure --nojava 
   2 Using $CC as gcc...
   3 Found processor unknown.
   4 Congratulations. You are running Linux.
   5 Found kernel 2.6.20-16-generic.
   6 This doesn't look like SuSE!
   7 Searching for canlib... Found canlib header at /usr/include/canlib.h
   8 Searching for GTK... found, version 2.10.11
   9 Searching for joystick... found at /usr/include/linux/joystick.h
  10 
  11 It looks like this is a system include, so I won't add it to the standard
  12 include path. Adding partial system include paths is usually a recipe for
  13 disaster. If this is the wrong thing to do, you could add the following
  14 line to Makefile.vars:
  15 JOYSTICK_INCLUDE = -I/usr/include/linux/joystick.h
  16 
  17 Searching for tcpd.h... found
  18 Looks like your system supports access control. Very good.
  19 Searching for jpeglib.h... found
  20 Searching for zlib.h... found
  21 Searching for Wand... not found
  22 Searching for doxygen... found
  23 Searching for SWIG... found
  24 Searching for Python... found
  25 Should Python Bindings be installed: [y/N] N
  26 Should the old laser server be used instead of the new one: [y/N] N
  27 
  28 Type the install prefix to use for public installs, or hit enter to keep the
  29 default as /usr/local. (This prefix is not currently used by any rules.)
  30 
  31 Install path [/usr/local/]: 
  32 
  33 You must have Linux kernel 2.0.20 to compile:
  34 Nomadic Technologies XR4000
  35 
  36 These are the robot types CARMEN currently supports:
  37 1. ActiveMedia Pioneer I
  38 2. ActiveMedia Pioneer II
  39 3. iRobot ATRV
  40 4. iRobot ATRV-JR
  41 5. iRobot B21R
  42 6. Scout
  43 7. OrcBoard v.4 
  44 8. OrcBoard v.5 (Experimental)
  45 8. Segway RMP
  46 9. *
  47 
  48 Please select which robots you wish to compile base modules for.
  49 e.g., 1, 2, 6 would compile support for both Pioneer types and a Scout.
  50 Hit enter to compile them all, or type "none" to compile no base module
  51 support, for example, if you will be working exclusively in simulation.
  52 
  53 Robot numbers [*]: 1,2,3,4,5,6,7,8
  54 
  55 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

   1 ****************************************************************
   2 * Module  : MAP_EDITOR
   3 * Comment : Provides photoshop-like map editor.
   4 ****************************************************************
   5 
   6   --> Starting make
   7     ---- Compiling map_editor.c to map_editor.o (C)
   8 /bin/sh: gtk-config: not found
   9 map_editor.c:29:21: error: gtk/gtk.h: No such file or directory
  10 In file included from map_editor.c:31:
  11 map_editor.h:37:23: error: gdk_imlib.h: No such file or directory
  12 In file included from map_editor.c:31:
  13 
  14 carmen/src# gtk-config
  15 The program 'gtk-config' is currently not installed.  You can install it by typing:
  16 apt-get install libgtk1.2-dev
  17 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

   1 ****************************************************************
   2 * Module  : QUICKCAM
   3 * Comment : Phillips Camera Module
   4 ****************************************************************
   5 
   6   --> Starting make
   7 ccvt_mmx.S:31:27: error: linux/linkage.h: No such file or directory
   8 make[6]: *** [ccvt_mmx.o] Error 1
   9 exit: 7: Illegal number: -1
  10 make[5]: *** [libraries] Error 2
  11 make[4]: *** [all] Error 2
  12 make[3]: *** [quickcam/libquickcam.a] Error 2
  13 exit: 7: Illegal number: -1
  14 make[2]: *** [binaries] Error 2
  15 make[1]: *** [phase2] Error 2
  16 exit: 1: Illegal number: -1
  17 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.

   1 carmen/src# locate linkage.h
   2 /usr/src/linux-headers-2.6.20-15-generic/include/linux/linkage.h
   3 /usr/src/linux-headers-2.6.20-16-generic/include/linux/linkage.h
   4 /usr/src/linux-headers-2.6.20-16/include/asm-x86_64/linkage.h
   5 /usr/src/linux-headers-2.6.20-16/include/asm-s390/linkage.h
   6 /usr/src/linux-headers-2.6.20-16/include/asm-sh64/linkage.h
   7 /usr/src/linux-headers-2.6.20-16/include/asm-xtensa/linkage.h
   8 /usr/src/linux-headers-2.6.20-16/include/asm-sh/linkage.h
   9 /usr/src/linux-headers-2.6.20-16/include/asm-i386/linkage.h
  10 /usr/src/linux-headers-2.6.20-16/include/asm-sparc64/linkage.h
  11 /usr/src/linux-headers-2.6.20-16/include/asm-mips/linkage.h
  12 /usr/src/linux-headers-2.6.20-16/include/asm-m68knommu/linkage.h
  13 /usr/src/linux-headers-2.6.20-16/include/asm-m32r/linkage.h
  14 /usr/src/linux-headers-2.6.20-16/include/asm-sparc/linkage.h
  15 /usr/src/linux-headers-2.6.20-16/include/asm-um/linkage.h
  16 /usr/src/linux-headers-2.6.20-16/include/asm-v850/clinkage.h
  17 /usr/src/linux-headers-2.6.20-16/include/asm-v850/linkage.h
  18 /usr/src/linux-headers-2.6.20-16/include/asm-alpha/linkage.h
  19 /usr/src/linux-headers-2.6.20-16/include/asm-avr32/linkage.h
  20 /usr/src/linux-headers-2.6.20-16/include/linux/linkage.h
  21 /usr/src/linux-headers-2.6.20-16/include/asm-h8300/linkage.h
  22 /usr/src/linux-headers-2.6.20-16/include/asm-arm26/linkage.h
  23 /usr/src/linux-headers-2.6.20-16/include/asm-parisc/linkage.h
  24 /usr/src/linux-headers-2.6.20-16/include/asm-frv/linkage.h
  25 /usr/src/linux-headers-2.6.20-16/include/asm-m68k/linkage.h
  26 /usr/src/linux-headers-2.6.20-16/include/asm-ia64/linkage.h
  27 /usr/src/linux-headers-2.6.20-16/include/asm-cris/linkage.h
  28 /usr/src/linux-headers-2.6.20-16/include/asm-powerpc/linkage.h
  29 /usr/src/linux-headers-2.6.20-16/include/asm-arm/linkage.h
  30 /usr/src/linux-headers-2.6.20-15/include/asm-x86_64/linkage.h
  31 /usr/src/linux-headers-2.6.20-15/include/asm-s390/linkage.h
  32 /usr/src/linux-headers-2.6.20-15/include/asm-sh64/linkage.h
  33 /usr/src/linux-headers-2.6.20-15/include/asm-xtensa/linkage.h
  34 /usr/src/linux-headers-2.6.20-15/include/asm-sh/linkage.h
  35 /usr/src/linux-headers-2.6.20-15/include/asm-i386/linkage.h
  36 /usr/src/linux-headers-2.6.20-15/include/asm-sparc64/linkage.h
  37 /usr/src/linux-headers-2.6.20-15/include/asm-mips/linkage.h
  38 /usr/src/linux-headers-2.6.20-15/include/asm-m68knommu/linkage.h
  39 /usr/src/linux-headers-2.6.20-15/include/asm-m32r/linkage.h
  40 /usr/src/linux-headers-2.6.20-15/include/asm-sparc/linkage.h
  41 /usr/src/linux-headers-2.6.20-15/include/asm-um/linkage.h
  42 /usr/src/linux-headers-2.6.20-15/include/asm-v850/clinkage.h
  43 /usr/src/linux-headers-2.6.20-15/include/asm-v850/linkage.h
  44 /usr/src/linux-headers-2.6.20-15/include/asm-alpha/linkage.h
  45 /usr/src/linux-headers-2.6.20-15/include/asm-avr32/linkage.h
  46 /usr/src/linux-headers-2.6.20-15/include/linux/linkage.h
  47 /usr/src/linux-headers-2.6.20-15/include/asm-h8300/linkage.h
  48 /usr/src/linux-headers-2.6.20-15/include/asm-arm26/linkage.h
  49 /usr/src/linux-headers-2.6.20-15/include/asm-parisc/linkage.h
  50 /usr/src/linux-headers-2.6.20-15/include/asm-frv/linkage.h
  51 /usr/src/linux-headers-2.6.20-15/include/asm-m68k/linkage.h
  52 /usr/src/linux-headers-2.6.20-15/include/asm-ia64/linkage.h
  53 /usr/src/linux-headers-2.6.20-15/include/asm-cris/linkage.h
  54 /usr/src/linux-headers-2.6.20-15/include/asm-powerpc/linkage.h
  55 /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

   1 PACKAGES = ipc global param_daemon base laser robot simulator robotgui \
   2            maptools mapeditor logger logtools hmap \
   3            localize navigator vasco proccontrol \
   4            *camera* joystick pantilt gps

Makefile with camera package removed:

   1 PACKAGES = ipc global param_daemon base laser robot simulator robotgui \
   2            maptools mapeditor logger logtools hmap \
   3            localize navigator vasco proccontrol \
   4            joystick pantilt gps


make

Now you should be able to make

   1 carmen/src# make
   2 
   3        ***********
   4        E X P O R T
   5        ***********
   6 
   7 
   8        *****************
   9        L I B R A R I E S
  10        *****************
  11 
  12 
  13 ****************************************************************
  14 * Module  : IPC
  15 * Comment : Flexible communications package written by Reid Simmons
  16 ****************************************************************
  17 
  18   --> Starting make
  19   <-- Make done
  20 
  21 ****************************************************************
  22 * Module  : GLOBAL
  23 * Comment : CARMEN global functions
  24 ****************************************************************
  25 
  26   --> Starting make
  27   <-- Make done
  28 
  29 ****************************************************************
  30 * Module  : PARAMDAEMON
  31 * Comment : Module providing central repository for module parameters
  32 ****************************************************************
  33 
  34   --> Starting make
  35   <-- Make done
  36 
  37 ****************************************************************
  38 * Module  : BASE
  39 * Comment : Generic interface to all robot bases
  40 ****************************************************************
  41 
  42   --> Starting make
  43   <-- Make done
  44 
  45 ****************************************************************
  46 * Module  : LASER
  47 * Comment : The new laser module for SICK and Hokuyo lasers
  48 ****************************************************************
  49 
  50   --> Starting make
  51   <-- Make done
  52 
  53 ****************************************************************
  54 * Module  : ROBOT_DAEMON
  55 * Comment : Module integrating all robot sensors and configuration
  56 ****************************************************************
  57 
  58   --> Starting make
  59   <-- Make done
  60 
  61 ****************************************************************
  62 * Module  : SIMULATOR
  63 * Comment : simulates the readings of a robot on a map
  64 ****************************************************************
  65 
  66   --> Starting make
  67   <-- Make done
  68 
  69 ****************************************************************
  70 * Module  : ROBOTGUI
  71 * Comment : Module for displaying output of robot, lasers and sonars and odometry
  72 ****************************************************************
  73 
  74   --> Starting make
  75   <-- Make done
  76 
  77 ****************************************************************
  78 * Module  : MAPTOOLS
  79 * Comment : Tools for mapping etc.
  80 ****************************************************************
  81 
  82   --> Starting make
  83   <-- Make done
  84 
  85 ****************************************************************
  86 * Module  : MAP_EDITOR
  87 * Comment : Provides photoshop-like map editor.
  88 ****************************************************************
  89 
  90   --> Starting make
  91   <-- Make done
  92 
  93 ****************************************************************
  94 * Module  : LOGGER
  95 * Comment : Modules for logging, displaying, and playing back data.
  96 ****************************************************************
  97 
  98   --> Starting make
  99   <-- Make done
 100 
 101 ****************************************************************
 102 * Module  : LOGTOOLS
 103 * Comment : Log tools, like the famous log2pic
 104 ****************************************************************
 105 
 106   --> Starting make
 107   <-- Make done
 108 
 109 ****************************************************************
 110 * Module  : HMAP
 111 * Comment : mapserver add-on for heirarchical maps (hmaps).
 112 ****************************************************************
 113 
 114   --> Starting make
 115   <-- Make done
 116 
 117 ****************************************************************
 118 * Module  : LOCALIZE
 119 * Comment : Markov Localization Module
 120 ****************************************************************
 121 
 122   --> Starting make
 123   <-- Make done
 124 
 125 ****************************************************************
 126 * Module  : NAVIGATOR
 127 * Comment : The motion planner!
 128 ****************************************************************
 129 
 130   --> Starting make
 131   <-- Make done
 132 
 133 ****************************************************************
 134 * Module  : VASCO
 135 * Comment : Scan-matching mapper by Dirk Haehnel
 136 ****************************************************************
 137 
 138   --> Starting make
 139   <-- Make done
 140 
 141 ****************************************************************
 142 * Module  : PROCCONTROL
 143 * Comment : Process controller for CARMEN
 144 ****************************************************************
 145 
 146   --> Starting make
 147   <-- Make done
 148 
 149 ****************************************************************
 150 * Module  : JOYSTICK
 151 * Comment : Joystick library and control modules
 152 ****************************************************************
 153 
 154   --> Starting make
 155   <-- Make done
 156 
 157 ****************************************************************
 158 * Module  : PANTILT
 159 * Comment : Module for pantilt interface - direct perception
 160 ****************************************************************
 161 
 162   --> Starting make
 163   <-- Make done
 164 
 165 ****************************************************************
 166 * Module  : GPS
 167 * Comment : NMEA GPS Module
 168 ****************************************************************
 169 
 170   --> Starting make
 171   <-- Make done
 172 
 173        ***************
 174        B I N A R I E S
 175        ***************
 176 
 177 
 178 ****************************************************************
 179 * Module  : IPC
 180 * Comment : Flexible communications package written by Reid Simmons
 181 ****************************************************************
 182 
 183   --> Starting make
 184   <-- Make done
 185 
 186 ****************************************************************
 187 * Module  : GLOBAL
 188 * Comment : CARMEN global functions
 189 ****************************************************************
 190 
 191   --> Starting make
 192   <-- Make done
 193 
 194 ****************************************************************
 195 * Module  : PARAMDAEMON
 196 * Comment : Module providing central repository for module parameters
 197 ****************************************************************
 198 
 199   --> Starting make
 200   <-- Make done
 201 
 202 ****************************************************************
 203 * Module  : BASE
 204 * Comment : Generic interface to all robot bases
 205 ****************************************************************
 206 
 207   --> Starting make
 208   <-- Make done
 209 
 210 ****************************************************************
 211 * Module  : LASER
 212 * Comment : The new laser module for SICK and Hokuyo lasers
 213 ****************************************************************
 214 
 215   --> Starting make
 216   <-- Make done
 217 
 218 ****************************************************************
 219 * Module  : ROBOT_DAEMON
 220 * Comment : Module integrating all robot sensors and configuration
 221 ****************************************************************
 222 
 223   --> Starting make
 224   <-- Make done
 225 
 226 ****************************************************************
 227 * Module  : SIMULATOR
 228 * Comment : simulates the readings of a robot on a map
 229 ****************************************************************
 230 
 231   --> Starting make
 232   <-- Make done
 233 
 234 ****************************************************************
 235 * Module  : ROBOTGUI
 236 * Comment : Module for displaying output of robot, lasers and sonars and odometry
 237 ****************************************************************
 238 
 239   --> Starting make
 240   <-- Make done
 241 
 242 ****************************************************************
 243 * Module  : MAPTOOLS
 244 * Comment : Tools for mapping etc.
 245 ****************************************************************
 246 
 247   --> Starting make
 248   <-- Make done
 249 
 250 ****************************************************************
 251 * Module  : MAP_EDITOR
 252 * Comment : Provides photoshop-like map editor.
 253 ****************************************************************
 254 
 255   --> Starting make
 256   <-- Make done
 257 
 258 ****************************************************************
 259 * Module  : LOGGER
 260 * Comment : Modules for logging, displaying, and playing back data.
 261 ****************************************************************
 262 
 263   --> Starting make
 264   <-- Make done
 265 
 266 ****************************************************************
 267 * Module  : LOGTOOLS
 268 * Comment : Log tools, like the famous log2pic
 269 ****************************************************************
 270 
 271   --> Starting make
 272   <-- Make done
 273 
 274 ****************************************************************
 275 * Module  : HMAP
 276 * Comment : mapserver add-on for heirarchical maps (hmaps).
 277 ****************************************************************
 278 
 279   --> Starting make
 280   <-- Make done
 281 
 282 ****************************************************************
 283 * Module  : LOCALIZE
 284 * Comment : Markov Localization Module
 285 ****************************************************************
 286 
 287   --> Starting make
 288   <-- Make done
 289 
 290 ****************************************************************
 291 * Module  : NAVIGATOR
 292 * Comment : The motion planner!
 293 ****************************************************************
 294 
 295   --> Starting make
 296   <-- Make done
 297 
 298 ****************************************************************
 299 * Module  : VASCO
 300 * Comment : Scan-matching mapper by Dirk Haehnel
 301 ****************************************************************
 302 
 303   --> Starting make
 304   <-- Make done
 305 
 306 ****************************************************************
 307 * Module  : PROCCONTROL
 308 * Comment : Process controller for CARMEN
 309 ****************************************************************
 310 
 311   --> Starting make
 312   <-- Make done
 313 
 314 ****************************************************************
 315 * Module  : JOYSTICK
 316 * Comment : Joystick library and control modules
 317 ****************************************************************
 318 
 319   --> Starting make
 320     ---- Compiling wingman_control.c to wingman_control.o (C)
 321     ---- Linking wingman_control.o joyctrl.o to wingman_control (C)
 322     ---- Copying wingman_control to ~/carmen/bin
 323   <-- Make done
 324 
 325 ****************************************************************
 326 * Module  : PANTILT
 327 * Comment : Module for pantilt interface - direct perception
 328 ****************************************************************
 329 
 330   --> Starting make
 331     ---- Compiling io.c to io.o (C)
 332     ---- Compiling ipc.c to ipc.o (C)
 333     ---- Compiling utils.c to utils.o (C)
 334     ---- Compiling main.c to main.o (C)
 335     ---- Linking io.o ipc.o utils.o main.o to pantilt (C)
 336     ---- Compiling pantilt-test.c to pantilt-test.o (C)
 337     ---- Linking pantilt-test.o to pantilt-test (C)
 338     ---- Copying pantilt to ~/carmen/bin
 339     ---- Copying pantilt-test to ~/carmen/bin
 340   <-- Make done
 341 
 342 ****************************************************************
 343 * Module  : GPS
 344 * Comment : NMEA GPS Module
 345 ****************************************************************
 346 
 347   --> Starting make
 348     ---- Compiling gps-io.c to gps-io.o (C)
 349     ---- Compiling gps-ipc.c to gps-ipc.o (C)
 350     ---- Compiling gps-nmea.c to gps-nmea.o (C)
 351     ---- Compiling gps-main.c to gps-main.o (C)
 352     ---- Linking gps-io.o gps-ipc.o gps-nmea.o gps-main.o to gps-nmea (C)
 353     ---- Compiling gps-test.c to gps-test.o (C)
 354     ---- Linking gps-test.o gps_nmea_interface.o to gps-test (C)
 355     ---- Copying gps-nmea to ~/carmen/bin
 356   <-- Make done
 357 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:

   1 pathsearch = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH)))))
   2 
   3 CFLAGS +=  -Wall -W -Werror -D_REENTRANT
   4 CFLAGS += `getconf LFS_CFLAGS`
   5 CFLAGS += -D_LARGEFILE64_SOURCE
   6 ifdef NO_STRICT_ALIASING
   7 CFLAGS += -Wno-strict-aliasing
   8 endif
   9 
  10 ifeq (x86_64,$(PROCESSOR))
  11   CFLAGS += -fPIC
  12   CXXFLAGS += -fPIC
  13 endif
  14 
  15 CXXFLAGS += -Wall -W -Werror -D_REENTRANT
  16 
  17 ifdef CARMEN_DEBUG
  18 CFLAGS += -g
  19 CXXFLAGS += -g
  20 else
  21 CFLAGS += -O3
  22 CXXFLAGS += -O3
  23 endif

Error: asm/linkage.h: No such file or directory

I got the following error:

   1 ****************************************************************
   2 * Module  : QUICKCAM
   3 * Comment : Phillips Camera Module
   4 ****************************************************************
   5 
   6   --> Starting make
   7 In file included from ccvt_mmx.S:31:
   8 /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
   9 make[6]: *** [ccvt_mmx.o] Error 1
  10 exit: 7: Illegal number: -1
  11 make[5]: *** [libraries] Error 2
  12 make[4]: *** [all] Error 2
  13 make[3]: *** [quickcam/libquickcam.a] Error 2
  14 exit: 7: Illegal number: -1
  15 make[2]: *** [binaries] Error 2
  16 make[1]: *** [phase2] Error 2
  17 exit: 1: Illegal number: -1
  18 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:

   1 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

carmen (last edited 2011-05-19 22:33:24 by jkua)