Player Driver HowTo
07/14/07
Here are some rough directions for adding a new driver to the CVS source-tree for
Player/Stage. Although these are specific to
the "roboteq" driver they should work for other drivers. Some typographical conventions:
- "..." in a code block means lines were omitted for clarity
o.k., I have created a patch file for the changes made to the Player source tree in order to add my new Roboteq
driver. Only glitch is that the patch does not include the two new files or the new directory -- i.e.;
position/
roboteq/
roboteq.cc
Makefile.am
here is the process:
1. cvs checkout of Player source (a cvs checkout and build is its own process; check
Player
FAQs for more info)
2. drop the directory for the new driver ("roboteq" -- position2d) in "player/server/drivers/position/" with its
appropriately edited roboteq.cc (removed the extern "C" Extra stuff for building a shared object, otherwise same as
the plugin driver).
3. add a new entry in "player/configure.ac":
...
dnl Create the following Makefiles (from the Makefile.ams)
AC_OUTPUT(Makefile
...
server/drivers/position/roboteq/Makefile
...
4. add a new entry in "player/server/drivers/position/Makefile.am":
...
SUBDIRS = isense microstrain vfh ascension bumpersafe lasersafe nav200 nd roboteq
...
5. add new entries in "player/server/libplayerdrivers/driverregistry.cc":
...
#ifdef INCLUDE_ROBOTEQ
void roboteq_Register (DriverTable* table);
#endif
...
#ifdef INCLUDE_ROBOTEQ
roboteq_Register(driverTable);
#endif
...
6. add new entry in "player/acinclude.m4":
...
PLAYER_ADD_DRIVER([roboteq],[yes],[],[],[])
...
7. create "player/server/drivers/position/roboteq/Makefile.am":
AM_CPPFLAGS = -Wall -I$(top_srcdir)
noinst_LTLIBRARIES =
if INCLUDE_ROBOTEQ
noinst_LTLIBRARIES += libroboteq.la
endif
libroboteq_la_SOURCES = roboteq.cc
8. run the usual
./bootstrap
./configure
./make && make install
if you want to make sure this worked
9. from the top-level source directory (player/)
cvs diff -u > registernewdriver.patch
to make a patch file of any existing files that have changed
10. cvs did not allow me to add any files to the repository without having write-privileges:
$ cvs add roboteq
cvs [server aborted]: "add" requires write access to the repository
so I just uploaded a tar.gz of the new directory with the patch file to patch tracker -
don't know if there is a better way.