From: <he...@us...> - 2009-01-22 17:16:03
|
Revision: 33 http://simspark.svn.sourceforge.net/simspark/?rev=33&view=rev Author: hedayat Date: 2009-01-22 17:15:41 +0000 (Thu, 22 Jan 2009) Log Message: ----------- Committing simspark-utilities NOTICE: 1. there is no autoconf support in this package. 2. samplesim and monitorspark currently do not work. They need work, I just committed them to make the structure available; also anybody interested can work on them! Added Paths: ----------- trunk/simspark-utilities/ trunk/simspark-utilities/AUTHORS trunk/simspark-utilities/CMakeLists.txt trunk/simspark-utilities/COPYING trunk/simspark-utilities/ChangeLog trunk/simspark-utilities/README trunk/simspark-utilities/cmake/ trunk/simspark-utilities/cmake/FindSpark.cmake trunk/simspark-utilities/data/ trunk/simspark-utilities/data/CMakeLists.txt trunk/simspark-utilities/data/bindings.rb trunk/simspark-utilities/data/rsg/ trunk/simspark-utilities/data/rsg/agent/ trunk/simspark-utilities/data/rsg/agent/ball.rsg trunk/simspark-utilities/data/rsg/agent/buggy.rsg trunk/simspark-utilities/data/rsg/agent/leggedsphere.rsg trunk/simspark-utilities/data/rsg/agent/samplesim.rsg trunk/simspark-utilities/gendot/ trunk/simspark-utilities/gendot/CMakeLists.txt trunk/simspark-utilities/gendot/gendot.rb trunk/simspark-utilities/gendot/include.dot trunk/simspark-utilities/gendot/main.cpp trunk/simspark-utilities/monitorspark/ trunk/simspark-utilities/monitorspark/CMakeLists.txt trunk/simspark-utilities/monitorspark/main.cpp trunk/simspark-utilities/monitorspark/monitorspark.rb trunk/simspark-utilities/sampleagent/ trunk/simspark-utilities/sampleagent/CMakeLists.txt trunk/simspark-utilities/sampleagent/behavior.h trunk/simspark-utilities/sampleagent/carbehavior.cpp trunk/simspark-utilities/sampleagent/carbehavior.h trunk/simspark-utilities/sampleagent/leggedspherebehavior.cpp trunk/simspark-utilities/sampleagent/leggedspherebehavior.h trunk/simspark-utilities/sampleagent/main.cpp trunk/simspark-utilities/samplesim/ trunk/simspark-utilities/samplesim/CMakeLists.txt trunk/simspark-utilities/samplesim/main.cpp trunk/simspark-utilities/samplesim/samplesim.rb Added: trunk/simspark-utilities/CMakeLists.txt =================================================================== --- trunk/simspark-utilities/CMakeLists.txt (rev 0) +++ trunk/simspark-utilities/CMakeLists.txt 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,48 @@ +cmake_minimum_required(VERSION 2.6) + +project(simspark-utilities CXX C) +set(PACKAGE_VERSION "0.1") + +########## check for headerfiles/libraries ########## +set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/) +find_package(Spark REQUIRED) +find_package(Boost REQUIRED) + +########## add extra flags ########## +set(CMAKE_BUILD_TYPE Debug CACHE STRING "Release or Debug build type") +add_definitions(-DHAVE_CONFIG_H) +if (UNIX) + set(CMAKE_CXX_FLAGS "-Wno-deprecated") + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -W -Wall -Woverloaded-virtual") + set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG") +endif (UNIX) + +set(BINDIR "bin" CACHE PATH "The directory to install binaries into.") +set(LIBDIR "lib" CACHE PATH "The directory to install libraries into.") +set(DATADIR "share" CACHE PATH "The directory to install data files into.") +set(INCLUDEDIR "include" CACHE PATH "The directory to install includes into.") +set(RPATH_DIRECTORIES ${SPARK_LIB_DIR}) +set(CMAKE_SHARED_MODULE_PREFIX "") + +mark_as_advanced(BINDIR LIBDIR DATADIR INCLUDEDIR) + +########## add subdirectories ############ +add_subdirectory(data) +add_subdirectory(gendot) +add_subdirectory(monitorspark) +add_subdirectory(samplesim) +add_subdirectory(sampleagent) + + +########### install files ############### +install(FILES AUTHORS ChangeLog COPYING README + DESTINATION ${DATADIR}/doc/${CMAKE_PROJECT_NAME}) + +########### CPack section ############# +set(CPACK_SOURCE_GENERATOR TGZ) +set(CPACK_SOURCE_IGNORE_FILES /CVS/ /[.]svn/ /.*[.]o /[.].*) +set(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION}) +set(CPACK_SOURCE_PACKAGE_FILE_NAME + ${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}) + +include(CPack) Property changes on: trunk/simspark-utilities/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/simspark-utilities/COPYING =================================================================== --- trunk/simspark-utilities/COPYING (rev 0) +++ trunk/simspark-utilities/COPYING 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program 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; either version 2 of the License, or + (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. Added: trunk/simspark-utilities/cmake/FindSpark.cmake =================================================================== --- trunk/simspark-utilities/cmake/FindSpark.cmake (rev 0) +++ trunk/simspark-utilities/cmake/FindSpark.cmake 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,145 @@ +# - Find Spark +# Find the native Spark includes and libraries +# +# SPARK_INCLUDE_DIR - where to find spark include files +# SPARK_LIB_DIR - where to find spark libraries +# SPARK_LIBRARIES - List of libraries when using spark. +# SPARK_FOUND - True if spark found. +# SALT_INCLUDE_DIR - where to find salt include files +# SALT_LIBRARIES - List of libraries when using salt. +# SALT_FOUND - True if salt found. +# ZEITGEIST_INCLUDE_DIR - where to find zeitgeist include files +# ZEITGEIST_LIBRARIES - List of libraries when using zeitgeist. +# ZEITGEIST_FOUND - True if zeitgeist found. +# OXYGEN_INCLUDE_DIR - where to find oxygen include files +# OXYGEN_LIBRARIES - List of libraries when using oxygen. +# OXYGEN_FOUND - True if oxygen found. +# KEROSIN_INCLUDE_DIR - where to find kerosin include files +# KEROSIN_LIBRARIES - List of libraries when using kerosin. +# KEROSIN_FOUND - True if kerosin found. + +# Spark section +IF (SPARK_INCLUDE_DIR) + # Already in cache, be silent + SET(SPARK_FIND_QUIETLY TRUE) +ENDIF (SPARK_INCLUDE_DIR) + +FIND_PATH(SPARK_INCLUDE_DIR spark/spark.h PATH_SUFFIXES simspark) + +SET(SPARK_NAMES spark spark_debug) +FIND_LIBRARY(SPARK_LIBRARY NAMES ${SPARK_NAMES} PATH_SUFFIXES simspark ) +GET_FILENAME_COMPONENT(SPARK_LIB_DIR ${SPARK_LIBRARY} PATH) + +# handle the QUIETLY and REQUIRED arguments and set SPARK_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SPARK DEFAULT_MSG SPARK_LIBRARY + SPARK_INCLUDE_DIR) + +IF(SPARK_FOUND) + SET( SPARK_LIBRARIES ${SPARK_LIBRARY} ) +ELSE(SPARK_FOUND) + SET( SPARK_LIBRARIES ) +ENDIF(SPARK_FOUND) + +MARK_AS_ADVANCED( SPARK_LIBRARY SPARK_INCLUDE_DIR ) + +# Salt section +IF (SALT_INCLUDE_DIR) + # Already in cache, be silent + SET(SALT_FIND_QUIETLY TRUE) +ENDIF (SALT_INCLUDE_DIR) + +FIND_PATH(SALT_INCLUDE_DIR salt/salt.h PATH_SUFFIXES simspark) + +SET(SALT_NAMES salt salt_debug) +FIND_LIBRARY(SALT_LIBRARY NAMES ${SALT_NAMES} PATH_SUFFIXES simspark ) + +# handle the QUIETLY and REQUIRED arguments and set SALT_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SALT DEFAULT_MSG SALT_LIBRARY + SALT_INCLUDE_DIR) + +IF(SALT_FOUND) + SET( SALT_LIBRARIES ${SALT_LIBRARY} ) +ELSE(SALT_FOUND) + SET( SALT_LIBRARIES ) +ENDIF(SALT_FOUND) + +MARK_AS_ADVANCED( SALT_LIBRARY SALT_INCLUDE_DIR ) + +# Zeitgeist section +IF (ZEITGEIST_INCLUDE_DIR) + # Already in cache, be silent + SET(ZEITGEIST_FIND_QUIETLY TRUE) +ENDIF (ZEITGEIST_INCLUDE_DIR) + +FIND_PATH(ZEITGEIST_INCLUDE_DIR zeitgeist/zeitgeist.h PATH_SUFFIXES simspark) + +SET(ZEITGEIST_NAMES zeitgeist zeitgeist_debug) +FIND_LIBRARY(ZEITGEIST_LIBRARY NAMES ${ZEITGEIST_NAMES} PATH_SUFFIXES simspark) + +# handle the QUIETLY and REQUIRED arguments and set ZEITGEIST_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZEITGEIST DEFAULT_MSG ZEITGEIST_LIBRARY + ZEITGEIST_INCLUDE_DIR) + +IF(ZEITGEIST_FOUND) + SET( ZEITGEIST_LIBRARIES ${ZEITGEIST_LIBRARY} ) +ELSE(ZEITGEIST_FOUND) + SET( ZEITGEIST_LIBRARIES ) +ENDIF(ZEITGEIST_FOUND) + +MARK_AS_ADVANCED( ZEITGEIST_LIBRARY ZEITGEIST_INCLUDE_DIR ) + +# Oxygen section +IF (OXYGEN_INCLUDE_DIR) + # Already in cache, be silent + SET(OXYGEN_FIND_QUIETLY TRUE) +ENDIF (OXYGEN_INCLUDE_DIR) + +FIND_PATH(OXYGEN_INCLUDE_DIR oxygen/oxygen.h PATH_SUFFIXES simspark) + +SET(OXYGEN_NAMES oxygen oxygen_debug) +FIND_LIBRARY(OXYGEN_LIBRARY NAMES ${OXYGEN_NAMES} PATH_SUFFIXES simspark ) + +# handle the QUIETLY and REQUIRED arguments and set OXYGEN_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(OXYGEN DEFAULT_MSG OXYGEN_LIBRARY + OXYGEN_INCLUDE_DIR) + +IF(OXYGEN_FOUND) + SET( OXYGEN_LIBRARIES ${OXYGEN_LIBRARY} ) +ELSE(OXYGEN_FOUND) + SET( OXYGEN_LIBRARIES ) +ENDIF(OXYGEN_FOUND) + +MARK_AS_ADVANCED( OXYGEN_LIBRARY OXYGEN_INCLUDE_DIR ) + +# Kerosin section +IF (KEROSIN_INCLUDE_DIR) + # Already in cache, be silent + SET(KEROSIN_FIND_QUIETLY TRUE) +ENDIF (KEROSIN_INCLUDE_DIR) + +FIND_PATH(KEROSIN_INCLUDE_DIR kerosin/kerosin.h PATH_SUFFIXES simspark) + +SET(KEROSIN_NAMES kerosin kerosin_debug) +FIND_LIBRARY(KEROSIN_LIBRARY NAMES ${KEROSIN_NAMES} PATH_SUFFIXES simspark ) + +# handle the QUIETLY and REQUIRED arguments and set KEROSIN_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(KEROSIN DEFAULT_MSG KEROSIN_LIBRARY + KEROSIN_INCLUDE_DIR) + +IF(KEROSIN_FOUND) + SET( KEROSIN_LIBRARIES ${KEROSIN_LIBRARY} ) +ELSE(KEROSIN_FOUND) + SET( KEROSIN_LIBRARIES ) +ENDIF(KEROSIN_FOUND) + +MARK_AS_ADVANCED( KEROSIN_LIBRARY KEROSIN_INCLUDE_DIR ) Added: trunk/simspark-utilities/data/CMakeLists.txt =================================================================== --- trunk/simspark-utilities/data/CMakeLists.txt (rev 0) +++ trunk/simspark-utilities/data/CMakeLists.txt 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,5 @@ +########### install files ############### + +install(DIRECTORY rsg ./ + DESTINATION ${DATADIR}/${CMAKE_PROJECT_NAME} + PATTERN ".svn" EXCLUDE) Property changes on: trunk/simspark-utilities/data/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/simspark-utilities/data/bindings.rb =================================================================== --- trunk/simspark-utilities/data/bindings.rb (rev 0) +++ trunk/simspark-utilities/data/bindings.rb 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,30 @@ +# +# bindings.rb sets up a mapping from input constants used by the +# inputserver to application defined command constants. +# +inputServer = get('/sys/server/input'); + +if (inputServer == nil) + print "(bindings.rb) no InputServer present\n"; +else + print "(bindings.rb) setting up bindings\n"; + + inputServer.bindCommand('axist', Command.Timer); + inputServer.bindCommand('axisx', Command.MouseX); + inputServer.bindCommand('axisy', Command.MouseY); + inputServer.bindCommand('mouse_left', Command.Mouselook); + inputServer.bindCommand('mouse_right',Command.Up); + inputServer.bindCommand('pagedown', Command.Down); + inputServer.bindCommand('kp_minus', Command.Down); + inputServer.bindCommand('kp_plus',Command.Up); + inputServer.bindCommand('pageup', Command.Up); + inputServer.bindCommand('q', Command.Quit) + inputServer.bindCommand('a', Command.Left) + inputServer.bindCommand('left', Command.Left) + inputServer.bindCommand('d', Command.Right) + inputServer.bindCommand('right', Command.Right) + inputServer.bindCommand('w', Command.Forward) + inputServer.bindCommand('up', Command.Forward) + inputServer.bindCommand('s', Command.Backward) + inputServer.bindCommand('down', Command.Backward) +end Added: trunk/simspark-utilities/data/rsg/agent/ball.rsg =================================================================== --- trunk/simspark-utilities/data/rsg/agent/ball.rsg (rev 0) +++ trunk/simspark-utilities/data/rsg/agent/ball.rsg 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,56 @@ +; -*- mode: lisp; -*- + +(RSG 0 1) +( + (def $Radius (eval Soccer.BallRadius)) + (def $Material matOrange) + (def $Mass (eval Soccer.BallMass)) + + (nd Ball + (setLocalPos 0.0 0.0 $Radius) + (setName Ball) + + (nd StaticMesh + (load 'models/soccerball.obj') + (setScale $Radius $Radius $Radius) + ) + + (nd Body + (setName physics) + + (setSphereTotal $Mass $Radius) + (nd DragController + (setAngularDrag 0.00005) + (setLinearDrag 0.01) + ) + ) + + (nd SphereCollider + (setName geometry) + (setRadius $Radius) + + (nd RecorderHandler + (setName recorder) + ) + + (nd ContactJointHandler + (setContactBounceMode true) + (setContactBounceValue 0.8) + (setMinBounceVel 0.8) + + (setContactSlipMode true) + (setContactSlip 0.6) + + (setContactSoftERPMode true) + (setContactSoftERP 0.5) + + (setContactSoftCFMMode true) + (setContactSoftCFM 0.05) + ) + ) + + (nd ObjectState + (setPerceptName B) + ) + ) +) Added: trunk/simspark-utilities/data/rsg/agent/buggy.rsg =================================================================== --- trunk/simspark-utilities/data/rsg/agent/buggy.rsg (rev 0) +++ trunk/simspark-utilities/data/rsg/agent/buggy.rsg 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,105 @@ +; -*- mode: lisp; -*- + +; +; this file constructs a simple buggy, the connected agent controlls +; one joint motor +; + +(RSG 0 1) +( + ; install a perceptor to receive the current simulation time + (nd TimePerceptor) + + ; create the char chassis + (nd Transform + (setName chassis) + (setLocalPos 0 0 0.5) + (importScene rsg/boxspheres/box.rsg 1 3 0.8 10 matRed) + + (nd Transform + (setLocalPos 0 1.3 0.55) + (nd Box + (setMaterial matBlue) + (setExtents 1 0.1 0.3) + ) + ) + ) + + ; install the left back tire, this tire is used to accelerate + (nd Transform + (setName leftBack) + (setLocalPos -0.5 -1.5 0) + (importScene rsg/boxspheres/sphere.rsg 0.4 2 matWhite) + (nd Transform + (setLocalRotation 0 180 0) + + ; install the joint + (nd Hinge2Joint + (attach ../../sphereBody ../../../chassis/boxBody) + (setAnchor 0 0 0) + + ; enable the joint motor + (setMaxMotorForce 1 4000) + + ; install a perceptor to measure the tire movement + (nd Hinge2Perceptor + (setName lb) + ) + + ; install an effector to control the joint motor + (nd Hinge2Effector) + ) + + ; add some boxes to visualize the tire spin + (nd Box + (setExtents 1 0.1 0.1) + (setMaterial matBlue) + ) + + (nd Box + (setExtents 0.1 1 0.1) + (setMaterial matRed) + ) + + (nd Box + (setExtents 0.1 0.1 1) + (setMaterial matYellow) + ) + ) + ) + + ; install remaining passive wheels + + (nd Transform + (setName leftFront) + (setLocalPos -0.5 +1.5 0) + (importScene rsg/boxspheres/sphere.rsg 0.4 2 matWhite) + (nd Hinge2Joint + (attach ../sphereBody ../../chassis/boxBody) + (setAnchor 0 0 0) + ) + ) + + (nd Transform + (setName rightBack) + (setLocalPos 0.5 -1.5 0) + (importScene rsg/boxspheres/sphere.rsg 0.4 2 matWhite) + (nd Transform + (setLocalRotation 0 180 0) + (nd Hinge2Joint + (attach ../../sphereBody ../../../chassis/boxBody) + (setAnchor 0 0 0) + ) + ) + ) + + (nd Transform + (setName rightFront) + (setLocalPos 0.5 +1.5 0) + (importScene rsg/boxspheres/sphere.rsg 0.4 2 matWhite) + (nd Hinge2Joint + (attach ../sphereBody ../../chassis/boxBody) + (setAnchor 0 0 0) + ) + ) +) \ No newline at end of file Added: trunk/simspark-utilities/data/rsg/agent/leggedsphere.rsg =================================================================== --- trunk/simspark-utilities/data/rsg/agent/leggedsphere.rsg (rev 0) +++ trunk/simspark-utilities/data/rsg/agent/leggedsphere.rsg 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,183 @@ +; -*- mode: lisp; -*- + +; +; sphere with two legs (5DOF/leg) +; + +(RSG 0 1) +( + ; create the sphere + (nd Transform + (setName body) + (setLocalPos 0 4 3) + (importScene rsg/boxspheres/sphere.rsg 1.25 0.75 matRed) + ) + + ; attach left thigh + (nd Transform + (setName leftthigh) + (setLocalPos 1.25 4 2.25) + (importScene rsg/boxspheres/box.rsg 0.5 0.5 1.0 1.0 matGrey) + + ; install the joint to connect to the body + (nd UniversalJoint + (attach ../boxBody ../../body/sphereBody) + (setAnchor 0 0 0) + (setAxis1 1.0 0.0 0.0) ; move around the x-axis + (setAxis2 0.0 1.0 0.0) ; move around the y-axis + + ; enable the joint motors + (setMaxMotorForce 0 100) + (setMaxMotorForce 1 100) + + ; install a perceptor + (nd UniversalJointPerceptor + (setName lefthip) + ) + + ; install an effector to control the joint motors + (nd UniversalJointEffector + (setName lhe) + ) + ) + ) + + ; attach left shank + (nd Transform + (setName leftshank) + (setLocalPos 1.25 4 1) + (importScene rsg/boxspheres/box.rsg 0.5 0.5 1.0 1.0 matGrey) + + ; install the joint to connect to the body + (nd HingeJoint + (attach ../boxBody ../../leftthigh/boxBody) + (setAnchor 0 0 0) + (setAxis 0) ; move around the x-axis + + ; enable the joint motor + (setMaxMotorForce 0 100) + + ; install a perceptor + (nd HingePerceptor + (setName leftknee) + ) + + ; install an effector to control the joint motor + (nd HingeEffector + (setName lke) + ) + ) + ) + + ; attach left foot + (nd Transform + (setName leftfoot) + (setLocalPos 1.25 4 0.125) + (importScene rsg/boxspheres/box.rsg 1.0 1.25 0.25 1.0 matGrey) + + ; install the joint to connect to the body + (nd UniversalJoint + (attach ../boxBody ../../leftshank/boxBody) + (setAnchor 0 0 0) + (setAxis1 1.0 0.0 0.0) ; move around the x-axis + (setAxis2 0.0 1.0 0.0) ; move around the y-axis + + ; enable the joint motors + (setMaxMotorForce 0 100) + (setMaxMotorForce 1 100) + + ; install a perceptor + (nd UniversalJointPerceptor + (setName leftankle) + ) + + ; install an effector to control the joint motors + (nd UniversalJointEffector + (setName lae) + ) + ) + ) + + ; attach right thigh + (nd Transform + (setName rightthigh) + (setLocalPos -1.25 4 2.25) + (importScene rsg/boxspheres/box.rsg 0.5 0.5 1.0 1.0 matGrey) + (nd UniversalJoint + (attach ../boxBody ../../body/sphereBody) + (setAnchor 0 0 0) + (setAxis1 1.0 0.0 0.0) ; move around the x-axis + (setAxis2 0.0 1.0 0.0) ; move around the y-axis + + ; enable the joint motors + (setMaxMotorForce 0 100) + (setMaxMotorForce 1 100) + + ; install a perceptor + (nd UniversalJointPerceptor + (setName righthip) + ) + + ; install an effector to control the joint motors + (nd UniversalJointEffector + (setName rhe) + ) + ) + ) + + ; attach right shank + (nd Transform + (setName rightshank) + (setLocalPos -1.25 4 1) + (importScene rsg/boxspheres/box.rsg 0.5 0.5 1.0 1.0 matGrey) + + ; install the joint to connect to the body + (nd HingeJoint + (attach ../boxBody ../../rightthigh/boxBody) + (setAnchor 0 0 0) + (setAxis 0) ; move around the x-axis + + ; enable the joint motor + (setMaxMotorForce 0 100) + + ; install a perceptor + (nd HingePerceptor + (setName rightknee) + ) + + ; install an effector to control the joint motor + (nd HingeEffector + (setName rke) + ) + ) + ) + + ; attach right foot + (nd Transform + (setName rightfoot) + (setLocalPos -1.25 4 0.125) + (importScene rsg/boxspheres/box.rsg 1.0 1.25 0.25 1.0 matGrey) + + ; install the joint to connect to the body + (nd UniversalJoint + (attach ../boxBody ../../rightshank/boxBody) + (setAnchor 0 0 0) + (setAxis1 1.0 0.0 0.0) ; move around the x-axis + (setAxis2 0.0 1.0 0.0) ; move around the y-axis + + ; enable the joint motors + (setMaxMotorForce 0 100) + (setMaxMotorForce 1 100) + + ; install a perceptor + (nd UniversalJointPerceptor + (setName rightankle) + ) + + ; install an effector to control the joint motors + (nd UniversalJointEffector + (setName rae) + ) + ) + ) +) Added: trunk/simspark-utilities/data/rsg/agent/samplesim.rsg =================================================================== --- trunk/simspark-utilities/data/rsg/agent/samplesim.rsg (rev 0) +++ trunk/simspark-utilities/data/rsg/agent/samplesim.rsg 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,20 @@ +; -*- mode: lisp; -*- + +(RSG 0 1) +( +; add lights + (nd Transform + (setLocalPos -10 10 10) + (nd Light + (setDiffuse 1.0 1.0 1.0 1.0) + (setSpecular 0.1 0.1 0.1 1.0) + (setAmbient 0.5 0.5 0.5 1.0) + ) + ) + +; create the arena +(nd Transform + (setLocalPos 0 0 -2) + (importScene rsg/boxspheres/arena.rsg) + ) +) \ No newline at end of file Added: trunk/simspark-utilities/gendot/CMakeLists.txt =================================================================== --- trunk/simspark-utilities/gendot/CMakeLists.txt (rev 0) +++ trunk/simspark-utilities/gendot/CMakeLists.txt 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,18 @@ +########### next target ############### + +set(gendot_SRCS + main.cpp +) + +include_directories(${SPARK_INCLUDE_DIR} ${SALT_INCLUDE_DIR} + ${ZEITGEIST_INCLUDE_DIR} ${OXYGEN_INCLUDE_DIR} ${KEROSIN_INCLUDE_DIR}) + +add_executable(gendot ${gendot_SRCS}) + +target_link_libraries(gendot ${SPARK_LIBRARIES} ${SALT_LIBRARIES} + ${ZEITGEIST_LIBRARIES} ${OXYGEN_LIBRARIES} ${KEROSIN_LIBRARIES}) +set_target_properties(gendot PROPERTIES INSTALL_RPATH "${RPATH_DIRECTORIES}") + +add_custom_target(zeitgeist.ps dot -Tps zeitgeist.dot -o zeitgeist.ps) +add_custom_target(zeitgeist.gif dot -Tgif zeitgeist.dot -o zeitgeist.gif) +add_custom_target(zeitgeist.dot ./gendot) Property changes on: trunk/simspark-utilities/gendot/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/simspark-utilities/gendot/gendot.rb =================================================================== --- trunk/simspark-utilities/gendot/gendot.rb (rev 0) +++ trunk/simspark-utilities/gendot/gendot.rb 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,13 @@ +# import any additional plugins you want to include into the graph +importBundle "soccer" +importBundle "collisionperceptor" +# importBundle "filesystemrar" +importBundle "filesystemstd" +# importBundle "filesystemzip" +importBundle "forceeffector" +importBundle "inputsdl" +importBundle "monitortest" +importBundle "perfectvisionperceptor" +importBundle "sexpparser" +# importBundle "soundsystembass" +# importBundle "soundsystemfmod" Added: trunk/simspark-utilities/gendot/include.dot =================================================================== --- trunk/simspark-utilities/gendot/include.dot (rev 0) +++ trunk/simspark-utilities/gendot/include.dot 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,8 @@ +# include.dot: include file for the gendot tool +# +size ="7.5,10"; +ratio = "1.01"; +rotate ="90"; + + edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",color="black",labelfontsize=10]; + node [fontname="Helvetica",fontsize=8,shape=box,height=0.2,width=0.4]; Added: trunk/simspark-utilities/gendot/main.cpp =================================================================== --- trunk/simspark-utilities/gendot/main.cpp (rev 0) +++ trunk/simspark-utilities/gendot/main.cpp 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,177 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + this file is part of rcssserver3D + Fri May 9 2003 + Copyright (C) 2002,2003 Koblenz University + Copyright (C) 2003 RoboCup Soccer Server 3D Maintenance Group + $Id: main.cpp,v 1.3 2004/04/09 21:06:31 fruit Exp $ + + This program 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 of the License. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ +#include <zeitgeist/zeitgeist.h> +#include <oxygen/oxygen.h> + +#ifdef HAVE_KEROSIN_H +#include <kerosin/kerosin.h> +#endif + +#include <iostream> +#include <fstream> + +using namespace boost; +using namespace oxygen; +using namespace salt; +using namespace std; +using namespace zeitgeist; + +std::string outFile = "zeitgeist.dot"; +std::string inFile = "include.dot"; + +void +printHelp() +{ + cout << "\nusage: gendot [options]" << endl; + cout << "\noptions:" << endl; + cout << " -o\t name of the outfile, default zeitgeist.dot" << endl; + cout << " -i\t name of the dot include file, default include.dot" << endl; + cout << " -h\t print this help message" << endl; + cout << endl; + cout << "gendot generates a graphviz dot file showing the zeitgeist " << endl; + cout << "class hierarchy, including all classes that are visible at runtime. " << endl; + cout << "You can add additional classes using 'importbundle <bundle>'" << endl; + cout << "in the 'gendot.rb' file. To view the output as an ps-file invoke dot" << endl; + cout << "with 'dot -Tps zeitgeist.dot -o zeitgeist.ps'" << endl; + cout << "\n"; +} + +void +processInput(int argc, char* argv[]) +{ + for( int i = 0; i < argc; i++) + { + if( strcmp( argv[i], "-o" ) == 0 ) + { + if( i+1 < argc) + { + outFile = argv[i+1]; + ++i; + } + } + if( strcmp( argv[i], "-i" ) == 0 ) + { + if( i+1 < argc) + { + inFile = argv[i+1]; + ++i; + } + } + else if + ( + ( strcmp( argv[i], "--help" ) == 0 ) || + ( strcmp( argv[i], "-h" ) == 0 ) + ) + { + printHelp(); + exit(0); + } + } +} + +void +printGreeting() +{ + cout << "zeitgeist gendot version 0.1" << endl + << "Universit\xE4t Koblenz." << endl + << "Copyright (C) 2004, " + << "The RoboCup Soccer Server Maintenance Group." << endl; +} + +int +main(int argc, char* argv[]) +{ + printGreeting(); + processInput(argc,argv); + + Zeitgeist zg("." PACKAGE_NAME); + oxygen::Oxygen kOxygen(zg); +#ifdef HAVE_KEROSIN_H + kerosin::Kerosin kerosin(zg); +#endif + + // require any additional classes in the gendot.rb + zg.GetCore()->GetScriptServer()->Run("gendot.rb"); + + shared_ptr<Leaf> classRoot = zg.GetCore()->Get("/classes"); + if (classRoot.get() == 0) + { + cout << "ERROR: unable to get the class root node" << endl; + return 1; + } + + ofstream out(outFile.c_str()); + cout << "writing to " << outFile << endl; + out << "digraph G {" << endl; + + // import the include file + ifstream header("include.dot"); + + while (! header.eof()) + { + static char buffer[4095]; + header.getline(buffer, sizeof(buffer)); + out << buffer << endl; + } + + + // list all classes + Leaf::TLeafList classes; + classRoot->ListChildrenSupportingClass<Class>(classes,true); + + for ( + Leaf::TLeafList::iterator iter = classes.begin(); + iter != classes.end(); + ++iter + ) + { + string name = (*iter)->GetFullPath(); + + // remove '/classes/' prefix + name.erase(name.begin(),name.begin()+9); + + cout << "class " << name << endl; + + shared_ptr<Class> theClass = shared_dynamic_cast<Class>(*iter); + if (theClass.get() == 0) + { + continue; + } + + const Class::TStringList& baseClasses = theClass->GetBaseClasses(); + + out << "\"" << name << "\""; + + for ( + Class::TStringList::const_iterator baseIter = baseClasses.begin(); + baseIter != baseClasses.end(); + ++baseIter + ) + { + out << " -> \"" << (*baseIter) << "\""; + } + + out << ";" << endl; + } + + out << "}" << endl; +} Property changes on: trunk/simspark-utilities/gendot/main.cpp ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/simspark-utilities/monitorspark/CMakeLists.txt =================================================================== --- trunk/simspark-utilities/monitorspark/CMakeLists.txt (rev 0) +++ trunk/simspark-utilities/monitorspark/CMakeLists.txt 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,22 @@ +########### next target ############### +set(monitorspark_SRCS + main.cpp +) + +include_directories(${SPARK_INCLUDE_DIR} ${SALT_INCLUDE_DIR} + ${ZEITGEIST_INCLUDE_DIR} ${OXYGEN_INCLUDE_DIR} ${KEROSIN_INCLUDE_DIR}) + +add_executable(monitorspark ${monitorspark_SRCS}) + +target_link_libraries(monitorspark ${SPARK_LIBRARIES} ${SALT_LIBRARIES} + ${ZEITGEIST_LIBRARIES} ${OXYGEN_LIBRARIES} ${KEROSIN_LIBRARIES}) + +set_target_properties(monitorspark PROPERTIES + INSTALL_RPATH "${RPATH_DIRECTORIES}") + +install(TARGETS monitorspark DESTINATION ${BINDIR}) + + +########### install files ############### + +install(FILES monitorspark.rb DESTINATION ${DATADIR}/${CMAKE_PROJECT_NAME}) Property changes on: trunk/simspark-utilities/monitorspark/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/simspark-utilities/monitorspark/main.cpp =================================================================== --- trunk/simspark-utilities/monitorspark/main.cpp (rev 0) +++ trunk/simspark-utilities/monitorspark/main.cpp 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,153 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + this file is part of rcssserver3D + Fri May 9 2003 + Copyright (C) 2003 Koblenz University + $Id: main.cpp,v 1.7 2008/05/30 07:54:51 yxu Exp $ + + This program 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 of the License. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include <spark/spark.h> +#include <zeitgeist/zeitgeist.h> +#include <oxygen/simulationserver/simulationserver.h> +#include <kerosin/renderserver/rendercontrol.h> +#include <kerosin/inputserver/inputcontrol.h> + +using namespace spark; +using namespace kerosin; +using namespace oxygen; +using namespace zeitgeist; +using namespace salt; +using namespace std; +using namespace boost; + +class MonitorSpark : public Spark +{ +public: + MonitorSpark(const std::string& relPathPrefix) : + Spark(relPathPrefix) + {}; + + /** called once after Spark finished it's init */ + virtual bool InitApp(int argc, char** argv); + + /** print command line options */ + void PrintHelp(); + + /** print a greeting */ + void PrintGreeting(); + + /** process command line options */ + bool ProcessCmdLine(int argc, char* argv[]); +}; + +void MonitorSpark::PrintGreeting() +{ + GetLog()->Normal() + << "monitorspark, 0.1\n" + << "Koblenz University.\n" + << "Copyright (C) 2004, " + << "The RoboCup Soccer Server Maintenance Group.\n" + << "\nType '--help' for further information\n\n"; +} + +void MonitorSpark::PrintHelp() +{ + GetLog()->Normal() + << "\nusage: monitorspark [options]\n" + << "\noptions:\n" + << " --help\t print this message.\n" + << " --logfile\t logfilename\t plays the log file.\n" + << "\n"; +} + +bool MonitorSpark::ProcessCmdLine(int argc, char* argv[]) +{ + for( int i = 0; i < argc; i++) + { + if( strcmp( argv[i], "--help" ) == 0 ) + { + PrintHelp(); + return false; + } + else if( strcmp( argv[i], "--logfile" ) == 0 && (i+1 == argc) ) + { + PrintHelp(); + return false; + } + } + + return true; +} + +bool MonitorSpark::InitApp(int argc, char** argv) +{ + GetSimulationServer()->SetSimStep(0.02); + PrintGreeting(); + + // process command line + if (! ProcessCmdLine(argc, argv)) + { + return false; + } + + // run initialization scripts + + if(argc == 3 && strcmp( argv[1], "--logfile" ) == 0) + { + GetScriptServer()->Eval("$logPlayerMode = true"); + + char fileStr[80]; + strcpy(fileStr, "$logPlayerFile = \""); + strcat(fileStr, argv[2]); + strcat(fileStr, "\""); + GetScriptServer()->Eval(fileStr); + } + + GetScriptServer()->Run("monitorspark.rb"); + + // tell the inputControl node the loaction of our camera + shared_ptr<InputControl> inputCtr = GetInputControl(); + if (inputCtr.get() != 0) + { + inputCtr->SetFPSController("/usr/scene/camera/physics/controller"); + } + + return true; +} + +int main(int argc, char** argv) +{ + // the spark app framework instance + MonitorSpark spark("../../"); + + if (! spark.Init(argc, argv)) + { + return 1; + } + + spark.GetSimulationServer()->Run(argc,argv); + + shared_ptr<RenderControl> renderCtr = spark.GetRenderControl(); + if (renderCtr.get() != 0) + { + spark.GetLog()->Normal() + << "Average FPS: " + << renderCtr->GetFramesRendered() / + spark.GetSimulationServer()->GetTime() + << "\n"; + } + + return 0; +} Property changes on: trunk/simspark-utilities/monitorspark/main.cpp ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/simspark-utilities/monitorspark/monitorspark.rb =================================================================== --- trunk/simspark-utilities/monitorspark/monitorspark.rb (rev 0) +++ trunk/simspark-utilities/monitorspark/monitorspark.rb 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,46 @@ +# +# monitorspark.rb +# + +sparkSetupRendering() +sparkSetupInput() + +if ($logPlayerMode == true) + sparkSetupMonitorLogPlayer() +else + sparkSetupMonitor() +end + +# let spark create a default camera +sparkAddFPSCamera( + $scenePath+'camera', + x = -5, + y = -40, + z = 2, + vAngle = 10.0, + hAngle = 10.0, + maxSpeed = 15.0, + accel = 400.0, + drag = 4, + addCollider = false, + colliderRadius = 2.0 + ) + +# setup default input bindings +run "bindings.rb" + +# setup default materials common to all simulations +run "scripts/materials.rb" + +# source soccersim-monitor.rb to build a soccer monitor +run "soccersim-monitor.rb" + +# +# uncomment for logging setup (see spark.rb for reference) +# + +sparkResetLogging() +sparkLogAllToCerr() +# sparkLogAllToFile('./spark.txt') +# sparkLogDebugToCerr() + Added: trunk/simspark-utilities/sampleagent/CMakeLists.txt =================================================================== --- trunk/simspark-utilities/sampleagent/CMakeLists.txt (rev 0) +++ trunk/simspark-utilities/sampleagent/CMakeLists.txt 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,21 @@ +########### next target ############### + +set(sampleagent_SRCS + main.cpp + behavior.h + carbehavior.cpp + carbehavior.h + leggedspherebehavior.h + leggedspherebehavior.cpp +) + +include_directories(${SPARK_INCLUDE_DIR} ${Boost_INCLUDE_DIR}) +add_executable(sampleagent ${sampleagent_SRCS}) + +target_link_libraries(sampleagent ${SPARK_LIBRARIES} ${SALT_LIBRARIES} + ${ZEITGEIST_LIBRARIES} ${OXYGEN_LIBRARIES} ${KEROSIN_LIBRARIES}) + +set_target_properties(sampleagent PROPERTIES + INSTALL_RPATH "${RPATH_DIRECTORIES}") + +install(TARGETS sampleagent DESTINATION ${BINDIR}) Property changes on: trunk/simspark-utilities/sampleagent/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/simspark-utilities/sampleagent/behavior.h =================================================================== --- trunk/simspark-utilities/sampleagent/behavior.h (rev 0) +++ trunk/simspark-utilities/sampleagent/behavior.h 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,37 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + this file is part of rcssserver3D + Fri May 9 2003 + Copyright (C) 2003 Koblenz University + $Id: behavior.h,v 1.1 2004/05/07 12:23:19 rollmark Exp $ + + This program 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 of the License. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ +#ifndef BEHAVIOR_H +#define BEHAVIOR_H + +#include <string> + +class Behavior +{ +public: + /** called once when the initially connected to the server */ + virtual std::string Init() = 0; + + /** called for every message received from the server; should + return an action string + */ + virtual std::string Think(const std::string& message) = 0; +}; + +#endif // BEHAVIOR_H Property changes on: trunk/simspark-utilities/sampleagent/behavior.h ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/simspark-utilities/sampleagent/carbehavior.cpp =================================================================== --- trunk/simspark-utilities/sampleagent/carbehavior.cpp (rev 0) +++ trunk/simspark-utilities/sampleagent/carbehavior.cpp 2009-01-22 17:15:41 UTC (rev 33) @@ -0,0 +1,54 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + this file is part of rcssserver3D + Fri May 9 2003 + Copyright (C) 2003 Koblenz University + $Id: carbehavior.cpp,v 1.2 2008/03/27 21:11:53 rollmark Exp $ + + This program 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 of the License. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ +#include "carbehavior.h" +#include <iostream> +#include <sstream> + +using namespace std; + +CarBehavior::CarBehavior() +{ +} + +string CarBehavior::Init() +{ + // use the scene effector to build the agent + return "(scene rsg/agent/buggy.rsg)"; +} + +string CarBehavior::Think(const std::string& message) +{ + // demo: just drive forward and backward... + + static int n = 0; + static float velocity = 100; + + ++n; + if (n > 900) + { + velocity *= -1; + n = 0; + } + + stringstream ss; + ss << "(hinge2 " << velocity << ")"; + + return ss.str(); +} Property changes on: trunk/simspar... [truncated message content] |