opensdk-cvs Mailing List for openSDK
Status: Beta
Brought to you by:
nuno-lopes
You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(127) |
Apr
(6) |
May
|
Jun
(4) |
Jul
(59) |
Aug
(6) |
Sep
(1) |
Oct
(7) |
Nov
(10) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(58) |
Feb
(51) |
Mar
(77) |
Apr
(34) |
May
(7) |
Jun
(5) |
Jul
(19) |
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
From: Nuno L. <nun...@us...> - 2007-08-13 11:19:32
|
Update of /cvsroot/opensdk/openSDK/servers/usarsim In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv18510 Modified Files: config.h main.cc Log Message: add a --display-fps=yes option to show the image FPS received from the USARSim image server Index: config.h =================================================================== RCS file: /cvsroot/opensdk/openSDK/servers/usarsim/config.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- config.h 14 Mar 2007 17:55:45 -0000 1.7 +++ config.h 13 Aug 2007 11:19:31 -0000 1.8 @@ -30,6 +30,8 @@ #define DEFAULT_USARSIM_ROBOT_TEAM NO_TEAM #define DEFAULT_USARSIM_BALL_LOCATION "-2,0,-0.04" +#define DEFAULT_DISPLAY_IMAGE_FPS false + #define DEBUG_USARSIM_PROTOCOL false #define BUFFER_SIZE 2048 Index: main.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/servers/usarsim/main.cc,v retrieving revision 1.26 retrieving revision 1.27 diff -u -d -r1.26 -r1.27 --- main.cc 13 Aug 2007 10:45:11 -0000 1.26 +++ main.cc 13 Aug 2007 11:19:31 -0000 1.27 @@ -20,6 +20,7 @@ */ #include <iostream> +#include <iomanip> #include <cstring> #include <cstdlib> #include <cstdio> @@ -59,6 +60,7 @@ static const char *usarsim_robot = DEFAULT_USARSIM_ROBOT; static const char *usarsim_location = DEFAULT_USARSIM_LOCATION; static const char *usarsim_ball_location = DEFAULT_USARSIM_BALL_LOCATION; +static bool display_fps = DEFAULT_DISPLAY_IMAGE_FPS; static int usarsim_socket; static int usarsim_ball_socket; @@ -301,6 +303,9 @@ byte *Cb = newimg+(IMG_SIZE*2/3); byte *Cr = newimg+IMG_SIZE/3; + struct timeval last_tv = {0}; + unsigned int num_of_images = 0; + while (true) { if (fread(buffer, 1, 1, usarsim_imgserver_socket) != 1) { cerr << "error reading image type from USARSim" << endl; @@ -340,6 +345,23 @@ return NULL; } + + if (display_fps) { + struct timeval tv; + gettimeofday(&tv, NULL); + + ++num_of_images; + + if (tv.tv_sec != last_tv.tv_sec) { + float seconds = (tv.tv_sec + tv.tv_usec / 1000000.0) - (last_tv.tv_sec + last_tv.tv_usec / 1000000.0); + float fps = num_of_images / seconds; + cout << "\r" << fixed << setprecision(2) << fps << " fps" << flush; + num_of_images = 0; + last_tv = tv; + } + } + + RGB_to_YCbCr(buffer, IMG_WIDTH, IMG_HEIGHT, Y, Cb, Cr); if (!fwrite(newimg, IMG_SIZE, 1, opensdk_socket)) { @@ -462,6 +484,9 @@ } else if (!strncmp(arg, "--usarsim-ball=", sizeof("--usarsim-ball=")-1)) { usarsim_ball_location = arg + sizeof("--usarsim-ball=")-1; + } else if (!strncmp(arg, "--display-fps=", sizeof("--display-fps=")-1)) { + display_fps = !strncmp(arg + sizeof("--display-fps=")-1, "yes", sizeof("yes")-1); + } else if (!strcmp(arg, "--help") || !strcmp(arg, "-h")) { cout << "./USARSimServer [options] <MS dir>" << endl << endl << "Available options:" << endl @@ -471,6 +496,7 @@ << "--usarsim-robot=MODEL\t\tUSARSim Robot Model. defaults to '" << DEFAULT_USARSIM_ROBOT << "'" << endl << "--usarsim-location=X,Y,Z\tCoordinates of the start position. defaults to '" << DEFAULT_USARSIM_LOCATION << "'" << endl << "--usarsim-ball=[no|location]\tIf and where to place the ball. defaults to '" << DEFAULT_USARSIM_BALL_LOCATION << "'" << endl + << "--display-fps=[no|yes]\t\tDisplay image FPS received from the image server. defaults to '" << (DEFAULT_DISPLAY_IMAGE_FPS ? "yes" : "no") << "'" << endl << endl; return 0; |
From: Nuno L. <nun...@us...> - 2007-08-13 10:45:46
|
Update of /cvsroot/opensdk/openSDK/servers/usarsim In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv5142 Modified Files: main.cc Log Message: do not compute the Y, Cb and Cr pointers in each iteration, as they dont change Index: main.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/servers/usarsim/main.cc,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- main.cc 20 May 2007 17:39:50 -0000 1.25 +++ main.cc 13 Aug 2007 10:45:11 -0000 1.26 @@ -297,6 +297,10 @@ unsigned char buffer[IMG_SIZE], newimg[IMG_SIZE]; + byte *Y = newimg; + byte *Cb = newimg+(IMG_SIZE*2/3); + byte *Cr = newimg+IMG_SIZE/3; + while (true) { if (fread(buffer, 1, 1, usarsim_imgserver_socket) != 1) { cerr << "error reading image type from USARSim" << endl; @@ -336,10 +340,6 @@ return NULL; } - byte *Y = newimg; - byte *Cb = newimg+(IMG_SIZE*2/3); - byte *Cr = newimg+IMG_SIZE/3; - RGB_to_YCbCr(buffer, IMG_WIDTH, IMG_HEIGHT, Y, Cb, Cr); if (!fwrite(newimg, IMG_SIZE, 1, opensdk_socket)) { |
From: Nuno L. <nun...@us...> - 2007-07-23 16:19:15
|
Update of /cvsroot/opensdk/website In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv32034 Modified Files: usarsim-tutorial.php Log Message: mention the OPENSDK constant Index: usarsim-tutorial.php =================================================================== RCS file: /cvsroot/opensdk/website/usarsim-tutorial.php,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- usarsim-tutorial.php 6 Apr 2007 16:03:36 -0000 1.2 +++ usarsim-tutorial.php 23 Jul 2007 15:58:03 -0000 1.3 @@ -16,6 +16,8 @@ the openSDK toolchain. This is a simple process and shouldn't require any change to the build process other than. changing the OPEN-R SDK root. If you are using the Sony style makefiles, you just need to run 'make clean' and then run 'make OPENRSDK_ROOT=/path/to/openSDK/root install'.</p> +<p>In the unlikely case you need to write specific code for openSDK, it automatically defines the OPENSDK constant +(that can be tested with '#ifdef OPENSDK').</p> <h2>2. Starting the Simulator</h2> <p>The second thing to care about is the USARSim simulator. It runs on top of Unreal Tournament 2004, so you'll need |
From: Nuno L. <nun...@us...> - 2007-07-22 18:53:16
|
Update of /cvsroot/opensdk/website In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv3029 Modified Files: index.php Added Files: open-challenge-isocrob07-abstract.pdf Log Message: also add the open challenge abstract --- NEW FILE: open-challenge-isocrob07-abstract.pdf --- (This appears to be a binary file; contents omitted.) Index: index.php =================================================================== RCS file: /cvsroot/opensdk/website/index.php,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- index.php 8 Jul 2007 19:12:49 -0000 1.14 +++ index.php 22 Jul 2007 18:53:01 -0000 1.15 @@ -39,7 +39,7 @@ <ul> <li><a href="/usarsim-tutorial.php">Tutorial: running openSDK with USARSim simulator</a></li> <li><a href="/debug-apps.php">Debugging OPEN-R applications efficiently with openSDK</a></li> -<li><a href="/open-challenge-isocrob07.pdf">Presentation of openSDK at Robocup 07 (July 2007)</a></li> +<li><a href="/open-challenge-isocrob07.pdf">Presentation of openSDK at Robocup 07 (July 2007)</a> (<a href="/open-challenge-isocrob07-abstract.pdf">Abstract</a>)</li> <li><a href="/OPENRforever.pdf">First Presentation on openSDK to explain its need and usefulness (March 2006)</a></li> </ul> |
From: Nuno L. <nun...@us...> - 2007-07-16 16:17:41
|
Update of /cvsroot/opensdk/openSDK/src In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv3535 Modified Files: antEnvBaseMsg.cc Log Message: fix typo in comment Index: antEnvBaseMsg.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/src/antEnvBaseMsg.cc,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- antEnvBaseMsg.cc 25 Apr 2007 18:46:46 -0000 1.23 +++ antEnvBaseMsg.cc 16 Jul 2007 16:17:40 -0000 1.24 @@ -863,7 +863,7 @@ } -/** translate OpenSdkEndpointInfo states to TCPEndpointError */ +/** translate OpenSdkEndpointInfo states to UDPEndpointError */ static UDPEndpointError UDP_state_error(OpenSdkEndpointInfo::State state) { switch (state) { |
From: Nuno L. <nun...@us...> - 2007-07-16 15:21:45
|
Update of /cvsroot/opensdk/openSDK/src In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv11855/src Modified Files: OPENRAPI.cc Log Message: move time/date handling functions to opensdkAPI Index: OPENRAPI.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/src/OPENRAPI.cc,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- OPENRAPI.cc 16 Jul 2007 13:05:48 -0000 1.23 +++ OPENRAPI.cc 16 Jul 2007 15:21:43 -0000 1.24 @@ -27,7 +27,6 @@ #include <cstdlib> #include <cstring> #include <cctype> -#include <ctime> #include <pthread.h> #include <boot.h> #include <utils.h> @@ -50,8 +49,6 @@ static word myFullyChargedCapacity = 55555; // in mAh static word myVoltage = 5000; // battery voltage (mV) static word myCurrent = 1000; // battery current (mA) -static time_t diffToSystem = 0; // difference to the system clock -static sbyte myTimeDif = 0; // TZ offset (in hours) static OVolumeSwitch myVolume = ovolumeSW3; //volume level static OPower motorPower = opowerOFF; static word myBootCondition = 0; @@ -66,7 +63,7 @@ \ for(map<OServiceEntry, OPowerStatus>::iterator it = powerStatusObservers.begin(); it != powerStatusObservers.end(); ++it) { \ if (it->second.property & bitmask) { \ - OPowerStatusMessage *status = new OPowerStatusMessage(myRobotStatus, myBatteryStatus, myRemainingCapacity, myTemperature, myFullyChargedCapacity, myVoltage, myCurrent, myTimeDif, myVolume); \ + OPowerStatusMessage *status = new OPowerStatusMessage(myRobotStatus, myBatteryStatus, myRemainingCapacity, myTemperature, myFullyChargedCapacity, myVoltage, myCurrent, ::GetTimeDifference(), myVolume); \ _sendMessage(it->first, status); \ } \ } \ @@ -359,7 +356,7 @@ powerStatus->fullyChargedCapacity = myFullyChargedCapacity; powerStatus->voltage = myVoltage; powerStatus->current = myCurrent; - powerStatus->timeDif = myTimeDif; + powerStatus->timeDif = ::GetTimeDifference(); powerStatus->volume = myVolume; return oSUCCESS; } @@ -473,31 +470,28 @@ OStatus OPENR::SetTime(const OTime& time) { - OTime systemTime; // the default constructor retrieves the system time - SetTimeDifference(time.GetTimeDif()); - diffToSystem = systemTime.GetClock() - time.GetClock(); - return oSUCCESS; + return ::SetTime(time); } OStatus OPENR::GetTime(OTime* time_) { - time_->Set(time(NULL) - TIME_DIFF_SYSTEM + diffToSystem, 0); + time_->Set(::getSystemTime().seconds, 0); return oSUCCESS; } OStatus OPENR::SetTimeDifference(sbyte timeDifference) { - if (timeDifference >= -12 && timeDifference <= 12) { - myTimeDif = timeDifference; + if (::SetTimeDifference(timeDifference) == oSUCCESS) { sendPowerStatusNotifications(timeDif, opsoTIME_DIF_NOTIFY_EVERY_CHANGE); return oSUCCESS; } + return oFAIL; } OStatus OPENR::GetTimeDifference(sbyte* timeDifference) { - *timeDifference = myTimeDif; + *timeDifference = ::GetTimeDifference(); return oSUCCESS; } |
From: Nuno L. <nun...@us...> - 2007-07-16 15:21:45
|
Update of /cvsroot/opensdk/openSDK/loader In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv11855/loader Modified Files: opensdkAPI.cc opensdkAPI.h Log Message: move time/date handling functions to opensdkAPI Index: opensdkAPI.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/loader/opensdkAPI.cc,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- opensdkAPI.cc 15 Jul 2007 15:06:14 -0000 1.5 +++ opensdkAPI.cc 16 Jul 2007 15:21:43 -0000 1.6 @@ -22,9 +22,11 @@ #include <opensdkAPI.h> #include <OVirtualRobotComm.h> #include <main.h> +#include <Platform.h> #include <pthread.h> #include <ctype.h> #include <glob.h> +#include <sys/time.h> static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; @@ -110,3 +112,49 @@ globfree(&globbuf); return tmp; } + + +// -------------------------- +// time/date handling +// -------------------------- + +static time_t diffToSystem = 0; // difference to the system clock +static sbyte myTimeDif = 0; // TZ offset (in hours) + + +sbyte GetTimeDifference(void) +{ + return myTimeDif; +} + + +OStatus SetTimeDifference(sbyte timeDifference) +{ + if (timeDifference >= -12 && timeDifference <= 12) { + myTimeDif = timeDifference; + return oSUCCESS; + } + + return oFAIL; +} + + +OStatus SetTime(const OTime& time) +{ + if (SetTimeDifference(time.GetTimeDif()) != oSUCCESS) { + return oFAIL; + } + + diffToSystem = time.GetClock() - (getSystemTime().seconds - diffToSystem); + + return oSUCCESS; +} + + +SystemTime getSystemTime(void) +{ + struct timeval tv; + gettimeofday(&tv, NULL); + + return SystemTime(tv.tv_sec - TIME_DIFF_SYSTEM + diffToSystem, tv.tv_usec); +} Index: opensdkAPI.h =================================================================== RCS file: /cvsroot/opensdk/openSDK/loader/opensdkAPI.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- opensdkAPI.h 15 Jul 2007 15:06:14 -0000 1.5 +++ opensdkAPI.h 16 Jul 2007 15:21:43 -0000 1.6 @@ -28,6 +28,8 @@ #include <pthread.h> #include <OPENR/OPENR.h> #include <OPENR/ODataFormats.h> +#include <SystemTime.h> +#include <OPENR/OTime.h> extern pthread_key_t perThreadKey; extern bool __in_shutdown; @@ -40,5 +42,9 @@ OStatus GetJointValue(OPrimitiveID id, OJointValue* value); OStatus GetSensorValue(OPrimitiveID id, OSensorValue* value); char* resolve_case_insensitive_path(const char *path); +sbyte GetTimeDifference(void); +OStatus SetTimeDifference(sbyte timeDifference); +OStatus SetTime(const OTime& time); +SystemTime getSystemTime(void); #endif |
From: Nuno L. <nun...@us...> - 2007-07-16 15:18:16
|
Update of /cvsroot/opensdk/openSDK/src In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv10794 Modified Files: MCOOP.cc Log Message: add SetTimeEvent() and CancelEvent() stubs so that we can run CMU's robocup code Index: MCOOP.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/src/MCOOP.cc,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- MCOOP.cc 16 Jul 2007 13:50:18 -0000 1.7 +++ MCOOP.cc 16 Jul 2007 15:18:14 -0000 1.8 @@ -56,6 +56,19 @@ return sSUCCESS; } + +sError SetTimeEvent(TimeEventInfo* info, OID dest, Selector meth, void* msg, size_t sizeOfMsg, EventID* eventID) +{ + // TODO + return sNOTIMERAVAILABLE; +} + +sError CancelEvent(EventID eventID) +{ + // TODO + return sNOTIMERAVAILABLE; +} + sError NewRegion(size_t size, void** ptr) { *ptr = malloc(size); |
From: Nuno L. <nun...@us...> - 2007-07-16 15:14:38
|
Update of /cvsroot/opensdk/openSDK/src In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv9161 Modified Files: Time_a.cc Log Message: implement the stubs Index: Time_a.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/src/Time_a.cc,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Time_a.cc 16 Jul 2007 14:28:13 -0000 1.1 +++ Time_a.cc 16 Jul 2007 15:14:37 -0000 1.2 @@ -20,17 +20,17 @@ */ #include <Time_a.h> +#include <opensdkAPI.h> RelativeTime ConvertToRelativeTime(const SystemTime& time) { - // TODO - return RelativeTime(); + SystemTime t = time - getSystemTime(); + return RelativeTime(t.seconds, t.useconds/1000); } SystemTime ConvertToSystemTime(const RelativeTime& time) { - // TODO - return SystemTime(); + return getSystemTime() + SystemTime(time.sec, time.msec * 1000); } |
From: Nuno L. <nun...@us...> - 2007-07-16 15:10:35
|
Update of /cvsroot/opensdk/openSDK In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv7474 Modified Files: Makefile .cvsignore Log Message: also clean/ignore *.exe files Index: .cvsignore =================================================================== RCS file: /cvsroot/opensdk/openSDK/.cvsignore,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- .cvsignore 17 Mar 2006 19:38:00 -0000 1.2 +++ .cvsignore 16 Jul 2007 15:10:27 -0000 1.3 @@ -1,4 +1,5 @@ *.o +*.exe OPENRloader include diff Index: Makefile =================================================================== RCS file: /cvsroot/opensdk/openSDK/Makefile,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- Makefile 27 Jun 2007 15:18:07 -0000 1.19 +++ Makefile 16 Jul 2007 15:10:27 -0000 1.20 @@ -45,6 +45,6 @@ $(CXX) $(HEADERS) -MM src/*.cc loader/*.cc > .deps clean: - rm -f *.o OPENRloader + rm -f *.o *.exe OPENRloader -include .deps |
From: Nuno L. <nun...@us...> - 2007-07-16 14:28:14
|
Update of /cvsroot/opensdk/openSDK/src In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv22261 Added Files: Time_a.cc Log Message: add more stubs --- NEW FILE: Time_a.cc --- /* * This file is part of openSDK. * * Copyright (C) 2006-2007 openSDK team * * openSDK is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2. * * openSDK is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with openSDK; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * $Id: Time_a.cc,v 1.1 2007/07/16 14:28:13 nuno-lopes Exp $ */ #include <Time_a.h> RelativeTime ConvertToRelativeTime(const SystemTime& time) { // TODO return RelativeTime(); } SystemTime ConvertToSystemTime(const RelativeTime& time) { // TODO return SystemTime(); } |
From: Nuno L. <nun...@us...> - 2007-07-16 13:50:21
|
Update of /cvsroot/opensdk/openSDK/src In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv8188 Modified Files: MCOOP.cc Log Message: use the sSUCCESS constant Index: MCOOP.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/src/MCOOP.cc,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- MCOOP.cc 14 Feb 2007 17:10:32 -0000 1.6 +++ MCOOP.cc 16 Jul 2007 13:50:18 -0000 1.7 @@ -44,7 +44,7 @@ // --------------------------- -sError GetSystemTime (SystemTime* sysTime) +sError GetSystemTime(SystemTime* sysTime) { struct timeval tv; @@ -53,25 +53,25 @@ sysTime->seconds = tv.tv_sec; sysTime->useconds = tv.tv_usec; - return 0; + return sSUCCESS; } sError NewRegion(size_t size, void** ptr) { *ptr = malloc(size); - return 0; + return sSUCCESS; } sError DeleteRegion(void* ptr) { free(ptr); - return 0; + return sSUCCESS; } sError WhoAmI(OID* oid) { oid->SetAddress((void*)MOD_DATA(OID)); - return 0; + return sSUCCESS; } sError NewSharedMemoryRegion(size_t size, MemoryProtectionInfo info, MemoryRegionID* memRegionID, void** baseAddr) @@ -85,13 +85,13 @@ // TODO: mark the memory segment as Read-only if asked to do so - return 0; + return sSUCCESS; } sError DeleteSharedMemoryRegion(MemoryRegionID memRegionID) { if (FreeMemId(memRegionID) == oSUCCESS) { - return 0; + return sSUCCESS; } else { return sINVALIDSHAREDMEMID; } @@ -105,7 +105,7 @@ // TODO - return 0; + return sSUCCESS; } sError GrowMemoryRegion(MemoryRegionID memRegionID, size_t size) @@ -122,7 +122,7 @@ return sINVALIDSHAREDMEMID; } - return 0; + return sSUCCESS; } sError ShrinkMemoryRegion(MemoryRegionID memRegionID, size_t size) @@ -133,14 +133,14 @@ sError GetPageSize(size_t *size) { *size = sysconf(_SC_PAGESIZE); - return 0; + return sSUCCESS; } sError Wait(longword nanosec) { struct timespec t = {0, nanosec}; nanosleep(&t, NULL); - return 0; + return sSUCCESS; } }// end of extern "C" |
From: Nuno L. <nun...@us...> - 2007-07-16 13:11:21
|
Update of /cvsroot/opensdk/openSDK/root/OPEN_R/bin In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv23997 Modified Files: stubgen2 Log Message: initialize the object as a global var again, as some robocup team's code rely on it (e.g. CMU) Index: stubgen2 =================================================================== RCS file: /cvsroot/opensdk/openSDK/root/OPEN_R/bin/stubgen2,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- stubgen2 24 Apr 2007 16:38:03 -0000 1.17 +++ stubgen2 16 Jul 2007 13:10:57 -0000 1.18 @@ -426,17 +426,7 @@ print OUT "#include \"$objectName.h\"\n\n"; print OUT <<stub_cc_globals; -//static $objectName Self; - -// hack to get the OObject initialized later in the game. if it was global it was initialized when calling dlopen() -// which is too soon (we need to initialize the module variables first) -#define Self getSelf() - -static $objectName& getSelf() -{ - static $objectName ${objectName}_object; - return ${objectName}_object; -} +$objectName Self; struct DesignData { void *base; |
From: Nuno L. <nun...@us...> - 2007-07-16 13:09:01
|
Update of /cvsroot/opensdk/openSDK/loader In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv23151 Modified Files: helper.cc helper.h main.cc Log Message: move the dlopen+dlsym code to module_executor(), so that we can initialize some thread-specific vars before loading the modules Index: helper.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/loader/helper.cc,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- helper.cc 26 Jan 2007 23:12:05 -0000 1.4 +++ helper.cc 16 Jul 2007 13:09:00 -0000 1.5 @@ -19,22 +19,55 @@ * $Id$ */ +#include <iostream> +#include <dlfcn.h> #include <OPENR/OSyslog.h> #include "helper.h" +using namespace std; + void* module_executor(void *arg) { BLOCK_SIGNALS() pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); executorArg* args = (executorArg*)arg; - void* (*function)(void) = args->function; if (pthread_setspecific(perThreadKey, args->threadData)) { OSYSLOG1((osyslogERROR, "pthread_setspecific() failed")); return (void*)2; } + void* (*function)(void); + + // load the module and call the entry-point function + { + const int dlopen_flags = RTLD_LAZY +#ifdef RTLD_LOCAL + | RTLD_LOCAL +#endif +#ifdef RTLD_DEEPBIND + | RTLD_DEEPBIND +#endif + ; // from dlopen_flags + + void *handle = dlopen(args->mod_name.c_str(), dlopen_flags); + // compatibility with GDB: don't delete the library file because GDB reads the file multiple times + // unlink(args->mod_name.c_str()); + + if (!handle) { + cerr << "error loading " << dlerror() << endl; + exit(0x50); + } + + function = (void* (*)(void))dlsym(handle, "__start_module"); + if (!function) { + cerr << "Critical error: Couldn't locate the entry point of " << args->mod_name << endl; + dlclose(handle); + exit(0x51); + } + } + delete args; return function(); Index: main.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/loader/main.cc,v retrieving revision 1.55 retrieving revision 1.56 diff -u -d -r1.55 -r1.56 --- main.cc 15 Jul 2007 15:18:25 -0000 1.55 +++ main.cc 16 Jul 2007 13:09:00 -0000 1.56 @@ -97,15 +97,6 @@ /** load a module to memory and create a thread for it */ static bool load_module(const char* name) { - const int dlopen_flags = RTLD_LAZY -#ifdef RTLD_LOCAL - | RTLD_LOCAL -#endif -#ifdef RTLD_DEEPBIND - | RTLD_DEEPBIND -#endif - ; // from dlopen_flags - char *path = resolve_case_insensitive_path(name); string tmp_mod_name = path; @@ -125,36 +116,19 @@ tmp_mod_name = cwd + string("/") + tmp_mod_name; } - void *handle = dlopen(tmp_mod_name.c_str(), dlopen_flags); - // compatibility with GDB: don't delete the library file because GDB reads the file multiple times - //unlink(tmp_mod_name.c_str()); - - if (!handle) { - cerr << "error loading " << dlerror() << endl; - return false; - } - - void* function = dlsym(handle, "__start_module"); - if (!function) { - cerr << "Critical error: Couldn't locate the boot function" << endl; - dlclose(handle); - return false; - } - size_t id = ThreadsList.size(); perThreadStruct* data = new perThreadStruct(id); // deleted in cleanup() - executorArg* arg = new executorArg((void* (*)(void))function, data); // deleted in helper.cc + executorArg* arg = new executorArg(tmp_mod_name, data); // deleted in helper.cc if (pthread_create(&(data->threadId), NULL, module_executor, arg)) { cerr << "Couldn't create a new thread to load the module" << endl; - dlclose(handle); return false; } cout << "Loaded module: " << name << " (thread id: " << data->threadId << "::" << id << ")" << endl; // for future cleanup - dlopenHandlers.push(handle); +// dlopenHandlers.push(handle); ThreadsList.push_back(data); return true; Index: helper.h =================================================================== RCS file: /cvsroot/opensdk/openSDK/loader/helper.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- helper.h 4 Feb 2007 18:01:23 -0000 1.4 +++ helper.h 16 Jul 2007 13:09:00 -0000 1.5 @@ -22,6 +22,7 @@ #include <ModuleData.h> #include <pthread.h> #include <signal.h> +#include <string> #define BLOCK_SIGNALS() { sigset_t set; sigfillset(&set); pthread_sigmask(SIG_SETMASK, &set, NULL); } #define BLOCK_SIGNAL(s) { sigset_t set; sigemptyset(&set); sigaddset(&set, (s)); pthread_sigmask(SIG_SETMASK, &set, NULL); } @@ -30,8 +31,8 @@ void* module_executor(void *ptr); struct executorArg { - executorArg(void* (*func)(void), perThreadStruct* data) : function(func), threadData(data) {} + executorArg(std::string name, perThreadStruct* data) : mod_name(name), threadData(data) {} - void* (*function)(void); + std::string mod_name; perThreadStruct* threadData; }; |
From: Nuno L. <nun...@us...> - 2007-07-16 13:05:51
|
Update of /cvsroot/opensdk/openSDK/src In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21922 Modified Files: OPENRAPI.cc Log Message: fix data allocation size in NewSoundVectorData() use resolve_case_insensitive_path() on paths Index: OPENRAPI.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/src/OPENRAPI.cc,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- OPENRAPI.cc 8 Mar 2007 22:34:19 -0000 1.22 +++ OPENRAPI.cc 16 Jul 2007 13:05:48 -0000 1.23 @@ -154,7 +154,7 @@ OStatus OPENR::NewSoundVectorData(size_t numSounds, size_t dataSize, MemoryRegionID* memID, OSoundVectorData** baseAddr) { - const size_t size = sizeof(OSoundVectorData) + (sizeof(OSoundInfo) + sizeof(byte))*numSounds; + const size_t size = sizeof(OSoundVectorData) + (sizeof(OSoundInfo) + dataSize)*numSounds; OSoundVectorData *data = *baseAddr = (OSoundVectorData*)malloc(size); if (!data) { @@ -168,7 +168,7 @@ for (size_t i=0; i < numSounds; ++i) { OSoundInfo *info = data->GetInfo(i); - info->dataOffset = sizeof(ODataVectorInfo) + sizeof(OSoundInfo)*numSounds + sizeof(byte)*i; + info->dataOffset = sizeof(ODataVectorInfo) + sizeof(OSoundInfo)*numSounds + dataSize*i; } return oSUCCESS; @@ -397,7 +397,10 @@ return oFAIL; } - fstream DB("MS/OPEN-R/MW/CONF/DESIGNDB.CFG"); + char *path = resolve_case_insensitive_path("MS/OPEN-R/MW/CONF/DESIGNDB.CFG"); + fstream DB(path); + free(path); + if (!DB) { return oFAIL; } |
From: Nuno L. <nun...@us...> - 2007-07-15 15:32:09
|
Update of /cvsroot/opensdk/openSDK/loader In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv9062 Modified Files: OVirtualRobotComm.cc Log Message: sleep(2) when there's no connection to the image and sensors servers to save cpu power Index: OVirtualRobotComm.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/loader/OVirtualRobotComm.cc,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- OVirtualRobotComm.cc 23 May 2007 14:54:21 -0000 1.29 +++ OVirtualRobotComm.cc 15 Jul 2007 15:32:07 -0000 1.30 @@ -319,7 +319,7 @@ while (true) { if (!*fp) { - opensdk_yield(); + sleep(2); continue; } @@ -475,7 +475,7 @@ while (true) { if (!*fp) { - opensdk_yield(); + sleep(2); continue; } |
From: Nuno L. <nun...@us...> - 2007-07-15 15:18:34
|
Update of /cvsroot/opensdk/openSDK/loader In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv3334 Modified Files: main.cc Log Message: use resolve_case_insensitive_path() on file paths Index: main.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/loader/main.cc,v retrieving revision 1.54 retrieving revision 1.55 diff -u -d -r1.54 -r1.55 --- main.cc 25 Apr 2007 18:46:45 -0000 1.54 +++ main.cc 15 Jul 2007 15:18:25 -0000 1.55 @@ -106,10 +106,14 @@ #endif ; // from dlopen_flags - string tmp_mod_name = name; + char *path = resolve_case_insensitive_path(name); + + string tmp_mod_name = path; tmp_mod_name += ".tmp"; - int ret = gunzip_module(name, tmp_mod_name.c_str()); + int ret = gunzip_module(path, tmp_mod_name.c_str()); + free(path); + if (ret != Z_OK) { cerr << "Couldn't gunzip the module properly. Error " << ret << ": " << zError(ret) << endl; return false; @@ -160,7 +164,10 @@ /** parse the OBJECT.CFG file and load the necessary modules */ static bool parse_object_cfg(void) { - fstream objectsFile("MS/OPEN-R/MW/CONF/OBJECT.CFG"); + char *path = resolve_case_insensitive_path("MS/OPEN-R/MW/CONF/OBJECT.CFG"); + fstream objectsFile(path); + free(path); + if (!objectsFile) { cerr << "Couldn't open the OBJECT.CFG file" << endl; return false; @@ -182,7 +189,10 @@ /** parse the CONNECT.CFG file fill in the DB with the information extracted */ static bool parse_connect_cfg(void) { - fstream file("MS/OPEN-R/MW/CONF/CONNECT.CFG"); + char *path = resolve_case_insensitive_path("MS/OPEN-R/MW/CONF/CONNECT.CFG"); + fstream file(path); + free(path); + if (!file) { // the file is optional return true; |
From: Nuno L. <nun...@us...> - 2007-07-15 15:06:34
|
Update of /cvsroot/opensdk/openSDK/src In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv30504/src Modified Files: libc.cc Log Message: add a new function: resolve_case_insensitive_path, and use it in the fopen/open wrappers Index: libc.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/src/libc.cc,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- libc.cc 25 Mar 2007 12:13:12 -0000 1.2 +++ libc.cc 15 Jul 2007 15:06:13 -0000 1.3 @@ -39,7 +39,12 @@ FILE *__wrap_fopen(const char *path, const char *mode) { path = (*path == '/' ? (path+1) : path); - return fopen(path, mode); + char *newpath = resolve_case_insensitive_path(path); + + FILE *fp = fopen(newpath, mode); + + free(newpath); + return fp; } @@ -47,7 +52,12 @@ int __wrap_open(const char *path, int flags, mode_t mode) { path = (*path == '/' ? (path+1) : path); - return open(path, flags, mode); + char *newpath = resolve_case_insensitive_path(path); + + int fd = open(newpath, flags, mode); + + free(newpath); + return fd; } } |
From: Nuno L. <nun...@us...> - 2007-07-15 15:06:29
|
Update of /cvsroot/opensdk/openSDK/loader In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv30504/loader Modified Files: opensdkAPI.cc opensdkAPI.h Log Message: add a new function: resolve_case_insensitive_path, and use it in the fopen/open wrappers Index: opensdkAPI.cc =================================================================== RCS file: /cvsroot/opensdk/openSDK/loader/opensdkAPI.cc,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- opensdkAPI.cc 8 Mar 2007 22:34:19 -0000 1.4 +++ opensdkAPI.cc 15 Jul 2007 15:06:14 -0000 1.5 @@ -23,6 +23,8 @@ #include <OVirtualRobotComm.h> #include <main.h> #include <pthread.h> +#include <ctype.h> +#include <glob.h> static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; @@ -59,6 +61,7 @@ return oSUCCESS; } + OStatus GetJointValue(OPrimitiveID id, OJointValue* value) { memset(value, 0, sizeof(OJointValue)); @@ -66,9 +69,44 @@ return oSUCCESS; } + OStatus GetSensorValue(OPrimitiveID id, OSensorValue* value) { memset(value, 0, sizeof(OSensorValue)); value->value = VirtualRobotComm_get_sensor_reading(id); return oSUCCESS; } + + +/** resolve a case insensitive path. returns a dinamically allocated string, which you are responsible to free() */ +char* resolve_case_insensitive_path(const char *path) +{ + char *pattern = (char*)malloc(strlen(path) * 4 + 1); // allocate enough space for the worst case + char *tmp = pattern; + + while (*path) { + if (!isalpha(*path)) { + *tmp++ = *path++; + continue; + } + + *tmp++ = '['; + *tmp++ = tolower(*path); + *tmp++ = toupper(*path); + *tmp++ = ']'; + + ++path; + } + + *tmp = '\0'; + + glob_t globbuf; + if (glob(pattern, GLOB_NOSORT, NULL, &globbuf) == 0) { + tmp = strdup(globbuf.gl_pathv[0]); + } else { + tmp = strdup(path); + } + + globfree(&globbuf); + return tmp; +} Index: opensdkAPI.h =================================================================== RCS file: /cvsroot/opensdk/openSDK/loader/opensdkAPI.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- opensdkAPI.h 8 Mar 2007 22:34:19 -0000 1.4 +++ opensdkAPI.h 15 Jul 2007 15:06:14 -0000 1.5 @@ -39,5 +39,6 @@ OStatus _sendMessage(OServiceEntry entry, void *msg); OStatus GetJointValue(OPrimitiveID id, OJointValue* value); OStatus GetSensorValue(OPrimitiveID id, OSensorValue* value); +char* resolve_case_insensitive_path(const char *path); #endif |
From: Nuno L. <nun...@us...> - 2007-07-08 19:12:52
|
Update of /cvsroot/opensdk/website In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv22310 Modified Files: index.php Added Files: open-challenge-isocrob07.odp open-challenge-isocrob07.pdf Log Message: add robocup07 presentation --- NEW FILE: open-challenge-isocrob07.odp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: open-challenge-isocrob07.pdf --- (This appears to be a binary file; contents omitted.) Index: index.php =================================================================== RCS file: /cvsroot/opensdk/website/index.php,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- index.php 12 May 2007 10:35:09 -0000 1.13 +++ index.php 8 Jul 2007 19:12:49 -0000 1.14 @@ -39,6 +39,7 @@ <ul> <li><a href="/usarsim-tutorial.php">Tutorial: running openSDK with USARSim simulator</a></li> <li><a href="/debug-apps.php">Debugging OPEN-R applications efficiently with openSDK</a></li> +<li><a href="/open-challenge-isocrob07.pdf">Presentation of openSDK at Robocup 07 (July 2007)</a></li> <li><a href="/OPENRforever.pdf">First Presentation on openSDK to explain its need and usefulness (March 2006)</a></li> </ul> |
From: Nuno L. <nun...@us...> - 2007-07-06 14:33:37
|
Update of /cvsroot/opensdk/openSDK/root/bin In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv13932 Modified Files: mipsel-linux-g++ mipsel-linux-gcc Log Message: add -DOPENSDK to the compiler flags Index: mipsel-linux-gcc =================================================================== RCS file: /cvsroot/opensdk/openSDK/root/bin/mipsel-linux-gcc,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- mipsel-linux-gcc 22 Feb 2007 16:18:38 -0000 1.1 +++ mipsel-linux-gcc 6 Jul 2007 14:33:38 -0000 1.2 @@ -1,2 +1,2 @@ #!/bin/sh -gcc -fPIC $@ +gcc -fPIC -DOPENSDK $@ Index: mipsel-linux-g++ =================================================================== RCS file: /cvsroot/opensdk/openSDK/root/bin/mipsel-linux-g++,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- mipsel-linux-g++ 22 Feb 2007 16:18:38 -0000 1.1 +++ mipsel-linux-g++ 6 Jul 2007 14:33:38 -0000 1.2 @@ -1,2 +1,2 @@ #!/bin/sh -g++ -fPIC $@ +g++ -fPIC -DOPENSDK $@ |
From: Nuno L. <nun...@us...> - 2007-06-27 15:20:37
|
Update of /cvsroot/opensdk/openSDK In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv8340 Modified Files: TODO Log Message: update Index: TODO =================================================================== RCS file: /cvsroot/opensdk/openSDK/TODO,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- TODO 27 Jun 2007 15:18:07 -0000 1.4 +++ TODO 27 Jun 2007 15:20:37 -0000 1.5 @@ -3,9 +3,10 @@ Below are the relevant tasks for the (near) future. if you want to work on one, let us know, to avoid duplicate work. + * support multiple robots in the USARSim connector * Implement the global variables table (reentrant) with a hooks system (to enable the - servers to register to receive notifications of changed values) (not assigned) + servers to register to receive notifications of changed values) (needs more though, not assigned) * Implement the OVirtualRobotComm controller. this is responsible to send the commands to the servers (working, Nuno) @@ -20,7 +21,7 @@ * Implement a test framework. We need something to test every single detail of the API (not assigned) - * Lower priority: add compatibility with older AIBO models + * Lower priority: add compatibility with older AIBO models (some ERS-200 support already in place) * Write extensive documentation of the API with nice examples (possibly in XML DocBook) (not assigned) |
From: Nuno L. <nun...@us...> - 2007-06-27 15:18:09
|
Update of /cvsroot/opensdk/openSDK In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv7331 Modified Files: Makefile TODO Log Message: revert last commit (it was not supposed to go right now) Index: Makefile =================================================================== RCS file: /cvsroot/opensdk/openSDK/Makefile,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- Makefile 27 Jun 2007 15:11:53 -0000 1.18 +++ Makefile 27 Jun 2007 15:18:07 -0000 1.19 @@ -2,7 +2,6 @@ TARGET=ERS7 CXX=g++ CXXFLAGS=-Wall -g -O2 -LDFLAGS=-Wl,--export-dynamic HEADERS=-Isrc -Iloader -Iinclude -Iinclude/MCOOP -Iinclude/R4000 -D$(TARGET) HEADERS+=-D_REENTRANT -D_THREAD_SAFE @@ -19,7 +18,7 @@ all: $(LIB) OPENRloader OPENRloader: $(OBJS) $(OBJS_LOADER) - $(CXX) $(LDFLAGS) -ldl -lpthread -lz -o $@ $^ + $(CXX) -rdynamic -ldl -lpthread -lz -o $@ $^ %.o:%.cc $(CXX) $(CXXFLAGS) $(HEADERS) -c $< Index: TODO =================================================================== RCS file: /cvsroot/opensdk/openSDK/TODO,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- TODO 14 Feb 2007 18:27:09 -0000 1.3 +++ TODO 27 Jun 2007 15:18:07 -0000 1.4 @@ -4,9 +4,6 @@ to avoid duplicate work. - * Implement messaging passing between modules. We already have them hanging on a semaphore. - now we just need to register the connections IDs, etc.. (implemented, Nuno) - * Implement the global variables table (reentrant) with a hooks system (to enable the servers to register to receive notifications of changed values) (not assigned) |
From: Nuno L. <nun...@us...> - 2007-06-27 15:11:59
|
Update of /cvsroot/opensdk/openSDK In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv4401 Modified Files: Makefile TECH_NOTES Log Message: point people to the website (currently more up-to-date) Index: Makefile =================================================================== RCS file: /cvsroot/opensdk/openSDK/Makefile,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- Makefile 17 Mar 2007 11:30:48 -0000 1.17 +++ Makefile 27 Jun 2007 15:11:53 -0000 1.18 @@ -2,6 +2,7 @@ TARGET=ERS7 CXX=g++ CXXFLAGS=-Wall -g -O2 +LDFLAGS=-Wl,--export-dynamic HEADERS=-Isrc -Iloader -Iinclude -Iinclude/MCOOP -Iinclude/R4000 -D$(TARGET) HEADERS+=-D_REENTRANT -D_THREAD_SAFE @@ -18,7 +19,7 @@ all: $(LIB) OPENRloader OPENRloader: $(OBJS) $(OBJS_LOADER) - $(CXX) -rdynamic -ldl -lpthread -lz -o $@ $^ + $(CXX) $(LDFLAGS) -ldl -lpthread -lz -o $@ $^ %.o:%.cc $(CXX) $(CXXFLAGS) $(HEADERS) -c $< Index: TECH_NOTES =================================================================== RCS file: /cvsroot/opensdk/openSDK/TECH_NOTES,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- TECH_NOTES 29 Mar 2006 22:46:54 -0000 1.2 +++ TECH_NOTES 27 Jun 2007 15:11:53 -0000 1.3 @@ -25,11 +25,6 @@ To stop hit control-C. it will call the shutdown methods automatically. -Messaging passing -================= -not implemented yet.. - - Problems ======== This program is rather complex and current linuxthreads implementation fails to @@ -37,4 +32,9 @@ the high-performance linux Pthreads implementation (default since Glibc 2.4). +More Information +================ +More info may be available at: http://opensdk.sf.net/technotes.php + + $Id$ |
From: Nuno L. <nun...@us...> - 2007-06-27 15:02:16
|
Update of /cvsroot/opensdk/website In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv1004 Modified Files: technotes.php Log Message: add 'multiple robots' section Index: technotes.php =================================================================== RCS file: /cvsroot/opensdk/website/technotes.php,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- technotes.php 6 Apr 2007 12:37:18 -0000 1.11 +++ technotes.php 27 Jun 2007 15:02:10 -0000 1.12 @@ -108,6 +108,17 @@ relies on Unix specific features that aren't available on Windows. For example, we would need to port the DSO handling to DLLs. <a href="http://cygwin.com">Cygwin</a> doesn't work at this moment.</p> +<h2>Multiple Robots</h2> +<p>openSDK supports running multiple robots on the same computer (provided you have enough memory and enough CPU +power - a multi-core CPU is recommended). However, you need to pay attention to some details that can create +incompatibilities between robots, like the TCP/UDP port binding (different robots should bind to different ports). +</p> +<p>Our <a href="http://usarsim.sf.net">USARSim</a> connector still doesn't support multiple robots though, because +we cannot launch multiple image servers on the same computer. The solution is to grab a MultiView image and split it +into robot views (one per robot). More information in the +<a href="http://sourceforge.net/forum/message.php?msg_id=4327711">USARSim forum</a>. +</p> + <p> </p> <p style="font-size:smaller">AIBO and OPEN-R are a trademark or a registered trademark of Sony Corporation.</p> </body> |