You can subscribe to this list here.
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(4) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
(20) |
Feb
(11) |
Mar
(6) |
Apr
(5) |
May
(4) |
Jun
(7) |
Jul
(9) |
Aug
(11) |
Sep
|
Oct
(4) |
Nov
(13) |
Dec
(21) |
2010 |
Jan
(23) |
Feb
(32) |
Mar
(6) |
Apr
(2) |
May
(10) |
Jun
(15) |
Jul
(1) |
Aug
(1) |
Sep
(3) |
Oct
|
Nov
(1) |
Dec
(16) |
2011 |
Jan
(1) |
Feb
(5) |
Mar
(19) |
Apr
(13) |
May
(4) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
(4) |
Feb
(8) |
Mar
(2) |
Apr
(6) |
May
(13) |
Jun
(1) |
Jul
|
Aug
|
Sep
(5) |
Oct
|
Nov
(4) |
Dec
|
2013 |
Jan
(1) |
Feb
(2) |
Mar
(15) |
Apr
(2) |
May
(4) |
Jun
(17) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
(6) |
Jun
(6) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
(1) |
May
(6) |
Jun
(1) |
Jul
(2) |
Aug
|
Sep
(7) |
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(4) |
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
|
Feb
|
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <yx...@us...> - 2013-03-26 11:40:24
|
Revision: 341 http://simspark.svn.sourceforge.net/simspark/?rev=341&view=rev Author: yxu Date: 2013-03-26 11:40:17 +0000 (Tue, 26 Mar 2013) Log Message: ----------- Merge branch 'open-source-paper' * open-source-paper: draft introduction Modified Paths: -------------- trunk/spark/doc/papers/2013/opensource.tex Modified: trunk/spark/doc/papers/2013/opensource.tex =================================================================== --- trunk/spark/doc/papers/2013/opensource.tex 2013-03-25 10:14:37 UTC (rev 340) +++ trunk/spark/doc/papers/2013/opensource.tex 2013-03-26 11:40:17 UTC (rev 341) @@ -66,10 +66,22 @@ Using simulation for algorithm development and testing makes thing easier. % \paragraph{History} -SimSpark was initially developed by Marco Kögler and Oliver Obst at the University of Koblenz-Landau in Koblenz, Germany\cite{OR05}. -The project was registered as open source project in SourceForge\footnote{\url{http://simspark.sourceforge.net}} in 2004, it has an established code base with development increasing year-over-year\cite{Boedecker2008,usermanual}. +\textit{SimSpark}, a multi-robot simulator based on the generic components of the Spark\cite{OR05} physical multi-agent simulation system, has been used in the RoboCup Soccer Simulation League since 2004. +The project was registered as open source project in SourceForge\footnote{\url{http://simspark.sourceforge.net}} in 2004, it has an established code base with development increasing year-over-year. +As the result, RoboCup soccer simulations have changed significantly over the years, going from rather abstract agent representations to more and more realistic humanoid robot games\cite{Boedecker2008,usermanual}. +Thanks to the flexibility of the Spark system, these transitions were achieved with little changes to the simulator’s core architecture. -\todo[inline]{Plugin system, core part} +In this paper we describe the recent development of \textit{SimSpark} project, which make the \textit{SimSpark} possible to simulate 11 vs. 11 humanoid robot soccer games in real time\todo{is it real time in RoboCup?}. +In section \ref{s:overview}, we will give an overview of \textit{SimSpark} project since 2008. After that, we will describe the development in core module -- names \textit{Spark} in section \ref{s:spark}. In section \ref{s:rcssserver3d}, we will give the implementation of RoboCup 3D Soccer Simulator -- \textit{RCSSServer3D}. We will introduce some ongoing work for RoboCup 2013 in +section \ref{s:ongoing}. Furthermore, we will discuss the application of \textit{SimSpark} not only in simulation league but also other leagues with real robots in section \ref{s:application}. Finally, we will outline future development plans in section \ref{s:conclusion} . + +\todo[inline,color=gray]{Releated work: SimRobot, Webots, V-REP, Gazebo...} + + +\section{Project Overview} +\label{s:overview} +Because last paper about simspark was in 2008 + In comparison to specialized simulators, users can create new simulations by using a scene description language. Agents communicate with the simulation server via UDP or TCP, and therefore can be implemented in any language that supports such sockets.\todo{integrated agent as well} @@ -78,15 +90,9 @@ Simulations are created within the server using the Ruby language and text-based RSG files. SimSpark uses the Open Dynamics Engine (ODE) for detecting collisions and for simulating rigid body dynamics. ODE allows accurate simulation of the physical properties of objects such as velocity, inertia and friction. -\todo[inline]{Releated work: SimRobot, Webots, V-REP, Gazebo...} - - -\section{Current state / development since 2008} -Because last paper about simspark was in 2008 - The soccer simulation for this tournament was developed in parallel with the SimSpark simulator. In its initial version players were modeled as spheres in a physical three dimensional world. Since then SimSpark grew considerably and now supports humanoid players with articulated bodies. -\subsection{Architectural Changes (?)} +% \subsection{Architectural Changes (?)} \todo[inline]{separation of simspark and rcssserver3d}\todo{Hedayat Vatankhah: Architecture Enhancements Proposal for Soccer Simulation Server 3D} It served from the beginning as a test bed and a guide for essential new features that were added to the simulator during development. However changes to the simulator core were never customized for the soccer simulation. Instead generic simulator services were implemented with all soccer specific details contained in a set of plugins. @@ -94,17 +100,16 @@ \todo[inline]{Cmake migration?} \todo[inline]{windows support (mingw32,VC)} +\section{Spark} +\label{s:spark} \subsection{New Sensors} - ACC - FSR - - Gyroasdf + - Gyro - Restrict Vision -- Line perceptions -- camera (image) -\todo[inline]{robot model: NAO (rcssserver3d)} -\todo[inline]{soccer rules (referee) (rcssserver3d)} -\todo[inline]{bigger fields and more robots (rcssserver3d)} \todo[inline]{sync mode (simspark)} \todo[inline]{integrated agents (simspark)} \todo[inline]{physics simulation engine abstraction (simspark)} @@ -135,7 +140,14 @@ \todo[inline]{logfiles} +\section{RCSSServer3D} +\label{s:rcssserver3d} +\todo[inline]{robot model: NAO (rcssserver3d)} +\todo[inline]{soccer rules (referee) (rcssserver3d)} +\todo[inline]{bigger fields and more robots (rcssserver3d)} + \section{Experimental Features} +\label{s:ongoing} These features are experimental, they (probably) will be used in RoboCup 2013 for the first time. (Some of them are still under the development) \subsection{Realistic Motor} @@ -335,7 +347,7 @@ \subsection{Player Integration??} \section{Applications} - +\label{s:application} \paragraph{RoboCup Soccer Simulation League} In RoboCup 2004, SimSpark was successfully used for the first official competition in RoboCup Simulation 3D League. Since then, it is used as a standard research platform and test bed\todo{How many teams in last RoboCup?}. By using it, simulation teams not only have designed and tested new algorithms, but also developed useful research tools based on SimSpark. Some of these tools are also released as open source. For example, RoboViz\cite{Stoecker2012} is designed to assess and develop agent behaviors in SimSpark, @@ -368,7 +380,7 @@ \section{Conclusion and Future Work} - +\label{s:conclusion} SimSpark is a powerful tool to state different multi-agent research questions. \todo[inline]{Other physic engine, Bullet} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yx...@us...> - 2013-03-25 10:14:44
|
Revision: 340 http://simspark.svn.sourceforge.net/simspark/?rev=340&view=rev Author: yxu Date: 2013-03-25 10:14:37 +0000 (Mon, 25 Mar 2013) Log Message: ----------- Merge branch 'open-source-paper' * open-source-paper: roboviz notes Modified Paths: -------------- trunk/spark/doc/papers/2013/opensource.tex trunk/spark/doc/papers/2013/reference.bib Modified: trunk/spark/doc/papers/2013/opensource.tex =================================================================== --- trunk/spark/doc/papers/2013/opensource.tex 2013-03-25 08:55:24 UTC (rev 339) +++ trunk/spark/doc/papers/2013/opensource.tex 2013-03-25 10:14:37 UTC (rev 340) @@ -69,13 +69,9 @@ SimSpark was initially developed by Marco Kögler and Oliver Obst at the University of Koblenz-Landau in Koblenz, Germany\cite{OR05}. The project was registered as open source project in SourceForge\footnote{\url{http://simspark.sourceforge.net}} in 2004, it has an established code base with development increasing year-over-year\cite{Boedecker2008,usermanual}. - - \todo[inline]{Plugin system, core part} In comparison to specialized simulators, users can create new simulations by using a scene description language. -It served from the beginning as a test bed and a guide for essential new features that were added to the simulator during development. However changes to the simulator core were never customized for the soccer simulation. Instead generic simulator services were implemented with all soccer specific details contained in a set of plugins. - Agents communicate with the simulation server via UDP or TCP, and therefore can be implemented in any language that supports such sockets.\todo{integrated agent as well} Multiple software agents can participate in one simulation. @@ -91,7 +87,10 @@ The soccer simulation for this tournament was developed in parallel with the SimSpark simulator. In its initial version players were modeled as spheres in a physical three dimensional world. Since then SimSpark grew considerably and now supports humanoid players with articulated bodies. \subsection{Architectural Changes (?)} -\todo[inline]{separation of simspark and rcssserver3d} +\todo[inline]{separation of simspark and rcssserver3d}\todo{Hedayat Vatankhah: +Architecture Enhancements Proposal for Soccer Simulation Server 3D} +It served from the beginning as a test bed and a guide for essential new features that were added to the simulator during development. However changes to the simulator core were never customized for the soccer simulation. Instead generic simulator services were implemented with all soccer specific details contained in a set of plugins. + \todo[inline]{Cmake migration?} \todo[inline]{windows support (mingw32,VC)} @@ -125,8 +124,13 @@ As we know, the physics computation is the most time-consuming, and the physics engine does not need to access the active scene during physics computation. So the physics computation and \textit{SimControlNode}s can run in parallel.\todo[color=green]{UML?}\todo[color=yellow]{results of performance improvement, any benchmark?} -\todo[inline]{ODE TBB, sander's paper} +\todo[inline]{ +Sander van Dijk and Ubbo Visser +Proposal: Boosting the 3D SSL Simulator +Increase Research Possibilities in the RC SSL Community +ODE TBB, ??sander's paper -- where??}\footnote{\url{http://www.robocup.org/2011/03/robocup-federation-call-for-project-proposals-2/}} + \todo[inline]{Internal/External Monitor} \todo[inline]{logfiles} @@ -333,7 +337,10 @@ \section{Applications} \paragraph{RoboCup Soccer Simulation League} -In RoboCup 2004, SimSpark was successfully used for the first official competition in RoboCup Simulation 3D League. Since then, it is used as a standard research platform and test bed\todo{How many teams in last RoboCup?}. By using it, simulation teams not only have designed and tested new algorithms, but also developed useful research tools based on SimSpark. Some of these tools are released as open source also. For example, roboviz\todo{brief description of roboviz} +In RoboCup 2004, SimSpark was successfully used for the first official competition in RoboCup Simulation 3D League. Since then, it is used as a standard research platform and test bed\todo{How many teams in last RoboCup?}. By using it, simulation teams not only have designed and tested new algorithms, but also developed useful research tools based on SimSpark. Some of these tools are also released as open source. +For example, RoboViz\cite{Stoecker2012} is designed to assess and develop agent behaviors in SimSpark, +it facilitates the real-time visualization of agents running concurrently on the SimSpark simulator, +and provides higher-level analysis and visualization of agent behaviors. \paragraph{Usage for Real Robot} As one of the long term goals of the soccer simulation is to aim for realism the long term objective are realistic humanoid players in a physical environment. Modified: trunk/spark/doc/papers/2013/reference.bib =================================================================== --- trunk/spark/doc/papers/2013/reference.bib 2013-03-25 08:55:24 UTC (rev 339) +++ trunk/spark/doc/papers/2013/reference.bib 2013-03-25 10:14:37 UTC (rev 340) @@ -77,3 +77,12 @@ RoboCup Simulation League competition. } } +@INPROCEEDINGS{Stoecker2012, + author = {Justin Stoecker and Ubbo Visser}, + title = {RoboViz: Programmable Visualization for Simulated Soccer}, + booktitle = {RoboCup 2011: Robot Soccer World Cup XV}, + year = {2012}, + owner = {xu}, + timestamp = {2013.03.25} +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yx...@us...> - 2013-03-25 08:55:32
|
Revision: 339 http://simspark.svn.sourceforge.net/simspark/?rev=339&view=rev Author: yxu Date: 2013-03-25 08:55:24 +0000 (Mon, 25 Mar 2013) Log Message: ----------- Merge branch 'open-source-paper' * open-source-paper: smaller figures history draft multi-thread Modified Paths: -------------- trunk/spark/doc/papers/2013/joint-temp-LKneePitch.tikz trunk/spark/doc/papers/2013/joint.tikz trunk/spark/doc/papers/2013/opensource.tex trunk/spark/doc/papers/2013/reference.bib Modified: trunk/spark/doc/papers/2013/joint-temp-LKneePitch.tikz =================================================================== --- trunk/spark/doc/papers/2013/joint-temp-LKneePitch.tikz 2013-03-19 06:12:44 UTC (rev 338) +++ trunk/spark/doc/papers/2013/joint-temp-LKneePitch.tikz 2013-03-25 08:55:24 UTC (rev 339) @@ -3745,7 +3745,7 @@ 1335.885 77.0 1336.552 77.0 }; -\addlegendentry{temperature of real robot} +\addlegendentry{real robot} \addplot[every mark/.append style={solid}, red, dashed, mark=none, thick, line legend] table[x=x, y=y] { x y @@ -5605,7 +5605,7 @@ 1335.885 77.2528301182 1336.552 77.2375827936 }; -\addlegendentry{temperature of simulated robot} +\addlegendentry{simulated robot} \addlegendimage{/pgfplots/refstyle=current, green!30!white, fill=green!30!white}\addlegendentry{electric current} \end{axis} \end{tikzpicture} Modified: trunk/spark/doc/papers/2013/joint.tikz =================================================================== --- trunk/spark/doc/papers/2013/joint.tikz 2013-03-19 06:12:44 UTC (rev 338) +++ trunk/spark/doc/papers/2013/joint.tikz 2013-03-25 08:55:24 UTC (rev 339) @@ -2,33 +2,33 @@ \tikzstyle{module}=[draw, minimum height=1cm, minimum width=2cm] \node[module] (sc) {\shortstack{Stiffness\\ Control}}; - \draw[<-] (sc) -- node[at end, above]{$k_s$} ++(-2,0); + \draw[<-] (sc) -- node[at end, above]{$k_s$} ++(-1.6,0); \node[module] (bl) at (3,0) {\shortstack{Temperature\\ Regulation}}; \draw[->] (sc) -- node[above]{$\tau_{max}$} (bl); - \node[module] (ode) at (6,1) {\shortstack{Simulation\\ Engine}}; - \draw[->] (bl.east) -- ++(0.3,0) |- node[right, near start]{$\tau_m$} + \node[module] (ode) at (5.7,0.6) {\shortstack{Simulation\\ Engine}}; + \draw[->] (bl.east) -- ++(0.1,0) |- node[right, near start]{$\tau_m$} ($(ode.north west)!0.7!(ode.south west)$); - \node[module] (sl) at (1.5,2) {\shortstack{Speed\\ Limitation}}; - \draw[<-] (sl) -- node[above, at end]{$\dot{\theta_r}$} ++(-3.5,0); - \draw[->] (sl.east) -- ++(1.9,0) |- node[right, near start]{$\dot{\theta_e}$} + \node[module] (sl) at (1.5,1.2) {\shortstack{Speed\\ Limitation}}; + \draw[<-] (sl) -- node[above, at end]{$\dot{\theta_r}$} ++(-3.1,0); + \draw[->] (sl.east) -- ++(1.6,0) |- node[right, near start]{$\dot{\theta_e}$} ($(ode.north west)!0.3!(ode.south west)$); \draw[->] ($(ode.north east)!0.3!(ode.south east)$) -- node[above, - at end]{$\theta$} ++(6,0); + at end]{$\theta$} ++(3.5,0); - \node[module] (ps) at (9.5, 0) {\shortstack{Power\\ Consumption}}; - \draw[->] ($(ode.north east)!0.7!(ode.south east)$) -- ++(0.3,0) |- + \node[module] (ps) at (8.6, 0) {\shortstack{Power\\ Consumption}}; + \draw[->] ($(ode.north east)!0.7!(ode.south east)$) -- ++(0.1,0) |- node[right, near start] {$\tau, \dot{\theta}$} (ps); - \draw[->] (ps) -- ++(0,-1) -| node[above, near start]{$\Delta{Q}^+$} + \draw[->] ($(ps.south east)!0.7!(ps.south west)$) -- ++(0,-0.2) -| node[above, near start]{$\Delta{Q}^+$} (bl); - \node[module] (bat) at (6, -2.5) {Battery}; - \draw[->] (ps) -- ++(2, 0) |- node[above, near end]{$E$} (bat); + \node[module] (bat) at (6, -1.7) {Battery}; + \draw[->] ($(ps.south east)!0.3!(ps.south west)$) |- node[above, near end]{$E$} (bat); \draw[->] (bat) -| node[above, near start] {On/Off} (sc); - \draw[dashed] (-1.3,-1.5) rectangle (12,3) node[anchor=north east] {Servo Motor Model}; + \draw[dashed] (-1.3,-1.1) rectangle (9.9,1.8) node[anchor=north east] {Servo Motor Model}; \end{tikzpicture} \ No newline at end of file Modified: trunk/spark/doc/papers/2013/opensource.tex =================================================================== --- trunk/spark/doc/papers/2013/opensource.tex 2013-03-19 06:12:44 UTC (rev 338) +++ trunk/spark/doc/papers/2013/opensource.tex 2013-03-25 08:55:24 UTC (rev 339) @@ -5,6 +5,7 @@ \usepackage{textcomp} % for \textdegree \usepackage[hidelinks]{hyperref} \usepackage{cleveref} +\crefname{figure}{Fig.}{Fig.} \usepackage{xstring} \usepackage{booktabs} \usepackage{tikz} @@ -64,26 +65,31 @@ This is especially true in the research of multi-robots systems in areas such as RoboCup. Using simulation for algorithm development and testing makes thing easier. -\todo[inline]{Background/histsory} +% \paragraph{History} +SimSpark was initially developed by Marco Kögler and Oliver Obst at the University of Koblenz-Landau in Koblenz, Germany\cite{OR05}. +The project was registered as open source project in SourceForge\footnote{\url{http://simspark.sourceforge.net}} in 2004, it has an established code base with development increasing year-over-year\cite{Boedecker2008,usermanual}. -The SimSpark project started in 2003 and was based on the building blocks of the Spark project. It was initially developed by Marco Kögler and Oliver Obst at the University of Koblenz-Landau in Koblenz, Germany. -SimSpark was registered with SourceForge\footnote{\url{http://simspark.sourceforge.net}} in 2004 and has an established code base with development increasing year-over-year. -\cite{Boedecker2008,OR05} + \todo[inline]{Plugin system, core part} +In comparison to specialized simulators, users can create new simulations by using a scene description language. + +It served from the beginning as a test bed and a guide for essential new features that were added to the simulator during development. However changes to the simulator core were never customized for the soccer simulation. Instead generic simulator services were implemented with all soccer specific details contained in a set of plugins. + Agents communicate with the simulation server via UDP or TCP, and therefore can be implemented in any language that supports such sockets.\todo{integrated agent as well} Multiple software agents can participate in one simulation. Simulations are created within the server using the Ruby language and text-based RSG files. SimSpark uses the Open Dynamics Engine (ODE) for detecting collisions and for simulating rigid body dynamics. ODE allows accurate simulation of the physical properties of objects such as velocity, inertia and friction. -\todo[inline]{documents, wiki} +\todo[inline]{Releated work: SimRobot, Webots, V-REP, Gazebo...} -\todo[inline]{Releated work: SimRobot, Webots, V-REP, Gazebo... A table compares different simulator} - \section{Current state / development since 2008} Because last paper about simspark was in 2008 + +The soccer simulation for this tournament was developed in parallel with the SimSpark simulator. In its initial version players were modeled as spheres in a physical three dimensional world. Since then SimSpark grew considerably and now supports humanoid players with articulated bodies. + \subsection{Architectural Changes (?)} \todo[inline]{separation of simspark and rcssserver3d} \todo[inline]{Cmake migration?} @@ -101,22 +107,23 @@ \todo[inline]{soccer rules (referee) (rcssserver3d)} \todo[inline]{bigger fields and more robots (rcssserver3d)} \todo[inline]{sync mode (simspark)} -\todo[inline]{multi-threaded (simulation engine, agent controls) (simspark)} \todo[inline]{integrated agents (simspark)} \todo[inline]{physics simulation engine abstraction (simspark)} -Key Features -\paragraph{Multi-threads Supporting} -In modern time, computers have more than one CPU or dual cores in one CPU. -This improve the performance greatly, but only the multi-threaded program can benefit. SimSpark has an multi-threaded running loop. -The implementation of multi-threaded loop is based on two conditions. -First, every SimControlNode response for different parts of the simulation, they perform one by one in the singled-threaded mode, but they can run in parallel. -Second, there is a active scene which stores the whole simulation data in a tree. -The physics engine and SimControlNode interact through the active scene. +\paragraph{Multi-threads Supporting\todo{agent controls}} +In modern time, computers have a CUP with multi-cores or even multi-CPUs. +This improves the performance greatly, but only the multi-threaded program can benefit. +One great feature of SimSpark is switching between single thread mode and multi-threads +mode. The multi-threads mode can improve the performance in computer with multi-cores CPU, but the single thread mode is also useful for developing the simulator. + +The implementation of multi-threads loop is based on two conditions. +First, different tasks are assigned to different \textit{SimControlNode}s in SimSpark. +For example, \textit{AgentControl} is a node that manages the communication with agents. +For each simulation cycle, \textit{SimControlNode}s are executed one by one in the single thread mode, but they can run in parallel. +Second, all data of simulation state is stored in a tree called \textit{active scene}, +the physics engine and \textit{SimControlNode}s interact through the \textit{active scene}. As we know, the physics computation is the most time-consuming, and the physics engine does not need to access the active scene during physics computation. -So the physics computation and SimControlNodes can run in parallel. -At last, we get the multithreaded simulation loop as shown in the following UML diagram. Note that the agent’s action are also delayed one cycle in the multi-threaded loop. -\todo[inline]{multi-thread UML} +So the physics computation and \textit{SimControlNode}s can run in parallel.\todo[color=green]{UML?}\todo[color=yellow]{results of performance improvement, any benchmark?} \todo[inline]{ODE TBB, sander's paper} @@ -124,10 +131,12 @@ \todo[inline]{logfiles} -\section{Recent Development (Changes 2013)} +\section{Experimental Features} +These features are experimental, they (probably) will be used in RoboCup 2013 for the first time. (Some of them are still under the development) - \subsection{Realistic Motor} +\todo{motivation: my email...} +\todo{shorter} NAO robot has twenty-one motor joints as its actuators. The simple motor model is one reason for the unrealistic simulation results. The ODE provides a simple model of real life servos. @@ -204,12 +213,24 @@ power consumption, the energy consumed by devices other than motors, e.g. mainboard, CPU, camera, etc. has to be added. It is the power consumption of the robot in an idle state (all motors are off), and measured to be 33 W. + \begin{figure} \centering - \inputtikz{battery} - \caption{Power consumption of the real and the simulated robot in action. - The electric current is the summary of all motors.} - \label{fig:battery} + \begin{minipage}{0.49\columnwidth} + \centering + \pgfplotsset{width=0.9\columnwidth,height=7cm} + \inputtikz{battery} + \caption{Power consumption of the real and the simulated robot in action. + The electric current is the summary of all motors.} + \label{fig:battery} + \end{minipage}\hfill{} + \begin{minipage}{0.49\columnwidth} + \centering + \pgfplotsset{width=0.9\columnwidth,height=7cm} + \inputtikz{joint-temp-LKneePitch} + \caption{The temperature of the (knee pitch) motor in the simulation and the real robot. The green background is the electric current in the real robot.} + \label{fig:joint-temperature} + \end{minipage} \end{figure} \paragraph{Temperature Regulation} @@ -264,13 +285,6 @@ \end{table} After determining the parameters in the \cref{eq:motor-temp}, we can use this model to simulate motor temperature. In \Cref{fig:joint-temperature}, the simulated temperature is compared with data from the real robot. -\begin{figure} - \centering - \pgfplotsset{width=0.88\columnwidth} - \inputtikz{joint-temp-LKneePitch} - \caption{The temperature of the (knee pitch) motor in the simulation and the real robot. The green background is the electric current in the real robot. The result shows the simulated temperature is very close to the values of the real robot.} - \label{fig:joint-temperature} -\end{figure} The whole process of joint simulation is summarized in \Cref{fig:joint}: stiffness $k_s$ is simulated by setting the maximum torque @@ -308,7 +322,7 @@ separate robot models. To better support games with heterogeneous robots, we have added the support for parametric models to simspark. Therefore, it is possible to define models in which a number of parameters are variables and can have different -values for different robot variations. When you want to load such a model, you shold +values for different robot variations.\todo[color=green]{which parameters? for example} When you want to load such a model, you shold specify which type of that robot is needed and its parameters are replaced in the parametric model and the model is created. @@ -319,7 +333,7 @@ \section{Applications} \paragraph{RoboCup Soccer Simulation League} -In RoboCup 2004, SimSpark was successfully used for the first official competition in RoboCup Simulation 3D League. Since then, it is used as a standard research platform and test bed. By using it, simulation teams not only have designed and tested new algorithms, but also developed useful research tools based on SimSpark. Some of these tools are released as open source also. For example, roboviz\todo{brief description of roboviz} +In RoboCup 2004, SimSpark was successfully used for the first official competition in RoboCup Simulation 3D League. Since then, it is used as a standard research platform and test bed\todo{How many teams in last RoboCup?}. By using it, simulation teams not only have designed and tested new algorithms, but also developed useful research tools based on SimSpark. Some of these tools are released as open source also. For example, roboviz\todo{brief description of roboviz} \paragraph{Usage for Real Robot} As one of the long term goals of the soccer simulation is to aim for realism the long term objective are realistic humanoid players in a physical environment. @@ -333,7 +347,7 @@ \begin{figure} \centering - \includegraphics[width = 0.95\columnwidth]{simspark-spl} + \includegraphics[width = 0.75\columnwidth]{simspark-spl} \caption{Prototype of the extended SimSpark for Standard Platform League. The bottom of screen are images of robot cameras.} \label{f:simspark-spl} @@ -348,6 +362,8 @@ \section{Conclusion and Future Work} +SimSpark is a powerful tool to state different multi-agent research questions. + \todo[inline]{Other physic engine, Bullet} \todo[inline]{better GUI} Modified: trunk/spark/doc/papers/2013/reference.bib =================================================================== --- trunk/spark/doc/papers/2013/reference.bib 2013-03-19 06:12:44 UTC (rev 338) +++ trunk/spark/doc/papers/2013/reference.bib 2013-03-25 08:55:24 UTC (rev 339) @@ -23,6 +23,17 @@ timestamp = {2010.08.21} } +@MANUAL{usermanual, + title = {SimSpark User's Manual}, + author = {Joschka Boedecker and Klaus Dorer and Markus Rollmann and Yuan Xu + and Feng Xue and Marian Buchta and Hedayat Vatankhah and Stefan Glaser}, + edition = {1.3}, + month = {August}, + year = {2010}, + owner = {xu}, + timestamp = {2013.03.19} +} + @MASTERSTHESIS{Donat2012, author = {Heiko Donat}, title = {Evaluation of Simulators for Humanoid Soccer Playing Robots and Integration This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yx...@us...> - 2013-03-19 06:12:51
|
Revision: 338 http://simspark.svn.sourceforge.net/simspark/?rev=338&view=rev Author: yxu Date: 2013-03-19 06:12:44 +0000 (Tue, 19 Mar 2013) Log Message: ----------- Merge branch 'open-source-paper' * open-source-paper: some text details in application Modified Paths: -------------- trunk/spark/doc/papers/2013/opensource.tex trunk/spark/doc/papers/2013/reference.bib Modified: trunk/spark/doc/papers/2013/opensource.tex =================================================================== --- trunk/spark/doc/papers/2013/opensource.tex 2013-03-18 20:01:56 UTC (rev 337) +++ trunk/spark/doc/papers/2013/opensource.tex 2013-03-19 06:12:44 UTC (rev 338) @@ -65,10 +65,23 @@ Using simulation for algorithm development and testing makes thing easier. \todo[inline]{Background/histsory} + +The SimSpark project started in 2003 and was based on the building blocks of the Spark project. It was initially developed by Marco Kögler and Oliver Obst at the University of Koblenz-Landau in Koblenz, Germany. +SimSpark was registered with SourceForge\footnote{\url{http://simspark.sourceforge.net}} in 2004 and has an established code base with development increasing year-over-year. \cite{Boedecker2008,OR05} -\todo[inline]{Releated work: SimRobot, Webots, V-REP, Gazebo...} +\todo[inline]{Plugin system, core part} +Agents communicate with the simulation server via UDP or TCP, and therefore can be implemented in any language that supports such sockets.\todo{integrated agent as well} +Multiple software agents can participate in one simulation. +Simulations are created within the server using the Ruby language and text-based RSG files. +SimSpark uses the Open Dynamics Engine (ODE) for detecting collisions and for simulating rigid body dynamics. ODE allows accurate simulation of the physical properties of objects such as velocity, inertia and friction. + +\todo[inline]{documents, wiki} + +\todo[inline]{Releated work: SimRobot, Webots, V-REP, Gazebo... A table compares different simulator} + + \section{Current state / development since 2008} Because last paper about simspark was in 2008 \subsection{Architectural Changes (?)} @@ -92,6 +105,25 @@ \todo[inline]{integrated agents (simspark)} \todo[inline]{physics simulation engine abstraction (simspark)} +Key Features +\paragraph{Multi-threads Supporting} +In modern time, computers have more than one CPU or dual cores in one CPU. +This improve the performance greatly, but only the multi-threaded program can benefit. SimSpark has an multi-threaded running loop. +The implementation of multi-threaded loop is based on two conditions. +First, every SimControlNode response for different parts of the simulation, they perform one by one in the singled-threaded mode, but they can run in parallel. +Second, there is a active scene which stores the whole simulation data in a tree. +The physics engine and SimControlNode interact through the active scene. +As we know, the physics computation is the most time-consuming, and the physics engine does not need to access the active scene during physics computation. +So the physics computation and SimControlNodes can run in parallel. +At last, we get the multithreaded simulation loop as shown in the following UML diagram. Note that the agent’s action are also delayed one cycle in the multi-threaded loop. +\todo[inline]{multi-thread UML} + +\todo[inline]{ODE TBB, sander's paper} + +\todo[inline]{Internal/External Monitor} + +\todo[inline]{logfiles} + \section{Recent Development (Changes 2013)} @@ -286,25 +318,41 @@ \section{Applications} -\paragraph{RoboCup simulation league (of course)} -- some research? -- roboviz +\paragraph{RoboCup Soccer Simulation League} +In RoboCup 2004, SimSpark was successfully used for the first official competition in RoboCup Simulation 3D League. Since then, it is used as a standard research platform and test bed. By using it, simulation teams not only have designed and tested new algorithms, but also developed useful research tools based on SimSpark. Some of these tools are released as open source also. For example, roboviz\todo{brief description of roboviz} -\paragraph{Usage in real robot teams} -- we (NaoTH) have shared common interface with NAO -- FUmanoid -- education +\paragraph{Usage for Real Robot} +As one of the long term goals of the soccer simulation is to aim for realism the long term objective are realistic humanoid players in a physical environment. +These players should one day challenge the champion of the most recent World Cup. +The SimSpark is also used by teams in RoboCup Standard Platform League and Humanoid League. +The special situation between Standard Platform League and 3D Simulation League is that both leagues use the same robot model — NAO from Aldebaran. +So it appears to be natural to reuse the work which has already been done in Simulation League and make SimSpark usable in Standard Platform League. +Nao Team Humboldt developed their software architecture\cite{SCPR2010} which enables their control software can run both in real NAO and simulated NAO with SimSpark. This helps them to achieve some good results in both Simulation League and Standard Platform League. +Furthermore, Nao Team Humboldt also promotes the usage of SimSpark in the Standard Platform League by implementing its rules. \Cref{f:simspark-spl} is the snapshot of the extended SimSpark for Standard Platform League. + \begin{figure} \centering \includegraphics[width = 0.95\columnwidth]{simspark-spl} \caption{Prototype of the extended SimSpark for Standard Platform League. The bottom of screen are images of robot cameras.} - \label{f:nao-models} + \label{f:simspark-spl} \end{figure} +Of course the simulator can also be extended for other leagues by adding new robot models. +For example, in RoboCup Humanoid Kid Size League, FUmanoid\cite{Donat2012} uses +SimSpark to perform multi-level testing methods for archiving higher +quality in each module of their robot control software and unlink the +module test from the robotic hardware. + + \section{Conclusion and Future Work} +\todo[inline]{Other physic engine, Bullet} +\todo[inline]{better GUI} + +\section*{Acknowledgments} + \bibliographystyle{splncs03} \bibliography{reference} \end{document} Modified: trunk/spark/doc/papers/2013/reference.bib =================================================================== --- trunk/spark/doc/papers/2013/reference.bib 2013-03-18 20:01:56 UTC (rev 337) +++ trunk/spark/doc/papers/2013/reference.bib 2013-03-19 06:12:44 UTC (rev 338) @@ -23,6 +23,27 @@ timestamp = {2010.08.21} } +@MASTERSTHESIS{Donat2012, + author = {Heiko Donat}, + title = {Evaluation of Simulators for Humanoid Soccer Playing Robots and Integration + in an Existing System}, + school = {Department of Computer Science, Freien Universit\"at Berlin}, + year = {2012}, + type = {Bachelor Thesis}, + owner = {xu}, + timestamp = {2013.03.17} +} + +@INPROCEEDINGS{SCPR2010, + author = {Heinrich Mellmann and Yuan Xu and Thomas Krause and Florian Holzhauer}, + title = {NaoTH Software Architecture for an Autonomous Agent}, + booktitle = {International Workshop on Standards and Common Platforms for Robotics + (SCPR 2010)}, + year = {2010}, + address = {Darmstadt}, + month = {November} +} + @ARTICLE{OR05, author = {Oliver Obst and Markus Rollmann}, title = {{SPARK} -- {A} {G}eneric {S}imulator for {P}hysical {M}ultiagent This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2013-03-18 20:02:03
|
Revision: 337 http://simspark.svn.sourceforge.net/simspark/?rev=337&view=rev Author: hedayat Date: 2013-03-18 20:01:56 +0000 (Mon, 18 Mar 2013) Log Message: ----------- - Add a section about 'architectral changes'. (should it be included at all?) - Add Gyro sensor - Add a draft about heterogeneous players. Modified Paths: -------------- trunk/spark/doc/papers/2013/opensource.tex Modified: trunk/spark/doc/papers/2013/opensource.tex =================================================================== --- trunk/spark/doc/papers/2013/opensource.tex 2013-03-15 15:38:19 UTC (rev 336) +++ trunk/spark/doc/papers/2013/opensource.tex 2013-03-18 20:01:56 UTC (rev 337) @@ -71,11 +71,27 @@ \section{Current state / development since 2008} Because last paper about simspark was in 2008 -\todo[inline]{sensors: ACC, FSR, restict vision, with line perceptions, image ...} -\todo[inline]{robot model: NAO} -\todo[inline]{soccer rules (referee)} -\todo[inline]{bigger fields and more robots} +\subsection{Architectural Changes (?)} +\todo[inline]{separation of simspark and rcssserver3d} +\todo[inline]{Cmake migration?} +\todo[inline]{windows support (mingw32,VC)} +\subsection{New Sensors} + - ACC + - FSR + - Gyroasdf + - Restrict Vision + -- Line perceptions + -- camera (image) + +\todo[inline]{robot model: NAO (rcssserver3d)} +\todo[inline]{soccer rules (referee) (rcssserver3d)} +\todo[inline]{bigger fields and more robots (rcssserver3d)} +\todo[inline]{sync mode (simspark)} +\todo[inline]{multi-threaded (simulation engine, agent controls) (simspark)} +\todo[inline]{integrated agents (simspark)} +\todo[inline]{physics simulation engine abstraction (simspark)} + \section{Recent Development (Changes 2013)} @@ -237,7 +253,33 @@ \end{figure} \subsection{Heterogeneous Robots} +\todo[inline]{Draft, needs better English} +Simulation is great for experimenting with robots without need to buy expensive +real robots. Also, the robots are never damaged and they can be used for long +running experiences without human intervention. +However, the possibilities which are provided by a simulation environment is +not limited to these. Not only you can experiment with different behaviors, but +also you can modify the mechanical properties of the robot as you wish. Additionally, +it is possible to create new challenges for robot AI developers since you can +generate robots with different mechanical properties very easily at run time, +you can provide variations of a robot to teams and they can use them if they can +adopt their developed behaviors to unseen robots; which is in contrast with +real robots because teams know the exact specification of the robots and +can develop behaviors specifically tuned for a single robot. If heterogeneous +robots are available in a game, teams can use them only if they can adopt +their behaviors to the robots they didn't know about. + +Simspark already provided the ability to define different robot models and +use them in its simulation environment. However, each model was fixed and if you +wanted to have several variations of a robot, you should have defined several +separate robot models. To better support games with heterogeneous robots, we have +added the support for parametric models to simspark. Therefore, it is possible to +define models in which a number of parameters are variables and can have different +values for different robot variations. When you want to load such a model, you shold +specify which type of that robot is needed and its parameters are replaced in the +parametric model and the model is created. + \subsection{Agent Proxies} \subsection{Player Integration??} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yx...@us...> - 2013-03-15 15:38:26
|
Revision: 336 http://simspark.svn.sourceforge.net/simspark/?rev=336&view=rev Author: yxu Date: 2013-03-15 15:38:19 +0000 (Fri, 15 Mar 2013) Log Message: ----------- * open-source-paper: more hints text for figure improve figure restruct Modified Paths: -------------- trunk/spark/doc/papers/2013/joint.tikz trunk/spark/doc/papers/2013/opensource.tex Modified: trunk/spark/doc/papers/2013/joint.tikz =================================================================== --- trunk/spark/doc/papers/2013/joint.tikz 2013-03-12 14:03:10 UTC (rev 335) +++ trunk/spark/doc/papers/2013/joint.tikz 2013-03-15 15:38:19 UTC (rev 336) @@ -2,36 +2,33 @@ \tikzstyle{module}=[draw, minimum height=1cm, minimum width=2cm] \node[module] (sc) {\shortstack{Stiffness\\ Control}}; - \draw[<-] (sc) -- node[near end, above]{$k_s$} ++(-2,0); + \draw[<-] (sc) -- node[at end, above]{$k_s$} ++(-2,0); - \node[module] (bl) at (3,0) {Backlash}; + \node[module] (bl) at (3,0) {\shortstack{Temperature\\ Regulation}}; \draw[->] (sc) -- node[above]{$\tau_{max}$} (bl); - \node[module] (ode) at (6,-1) {\shortstack{Simulation\\ Engine}}; - \draw[->] (ode) -- ++(0,2) -| node[above, near start]{$\theta, \dot{\theta}$} - (bl); + \node[module] (ode) at (6,1) {\shortstack{Simulation\\ Engine}}; \draw[->] (bl.east) -- ++(0.3,0) |- node[right, near start]{$\tau_m$} - ($(ode.north west)!0.3!(ode.south west)$); - - \node[module] (pd) at (0, -2) {\shortstack{PD\\ Controller}}; - \draw[<-] (pd) -- node[above, near end]{$\theta_r$} ++(-2,0); - \draw[->] (ode) -- ++ (0,-2.3) -| node[above, near start] {$\theta, - \dot{\theta}$} (pd); - - \node[module] (sl) at (3,-2) {\shortstack{Speed\\ Limitation}}; - \draw[->] (pd) -- node[above]{$\dot{\theta_r}$} (sl); - \draw[->] (sl.east) -- ++(0.3,0) |- node[right, near start]{$\dot{\theta_e}$} ($(ode.north west)!0.7!(ode.south west)$); + \node[module] (sl) at (1.5,2) {\shortstack{Speed\\ Limitation}}; + \draw[<-] (sl) -- node[above, at end]{$\dot{\theta_r}$} ++(-3.5,0); + \draw[->] (sl.east) -- ++(1.9,0) |- node[right, near start]{$\dot{\theta_e}$} + ($(ode.north west)!0.3!(ode.south west)$); + \draw[->] ($(ode.north east)!0.3!(ode.south east)$) -- node[above, - at end]{$\theta$} ++(5,0); + at end]{$\theta$} ++(6,0); - \node[module] (ps) at (9.5,-2) {\shortstack{Power\\ Consumption}}; + \node[module] (ps) at (9.5, 0) {\shortstack{Power\\ Consumption}}; \draw[->] ($(ode.north east)!0.7!(ode.south east)$) -- ++(0.3,0) |- node[right, near start] {$\tau, \dot{\theta}$} (ps); + \draw[->] (ps) -- ++(0,-1) -| node[above, near start]{$\Delta{Q}^+$} + (bl); - \draw[->] (ps) -- node[above, near end]{$E,T$} ++(2.5,0); + \node[module] (bat) at (6, -2.5) {Battery}; + \draw[->] (ps) -- ++(2, 0) |- node[above, near end]{$E$} (bat); + \draw[->] (bat) -| node[above, near start] {On/Off} (sc); - \draw[dashed] (-1.3,-3.5) rectangle (11,2) node[anchor=north east] {Servo Motor Model}; + \draw[dashed] (-1.3,-1.5) rectangle (12,3) node[anchor=north east] {Servo Motor Model}; \end{tikzpicture} \ No newline at end of file Modified: trunk/spark/doc/papers/2013/opensource.tex =================================================================== --- trunk/spark/doc/papers/2013/opensource.tex 2013-03-12 14:03:10 UTC (rev 335) +++ trunk/spark/doc/papers/2013/opensource.tex 2013-03-15 15:38:19 UTC (rev 336) @@ -52,24 +52,34 @@ \maketitle \begin{abstract} - this is abstract + - current state of simspark + - changes 2013 + - evidence of impact of the released component to the RoboCup community. + - technical contribution + - benefit for the RoboCup community. \end{abstract} \section{Introduction} +The development on robots may be severely limited by the constrained resources. +This is especially true in the research of multi-robots systems in areas such as RoboCup. +Using simulation for algorithm development and testing makes thing easier. \todo[inline]{Background/histsory} \cite{Boedecker2008,OR05} \todo[inline]{Releated work: SimRobot, Webots, V-REP, Gazebo...} -\section{Current state / development sicen 2008} +\section{Current state / development since 2008} Because last paper about simspark was in 2008 \todo[inline]{sensors: ACC, FSR, restict vision, with line perceptions, image ...} \todo[inline]{robot model: NAO} \todo[inline]{soccer rules (referee)} \todo[inline]{bigger fields and more robots} -\section{realistic motor modelling} +\section{Recent Development (Changes 2013)} + + +\subsection{Realistic Motor} NAO robot has twenty-one motor joints as its actuators. The simple motor model is one reason for the unrealistic simulation results. The ODE provides a simple model of real life servos. @@ -77,9 +87,6 @@ There is no motor that works like this in reality. Furthermore, some aspects like stiffness control, power consumption and temperature regulation, are missing but are also important for robotics. - -A PD controller was implemented for the simulated NAO. \todo{this is for angle position control like DCM of NAO} - \paragraph{Stiffness} The stiffness determines how strong the motor is. The value is from 0.0 to 1.0, 0 means the motor is off and 1 means the motor is running at @@ -218,13 +225,10 @@ \end{figure} The whole process of joint simulation is summarized in -\Cref{fig:joint}: stiffness is simulated by setting the maximum torque of -the motor; desired speed of motor is determined by a PD controller -according to the target angle (see \cref{eva-joint-motor}), current angle and current speed; backlash -is modeled by the dead band model; and the simulation engine computes -the resulted angle and torque applied; in the end, the consumed power -and temperature are computed by \cref{eq:motor-power,eq:motor-temp} -respectively. +\Cref{fig:joint}: stiffness $k_s$ is simulated by setting the maximum torque +of the motor $\tau_{max}$; the final maximum torque $\tau_m$ used by simulation engine is calculated by temperature regulation; and the simulation engine computes the resulted angle +and torque applied; in the end, the consumed power and temperature are +computed by \cref{eq:motor-power,eq:motor-temp} respectively. When the battery is empty, the maximum torque $\tau_{max}$ is set 0 to turn off the motor. \begin{figure} \centering \inputtikz{joint} @@ -232,11 +236,19 @@ \label{fig:joint} \end{figure} -\section{applications} +\subsection{Heterogeneous Robots} +\subsection{Agent Proxies} + +\subsection{Player Integration??} + +\section{Applications} + \paragraph{RoboCup simulation league (of course)} +- some research? +- roboviz -\paragraph{research (used by teams have real robot)} +\paragraph{Usage in real robot teams} - we (NaoTH) have shared common interface with NAO - FUmanoid - education @@ -245,17 +257,10 @@ \centering \includegraphics[width = 0.95\columnwidth]{simspark-spl} \caption{Prototype of the extended SimSpark for Standard Platform League. - It simulates a game in our lab. The bottom of screen are images of robot cameras.} + The bottom of screen are images of robot cameras.} \label{f:nao-models} \end{figure} -\section{development plan/ current development} -\begin{itemize} -\item heterogeneous robots -\item agent proxies -\item Player integration -\end{itemize} - \section{Conclusion and Future Work} \bibliographystyle{splncs03} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yx...@us...> - 2013-03-12 14:03:24
|
Revision: 335 http://simspark.svn.sourceforge.net/simspark/?rev=335&view=rev Author: yxu Date: 2013-03-12 14:03:10 +0000 (Tue, 12 Mar 2013) Log Message: ----------- * open-source-paper: institute chmod a-x image of simspark for SPL realistic motor (copied from my thesis) Modified Paths: -------------- trunk/spark/doc/papers/2013/opensource.tex trunk/spark/doc/papers/2013/reference.bib Added Paths: ----------- trunk/spark/doc/papers/2013/battery.tikz trunk/spark/doc/papers/2013/fig/ trunk/spark/doc/papers/2013/fig/simspark-spl.png trunk/spark/doc/papers/2013/joint-temp-LKneePitch.tikz trunk/spark/doc/papers/2013/joint.tikz trunk/spark/doc/papers/2013/latexmkrc Added: trunk/spark/doc/papers/2013/battery.tikz =================================================================== --- trunk/spark/doc/papers/2013/battery.tikz (rev 0) +++ trunk/spark/doc/papers/2013/battery.tikz 2013-03-12 14:03:10 UTC (rev 335) @@ -0,0 +1,248 @@ +%This file is generated by REP 0.0.2-383-g17a87c3-dirt + +\begin{tikzpicture} +\pgfplotsset{anchor=north west} +\pgfmathsetlengthmacro{\cellWidth}{\pgfkeysvalueof{/pgfplots/width}/1} +\pgfmathsetlengthmacro{\cellHeight}{\pgfkeysvalueof{/pgfplots/height}/1} +\pgfmathsetlengthmacro{\x}{0*\cellWidth} +\pgfmathsetlengthmacro{\y}{0*\cellHeight} +\pgfmathsetlengthmacro{\w}{1*\cellWidth} +\pgfmathsetlengthmacro{\h}{1*\cellHeight} +\begin{axis}[at={(\x,\y)}, width=\w, height=\h, +hide x axis, +axis y line*=right, +enlarge x limits=false, +ylabel={electric current (A)}, +xmin=0, xmax=750, +] +\addplot[every mark/.append style={solid}, +blue, dashdotted, mark=none] table[x=x, y=y] { +x y +5.043 1.61812632873 +15.0605 2.61651190247 +25.0735 2.72887719713 +35.0845 2.74117345598 +45.0985 2.70330908693 +55.129 2.74450510209 +65.1585 2.71658678486 +75.186 2.69235892598 +85.216 2.8823921542 +95.246 2.84156823026 +105.276 2.72627254765 +115.306 2.72972769432 +125.336 2.76257819429 +135.366 2.78718949213 +145.396 2.76316291264 +155.4275 2.75673101752 +165.457 2.76341345437 +175.4855 2.78213965807 +185.516 2.77809979032 +195.546 2.81913633817 +205.576 2.79840543607 +215.606 2.70479746263 +225.6365 2.72664463872 +235.666 2.74461141601 +245.696 2.77645195218 +255.726 2.73903002336 +265.755 2.80485345525 +275.785 2.79718284849 +285.815 2.71744862436 +295.845 2.8247708872 +305.876 2.72425261044 +315.906 2.42902336058 +325.935 2.35518946888 +335.965 2.16680407679 +345.9955 2.13273099877 +356.0265 2.16287054206 +366.0565 2.21978677654 +376.0855 2.25849845541 +386.1205 2.38293698811 +396.161 2.70612636778 +406.191 2.72186058355 +416.2055 2.75834678929 +426.2155 2.75598683227 +436.2255 2.85653345962 +446.243 2.75231905853 +456.2685 2.72212636345 +466.2935 2.7664001276 +476.3065 2.77045345349 +486.3085 2.76357345341 +496.3185 2.79606656726 +506.3355 2.78725345939 +516.351 2.7815017834 +526.36 2.84090679411 +536.376 2.77464464325 +546.391 2.71925345433 +556.405 2.77517620298 +566.4195 2.80583290053 +576.429 2.80621939212 +586.44 2.87509345987 +596.457 2.86788052256 +606.482 2.86203334873 +616.4985 2.88117345801 +626.5115 2.86623268571 +636.525 2.85541346184 +646.546 2.85868450975 +656.5735 2.86570679399 +666.5865 2.76313055614 +676.602 2.85113633756 +686.6235 2.72207321086 +696.6455 2.49382072336 +706.676 2.30139545007 +716.705 2.23011303686 +726.7345 2.24419943926 +736.7645 2.36709643944 +746.794 2.29889709886 +756.824 2.45491038409 +766.854 1.31349337919 +776.8845 0.0 +786.9145 0.0 +}; \label{real-current} +\addplot[every mark/.append style={solid}, +magenta, dotted, mark=none, thick] table[x=x, y=y] { +x y +5.005 2.39675 +15.02 2.68107652695 +25.035 2.78480077844 +35.045 2.82327305389 +45.06 2.79132191617 +55.075 2.85058005988 +65.09 2.83838011976 +75.105 2.74701850299 +85.12 2.8003005988 +95.135 2.79988568862 +105.15 2.69727335329 +115.175 2.77754988024 +125.205 2.80128526946 +135.235 2.70671185629 +145.265 2.8217697006 +155.295 2.77411047904 +165.325 2.64893652695 +175.355 2.6990351497 +185.385 2.68256107784 +195.415 2.7540411976 +205.445 2.69730203593 +215.475 2.7335502994 +225.505 2.77422005988 +235.535 2.75148209581 +245.565 2.78419742515 +255.595 2.76504532934 +265.625 2.83281143713 +275.655 2.68026155689 +285.68 2.83020197605 +295.705 2.73585239521 +305.735 2.72528179641 +315.765 2.77525718563 +325.795 2.62815724551 +335.825 2.54314449102 +345.855 2.36030287425 +355.885 2.19402676647 +365.915 2.22898053892 +375.945 2.65052802395 +385.975 2.87474269461 +396.005 2.76045802395 +406.035 2.81162502994 +416.065 2.67910329341 +426.095 2.77494473054 +436.125 2.73028616766 +446.155 2.86563964072 +456.185 2.71784497006 +466.215 2.76890179641 +476.245 2.65759502994 +486.275 2.67877886228 +496.305 2.73931646707 +506.335 2.66729622754 +516.365 2.75485718563 +526.395 2.70058550898 +536.425 2.7470360479 +546.455 2.74969670659 +556.485 2.80388341317 +566.515 2.82135592814 +576.545 2.74127479042 +586.575 2.82163269461 +596.605 2.75241245509 +606.635 2.80448754491 +616.665 2.70096850299 +626.695 2.74002634731 +636.725 2.82832305389 +646.755 2.8212657485 +656.785 2.86141125749 +666.815 2.82044011976 +676.845 2.77074317365 +686.875 2.1409502994 +696.905 2.27848173653 +706.935 2.11926419162 +716.965 2.39025808383 +726.995 2.45736305389 +737.025 2.16040586826 +}; \label{sim-current} +\end{axis} + + +\begin{axis}[at={(\x,\y)}, width=\w, height=\h, +xmin=0, xmax=750, +xlabel={time (s)}, +ylabel={battery ($\times$51Wh)}, +legend pos=south west +] +\addplot[every mark/.append style={solid}, +black, solid, mark=none] table[x=x, y=y] { +x y +0 0.67 +60 0.6595 +120 0.649 +180 0.6385 +240 0.628 +300 0.6075 +360 0.597 +420 0.5765 +480 0.566 +540 0.5455 +600 0.535 +660 0.5245 +720 0.504 +780 0.4935 +840 0.473 +900 0.4625 +960 0.442 +1020 0.4315 +1080 0.421 +1140 0.4005 +1200 0.39 +1260 0.3695 +1320 0.359 +}; +\addlegendentry{real battery} +\addplot[every mark/.append style={solid}, +red, densely dashed, mark=none, thick] table[x=x, y=y] { +x y +0 0.67 +60 0.66 +120 0.64 +180 0.63 +240 0.62 +300 0.61 +360 0.59 +420 0.58 +480 0.56 +540 0.55 +600 0.54 +660 0.52 +720 0.5 +780 0.49 +840 0.47 +900 0.46 +960 0.45 +1020 0.43 +1080 0.42 +1140 0.4 +1200 0.38 +1260 0.37 +1320 0.36 +}; +\addlegendentry{sim battery} +\addlegendimage{/pgfplots/refstyle=real-current, blue, dashdotted}\addlegendentry{real + current} +\addlegendimage{/pgfplots/refstyle=sim-current, magenta, dotted}\addlegendentry{sim current} +\end{axis} +\end{tikzpicture} Added: trunk/spark/doc/papers/2013/fig/simspark-spl.png =================================================================== --- trunk/spark/doc/papers/2013/fig/simspark-spl.png (rev 0) +++ trunk/spark/doc/papers/2013/fig/simspark-spl.png 2013-03-12 14:03:10 UTC (rev 335) @@ -0,0 +1,6217 @@ +\x89PNG + + |
From: <yx...@us...> - 2013-03-08 10:55:10
|
Revision: 334 http://simspark.svn.sourceforge.net/simspark/?rev=334&view=rev Author: yxu Date: 2013-03-08 10:55:04 +0000 (Fri, 08 Mar 2013) Log Message: ----------- Merge branch 'open-source-paper' * open-source-paper: choose title ideas Modified Paths: -------------- trunk/spark/doc/papers/2013/opensource.tex Modified: trunk/spark/doc/papers/2013/opensource.tex =================================================================== --- trunk/spark/doc/papers/2013/opensource.tex 2013-03-08 10:37:09 UTC (rev 333) +++ trunk/spark/doc/papers/2013/opensource.tex 2013-03-08 10:55:04 UTC (rev 334) @@ -1,8 +1,11 @@ \documentclass{llncs} + +\usepackage{todonotes} + \begin{document} -\title{SimSpark: Open Source Robot Soccer 3D Simulator} +\title{SimSpark: An Open Source Robot Simulator Developed by RoboCup Community} \author{Yuan Xu\inst{1} \and Hedayat Vatankhah\inst{2}} @@ -21,8 +24,37 @@ \end{abstract} \section{Introduction} + +\todo[inline]{Background/histsory} \cite{Boedecker2008,OR05} +\todo[inline]{Releated work: SimRobot, Webots, V-REP, Gazebo...} + +\section{Current state / development sicen 2008} +Because last paper about simspark was in 2008 +\todo[inline]{sensors: ACC, FSR, restict vision, with line perceptions, image ...} +\todo[inline]{robot model: NAO} +\todo[inline]{soccer rules (referee)} +\todo[inline]{bigger fields and more robots} + +\section{relastic motor and model (Yuan)} + +\section{applications} + +\paragraph{RoboCup simulation league (of course)} + +\paragraph{research (used by teams have real robot)} +- we (NaoTH) have shared common interface with NAO +- FUmanoid +- education + +\section{development plan/ current development} +\begin{itemize} +\item heterogeneous robots +\item agent proxies +\item Player integration +\end{itemize} + \section{Conclusion and Future Work} \bibliographystyle{splncs03} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yx...@us...> - 2013-03-08 10:37:20
|
Revision: 333 http://simspark.svn.sourceforge.net/simspark/?rev=333&view=rev Author: yxu Date: 2013-03-08 10:37:09 +0000 (Fri, 08 Mar 2013) Log Message: ----------- paper template for "Open Source Track in RoboCup Symposium 2013" Added Paths: ----------- trunk/spark/doc/papers/2013/ trunk/spark/doc/papers/2013/llncs.cls trunk/spark/doc/papers/2013/opensource.tex trunk/spark/doc/papers/2013/reference.bib trunk/spark/doc/papers/2013/splncs03.bst Added: trunk/spark/doc/papers/2013/llncs.cls =================================================================== --- trunk/spark/doc/papers/2013/llncs.cls (rev 0) +++ trunk/spark/doc/papers/2013/llncs.cls 2013-03-08 10:37:09 UTC (rev 333) @@ -0,0 +1,1207 @@ +% LLNCS DOCUMENT CLASS -- version 2.17 (12-Jul-2010) +% Springer Verlag LaTeX2e support for Lecture Notes in Computer Science +% +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{llncs}[2010/07/12 v2.17 +^^J LaTeX document class for Lecture Notes in Computer Science] +% Options +\let\if@envcntreset\iffalse +\DeclareOption{envcountreset}{\let\if@envcntreset\iftrue} +\DeclareOption{citeauthoryear}{\let\citeauthoryear=Y} +\DeclareOption{oribibl}{\let\oribibl=Y} +\let\if@custvec\iftrue +\DeclareOption{orivec}{\let\if@custvec\iffalse} +\let\if@envcntsame\iffalse +\DeclareOption{envcountsame}{\let\if@envcntsame\iftrue} +\let\if@envcntsect\iffalse +\DeclareOption{envcountsect}{\let\if@envcntsect\iftrue} +\let\if@runhead\iffalse +\DeclareOption{runningheads}{\let\if@runhead\iftrue} + +\let\if@openright\iftrue +\let\if@openbib\iffalse +\DeclareOption{openbib}{\let\if@openbib\iftrue} + +% languages +\let\switcht@@therlang\relax +\def\ds@deutsch{\def\switcht@@therlang{\switcht@deutsch}} +\def\ds@francais{\def\switcht@@therlang{\switcht@francais}} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} + +\ProcessOptions + +\LoadClass[twoside]{article} +\RequirePackage{multicol} % needed for the list of participants, index +\RequirePackage{aliascnt} + +\setlength{\textwidth}{12.2cm} +\setlength{\textheight}{19.3cm} +\renewcommand\@pnumwidth{2em} +\renewcommand\@tocrmarg{3.5em} +% +\def\@dottedtocline#1#2#3#4#5{% + \ifnum #1>\c@tocdepth \else + \vskip \z@ \@plus.2\p@ + {\leftskip #2\relax \rightskip \@tocrmarg \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \parindent #2\relax\@afterindenttrue + \interlinepenalty\@M + \leavevmode + \@tempdima #3\relax + \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip + {#4}\nobreak + \leaders\hbox{$\m@th + \mkern \@dotsep mu\hbox{.}\mkern \@dotsep + mu$}\hfill + \nobreak + \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}% + \par}% + \fi} +% +\def\switcht@albion{% +\def\abstractname{Abstract.} +\def\ackname{Acknowledgement.} +\def\andname{and} +\def\lastandname{\unskip, and} +\def\appendixname{Appendix} +\def\chaptername{Chapter} +\def\claimname{Claim} +\def\conjecturename{Conjecture} +\def\contentsname{Table of Contents} +\def\corollaryname{Corollary} +\def\definitionname{Definition} +\def\examplename{Example} +\def\exercisename{Exercise} +\def\figurename{Fig.} +\def\keywordname{{\bf Keywords:}} +\def\indexname{Index} +\def\lemmaname{Lemma} +\def\contriblistname{List of Contributors} +\def\listfigurename{List of Figures} +\def\listtablename{List of Tables} +\def\mailname{{\it Correspondence to\/}:} +\def\noteaddname{Note added in proof} +\def\notename{Note} +\def\partname{Part} +\def\problemname{Problem} +\def\proofname{Proof} +\def\propertyname{Property} +\def\propositionname{Proposition} +\def\questionname{Question} +\def\remarkname{Remark} +\def\seename{see} +\def\solutionname{Solution} +\def\subclassname{{\it Subject Classifications\/}:} +\def\tablename{Table} +\def\theoremname{Theorem}} +\switcht@albion +% Names of theorem like environments are already defined +% but must be translated if another language is chosen +% +% French section +\def\switcht@francais{%\typeout{On parle francais.}% + \def\abstractname{R\'esum\'e.}% + \def\ackname{Remerciements.}% + \def\andname{et}% + \def\lastandname{ et}% + \def\appendixname{Appendice} + \def\chaptername{Chapitre}% + \def\claimname{Pr\'etention}% + \def\conjecturename{Hypoth\`ese}% + \def\contentsname{Table des mati\`eres}% + \def\corollaryname{Corollaire}% + \def\definitionname{D\'efinition}% + \def\examplename{Exemple}% + \def\exercisename{Exercice}% + \def\figurename{Fig.}% + \def\keywordname{{\bf Mots-cl\'e:}} + \def\indexname{Index} + \def\lemmaname{Lemme}% + \def\contriblistname{Liste des contributeurs} + \def\listfigurename{Liste des figures}% + \def\listtablename{Liste des tables}% + \def\mailname{{\it Correspondence to\/}:} + \def\noteaddname{Note ajout\'ee \`a l'\'epreuve}% + \def\notename{Remarque}% + \def\partname{Partie}% + \def\problemname{Probl\`eme}% + \def\proofname{Preuve}% + \def\propertyname{Caract\'eristique}% +%\def\propositionname{Proposition}% + \def\questionname{Question}% + \def\remarkname{Remarque}% + \def\seename{voir} + \def\solutionname{Solution}% + \def\subclassname{{\it Subject Classifications\/}:} + \def\tablename{Tableau}% + \def\theoremname{Th\'eor\`eme}% +} +% +% German section +\def\switcht@deutsch{%\typeout{Man spricht deutsch.}% + \def\abstractname{Zusammenfassung.}% + \def\ackname{Danksagung.}% + \def\andname{und}% + \def\lastandname{ und}% + \def\appendixname{Anhang}% + \def\chaptername{Kapitel}% + \def\claimname{Behauptung}% + \def\conjecturename{Hypothese}% + \def\contentsname{Inhaltsverzeichnis}% + \def\corollaryname{Korollar}% +%\def\definitionname{Definition}% + \def\examplename{Beispiel}% + \def\exercisename{\"Ubung}% + \def\figurename{Abb.}% + \def\keywordname{{\bf Schl\"usselw\"orter:}} + \def\indexname{Index} +%\def\lemmaname{Lemma}% + \def\contriblistname{Mitarbeiter} + \def\listfigurename{Abbildungsverzeichnis}% + \def\listtablename{Tabellenverzeichnis}% + \def\mailname{{\it Correspondence to\/}:} + \def\noteaddname{Nachtrag}% + \def\notename{Anmerkung}% + \def\partname{Teil}% +%\def\problemname{Problem}% + \def\proofname{Beweis}% + \def\propertyname{Eigenschaft}% +%\def\propositionname{Proposition}% + \def\questionname{Frage}% + \def\remarkname{Anmerkung}% + \def\seename{siehe} + \def\solutionname{L\"osung}% + \def\subclassname{{\it Subject Classifications\/}:} + \def\tablename{Tabelle}% +%\def\theoremname{Theorem}% +} + +% Ragged bottom for the actual page +\def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil +\global\let\@textbottom\relax}} + +\renewcommand\small{% + \@setfontsize\small\@ixpt{11}% + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus2\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \def\@listi{\leftmargin\leftmargini + \parsep 0\p@ \@plus1\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep0\p@}% + \belowdisplayskip \abovedisplayskip +} + +\frenchspacing +\widowpenalty=10000 +\clubpenalty=10000 + +\setlength\oddsidemargin {63\p@} +\setlength\evensidemargin {63\p@} +\setlength\marginparwidth {90\p@} + +\setlength\headsep {16\p@} + +\setlength\footnotesep{7.7\p@} +\setlength\textfloatsep{8mm\@plus 2\p@ \@minus 4\p@} +\setlength\intextsep {8mm\@plus 2\p@ \@minus 2\p@} + +\setcounter{secnumdepth}{2} + +\newcounter {chapter} +\renewcommand\thechapter {\@arabic\c@chapter} + +\newif\if@mainmatter \@mainmattertrue +\newcommand\frontmatter{\cleardoublepage + \@mainmatterfalse\pagenumbering{Roman}} +\newcommand\mainmatter{\cleardoublepage + \@mainmattertrue\pagenumbering{arabic}} +\newcommand\backmatter{\if@openright\cleardoublepage\else\clearpage\fi + \@mainmatterfalse} + +\renewcommand\part{\cleardoublepage + \thispagestyle{empty}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \null\vfil + \secdef\@part\@spart} + +\def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \partname~\thepart + \par + \vskip 20\p@ + \fi + \Huge \bfseries #2\par}% + \@endpart} +\def\@spart#1{% + {\centering + \interlinepenalty \@M + \normalfont + \Huge \bfseries #1\par}% + \@endpart} +\def\@endpart{\vfil\newpage + \if@twoside + \null + \thispagestyle{empty}% + \newpage + \fi + \if@tempswa + \twocolumn + \fi} + +\newcommand\chapter{\clearpage + \thispagestyle{empty}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter} +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +\def\@makechapterhead#1{% +% \vspace*{50\p@}% + {\centering + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \large\bfseries \@chapapp{} \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \fi + \interlinepenalty\@M + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} +\def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} +\def\@makeschapterhead#1{% +% \vspace*{50\p@}% + {\centering + \normalfont + \interlinepenalty\@M + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} + +\renewcommand\section{\@startsection{section}{1}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {12\p@ \@plus 4\p@ \@minus 4\p@}% + {\normalfont\large\bfseries\boldmath + \rightskip=\z@ \@plus 8em\pretolerance=10000 }} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {8\p@ \@plus 4\p@ \@minus 4\p@}% + {\normalfont\normalsize\bfseries\boldmath + \rightskip=\z@ \@plus 8em\pretolerance=10000 }} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {-0.5em \@plus -0.22em \@minus -0.1em}% + {\normalfont\normalsize\bfseries\boldmath}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {-12\p@ \@plus -4\p@ \@minus -4\p@}% + {-0.5em \@plus -0.22em \@minus -0.1em}% + {\normalfont\normalsize\itshape}} +\renewcommand\subparagraph[1]{\typeout{LLNCS warning: You should not use + \string\subparagraph\space with this class}\vskip0.5cm +You should not use \verb|\subparagraph| with this class.\vskip0.5cm} + +\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00} +\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01} +\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02} +\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03} +\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04} +\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05} +\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06} +\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07} +\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08} +\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09} +\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A} + +\let\footnotesize\small + +\if@custvec +\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle#1$}} +{\mbox{\boldmath$\textstyle#1$}} +{\mbox{\boldmath$\scriptstyle#1$}} +{\mbox{\boldmath$\scriptscriptstyle#1$}}} +\fi + +\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}} +\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil +\penalty50\hskip1em\null\nobreak\hfil\squareforqed +\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi} + +\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr\gets\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +\gets\cr\to\cr}}}}} +\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr +\noalign{\vskip0.9pt}=\cr}}}}} +\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr +\noalign{\vskip0.9pt}=\cr}}}}} +\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.8pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.3pt}<\cr}}}}} +\def\bbbr{{\rm I\!R}} %reelle Zahlen +\def\bbbm{{\rm I\!M}} +\def\bbbn{{\rm I\!N}} %natuerliche Zahlen +\def\bbbf{{\rm I\!F}} +\def\bbbh{{\rm I\!H}} +\def\bbbk{{\rm I\!K}} +\def\bbbp{{\rm I\!P}} +\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l} +{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}} +\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}} +\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbs{{\mathchoice +{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}} +\def\bbbz{{\mathchoice {\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\mathsf\scriptstyle Z\kern-0.3em Z$}} +{\hbox{$\mathsf\scriptscriptstyle Z\kern-0.2em Z$}}}} + +\let\ts\, + +\setlength\leftmargini {17\p@} +\setlength\leftmargin {\leftmargini} +\setlength\leftmarginii {\leftmargini} +\setlength\leftmarginiii {\leftmargini} +\setlength\leftmarginiv {\leftmargini} +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} + +\def\@listI{\leftmargin\leftmargini + \parsep 0\p@ \@plus1\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep0\p@} +\let\@listi\@listI +\@listi +\def\@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus2\p@ \@minus\p@} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus\p@\@minus\p@ + \parsep \z@ + \partopsep \p@ \@plus\z@ \@minus\p@} + +\renewcommand\labelitemi{\normalfont\bfseries --} +\renewcommand\labelitemii{$\m@th\bullet$} + +\setlength\arraycolsep{1.4\p@} +\setlength\tabcolsep{1.4\p@} + +\def\tableofcontents{\chapter*{\contentsname\@mkboth{{\contentsname}}% + {{\contentsname}}} + \def\authcount##1{\setcounter{auco}{##1}\setcounter{@auth}{1}} + \def\lastand{\ifnum\value{auco}=2\relax + \unskip{} \andname\ + \else + \unskip \lastandname\ + \fi}% + \def\and{\stepcounter{@auth}\relax + \ifnum\value{@auth}=\value{auco}% + \lastand + \else + \unskip, + \fi}% + \@starttoc{toc}\if@restonecol\twocolumn\fi} + +\def\l@part#1#2{\addpenalty{\@secpenalty}% + \addvspace{2em plus\p@}% % space above part line + \begingroup + \parindent \z@ + \rightskip \z@ plus 5em + \hrule\vskip5pt + \large % same size as for a contribution heading + \bfseries\boldmath % set line in boldface + \leavevmode % TeX command to enter horizontal mode. + #1\par + \vskip5pt + \hrule + \vskip1pt + \nobreak % Never break after part entry + \endgroup} + +\def\@dotsep{2} + +\let\phantomsection=\relax + +\def\hyperhrefextend{\ifx\hyper@anchor\@undefined\else +{}\fi} + +\def\addnumcontentsmark#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{\protect\numberline + {\thechapter}#3}{\thepage}\hyperhrefextend}}% +\def\addcontentsmark#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}\hyperhrefextend}}% +\def\addcontentsmarkwop#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{#3}{0}\hyperhrefextend}}% + +\def\@adcmk[#1]{\ifcase #1 \or +\def\@gtempa{\addnumcontentsmark}% + \or \def\@gtempa{\addcontentsmark}% + \or \def\@gtempa{\addcontentsmarkwop}% + \fi\@gtempa{toc}{chapter}% +} +\def\addtocmark{% +\phantomsection +\@ifnextchar[{\@adcmk}{\@adcmk[3]}% +} + +\def\l@chapter#1#2{\addpenalty{-\@highpenalty} + \vskip 1.0em plus 1pt \@tempdima 1.5em \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip + {\large\bfseries\boldmath#1}\ifx0#2\hfil\null + \else + \nobreak + \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern + \@dotsep mu$}\hfill + \nobreak\hbox to\@pnumwidth{\hss #2}% + \fi\par + \penalty\@highpenalty \endgroup} + +\def\l@title#1#2{\addpenalty{-\@highpenalty} + \addvspace{8pt plus 1pt} + \@tempdima \z@ + \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip + #1\nobreak + \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern + \@dotsep mu$}\hfill + \nobreak\hbox to\@pnumwidth{\hss #2}\par + \penalty\@highpenalty \endgroup} + +\def\l@author#1#2{\addpenalty{\@highpenalty} + \@tempdima=15\p@ %\z@ + \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima %\hskip -\leftskip + \textit{#1}\par + \penalty\@highpenalty \endgroup} + +\setcounter{tocdepth}{0} +\newdimen\tocchpnum +\newdimen\tocsecnum +\newdimen\tocsectotal +\newdimen\tocsubsecnum +\newdimen\tocsubsectotal +\newdimen\tocsubsubsecnum +\newdimen\tocsubsubsectotal +\newdimen\tocparanum +\newdimen\tocparatotal +\newdimen\tocsubparanum +\tocchpnum=\z@ % no chapter numbers +\tocsecnum=15\p@ % section 88. plus 2.222pt +\tocsubsecnum=23\p@ % subsection 88.8 plus 2.222pt +\tocsubsubsecnum=27\p@ % subsubsection 88.8.8 plus 1.444pt +\tocparanum=35\p@ % paragraph 88.8.8.8 plus 1.666pt +\tocsubparanum=43\p@ % subparagraph 88.8.8.8.8 plus 1.888pt +\def\calctocindent{% +\tocsectotal=\tocchpnum +\advance\tocsectotal by\tocsecnum +\tocsubsectotal=\tocsectotal +\advance\tocsubsectotal by\tocsubsecnum +\tocsubsubsectotal=\tocsubsectotal +\advance\tocsubsubsectotal by\tocsubsubsecnum +\tocparatotal=\tocsubsubsectotal +\advance\tocparatotal by\tocparanum} +\calctocindent + +\def\l@section{\@dottedtocline{1}{\tocchpnum}{\tocsecnum}} +\def\l@subsection{\@dottedtocline{2}{\tocsectotal}{\tocsubsecnum}} +\def\l@subsubsection{\@dottedtocline{3}{\tocsubsectotal}{\tocsubsubsecnum}} +\def\l@paragraph{\@dottedtocline{4}{\tocsubsubsectotal}{\tocparanum}} +\def\l@subparagraph{\@dottedtocline{5}{\tocparatotal}{\tocsubparanum}} + +\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\section*{\listfigurename\@mkboth{{\listfigurename}}{{\listfigurename}}} + \@starttoc{lof}\if@restonecol\twocolumn\fi} +\def\l@figure{\@dottedtocline{1}{0em}{1.5em}} + +\def\listoftables{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\section*{\listtablename\@mkboth{{\listtablename}}{{\listtablename}}} + \@starttoc{lot}\if@restonecol\twocolumn\fi} +\let\l@table\l@figure + +\renewcommand\listoffigures{% + \section*{\listfigurename + \@mkboth{\listfigurename}{\listfigurename}}% + \@starttoc{lof}% + } + +\renewcommand\listoftables{% + \section*{\listtablename + \@mkboth{\listtablename}{\listtablename}}% + \@starttoc{lot}% + } + +\ifx\oribibl\undefined +\ifx\citeauthoryear\undefined +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \def\@biblabel##1{##1.} + \small + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\def\@lbibitem[#1]#2{\item[{[#1]}\hfill]\if@filesw + {\let\protect\noexpand\immediate + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} +\newcount\@tempcntc +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@ifundefined + {b@\@citeb}{\@citeo\@tempcntb\m@ne\@citea\def\@citea{,}{\bfseries + ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}% + \ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne + \@citea\def\@citea{,}\hbox{\csname b@\@citeb\endcsname}% + \else + \advance\@tempcntb\@ne + \ifnum\@tempcntb=\@tempcntc + \else\advance\@tempcntb\m@ne\@citeo + \@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}} +\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else + \@citea\def\@citea{,\,\hskip\z@skip}% + \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else + {\advance\@tempcnta\@ne\ifnum\@tempcnta=\@tempcntb \else + \def\@citea{--}\fi + \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi} +\else +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \small + \list{}% + {\settowidth\labelwidth{}% + \leftmargin\parindent + \itemindent=-\parindent + \labelsep=\z@ + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} + \def\@cite#1{#1}% + \def\@lbibitem[#1]#2{\item[]\if@filesw + {\def\protect##1{\string ##1\space}\immediate + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} + \fi +\else +\@cons\@openbib@code{\noexpand\small} +\fi + +\def\idxquad{\hskip 10\p@}% space that divides entry from number + +\def\@idxitem{\par\hangindent 10\p@} + +\def\subitem{\par\setbox0=\hbox{--\enspace}% second order + \noindent\hangindent\wd0\box0}% index entry + +\def\subsubitem{\par\setbox0=\hbox{--\,--\enspace}% third + \noindent\hangindent\wd0\box0}% order index entry + +\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax} + +\renewenvironment{theindex} + {\@mkboth{\indexname}{\indexname}% + \thispagestyle{empty}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\par + \def\,{\relax\ifmmode\mskip\thinmuskip + \else\hskip0.2em\ignorespaces\fi}% + \normalfont\small + \begin{multicols}{2}[\@makeschapterhead{\indexname}]% + } + {\end{multicols}} + +\renewcommand\footnoterule{% + \kern-3\p@ + \hrule\@width 2truecm + \kern2.6\p@} + \newdimen\fnindent + \fnindent1em +\long\def\@makefntext#1{% + \parindent \fnindent% + \leftskip \fnindent% + \noindent + \llap{\hb@xt@1em{\hss\@makefnmark\ }}\ignorespaces#1} + +\long\def\@makecaption#1#2{% + \small + \vskip\abovecaptionskip + \sbox\@tempboxa{{\bfseries #1.} #2}% + \ifdim \wd\@tempboxa >\hsize + {\bfseries #1.} #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + +\def\fps@figure{htbp} +\def\fnum@figure{\figurename\thinspace\thefigure} +\def \@floatboxreset {% + \reset@font + \small + \@setnobreak + \@setminipage +} +\def\fps@table{htbp} +\def\fnum@table{\tablename~\thetable} +\renewenvironment{table} + {\setlength\abovecaptionskip{0\p@}% + \setlength\belowcaptionskip{10\p@}% + \@float{table}} + {\end@float} +\renewenvironment{table*} + {\setlength\abovecaptionskip{0\p@}% + \setlength\belowcaptionskip{10\p@}% + \@dblfloat{table}} + {\end@dblfloat} + +\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname + ext@#1\endcsname}{#1}{\protect\numberline{\csname + the#1\endcsname}{\ignorespaces #2}}\begingroup + \@parboxrestore + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup} + +% LaTeX does not provide a command to enter the authors institute +% addresses. The \institute command is defined here. + +\newcounter{@inst} +\newcounter{@auth} +\newcounter{auco} +\newdimen\instindent +\newbox\authrun +\newtoks\authorrunning +\newtoks\tocauthor +\newbox\titrun +\newtoks\titlerunning +\newtoks\toctitle + +\def\clearheadinfo{\gdef\@author{No Author Given}% + \gdef\@title{No Title Given}% + \gdef\@subtitle{}% + \gdef\@institute{No Institute Given}% + \gdef\@thanks{}% + \global\titlerunning={}\global\authorrunning={}% + \global\toctitle={}\global\tocauthor={}} + +\def\institute#1{\gdef\@institute{#1}} + +\def\institutename{\par + \begingroup + \parskip=\z@ + \parindent=\z@ + \setcounter{@inst}{1}% + \def\and{\par\stepcounter{@inst}% + \noindent$^{\the@inst}$\enspace\ignorespaces}% + \setbox0=\vbox{\def\thanks##1{}\@institute}% + \ifnum\c@@inst=1\relax + \gdef\fnnstart{0}% + \else + \xdef\fnnstart{\c@@inst}% + \setcounter{@inst}{1}% + \noindent$^{\the@inst}$\enspace + \fi + \ignorespaces + \@institute\par + \endgroup} + +\def\@fnsymbol#1{\ensuremath{\ifcase#1\or\star\or{\star\star}\or + {\star\star\star}\or \dagger\or \ddagger\or + \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger + \or \ddagger\ddagger \else\@ctrerr\fi}} + +\def\inst#1{\unskip$^{#1}$} +\def\fnmsep{\unskip$^,$} +\def\email#1{{\tt#1}} +\AtBeginDocument{\@ifundefined{url}{\def\url#1{#1}}{}% +\@ifpackageloaded{babel}{% +\@ifundefined{extrasenglish}{}{\addto\extrasenglish{\switcht@albion}}% +\@ifundefined{extrasfrenchb}{}{\addto\extrasfrenchb{\switcht@francais}}% +\@ifundefined{extrasgerman}{}{\addto\extrasgerman{\switcht@deutsch}}% +}{\switcht@@therlang}% +\providecommand{\keywords}[1]{\par\addvspace\baselineskip +\noindent\keywordname\enspace\ignorespaces#1}% +} +\def\homedir{\~{ }} + +\def\subtitle#1{\gdef\@subtitle{#1}} +\clearheadinfo +% +%%% to avoid hyperref warnings +\providecommand*{\toclevel@author}{999} +%%% to make title-entry parent of section-entries +\providecommand*{\toclevel@title}{0} +% +\renewcommand\maketitle{\newpage +\phantomsection + \refstepcounter{chapter}% + \stepcounter{section}% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{figure}{0} + \setcounter{table}{0} + \setcounter{equation}{0} + \setcounter{footnote}{0}% + \begingroup + \parindent=\z@ + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else + \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \fi + \thispagestyle{empty}\@thanks +% + \def\\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}% + \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}% + \instindent=\hsize + \advance\instindent by-\headlineindent + \if!\the\toctitle!\addcontentsline{toc}{title}{\@title}\else + \addcontentsline{toc}{title}{\the\toctitle}\fi + \if@runhead + \if!\the\titlerunning!\else + \edef\@title{\the\titlerunning}% + \fi + \global\setbox\titrun=\hbox{\small\rm\unboldmath\ignorespaces\@title}% + \ifdim\wd\titrun>\instindent + \typeout{Title too long for running head. Please supply}% + \typeout{a shorter form with \string\titlerunning\space prior to + \string\maketitle}% + \global\setbox\titrun=\hbox{\small\rm + Title Suppressed Due to Excessive Length}% + \fi + \xdef\@title{\copy\titrun}% + \fi +% + \if!\the\tocauthor!\relax + {\def\and{\noexpand\protect\noexpand\and}% + \protected@xdef\toc@uthor{\@author}}% + \else + \def\\{\noexpand\protect\noexpand\newline}% + \protected@xdef\scratch{\the\tocauthor}% + \protected@xdef\toc@uthor{\scratch}% + \fi + \addtocontents{toc}{\noexpand\protect\noexpand\authcount{\the\c@auco}}% + \addcontentsline{toc}{author}{\toc@uthor}% + \if@runhead + \if!\the\authorrunning! + \value{@inst}=\value{@auth}% + \setcounter{@auth}{1}% + \else + \edef\@author{\the\authorrunning}% + \fi + \global\setbox\authrun=\hbox{\small\unboldmath\@author\unskip}% + \ifdim\wd\authrun>\instindent + \typeout{Names of authors too long for running head. Please supply}% + \typeout{a shorter form with \string\authorrunning\space prior to + \string\maketitle}% + \global\setbox\authrun=\hbox{\small\rm + Authors Suppressed Due to Excessive Length}% + \fi + \xdef\@author{\copy\authrun}% + \markboth{\@author}{\@title}% + \fi + \endgroup + \setcounter{footnote}{\fnnstart}% + \clearheadinfo} +% +\def\@maketitle{\newpage + \markboth{}{}% + \def\lastand{\ifnum\value{@inst}=2\relax + \unskip{} \andname\ + \else + \unskip \lastandname\ + \fi}% + \def\and{\stepcounter{@auth}\relax + \ifnum\value{@auth}=\value{@inst}% + \lastand + \else + \unskip, + \fi}% + \begin{center}% + \let\newline\\ + {\Large \bfseries\boldmath + \pretolerance=10000 + \@title \par}\vskip .8cm +\if!\@subtitle!\else {\large \bfseries\boldmath + \vskip -.65cm + \pretolerance=10000 + \@subtitle \par}\vskip .8cm\fi + \setbox0=\vbox{\setcounter{@auth}{1}\def\and{\stepcounter{@auth}}% + \def\thanks##1{}\@author}% + \global\value{@inst}=\value{@auth}% + \global\value{auco}=\value{@auth}% + \setcounter{@auth}{1}% +{\lineskip .5em +\noindent\ignorespaces +\@author\vskip.35cm} + {\small\institutename} + \end{center}% + } + +% definition of the "\spnewtheorem" command. +% +% Usage: +% +% \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font} +% or \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font} +% or \spnewtheorem*{env_nam}{caption}{cap_font}{body_font} +% +% New is "cap_font" and "body_font". It stands for +% fontdefinition of the caption and the text itself. +% +% "\spnewtheorem*" gives a theorem without number. +% +% A defined spnewthoerem environment is used as described +% by Lamport. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\@thmcountersep{} +\def\@thmcounterend{.} + +\def\spnewtheorem{\@ifstar{\@sthm}{\@Sthm}} + +% definition of \spnewtheorem with number + +\def\@spnthm#1#2{% + \@ifnextchar[{\@spxnthm{#1}{#2}}{\@spynthm{#1}{#2}}} +\def\@Sthm#1{\@ifnextchar[{\@spothm{#1}}{\@spnthm{#1}}} + +\def\@spxnthm#1#2[#3]#4#5{\expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@addtoreset{#1}{#3}% + \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand + \csname the#3\endcsname \noexpand\@thmcountersep \@thmcounter{#1}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@spynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}% + \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@spothm#1[#2]#3#4#5{% + \@ifundefined{c@#2}{\@latexerr{No theorem environment `#2' defined}\@eha}% + {\expandafter\@ifdefinable\csname #1\endcsname + {\newaliascnt{#1}{#2}% + \expandafter\xdef\csname #1name\endcsname{#3}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% + \global\@namedef{end#1}{\@endtheorem}}}} + +\def\@spthm#1#2#3#4{\topsep 7\p@ \@plus2\p@ \@minus4\p@ +\refstepcounter{#1}% +\@ifnextchar[{\@spythm{#1}{#2}{#3}{#4}}{\@spxthm{#1}{#2}{#3}{#4}}} + +\def\@spxthm#1#2#3#4{\@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}% + \ignorespaces} + +\def\@spythm#1#2#3#4[#5]{\@spopargbegintheorem{#2}{\csname + the#1\endcsname}{#5}{#3}{#4}\ignorespaces} + +\def\@spbegintheorem#1#2#3#4{\trivlist + \item[\hskip\labelsep{#3#1\ #2\@thmcounterend}]#4} + +\def\@spopargbegintheorem#1#2#3#4#5{\trivlist + \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)\@thmcounterend\ }#5} + +% definition of \spnewtheorem* without number + +\def\@sthm#1#2{\@Ynthm{#1}{#2}} + +\def\@Ynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname + {\global\@namedef{#1}{\@Thm{\csname #1name\endcsname}{#3}{#4}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@Thm#1#2#3{\topsep 7\p@ \@plus2\p@ \@minus4\p@ +\@ifnextchar[{\@Ythm{#1}{#2}{#3}}{\@Xthm{#1}{#2}{#3}}} + +\def\@Xthm#1#2#3{\@Begintheorem{#1}{#2}{#3}\ignorespaces} + +\def\@Ythm#1#2#3[#4]{\@Opargbegintheorem{#1} + {#4}{#2}{#3}\ignorespaces} + +\def\@Begintheorem#1#2#3{#3\trivlist + \item[\hskip\labelsep{#2#1\@thmcounterend}]} + +\def\@Opargbegintheorem#1#2#3#4{#4\trivlist + \item[\hskip\labelsep{#3#1}]{#3(#2)\@thmcounterend\ }} + +\if@envcntsect + \def\@thmcountersep{.} + \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape} +\else + \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape} + \if@envcntreset + \@addtoreset{theorem}{section} + \else + \@addtoreset{theorem}{chapter} + \fi +\fi + +%definition of divers theorem environments +\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily} +\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily} +\if@envcntsame % alle Umgebungen wie Theorem. + \def\spn@wtheorem#1#2#3#4{\@spothm{#1}[theorem]{#2}{#3}{#4}} +\else % alle Umgebungen mit eigenem Zaehler + \if@envcntsect % mit section numeriert + \def\spn@wtheorem#1#2#3#4{\@spxnthm{#1}{#2}[section]{#3}{#4}} + \else % nicht mit section numeriert + \if@envcntreset + \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} + \@addtoreset{#1}{section}} + \else + \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} + \@addtoreset{#1}{chapter}}% + \fi + \fi +\fi +\spn@wtheorem{case}{Case}{\itshape}{\rmfamily} +\spn@wtheorem{conjecture}{Conjecture}{\itshape}{\rmfamily} +\spn@wtheorem{corollary}{Corollary}{\bfseries}{\itshape} +\spn@wtheorem{definition}{Definition}{\bfseries}{\itshape} +\spn@wtheorem{example}{Example}{\itshape}{\rmfamily} +\spn@wtheorem{exercise}{Exercise}{\itshape}{\rmfamily} +\spn@wtheorem{lemma}{Lemma}{\bfseries}{\itshape} +\spn@wtheorem{note}{Note}{\itshape}{\rmfamily} +\spn@wtheorem{problem}{Problem}{\itshape}{\rmfamily} +\spn@wtheorem{property}{Property}{\itshape}{\rmfamily} +\spn@wtheorem{proposition}{Proposition}{\bfseries}{\itshape} +\spn@wtheorem{question}{Question}{\itshape}{\rmfamily} +\spn@wtheorem{solution}{Solution}{\itshape}{\rmfamily} +\spn@wtheorem{remark}{Remark}{\itshape}{\rmfamily} + +\def\@takefromreset#1#2{% + \def\@tempa{#1}% + \let\@tempd\@elt + \def\@elt##1{% + \def\@tempb{##1}% + \ifx\@tempa\@tempb\else + \@addtoreset{##1}{#2}% + \fi}% + \expandafter\expandafter\let\expandafter\@tempc\csname cl@#2\endcsname + \expandafter\def\csname cl@#2\endcsname{}% + \@tempc + \let\@elt\@tempd} + +\def\theopargself{\def\@spopargbegintheorem##1##2##3##4##5{\trivlist + \item[\hskip\labelsep{##4##1\ ##2}]{##4##3\@thmcounterend\ }##5} + \def\@Opargbegintheorem##1##2##3##4{##4\trivlist + \item[\hskip\labelsep{##3##1}]{##3##2\@thmcounterend\ }} + } + +\renewenvironment{abstract}{% + \list{}{\advance\topsep by0.35cm\relax\small + \leftmargin=1cm + \labelwidth=\z@ + \listparindent=\z@ + \itemindent\listparindent + \rightmargin\leftmargin}\item[\hskip\labelsep + \bfseries\abstractname]} + {\endlist} + +\newdimen\headlineindent % dimension for space between +\headlineindent=1.166cm % number and text of headings. + +\def\ps@headings{\let\@mkboth\@gobbletwo + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% + \leftmark\hfil} + \def\@oddhead{\normalfont\small\hfil\rightmark\hspace{\headlineindent}% + \llap{\thepage}} + \def\chaptermark##1{}% + \def\sectionmark##1{}% + \def\subsectionmark##1{}} + +\def\ps@titlepage{\let\@mkboth\@gobbletwo + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% + \hfil} + \def\@oddhead{\normalfont\small\hfil\hspace{\headlineindent}% + \llap{\thepage}} + \def\chaptermark##1{}% + \def\sectionmark##1{}% + \def\subsectionmark##1{}} + +\if@runhead\ps@headings\else +\ps@empty\fi + +\setlength\arraycolsep{1.4\p@} +\setlength\tabcolsep{1.4\p@} + +\endinput +%end of file llncs.cls Added: trunk/spark/doc/papers/2013/opensource.tex =================================================================== --- trunk/spark/doc/papers/2013/opensource.tex (rev 0) +++ trunk/spark/doc/papers/2013/opensource.tex 2013-03-08 10:37:09 UTC (rev 333) @@ -0,0 +1,30 @@ +\documentclass{llncs} +\begin{document} + + +\title{SimSpark: Open Source Robot Soccer 3D Simulator} + +\author{Yuan Xu\inst{1} \and Hedayat Vatankhah\inst{2}} + +\institute{ +DAI-Labor, Technical University of Berlin, Germany\\ +\email{yu...@da...} +\and +Amirkabir University of Technology, Iran\\ +\email{hed...@gm...} +} + +\maketitle + +\begin{abstract} + this is abstract +\end{abstract} + +\section{Introduction} +\cite{Boedecker2008,OR05} + +\section{Conclusion and Future Work} + +\bibliographystyle{splncs03} +\bibliography{reference} +\end{document} Added: trunk/spark/doc/papers/2013/reference.bib =================================================================== --- trunk/spark/doc/papers/2013/reference.bib (rev 0) +++ trunk/spark/doc/papers/2013/reference.bib 2013-03-08 10:37:09 UTC (rev 333) @@ -0,0 +1,38 @@ +% This file was created with JabRef 2.7. +% Encoding: UTF8 + +@INPROCEEDINGS{Boedecker2008, + author = {Joschka Boedecker and Minoru Asada}, + title = {SimSpark -- Concepts and Application in the RoboCup 3D Soccer Simulation + League}, + booktitle = {Proceedings of the SIMPAR-2008 Workshop on The Universe of RoboCup + Simulators}, + year = {2008}, + address = {Venice(Italy)}, + month = {November}, + owner = {xu}, + timestamp = {2010.08.21} +} + +@ARTICLE{OR05, + author = {Oliver Obst and Markus Rollmann}, + title = {{SPARK} -- {A} {G}eneric {S}imulator for {P}hysical {M}ultiagent + {S}imulations}, + journal = {Computer Systems Science and Engineering}, + year = {2005}, + volume = {20}, + pages = {347--356}, + number = {5}, + month = sep, + abstract = {We describe a new multi-agent simulation system, called Spark, for + agents in three-dimensional environments. Our goal in creating Spark + was to provide a high degree of flexibility for creating new types + of simulations. We implemented a flexible application framework and + exhausted the idea of replaceable components in the resulting system. + In comparison to specialized simulators, users can effortlessly create + new simulations by using a scene description language. Spark is a + powerful tool to state description language. Spark is a powerful + tool to state used as official simulator for the first three-dimensional + RoboCup Simulation League competition. } +} + Added: trunk/spark/doc/papers/2013/splncs03.bst =================================================================== --- trunk/spark/doc/papers/2013/splncs03.bst (rev 0) +++ trunk/spark/doc/papers/2013/splncs03.bst 2013-03-08 10:37:09 UTC (rev 333) @@ -0,0 +1,1519 @@ +%% BibTeX bibliography style `splncs03' +%% +%% BibTeX bibliography style for use with numbered references in +%% Springer Verlag's "Lecture Notes in Computer Science" series. +%% (See Springer's documentation for llncs.cls for +%% more details of the suggested reference format.) Note that this +%% file will not work for author-year style citations. +%% +%% Use \documentclass{llncs} and \bibliographystyle{splncs03}, and cite +%% a reference with (e.g.) \cite{smith77} to get a "[1]" in the text. +%% +%% This file comes to you courtesy of Maurizio "Titto" Patrignani of +%% Dipartimento di Informatica e Automazione Universita' Roma Tre +%% +%% ================================================================================================ +%% This was file `titto-lncs-02.bst' produced on Wed Apr 1, 2009 +%% Edited by hand by titto based on `titto-lncs-01.bst' (see below) +%% +%% CHANGES (with respect to titto-lncs-01.bst): +%% - Removed the call to \urlprefix (thus no "URL" string is added to the output) +%% ================================================================================================ +%% This was file `titto-lncs-01.bst' produced on Fri Aug 22, 2008 +%% Edited by hand by titto based on `titto.bst' (see below) +%% +%% CHANGES (with respect to titto.bst): +%% - Removed the "capitalize" command for editors string "(eds.)" and "(ed.)" +%% - Introduced the functions titto.bbl.pages and titto.bbl.page for journal pages (without "pp.") +%% - Added a new.sentence command to separate with a dot booktitle and series in the inproceedings +%% - Commented all new.block commands before urls and notes (to separate them with a comma) +%% - Introduced the functions titto.bbl.volume for handling journal volumes (without "vol." label) +%% - Used for editors the same name conventions used for authors (see function format.in.ed.booktitle) +%% - Removed a \newblock to avoid long spaces between title and "In: ..." +%% - Added function titto.space.prefix to add a space instead of "~" after the (removed) "vol." label +%% ================================================================================================ +%% This was file `titto.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% merlin.mbs (with options: `vonx,nm-rvvc,yr-par,jttl-rm,volp-com,jwdpg,jwdvol,numser,ser-vol,jnm-x,btit-rm,bt-rm,edparxc,bkedcap,au-col,in-col,fin-bare,pp,ed,abr,mth-bare,xedn,jabr,and-com,and-com-ed,xand,url,url-blk,em-x,nfss,') +%% ---------------------------------------- +%% *** Tentative .bst file for Springer LNCS *** +%% +%% Copyright 1994-2007 Patrick W Daly + % =============================================================== + % IMPORTANT NOTICE: + % This bibliographic style (bst) file has been generated from one or + % more master bibliographic style (mbs) files, listed above. + % + % This generated file can be redistributed and/or modified under the terms + % of the LaTeX Project Public License Distributed from CTAN + % archives in directory macros/latex/base/lppl.txt; either + % version 1 of the License, or any later version. + % =============================================================== + % Name and version information of the main mbs file: + % \ProvidesFile{merlin.mbs}[2007/04/24 4.20 (PWD, AO, DPC)] + % For use with BibTeX version 0.99a or later + %------------------------------------------------------------------- + % This bibliography style file is intended for texts in ENGLISH + % This is a numerical citation style, and as such is standard LaTeX. + % It requires no extra package to interface to the main text. + % The form of the \bibitem entries is + % \bibitem{key}... + % Usage of \cite is as follows: + % \cite{key} ==>> [#] + % \cite[chap. 2]{key} ==>> [#, chap. 2] + % where # is a number determined by the ordering in the reference list. + % The order in the reference list is alphabetical by authors. + %--------------------------------------------------------------------- + +ENTRY + { address + author + booktitle + chapter + edition + editor + eid + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + url + volume + year + } + {} + { label } +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} +STRINGS { s t} +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ +% newline$ +% "\newblock " write$ % removed for titto-lncs-01 + " " write$ % to avoid long spaces between title and "In: ..." + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} +FUNCTION {fin.entry} +{ duplicate$ empty$ + 'pop$ + 'write$ + if$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + + +FUNCTION {add.colon} +{ duplicate$ empty$ + 'skip$ + { ":" * add.blank } + if$ +} + +FUNCTION {date.block} +{ + new.block +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} +STRINGS {z} +FUNCTION {remove.dots} +{ 'z := + "" + { z empty$ not } + { z #1 #1 substring$ + z #2 global.max$ substring$ 'z := + duplicate$ "." = 'pop$ + { * } + if$ + } + while$ +} +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} +FUNCTION {emphasize} +{ skip$ } +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} +FUNCTION {titto.space.prefix} % always introduce a space +{ duplicate$ text.length$ #3 < + { " " } + { " " } + if$ + swap$ +} + + +FUNCTION {capitalize} +{ "u" change.case$ "t" change.case$ } + +FUNCTION {space.word} +{ " " swap$ * " " * } + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. + % The language selected here is ENGLISH +FUNCTION {bbl.and} +{ "and"} + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.editors} +{ "eds." } + +FUNCTION {bbl.editor} +{ "ed." } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +{ "edn." } + +FUNCTION {bbl.volume} +{ "vol." } + +FUNCTION {titto.bbl.volume} % for handling journals +{ "" } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +{ "no." } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +{ "pp." } + +FUNCTION {bbl.page} +{ "p." } + +FUNCTION {titto.bbl.pages} % for journals +{ "" } + +FUNCTION {titto.bbl.page} % for journals +{ "" } + +FUNCTION {bbl.chapter} +{ "chap." } + +FUNCTION {bbl.techrep} +{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Apr."} + +MACRO {may} {"May"} + +MACRO {jun} {"Jun."} + +MACRO {jul} {"Jul."} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sep."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + +MACRO {acmcs} {"ACM Comput. Surv."} + +MACRO {acta} {"Acta Inf."} + +MACRO {cacm} {"Commun. ACM"} + +MACRO {ibmjrd} {"IBM J. Res. Dev."} + +MACRO {ibmsj} {"IBM Syst.~J."} + +MACRO {ieeese} {"IEEE Trans. Software Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput. Aid. Des."} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Program."} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Graphic."} + +MACRO {toms} {"ACM Trans. Math. Software"} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} + +MACRO {tcs} {"Theor. Comput. Sci."} + +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { + pop$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ pop$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +FUNCTION {bibinfo.warn} +{ swap$ + duplicate$ missing$ + { + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ "empty " swap$ * " in " * cite$ * warning$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +FUNCTION {format.url} +{ url empty$ + { "" } +% { "\urlprefix\url{" url * "}" * } + { "\url{" url * "}" * } % changed in titto-lncs-02.bst + if$ +} + +INTEGERS { nameptr namesleft numnames } + + +STRINGS { bibinfo} + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}{, jj}{, f{.}.}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + "," * + t "others" = + { + " " * bbl.etal * + } + { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.names.ed} +{ + 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{f{.}.~}{vv~}{ll}{ jj}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + "," * + t "others" = + { + + " " * bbl.etal * + } + { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.authors} +{ author "author" format.names +} +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { + " " * + get.bbl.editor +% capitalize + "(" swap$ * ")" * + * + } + if$ +} +FUNCTION {format.note} +{ + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { output.state mid.sentence = + { "l" } + { "u" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + } + if$ +} + +FUNCTION {format.title} +{ title + duplicate$ empty$ 'skip$ + { "t" change.case$ } + if$ + "title" bibinfo.check +} +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {n.dashify} +{ + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {word.in} +{ bbl.in capitalize + ":" * + " " * } + +FUNCTION {format.date} +{ + month "month" bibinfo.check + duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + remove.dots + } + if$ + duplicate$ empty$ + 'skip$ + { + before.all 'output.state := + " (" swap$ * ")" * + } + if$ +} +FUNCTION {format.btitle} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { + } + if$ +} +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bbl.volume volume tie.or.space.prefix + "volume" bibinfo.check * * + series "series" bibinfo.check + duplicate$ empty$ 'pop$ + { emphasize ", " *... [truncated message content] |
From: <he...@us...> - 2013-02-13 19:44:47
|
Revision: 332 http://simspark.svn.sourceforge.net/simspark/?rev=332&view=rev Author: hedayat Date: 2013-02-13 19:44:37 +0000 (Wed, 13 Feb 2013) Log Message: ----------- Boost 1.53 Fix for shared_arrays Modified Paths: -------------- trunk/spark/lib/kerosin/fontserver/glyph.cpp trunk/spark/lib/oxygen/geometryserver/indexbuffer.cpp Modified: trunk/spark/lib/kerosin/fontserver/glyph.cpp =================================================================== --- trunk/spark/lib/kerosin/fontserver/glyph.cpp 2013-02-13 08:31:45 UTC (rev 331) +++ trunk/spark/lib/kerosin/fontserver/glyph.cpp 2013-02-13 19:44:37 UTC (rev 332) @@ -17,7 +17,7 @@ } Reset(); - + mByteWidth = face->glyph->bitmap.width; mByteHeight = face->glyph->bitmap.rows; @@ -48,5 +48,5 @@ mXOffset = 0; mYOffset = 0; mAdvance = 0; - mData.reset(NULL); + mData.reset(); } Modified: trunk/spark/lib/oxygen/geometryserver/indexbuffer.cpp =================================================================== --- trunk/spark/lib/oxygen/geometryserver/indexbuffer.cpp 2013-02-13 08:31:45 UTC (rev 331) +++ trunk/spark/lib/oxygen/geometryserver/indexbuffer.cpp 2013-02-13 19:44:37 UTC (rev 332) @@ -27,7 +27,7 @@ using namespace boost; IndexBuffer::IndexBuffer() - : mMaxIndex(0), mNumIndex(0), mIndex(0) {} + : mMaxIndex(0), mNumIndex(0), mIndex() {} IndexBuffer::~IndexBuffer() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2013-02-13 08:31:59
|
Revision: 331 http://simspark.svn.sourceforge.net/simspark/?rev=331&view=rev Author: hedayat Date: 2013-02-13 08:31:45 +0000 (Wed, 13 Feb 2013) Log Message: ----------- Fix some boost library link errors Some Boost 1.53 compatibility: replaced shared_dynamic/static_cast with the modern dynamic/static_pointer_cast Modified Paths: -------------- trunk/rcssserver3d/CMakeLists.txt trunk/rcssserver3d/plugin/soccer/agentcollisionhandler/agentcollisionhandler.cpp trunk/rcssserver3d/plugin/soccer/agentstate/agentstate.cpp trunk/rcssserver3d/plugin/soccer/agentstateperceptor/agentstateperceptor.cpp trunk/rcssserver3d/plugin/soccer/ball/ball.cpp trunk/rcssserver3d/plugin/soccer/ballstateaspect/ballstateaspect.cpp trunk/rcssserver3d/plugin/soccer/beameffector/beameffector.cpp trunk/rcssserver3d/plugin/soccer/catcheffector/catcheffector.cpp trunk/rcssserver3d/plugin/soccer/createeffector/createeffector.cpp trunk/rcssserver3d/plugin/soccer/driveeffector/driveeffector.cpp trunk/rcssserver3d/plugin/soccer/gametimeperceptor/gametimeperceptor.cpp trunk/rcssserver3d/plugin/soccer/hmdp_effector/hmdpeffector.cpp trunk/rcssserver3d/plugin/soccer/hmdp_effector/hmdpperceptor.cpp trunk/rcssserver3d/plugin/soccer/initeffector/initeffector.cpp trunk/rcssserver3d/plugin/soccer/initeffector/singlematiniteffector.cpp trunk/rcssserver3d/plugin/soccer/initeffector/staticmeshiniteffector.cpp trunk/rcssserver3d/plugin/soccer/internalsoccermonitor/internalsoccerinput.cpp trunk/rcssserver3d/plugin/soccer/internalsoccermonitor/internalsoccerrender.cpp trunk/rcssserver3d/plugin/soccer/kickeffector/kickeffector.cpp trunk/rcssserver3d/plugin/soccer/pantilteffector/pantilteffector.cpp trunk/rcssserver3d/plugin/soccer/rcs3dmonitor/rcs3dmonitor.cpp trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp trunk/rcssserver3d/plugin/soccer/sayeffector/sayeffector.cpp trunk/rcssserver3d/plugin/soccer/sexpmonitor/sexpmonitor.cpp trunk/rcssserver3d/plugin/soccer/soccerbase/soccerbase.cpp trunk/rcssserver3d/plugin/soccer/soccercontrolaspect/soccercontrolaspect.cpp trunk/rcssserver3d/plugin/soccer/soccernode/soccernode.cpp trunk/rcssserver3d/plugin/soccer/soccerruleaspect/soccerruleaspect.cpp trunk/rcssserver3d/plugin/soccer/trainercommandparser/trainercommandparser.cpp trunk/rcssserver3d/plugin/soccer/visionperceptor/visionperceptor.cpp trunk/rcssserver3d/plugin/soccermonitor/soccerinput.cpp trunk/rcssserver3d/plugin/soccermonitor/soccerinputlogplayer.cpp trunk/rcssserver3d/plugin/soccermonitor/soccerrender.cpp trunk/rcssserver3d/rcssagent3d/hoap2behavior.cpp trunk/rcssserver3d/rcssagent3d/naobehavior.cpp trunk/rcssserver3d/rcssagent3d/soccerbehavior.cpp trunk/rcssserver3d/rcssagent3d/soccerbotbehavior.cpp trunk/rcssserver3d/rcssmonitor3d/CMakeLists.txt trunk/rcssserver3d/rcssserver3d/CMakeLists.txt trunk/spark/CMakeLists.txt trunk/spark/lib/kerosin/imageserver/imageserver.cpp trunk/spark/lib/kerosin/inputserver/inputcontrol.cpp trunk/spark/lib/kerosin/inputserver/inputserver.cpp trunk/spark/lib/kerosin/materialserver/material2dtexture.cpp trunk/spark/lib/kerosin/materialserver/materialserver.cpp trunk/spark/lib/kerosin/openglserver/openglserver.cpp trunk/spark/lib/kerosin/renderserver/rendercontrol.cpp trunk/spark/lib/kerosin/renderserver/renderserver.cpp trunk/spark/lib/kerosin/sceneserver/singlematnode.cpp trunk/spark/lib/kerosin/sceneserver/staticmesh.cpp trunk/spark/lib/kerosin/soundserver/soundserver.cpp trunk/spark/lib/oxygen/agentaspect/agentaspect.cpp trunk/spark/lib/oxygen/agentaspect/effector.cpp trunk/spark/lib/oxygen/controlaspect/controlaspect.cpp trunk/spark/lib/oxygen/gamecontrolserver/gamecontrolserver.cpp trunk/spark/lib/oxygen/geometryserver/geometryserver.cpp trunk/spark/lib/oxygen/monitorserver/monitorserver.cpp trunk/spark/lib/oxygen/physicsserver/angularmotor.cpp trunk/spark/lib/oxygen/physicsserver/balljoint.cpp trunk/spark/lib/oxygen/physicsserver/body.cpp trunk/spark/lib/oxygen/physicsserver/bodycontroller.cpp trunk/spark/lib/oxygen/physicsserver/boxcollider.cpp trunk/spark/lib/oxygen/physicsserver/capsulecollider.cpp trunk/spark/lib/oxygen/physicsserver/collider.cpp trunk/spark/lib/oxygen/physicsserver/collisionhandler.cpp trunk/spark/lib/oxygen/physicsserver/compoundcollider.cpp trunk/spark/lib/oxygen/physicsserver/concavecollider.cpp trunk/spark/lib/oxygen/physicsserver/conecollider.cpp trunk/spark/lib/oxygen/physicsserver/conetwistjoint.cpp trunk/spark/lib/oxygen/physicsserver/contactjointhandler.cpp trunk/spark/lib/oxygen/physicsserver/convexcollider.cpp trunk/spark/lib/oxygen/physicsserver/cylindercollider.cpp trunk/spark/lib/oxygen/physicsserver/dynamicbody.cpp trunk/spark/lib/oxygen/physicsserver/emptycollider.cpp trunk/spark/lib/oxygen/physicsserver/fixedjoint.cpp trunk/spark/lib/oxygen/physicsserver/generic6dofjoint.cpp trunk/spark/lib/oxygen/physicsserver/hinge2joint.cpp trunk/spark/lib/oxygen/physicsserver/hingejoint.cpp trunk/spark/lib/oxygen/physicsserver/joint.cpp trunk/spark/lib/oxygen/physicsserver/physicsobject.cpp trunk/spark/lib/oxygen/physicsserver/physicsserver.cpp trunk/spark/lib/oxygen/physicsserver/planecollider.cpp trunk/spark/lib/oxygen/physicsserver/raycollider.cpp trunk/spark/lib/oxygen/physicsserver/rigidbody.cpp trunk/spark/lib/oxygen/physicsserver/sliderjoint.cpp trunk/spark/lib/oxygen/physicsserver/softbody.cpp trunk/spark/lib/oxygen/physicsserver/space.cpp trunk/spark/lib/oxygen/physicsserver/spherecollider.cpp trunk/spark/lib/oxygen/physicsserver/staticbody.cpp trunk/spark/lib/oxygen/physicsserver/transformcollider.cpp trunk/spark/lib/oxygen/physicsserver/universaljoint.cpp trunk/spark/lib/oxygen/physicsserver/world.cpp trunk/spark/lib/oxygen/sceneserver/basenode.cpp trunk/spark/lib/oxygen/sceneserver/fpscontroller.cpp trunk/spark/lib/oxygen/sceneserver/sceneserver.cpp trunk/spark/lib/oxygen/sceneserver/transform.cpp trunk/spark/lib/oxygen/simulationserver/simcontrolnode.cpp trunk/spark/lib/oxygen/simulationserver/simulationserver.cpp trunk/spark/lib/oxygen/spadesserver/spadesserver.cpp trunk/spark/lib/zeitgeist/class.cpp trunk/spark/lib/zeitgeist/core.cpp trunk/spark/lib/zeitgeist/core.h trunk/spark/lib/zeitgeist/corecontext.cpp trunk/spark/lib/zeitgeist/fileserver/fileserver.cpp trunk/spark/lib/zeitgeist/leaf.cpp trunk/spark/lib/zeitgeist/leaf.h trunk/spark/lib/zeitgeist/node.cpp trunk/spark/lib/zeitgeist/node.h trunk/spark/plugin/accelerometer/accelerometer.cpp trunk/spark/plugin/collisionperceptor/forceresistanceperceptor.cpp trunk/spark/plugin/collisionperceptor/perceptorhandler.cpp trunk/spark/plugin/collisionperceptor/touchperceptorhandler.cpp trunk/spark/plugin/filesystemrar/filesystemrar.cpp trunk/spark/plugin/forceeffector/forceeffector.cpp trunk/spark/plugin/gyrorateperceptor/gyrorateperceptor.cpp trunk/spark/plugin/imageperceptor/imageperceptor.cpp trunk/spark/plugin/inputsdl/inputsystemsdl.cpp trunk/spark/plugin/objimporter/objimporter.cpp trunk/spark/plugin/perfectvisionperceptor/perfectvisionperceptor.cpp trunk/spark/plugin/rosimporter/rosimporter.cpp trunk/spark/plugin/rubysceneimporter/rubysceneimporter.cpp trunk/spark/plugin/sceneeffector/sceneeffector.cpp trunk/spark/plugin/sparkagent/hinge2effector.cpp trunk/spark/plugin/sparkagent/hingeeffector.cpp trunk/spark/plugin/sparkagent/timeperceptor.cpp trunk/spark/plugin/sparkagent/universaljointeffector.cpp trunk/spark/plugin/sparkmonitor/sparkmonitor.cpp trunk/spark/plugin/sparkmonitor/sparkmonitorclient.cpp trunk/spark/plugin/sparkmonitor/sparkmonitorlogfileserver.cpp trunk/spark/spark/spark.cpp trunk/spark/test/coretest/main.cpp trunk/spark/test/fonttest/main.cpp trunk/spark/test/inputtest/main.cpp trunk/spark/test/scenetest/main.cpp trunk/spark/test/scenetest/md5mesh.cpp Modified: trunk/rcssserver3d/CMakeLists.txt =================================================================== --- trunk/rcssserver3d/CMakeLists.txt 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/CMakeLists.txt 2013-02-13 08:31:45 UTC (rev 331) @@ -26,7 +26,7 @@ find_package(Spark REQUIRED) find_package(Freetype REQUIRED) -find_package(Boost REQUIRED) +find_package(Boost REQUIRED system) find_package(SDL REQUIRED) find_package(DevIL REQUIRED) find_package(ODE REQUIRED) Modified: trunk/rcssserver3d/plugin/soccer/agentcollisionhandler/agentcollisionhandler.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/agentcollisionhandler/agentcollisionhandler.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/agentcollisionhandler/agentcollisionhandler.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -56,5 +56,5 @@ return boost::shared_ptr<AgentState>(); } - return boost::shared_static_cast<AgentState>(agentAspect->FindChildSupportingClass<AgentState>(true)); + return boost::static_pointer_cast<AgentState>(agentAspect->FindChildSupportingClass<AgentState>(true)); } Modified: trunk/rcssserver3d/plugin/soccer/agentstate/agentstate.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/agentstate/agentstate.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/agentstate/agentstate.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -217,7 +217,7 @@ void AgentState::UpdateHierarchyInternal() { - boost::shared_ptr<RenderNode> node = boost::shared_dynamic_cast<RenderNode>(GetChild("SelectionMarker", true)); + boost::shared_ptr<RenderNode> node = boost::dynamic_pointer_cast<RenderNode>(GetChild("SelectionMarker", true)); if (!node) { GetLog()->Error() << "ERROR: (AgentState::UpdateHierarchyInternal) could not find selection marker\n"; Modified: trunk/rcssserver3d/plugin/soccer/agentstateperceptor/agentstateperceptor.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/agentstateperceptor/agentstateperceptor.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/agentstateperceptor/agentstateperceptor.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -61,7 +61,7 @@ predicate.parameter.Clear(); boost::shared_ptr<BaseNode> parent = - shared_dynamic_cast<BaseNode>(GetParent().lock()); + dynamic_pointer_cast<BaseNode>(GetParent().lock()); if (parent.get() == 0) { Modified: trunk/rcssserver3d/plugin/soccer/ball/ball.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/ball/ball.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/ball/ball.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -46,7 +46,7 @@ if (mBody.get() == 0) { - mBody = shared_dynamic_cast<RigidBody>(GetChildOfClass("RigidBody")); + mBody = dynamic_pointer_cast<RigidBody>(GetChildOfClass("RigidBody")); } } @@ -60,7 +60,7 @@ // mBallStateAspect during OnLink if (mBallStateAspect.get() == 0) { - mBallStateAspect = shared_dynamic_cast<BallStateAspect> + mBallStateAspect = dynamic_pointer_cast<BallStateAspect> (GetCore()->Get("/sys/server/gamecontrol/BallStateAspect")); if (mBallStateAspect.get() == 0) return; } Modified: trunk/rcssserver3d/plugin/soccer/ballstateaspect/ballstateaspect.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/ballstateaspect/ballstateaspect.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/ballstateaspect/ballstateaspect.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -74,7 +74,7 @@ if (agents.size() > 0) { - mLastCollidingAgent = shared_static_cast<AgentAspect> + mLastCollidingAgent = static_pointer_cast<AgentAspect> (agents.front().lock()); mLastAgentCollisionTime = mGameState->GetTime(); Modified: trunk/rcssserver3d/plugin/soccer/beameffector/beameffector.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/beameffector/beameffector.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/beameffector/beameffector.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -61,7 +61,7 @@ } boost::shared_ptr<BeamAction> beamAction = - shared_dynamic_cast<BeamAction>(mAction); + dynamic_pointer_cast<BeamAction>(mAction); mAction.reset(); Modified: trunk/rcssserver3d/plugin/soccer/catcheffector/catcheffector.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/catcheffector/catcheffector.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/catcheffector/catcheffector.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -83,7 +83,7 @@ } boost::shared_ptr<CatchAction> catchAction = - shared_dynamic_cast<CatchAction>(mAction); + dynamic_pointer_cast<CatchAction>(mAction); mAction.reset(); if (catchAction.get() == 0) { @@ -177,7 +177,7 @@ SoccerBase::GetSoccerRuleAspect(*this,mSoccerRule); - mAgent = shared_dynamic_cast<AgentAspect>(GetParent().lock()); + mAgent = dynamic_pointer_cast<AgentAspect>(GetParent().lock()); if (mAgent.get() == 0) { @@ -188,7 +188,7 @@ } boost::shared_ptr<SphereCollider> geom = - shared_dynamic_cast<SphereCollider>(mAgent->GetChild("geometry")); + dynamic_pointer_cast<SphereCollider>(mAgent->GetChild("geometry")); if (geom.get() == 0) { GetLog()->Error() Modified: trunk/rcssserver3d/plugin/soccer/createeffector/createeffector.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/createeffector/createeffector.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/createeffector/createeffector.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -42,7 +42,7 @@ return; boost::shared_ptr<CreateAction> createAction = - shared_dynamic_cast<CreateAction>(mAction); + dynamic_pointer_cast<CreateAction>(mAction); mAction.reset(); if (createAction.get() == 0) { Modified: trunk/rcssserver3d/plugin/soccer/driveeffector/driveeffector.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/driveeffector/driveeffector.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/driveeffector/driveeffector.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -50,7 +50,7 @@ } boost::shared_ptr<BaseNode> parent = - shared_dynamic_cast<BaseNode>(GetParent().lock()); + dynamic_pointer_cast<BaseNode>(GetParent().lock()); if (parent.get() == 0) { @@ -59,7 +59,7 @@ return false; } - boost::shared_ptr<DriveAction> driveAction = shared_dynamic_cast<DriveAction>(action); + boost::shared_ptr<DriveAction> driveAction = dynamic_pointer_cast<DriveAction>(action); if (driveAction.get() == 0) { @@ -117,7 +117,7 @@ SoccerBase::GetAgentState(*this,mAgentState); boost::shared_ptr<SphereCollider> geom = - shared_dynamic_cast<SphereCollider>(mTransformParent->GetChild("geometry")); + dynamic_pointer_cast<SphereCollider>(mTransformParent->GetChild("geometry")); mMaxDistance = 0.001; if (geom.get() == 0) Modified: trunk/rcssserver3d/plugin/soccer/gametimeperceptor/gametimeperceptor.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/gametimeperceptor/gametimeperceptor.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/gametimeperceptor/gametimeperceptor.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -65,7 +65,7 @@ void GameTimePerceptor::OnLink() { - mGameState = shared_dynamic_cast<GameStateAspect> + mGameState = dynamic_pointer_cast<GameStateAspect> (GetCore()->Get("/sys/server/gamecontrol/GameStateAspect")); if (mGameState.get() == 0) Modified: trunk/rcssserver3d/plugin/soccer/hmdp_effector/hmdpeffector.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/hmdp_effector/hmdpeffector.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/hmdp_effector/hmdpeffector.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -85,7 +85,7 @@ return; } - boost::shared_ptr<HMDPAction> hMDPAction = shared_dynamic_cast<HMDPAction>(mAction); + boost::shared_ptr<HMDPAction> hMDPAction = dynamic_pointer_cast<HMDPAction>(mAction); mAction.reset(); if (hMDPAction.get() == 0) { @@ -141,7 +141,7 @@ // parent should be a transform, or some other node, which has a // Body-child - mBody = shared_dynamic_cast<RigidBody>(parent->GetChildOfClass("RigidBody")); + mBody = dynamic_pointer_cast<RigidBody>(parent->GetChildOfClass("RigidBody")); if (mBody.get() == 0) { @@ -216,7 +216,7 @@ boost::shared_ptr<Leaf> join = *j_it; boost::shared_ptr<BaseNode> jparent = - shared_dynamic_cast<BaseNode>(join->GetParent().lock()); + dynamic_pointer_cast<BaseNode>(join->GetParent().lock()); std::cout << i << " " << jparent->GetName() << std::endl; i++; @@ -259,7 +259,7 @@ for (TLeafList::iterator j_it = jointList.begin(); j_it != jointList.end(); j_it++) { - boost::shared_ptr<HingeJoint> joint = shared_static_cast<HingeJoint> (*j_it); + boost::shared_ptr<HingeJoint> joint = static_pointer_cast<HingeJoint> (*j_it); servo_angle[i] = joint->GetAngle() - zeroPosServo(i); double tpos = servo_target_pos[i]; float err = servo_gain[i] * (tpos - servo_angle[i]); Modified: trunk/rcssserver3d/plugin/soccer/hmdp_effector/hmdpperceptor.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/hmdp_effector/hmdpperceptor.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/hmdp_effector/hmdpperceptor.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -48,10 +48,10 @@ { messageOut = ""; - boost::shared_ptr<Transform> transformParent = shared_static_cast<Transform> ( + boost::shared_ptr<Transform> transformParent = static_pointer_cast<Transform> ( FindParentSupportingClass<Transform> ().lock()); - mBody = shared_static_cast<RigidBody> (transformParent->GetChildOfClass("RigidBody")); + mBody = static_pointer_cast<RigidBody> (transformParent->GetChildOfClass("RigidBody")); } void HMDPPerceptor::OnUnlink() Modified: trunk/rcssserver3d/plugin/soccer/initeffector/initeffector.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/initeffector/initeffector.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/initeffector/initeffector.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -55,7 +55,7 @@ } boost::shared_ptr<InitAction> initAction = - shared_dynamic_cast<InitAction>(mAction); + dynamic_pointer_cast<InitAction>(mAction); mAction.reset(); if (initAction.get() == 0) @@ -66,7 +66,7 @@ } // search for the AgentState - boost::shared_ptr<AgentState> state = shared_static_cast<AgentState> + boost::shared_ptr<AgentState> state = static_pointer_cast<AgentState> (mAgentAspect->GetChildOfClass("AgentState", true)); if (state.get() == 0) @@ -95,7 +95,7 @@ // agents may be encapsulated in their own collision spaces, so we need // to get the parent of the parent of the agent aspect in this case - boost::shared_ptr<Transform> parent = shared_dynamic_cast<Transform> + boost::shared_ptr<Transform> parent = dynamic_pointer_cast<Transform> (mAgentAspect->GetParentSupportingClass("Transform").lock()); @@ -133,7 +133,7 @@ ) { boost::shared_ptr<Body> childBody = - shared_dynamic_cast<Body>(*iter); + dynamic_pointer_cast<Body>(*iter); Vector3f childPos = childBody->GetPosition(); Matrix childR = childBody->GetRotation(); @@ -169,7 +169,7 @@ void InitEffector::OnLink() { - mGameState = shared_dynamic_cast<GameStateAspect> + mGameState = dynamic_pointer_cast<GameStateAspect> (SoccerBase::GetControlAspect(*this,"GameStateAspect")); mAgentAspect = GetAgentAspect(); if (mAgentAspect.get() == 0) Modified: trunk/rcssserver3d/plugin/soccer/initeffector/singlematiniteffector.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/initeffector/singlematiniteffector.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/initeffector/singlematiniteffector.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -68,7 +68,7 @@ jersey.push_back("lowerTorso"); // search for the AgentState - boost::shared_ptr<AgentState> state = shared_static_cast<AgentState> + boost::shared_ptr<AgentState> state = static_pointer_cast<AgentState> (mAgentAspect->GetChildOfClass("AgentState",true)); if (state.get() == 0) @@ -102,7 +102,7 @@ // get parent of the agent aspect - boost::shared_ptr<Node> parent = shared_dynamic_cast<Node> + boost::shared_ptr<Node> parent = dynamic_pointer_cast<Node> (mAgentAspect->GetParent().lock()); if (parent.get() == 0) @@ -123,7 +123,7 @@ if (child.get() != 0) { - matNode = shared_static_cast<SingleMatNode> + matNode = static_pointer_cast<SingleMatNode> (child->FindChildSupportingClass<SingleMatNode>(true)); if (matNode.get() == 0) @@ -147,7 +147,7 @@ // set the scene modified, the monitor will update boost::shared_ptr<SceneServer> sceneServer = - shared_dynamic_cast<SceneServer>(GetCore()->Get("/sys/server/scene")); + dynamic_pointer_cast<SceneServer>(GetCore()->Get("/sys/server/scene")); if (sceneServer.get() ==0) { Modified: trunk/rcssserver3d/plugin/soccer/initeffector/staticmeshiniteffector.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/initeffector/staticmeshiniteffector.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/initeffector/staticmeshiniteffector.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -58,7 +58,7 @@ InitEffector::PrePhysicsUpdateInternal(deltaTime); // search for the AgentState - boost::shared_ptr<AgentState> state = shared_static_cast<AgentState> + boost::shared_ptr<AgentState> state = static_pointer_cast<AgentState> (mAgentAspect->GetChildOfClass("AgentState",true)); if (state.get() == 0) @@ -86,7 +86,7 @@ string unumMat = "matNum" + lexical_cast<string>(unum); // get parent of the agent aspect - boost::shared_ptr<Node> parent = shared_dynamic_cast<Node> + boost::shared_ptr<Node> parent = dynamic_pointer_cast<Node> (mAgentAspect->GetParent().lock()); if (parent.get() == 0) @@ -107,14 +107,14 @@ ++iter ) { - boost::shared_ptr<StaticMesh> m = shared_static_cast<StaticMesh>(*iter); + boost::shared_ptr<StaticMesh> m = static_pointer_cast<StaticMesh>(*iter); m->ChangeMaterial("matTeam",teamMat); m->ChangeMaterial("matNum",unumMat); } // set the scene modified, the monitor will update boost::shared_ptr<SceneServer> sceneServer = - shared_dynamic_cast<SceneServer>(GetCore()->Get("/sys/server/scene")); + dynamic_pointer_cast<SceneServer>(GetCore()->Get("/sys/server/scene")); if (sceneServer.get() ==0) { Modified: trunk/rcssserver3d/plugin/soccer/internalsoccermonitor/internalsoccerinput.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/internalsoccermonitor/internalsoccerinput.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/internalsoccermonitor/internalsoccerinput.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -66,7 +66,7 @@ scriptServer->CreateVariable("Command.PreviousCamera", CmdPreviousCamera); // get the GameStateAspect - mGameState = shared_dynamic_cast<GameStateAspect> + mGameState = dynamic_pointer_cast<GameStateAspect> (GetCore()->Get("/sys/server/gamecontrol/GameStateAspect")); if (mGameState.get() == 0) @@ -75,7 +75,7 @@ } // get the SoccerRuleAspect - mSoccerRule = shared_dynamic_cast<SoccerRuleAspect> + mSoccerRule = dynamic_pointer_cast<SoccerRuleAspect> (GetCore()->Get("/sys/server/gamecontrol/SoccerRuleAspect")); if (mSoccerRule.get() == 0) @@ -84,7 +84,7 @@ } // get the GameControlServer - mGameControl = shared_dynamic_cast<GameControlServer> + mGameControl = dynamic_pointer_cast<GameControlServer> (GetCore()->Get("/sys/server/gamecontrol")); if (mGameControl.get() == 0) @@ -93,7 +93,7 @@ } // get camera body - mCameraBody = shared_dynamic_cast<RigidBody> + mCameraBody = dynamic_pointer_cast<RigidBody> (GetCore()->Get("/usr/scene/camera/physics")); if (mCameraBody.get() == 0) @@ -103,7 +103,7 @@ } // get fps controller - mFPS = shared_dynamic_cast<FPSController> + mFPS = dynamic_pointer_cast<FPSController> (GetCore()->Get("/usr/scene/camera/physics/controller")); if (mFPS.get() == 0) @@ -113,7 +113,7 @@ } // get render server - mRenderServer = shared_dynamic_cast<RenderServer> + mRenderServer = dynamic_pointer_cast<RenderServer> (GetCore()->Get("/sys/server/render")); if (mRenderServer.get() == 0) @@ -271,7 +271,7 @@ { // search for the first agent of the left/right side boost::shared_ptr<AgentState> agentState = - shared_dynamic_cast<AgentState>((*iter)->GetChild("AgentState", true)); + dynamic_pointer_cast<AgentState>((*iter)->GetChild("AgentState", true)); if (agentState.get() == 0) { @@ -306,7 +306,7 @@ { // search for the first agent of the left/right side boost::shared_ptr<AgentState> agentState = - shared_dynamic_cast<AgentState>((*iter)->GetChild("AgentState", true)); + dynamic_pointer_cast<AgentState>((*iter)->GetChild("AgentState", true)); if (agentState.get() == 0) { Modified: trunk/rcssserver3d/plugin/soccer/internalsoccermonitor/internalsoccerrender.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/internalsoccermonitor/internalsoccerrender.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/internalsoccermonitor/internalsoccerrender.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -46,7 +46,7 @@ { // get the FontServer mFontServer = - shared_static_cast<FontServer>(GetCore()->Get("/sys/server/font")); + static_pointer_cast<FontServer>(GetCore()->Get("/sys/server/font")); if (mFontServer.get() == 0) { @@ -65,7 +65,7 @@ } // get the TextureServer - mTextureServer = shared_static_cast<TextureServer>(GetCore()->Get("/sys/server/texture")); + mTextureServer = static_pointer_cast<TextureServer>(GetCore()->Get("/sys/server/texture")); if (mTextureServer.get() == 0) { @@ -73,7 +73,7 @@ } // get the GameStateAspect - mGameState = shared_dynamic_cast<GameStateAspect> + mGameState = dynamic_pointer_cast<GameStateAspect> (SoccerBase::GetControlAspect(*this, "GameStateAspect")); if (mGameState.get() == 0) @@ -199,7 +199,7 @@ #if 0 // get texture -- has to be square and power of 2 in size!!! - boost::shared_ptr<Texture2D> tex = shared_static_cast<Texture2D> + boost::shared_ptr<Texture2D> tex = static_pointer_cast<Texture2D> (mTextureServer->GetTexture("test.tga")); glEnable2D(); Modified: trunk/rcssserver3d/plugin/soccer/kickeffector/kickeffector.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/kickeffector/kickeffector.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/kickeffector/kickeffector.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -64,7 +64,7 @@ } boost::shared_ptr<KickAction> kickAction = - shared_dynamic_cast<KickAction>(mAction); + dynamic_pointer_cast<KickAction>(mAction); mAction.reset(); if (kickAction.get() == 0) @@ -181,7 +181,7 @@ SoccerBase::GetBall(*this,mBall); SoccerBase::GetBallBody(*this,mBallBody); - mAgent = shared_dynamic_cast<AgentAspect>(GetParent().lock()); + mAgent = dynamic_pointer_cast<AgentAspect>(GetParent().lock()); if (mAgent.get() == 0) { @@ -191,7 +191,7 @@ } boost::shared_ptr<SphereCollider> geom = - shared_dynamic_cast<SphereCollider>(mAgent->GetChild("geometry")); + dynamic_pointer_cast<SphereCollider>(mAgent->GetChild("geometry")); if (geom.get() == 0) { GetLog()->Error() @@ -212,7 +212,7 @@ if (mBallStateAspect.get() == 0) { - mBallStateAspect = shared_dynamic_cast<BallStateAspect> + mBallStateAspect = dynamic_pointer_cast<BallStateAspect> (GetCore()->Get("/sys/server/gamecontrol/BallStateAspect")); if (mBallStateAspect.get() == 0) return; } Modified: trunk/rcssserver3d/plugin/soccer/pantilteffector/pantilteffector.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/pantilteffector/pantilteffector.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/pantilteffector/pantilteffector.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -50,7 +50,7 @@ } boost::shared_ptr<BaseNode> parent = - shared_dynamic_cast<BaseNode>(GetParent().lock()); + dynamic_pointer_cast<BaseNode>(GetParent().lock()); if (parent.get() == 0) { @@ -60,7 +60,7 @@ } boost::shared_ptr<PanTiltAction> panTiltAction = - shared_dynamic_cast<PanTiltAction>(mAction); + dynamic_pointer_cast<PanTiltAction>(mAction); mAction.reset(); if (panTiltAction.get() == 0) Modified: trunk/rcssserver3d/plugin/soccer/rcs3dmonitor/rcs3dmonitor.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/rcs3dmonitor/rcs3dmonitor.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/rcs3dmonitor/rcs3dmonitor.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -57,7 +57,7 @@ void RCS3DMonitor::OnLink() { // setup SceneServer reference - mSceneServer = shared_dynamic_cast<SceneServer> + mSceneServer = dynamic_pointer_cast<SceneServer> (GetCore()->Get("/sys/server/scene")); if (mSceneServer.get() == 0) @@ -86,7 +86,7 @@ ++iter ) { - shared_static_cast<MonitorCmdParser>(*iter) + static_pointer_cast<MonitorCmdParser>(*iter) ->ParseMonitorMessage(data); } } @@ -156,7 +156,7 @@ ss << "(nd"; } - DescribeTransform(ss, entry, boost::shared_static_cast<Transform>(ball), false); + DescribeTransform(ss, entry, boost::static_pointer_cast<Transform>(ball), false); } void RCS3DMonitor::DescribeBaseNode(stringstream& ss) @@ -248,7 +248,7 @@ void RCS3DMonitor::DescribeMesh(stringstream& ss, boost::shared_ptr<StaticMesh> mesh) { boost::shared_ptr<SingleMatNode> singleMat = - shared_dynamic_cast<SingleMatNode>(mesh); + dynamic_pointer_cast<SingleMatNode>(mesh); if (singleMat.get() != 0) { @@ -333,7 +333,7 @@ // Ball boost::shared_ptr<Ball> ball - = shared_dynamic_cast<Ball>(node); + = dynamic_pointer_cast<Ball>(node); if (ball.get() != 0) { mNodeCache[node] @@ -344,7 +344,7 @@ // Transform boost::shared_ptr<Transform> transform - = shared_dynamic_cast<Transform>(node); + = dynamic_pointer_cast<Transform>(node); if (transform.get() != 0) { mNodeCache[node] @@ -354,7 +354,7 @@ } boost::shared_ptr<StaticMesh> mesh - = shared_dynamic_cast<StaticMesh>(node); + = dynamic_pointer_cast<StaticMesh>(node); if (mesh.get() != 0) { mNodeCache[node] = NodeCache(NT_STATICMESH); @@ -362,7 +362,7 @@ } boost::shared_ptr<Light> light - = shared_dynamic_cast<Light>(node); + = dynamic_pointer_cast<Light>(node); if (light.get() != 0) { mNodeCache[node] = NodeCache(NT_LIGHT); @@ -397,21 +397,21 @@ case NT_BALL: DescribeBall - (ss, (*entry), shared_static_cast<Ball>(node)); + (ss, (*entry), static_pointer_cast<Ball>(node)); case NT_TRANSFORM: DescribeTransform - (ss, (*entry), shared_static_cast<Transform>(node)); + (ss, (*entry), static_pointer_cast<Transform>(node)); return true; case NT_STATICMESH: DescribeMesh - (ss, shared_static_cast<StaticMesh>(node)); + (ss, static_pointer_cast<StaticMesh>(node)); return true; case NT_LIGHT: DescribeLight - (ss, shared_static_cast<Light>(node)); + (ss, static_pointer_cast<Light>(node)); return true; } } @@ -448,7 +448,7 @@ TLeafList baseNodes = node->GetBaseNodeChildren(); for (TLeafList::iterator i = baseNodes.begin(); i!= baseNodes.end(); ++i) { - boost::shared_ptr<BaseNode> baseNode = shared_dynamic_cast<BaseNode>(*i); + boost::shared_ptr<BaseNode> baseNode = dynamic_pointer_cast<BaseNode>(*i); DescribeScene(ss,baseNode); } Modified: trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -177,7 +177,7 @@ mAgentAspect = agent_aspect; } - mAgentState = shared_static_cast<AgentState> + mAgentState = static_pointer_cast<AgentState> (mAgentAspect->GetChildOfClass("AgentState",true)); if (mAgentState == 0) { @@ -214,7 +214,7 @@ bool RestrictedVisionPerceptor::ConstructInternal() { - mRay = shared_static_cast<RayCollider> + mRay = static_pointer_cast<RayCollider> (GetCore()->New("oxygen/RayCollider")); if (mRay.get() == 0) @@ -240,9 +240,9 @@ { ObjectData od; - od.mObj = shared_static_cast<ObjectState>(*i); + od.mObj = static_pointer_cast<ObjectState>(*i); - boost::shared_ptr<BaseNode> node = shared_dynamic_cast<BaseNode>(mActiveScene); + boost::shared_ptr<BaseNode> node = dynamic_pointer_cast<BaseNode>(mActiveScene); boost::shared_ptr<AgentAspect> agent_aspect = od.mObj->FindParentSupportingClass<AgentAspect>().lock(); if (agent_aspect != 0) @@ -261,7 +261,7 @@ // GetLog()->Normal() // << "skipping agentAspect " << agent_aspect->GetFullPath() << std::endl; - node = shared_dynamic_cast<BaseNode>(agent_aspect); + node = dynamic_pointer_cast<BaseNode>(agent_aspect); } if (od.mObj.get() == 0) @@ -296,7 +296,7 @@ } boost::shared_ptr<AgentAspect> agent_aspect = - shared_dynamic_cast<AgentAspect>(node); + dynamic_pointer_cast<AgentAspect>(node); if (agent_aspect != 0) { boost::shared_ptr<AgentAspect> aspect = @@ -306,7 +306,7 @@ agent_aspect = aspect; } - boost::shared_ptr<AgentState> agent_state = shared_static_cast<AgentState> + boost::shared_ptr<AgentState> agent_state = static_pointer_cast<AgentState> (agent_aspect->GetChildOfClass("AgentState",true)); if (agent_state.get() == 0 || (agent_state->GetPerceptName(ObjectState::PT_Player).empty()) @@ -646,7 +646,7 @@ // dContactGeom contact; -// boost::shared_ptr<Collider> collider = shared_static_cast<Collider> +// boost::shared_ptr<Collider> collider = static_pointer_cast<Collider> // (i->mObj->GetChildSupportingClass("Collider")); // if (mRay->Intersects(collider)) @@ -847,7 +847,7 @@ { LineData ld; - ld.mLine = shared_static_cast<Line > (*i); + ld.mLine = static_pointer_cast<Line > (*i); if (ld.mLine.get() == 0) { Modified: trunk/rcssserver3d/plugin/soccer/sayeffector/sayeffector.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/sayeffector/sayeffector.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/sayeffector/sayeffector.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -64,7 +64,7 @@ } boost::shared_ptr<SayAction> sayAction = - shared_dynamic_cast<SayAction>(action); + dynamic_pointer_cast<SayAction>(action); if (sayAction.get() == 0) { @@ -142,7 +142,7 @@ SoccerBase::GetAgentState(*this,mAgentState); SoccerBase::GetSoccerRuleAspect(*this,mSoccerRule); - mAgent = shared_dynamic_cast<AgentAspect>(GetParent().lock()); + mAgent = dynamic_pointer_cast<AgentAspect>(GetParent().lock()); if (mAgent.get() == 0) { Modified: trunk/rcssserver3d/plugin/soccer/sexpmonitor/sexpmonitor.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/sexpmonitor/sexpmonitor.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/sexpmonitor/sexpmonitor.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -119,15 +119,15 @@ for (TLeafList::iterator i = nodes.begin(); i != nodes.end(); ++i) { - boost::shared_ptr<AgentAspect> aspect = shared_static_cast<AgentAspect>(*i); + boost::shared_ptr<AgentAspect> aspect = static_pointer_cast<AgentAspect>(*i); const salt::Vector3f& pos = aspect->GetWorldTransform().Pos(); ss << "(P "; - boost::shared_ptr<AgentState> state = shared_static_cast<AgentState> + boost::shared_ptr<AgentState> state = static_pointer_cast<AgentState> (aspect->GetChildOfClass("AgentState")); - boost::shared_ptr<SayEffector> sayEff = shared_static_cast<SayEffector> + boost::shared_ptr<SayEffector> sayEff = static_pointer_cast<SayEffector> (aspect->GetChildOfClass("SayEffector")); if (state.get() != 0) @@ -184,9 +184,9 @@ for (TLeafList::iterator i = nodes.begin(); i != nodes.end(); ++i) { - boost::shared_ptr<FieldFlag> flag = shared_static_cast<FieldFlag>(*i); + boost::shared_ptr<FieldFlag> flag = static_pointer_cast<FieldFlag>(*i); const salt::Vector3f& pos = flag->GetWorldTransform().Pos(); - boost::shared_ptr<ObjectState> state = shared_dynamic_cast<ObjectState> + boost::shared_ptr<ObjectState> state = dynamic_pointer_cast<ObjectState> (flag->GetChildOfClass("ObjectState")); if (state.get() == 0) continue; @@ -204,7 +204,7 @@ void SexpMonitor::AddBall(boost::shared_ptr<Scene> activeScene, std::ostringstream& ss) const { - boost::shared_ptr<Ball> ball = shared_static_cast<Ball>(activeScene->GetChild("Ball")); + boost::shared_ptr<Ball> ball = static_pointer_cast<Ball>(activeScene->GetChild("Ball")); const salt::Vector3f& pos = ball->GetWorldTransform().Pos(); ss << "(B "; // pos @@ -221,7 +221,7 @@ } boost::shared_ptr<SceneServer> sceneServer = - shared_dynamic_cast<SceneServer>(GetCore()->Get("/sys/server/scene")); + dynamic_pointer_cast<SceneServer>(GetCore()->Get("/sys/server/scene")); if (sceneServer.get() == 0) { @@ -270,7 +270,7 @@ // we need the TrainerCommandParser to parse the predicates // and interpret the commands - mCommandParser = shared_dynamic_cast<TrainerCommandParser> + mCommandParser = dynamic_pointer_cast<TrainerCommandParser> (GetCore()->New("TrainerCommandParser")); if (mCommandParser.get() == 0) @@ -288,7 +288,7 @@ void SexpMonitor::UpdateCached() { - mBallState = shared_dynamic_cast<BallStateAspect> + mBallState = dynamic_pointer_cast<BallStateAspect> (GetCore()->Get("/sys/server/gamecontrol/BallStateAspect")); if (mBallState.get() == 0) Modified: trunk/rcssserver3d/plugin/soccer/soccerbase/soccerbase.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/soccerbase/soccerbase.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/soccerbase/soccerbase.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -46,7 +46,7 @@ SoccerBase::GetSceneServer(const Leaf& base, boost::shared_ptr<SceneServer>& scene_server) { - scene_server = shared_static_cast<SceneServer> + scene_server = static_pointer_cast<SceneServer> (base.GetCore()->Get("/sys/server/scene")); if (scene_server.get() == 0) @@ -64,7 +64,7 @@ SoccerBase::GetTransformParent(const Leaf& base, boost::shared_ptr<Transform>& transform_parent) { - transform_parent = shared_dynamic_cast<Transform> + transform_parent = dynamic_pointer_cast<Transform> ((base.FindParentSupportingClass<Transform>()).lock()); if (transform_parent.get() == 0) @@ -82,7 +82,7 @@ boost::shared_ptr<AgentState>& agent_state) { agent_state = - shared_dynamic_cast<AgentState>(transform->GetChild("AgentState", true)); + dynamic_pointer_cast<AgentState>(transform->GetChild("AgentState", true)); if (agent_state.get() == 0) { @@ -267,7 +267,7 @@ ++iter ) { - agentState = shared_dynamic_cast<AgentState>((*iter)->GetChild("AgentState", true)); + agentState = dynamic_pointer_cast<AgentState>((*iter)->GetChild("AgentState", true)); if ( agentState.get() != 0 && @@ -288,7 +288,7 @@ SoccerBase::GetGameState(const Leaf& base, boost::shared_ptr<GameStateAspect>& game_state) { - game_state = shared_dynamic_cast<GameStateAspect> + game_state = dynamic_pointer_cast<GameStateAspect> (base.GetCore()->Get("/sys/server/gamecontrol/GameStateAspect")); if (game_state.get() == 0) @@ -306,7 +306,7 @@ SoccerBase::GetSoccerRuleAspect(const Leaf& base, boost::shared_ptr<SoccerRuleAspect> & soccer_rule_aspect) { - soccer_rule_aspect = shared_dynamic_cast<SoccerRuleAspect> + soccer_rule_aspect = dynamic_pointer_cast<SoccerRuleAspect> (base.GetCore()->Get("/sys/server/gamecontrol/SoccerRuleAspect")); if (soccer_rule_aspect.get() == 0) @@ -329,7 +329,7 @@ if (gameControlServer.get() == 0) { - gameControlServer = shared_dynamic_cast<GameControlServer> + gameControlServer = dynamic_pointer_cast<GameControlServer> (base.GetCore()->Get("/sys/server/gamecontrol")); if (gameControlServer.get() == 0) @@ -390,7 +390,7 @@ return false; } - body = shared_dynamic_cast<RigidBody>(parent->FindChildSupportingClass<RigidBody>()); + body = dynamic_pointer_cast<RigidBody>(parent->FindChildSupportingClass<RigidBody>()); if (body.get() == 0) { @@ -424,7 +424,7 @@ if (ballRef.get() == 0) { - ballRef = shared_dynamic_cast<Ball> + ballRef = dynamic_pointer_cast<Ball> (base.GetCore()->Get(scene->GetFullPath() + "Ball")); if (ballRef.get() == 0) @@ -462,7 +462,7 @@ if (bodyRef.get() == 0) { - bodyRef = shared_dynamic_cast<RigidBody> + bodyRef = dynamic_pointer_cast<RigidBody> (base.GetCore()->Get(scene->GetFullPath() + "Ball/physics")); if (bodyRef.get() == 0) @@ -501,7 +501,7 @@ if (sphereRef.get() == 0) { - sphereRef = shared_dynamic_cast<SphereCollider> + sphereRef = dynamic_pointer_cast<SphereCollider> (base.GetCore()->Get(scene->GetFullPath() + "Ball/geometry")); if (sphereRef.get() == 0) @@ -618,7 +618,7 @@ { static const string gcsPath = "/sys/server/gamecontrol/"; - boost::shared_ptr<ControlAspect> aspect = shared_dynamic_cast<ControlAspect> + boost::shared_ptr<ControlAspect> aspect = dynamic_pointer_cast<ControlAspect> (base.GetCore()->Get(gcsPath + name)); if (aspect.get() == 0) @@ -636,7 +636,7 @@ { Vector3f agentPos = agent_aspect->GetWorldTransform().Pos(); - boost::shared_ptr<Transform> parent = shared_dynamic_cast<Transform> + boost::shared_ptr<Transform> parent = dynamic_pointer_cast<Transform> (agent_aspect->FindParentSupportingClass<Transform>().lock()); if (parent.get() == 0) @@ -664,7 +664,7 @@ for (; iter != leafList.end(); ++iter) { boost::shared_ptr<RigidBody> childBody = - shared_dynamic_cast<RigidBody>(*iter); + dynamic_pointer_cast<RigidBody>(*iter); Vector3f childPos = childBody->GetPosition(); @@ -679,7 +679,7 @@ bool SoccerBase::MoveAndRotateAgent(boost::shared_ptr<Transform> agent_aspect, const Vector3f& pos, float angle) { - boost::shared_ptr<Transform> parent = shared_dynamic_cast<Transform> + boost::shared_ptr<Transform> parent = dynamic_pointer_cast<Transform> (agent_aspect->FindParentSupportingClass<Transform>().lock()); if (parent.get() == 0) @@ -719,7 +719,7 @@ ) { boost::shared_ptr<RigidBody> childBody = - shared_dynamic_cast<RigidBody>(*iter); + dynamic_pointer_cast<RigidBody>(*iter); Vector3f childPos = childBody->GetPosition(); Matrix childR = childBody->GetRotation(); @@ -764,7 +764,7 @@ for (Leaf::TLeafList::iterator i = baseNodes.begin(); i!= baseNodes.end(); ++i) { - boost::shared_ptr<BaseNode> node = shared_static_cast<BaseNode>(*i); + boost::shared_ptr<BaseNode> node = static_pointer_cast<BaseNode>(*i); boundingBox.Encapsulate(node->GetWorldBoundingBox()); } @@ -802,7 +802,7 @@ for (Leaf::TLeafList::iterator i = baseNodes.begin(); i!= baseNodes.end(); ++i) { - boost::shared_ptr<BaseNode> node = shared_static_cast<BaseNode>(*i); + boost::shared_ptr<BaseNode> node = static_pointer_cast<BaseNode>(*i); const AABB3 &box = node->GetWorldBoundingBox(); boundingRect.Encapsulate(box.minVec.x(), box.minVec.y()); boundingRect.Encapsulate(box.maxVec.x(), box.maxVec.y()); Modified: trunk/rcssserver3d/plugin/soccer/soccercontrolaspect/soccercontrolaspect.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/soccercontrolaspect/soccercontrolaspect.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/soccercontrolaspect/soccercontrolaspect.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -58,7 +58,7 @@ { string ballRecorder; SoccerBase::GetSoccerVar(*this,"BallRecorder",ballRecorder); - boost::shared_ptr<RecorderHandler> node = shared_dynamic_cast<RecorderHandler> + boost::shared_ptr<RecorderHandler> node = dynamic_pointer_cast<RecorderHandler> (GetCore()->Get(mScenePath + ballRecorder)); if (node.get() == 0) @@ -74,7 +74,7 @@ { string goalRecorder; SoccerBase::GetSoccerVar(*this,"LeftGoalRecorder",goalRecorder); - boost::shared_ptr<RecorderHandler> node = shared_dynamic_cast<RecorderHandler> + boost::shared_ptr<RecorderHandler> node = dynamic_pointer_cast<RecorderHandler> (GetCore()->Get(mScenePath + goalRecorder)); if (node.get() == 0) @@ -90,7 +90,7 @@ { string goalRecorder; SoccerBase::GetSoccerVar(*this,"RightGoalRecorder",goalRecorder); - boost::shared_ptr<RecorderHandler> node = shared_dynamic_cast<RecorderHandler> + boost::shared_ptr<RecorderHandler> node = dynamic_pointer_cast<RecorderHandler> (GetCore()->Get(mScenePath + goalRecorder)); if (node.get() == 0) Modified: trunk/rcssserver3d/plugin/soccer/soccernode/soccernode.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/soccernode/soccernode.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/soccernode/soccernode.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -45,7 +45,7 @@ { BaseNode::UpdateCached(); - mTransformParent = shared_dynamic_cast<Transform> + mTransformParent = dynamic_pointer_cast<Transform> (GetParentSupportingClass("Transform").lock()); if (mTransformParent.get() == 0) Modified: trunk/rcssserver3d/plugin/soccer/soccerruleaspect/soccerruleaspect.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/soccerruleaspect/soccerruleaspect.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/soccerruleaspect/soccerruleaspect.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -1284,7 +1284,7 @@ if (mGameState->GetModeTime() >= 10) { boost::shared_ptr<GameControlServer> gameControlServer = - shared_dynamic_cast<GameControlServer>(GetCore()->Get("/sys/server/gamecontrol")); + dynamic_pointer_cast<GameControlServer>(GetCore()->Get("/sys/server/gamecontrol")); gameControlServer->Quit(); } } Modified: trunk/rcssserver3d/plugin/soccer/trainercommandparser/trainercommandparser.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/trainercommandparser/trainercommandparser.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/trainercommandparser/trainercommandparser.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -106,7 +106,7 @@ { // we need the SexpParser to generate the predicates // from S-Expressions - mSexpParser = shared_dynamic_cast<oxygen::BaseParser>(GetCore()->New("SexpParser")); + mSexpParser = dynamic_pointer_cast<oxygen::BaseParser>(GetCore()->New("SexpParser")); if (mSexpParser.get() == 0) { @@ -114,7 +114,7 @@ return; } - mGameControl = shared_dynamic_cast<GameControlServer> + mGameControl = dynamic_pointer_cast<GameControlServer> (GetCore()->Get("/sys/server/gamecontrol")); if (mGameControl.get() == 0) @@ -122,7 +122,7 @@ GetLog()->Error() << "ERROR: (TrainerCommandParser) Unable to get GameControlServer\n"; } - mSimServer = shared_dynamic_cast<SimulationServer> + mSimServer = dynamic_pointer_cast<SimulationServer> (GetCore()->Get("/sys/server/simulation")); if (mSimServer.get() == 0) @@ -130,7 +130,7 @@ GetLog()->Error() << "ERROR: (TrainerCommandParser) Unable to get SimulationServer\n"; } - mMonitorControl = shared_dynamic_cast<MonitorControl> + mMonitorControl = dynamic_pointer_cast<MonitorControl> (mSimServer->GetControlNode("MonitorControl")); if (mMonitorControl.get() == 0) @@ -648,7 +648,7 @@ { // search for the first agent of the left/right side boost::shared_ptr<AgentState> agentState = - shared_dynamic_cast<AgentState>((*aaiter)->GetChild("AgentState", true)); + dynamic_pointer_cast<AgentState>((*aaiter)->GetChild("AgentState", true)); if ((specified && agentState->GetUniformNumber() == unum && agentState->GetTeamIndex() == idx) || (!specified && agentState->IsSelected())) Modified: trunk/rcssserver3d/plugin/soccer/visionperceptor/visionperceptor.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/visionperceptor/visionperceptor.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccer/visionperceptor/visionperceptor.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -92,7 +92,7 @@ mAgentAspect = agent_aspect; } - mAgentState = shared_static_cast<AgentState> + mAgentState = static_pointer_cast<AgentState> (mAgentAspect->GetChildOfClass("AgentState",true)); if (mAgentState == 0) { @@ -135,7 +135,7 @@ bool VisionPerceptor::ConstructInternal() { - mRay = shared_static_cast<oxygen::RayCollider> + mRay = static_pointer_cast<oxygen::RayCollider> (GetCore()->New("oxygen/RayCollider")); if (mRay.get() == 0) @@ -159,7 +159,7 @@ i != objectList.end(); ++i) { ObjectData od; - od.mObj = shared_static_cast<ObjectState>(*i); + od.mObj = static_pointer_cast<ObjectState>(*i); if (od.mObj.get() == 0) { @@ -411,7 +411,7 @@ // dContactGeom contact; -// boost::shared_ptr<Collider> collider = shared_static_cast<Collider> +// boost::shared_ptr<Collider> collider = static_pointer_cast<Collider> // (i->mObj->GetChildSupportingClass("Collider")); // if (mRay->Intersects(collider)) Modified: trunk/rcssserver3d/plugin/soccermonitor/soccerinput.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccermonitor/soccerinput.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccermonitor/soccerinput.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -76,7 +76,7 @@ scriptServer->CreateVariable("Command.KillSelection", CmdKillSelection); scriptServer->CreateVariable("Command.ReposSelection", CmdReposSelection); - mMonitorClient = shared_dynamic_cast<NetClient> + mMonitorClient = dynamic_pointer_cast<NetClient> (GetCore()->Get("/sys/server/simulation/SparkMonitorClient")); if (mMonitorClient.get() == 0) @@ -86,7 +86,7 @@ } // get camera body - mCameraBody = shared_dynamic_cast<RigidBody> + mCameraBody = dynamic_pointer_cast<RigidBody> (GetCore()->Get("/usr/scene/camera/physics")); if (mCameraBody.get() == 0) @@ -96,7 +96,7 @@ } // get fps controller - mFPS = shared_dynamic_cast<FPSController> + mFPS = dynamic_pointer_cast<FPSController> (GetCore()->Get("/usr/scene/camera/physics/controller")); if (mFPS.get() == 0) @@ -271,7 +271,7 @@ } boost::shared_ptr<SoccerMonitor> soccerMonitor = - shared_static_cast<SoccerMonitor>(soccerMonitorList.front()); + static_pointer_cast<SoccerMonitor>(soccerMonitorList.front()); salt::Vector2f fieldSize = soccerMonitor->GetFieldSize(); Modified: trunk/rcssserver3d/plugin/soccermonitor/soccerinputlogplayer.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccermonitor/soccerinputlogplayer.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccermonitor/soccerinputlogplayer.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -51,7 +51,7 @@ mScriptServer->CreateVariable("Command.CameraRightCorner", CmdCameraRightCorner); mScriptServer->CreateVariable("Command.CameraRightGoal", CmdCameraRightGoal); - mMonitorClient = shared_dynamic_cast<SimControlNode> + mMonitorClient = dynamic_pointer_cast<SimControlNode> (GetCore()->Get("/sys/server/simulation/SparkMonitorLogFileServer")); if (mMonitorClient.get() == 0) @@ -61,7 +61,7 @@ } // get fps controller - mFPS = shared_dynamic_cast<FPSController> + mFPS = dynamic_pointer_cast<FPSController> (GetCore()->Get("/usr/scene/camera/physics/controller")); if (mFPS.get() == 0) @@ -71,7 +71,7 @@ } // get camera body - mCameraBody = shared_dynamic_cast<RigidBody> + mCameraBody = dynamic_pointer_cast<RigidBody> (GetCore()->Get("/usr/scene/camera/physics")); if (mCameraBody.get() == 0) Modified: trunk/rcssserver3d/plugin/soccermonitor/soccerrender.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccermonitor/soccerrender.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/plugin/soccermonitor/soccerrender.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -45,7 +45,7 @@ { // get the FontServer mFontServer = - shared_static_cast<FontServer>(GetCore()->Get("/sys/server/font")); + static_pointer_cast<FontServer>(GetCore()->Get("/sys/server/font")); if (mFontServer.get() == 0) { GetLog()->Error() << "ERROR: (SoccerRender) Unable to get FontServer\n"; @@ -63,14 +63,14 @@ } // get the SoccerMonitor - mMonitor = shared_static_cast<SoccerMonitor> + mMonitor = static_pointer_cast<SoccerMonitor> (GetCore()->Get("/sys/server/simulation/SparkMonitorClient/SoccerMonitor")); if (mMonitor.get() == 0) { GetLog()->Error() << "ERROR: (SoccerRender) Unable to get SoccerMonitor\n"; } - mInput = shared_static_cast<SoccerInput> + mInput = static_pointer_cast<SoccerInput> (GetCore()->Get("/sys/server/simulation/InputControl/SoccerInput")); if (mInput.get() == 0) Modified: trunk/rcssserver3d/rcssagent3d/hoap2behavior.cpp =================================================================== --- trunk/rcssserver3d/rcssagent3d/hoap2behavior.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/rcssagent3d/hoap2behavior.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -58,7 +58,7 @@ { mZG.GetCore()->ImportBundle("sexpparser"); - mParser = shared_static_cast<BaseParser> + mParser = static_pointer_cast<BaseParser> (mZG.GetCore()->New("SexpParser")); if (mParser.get() == 0) Modified: trunk/rcssserver3d/rcssagent3d/naobehavior.cpp =================================================================== --- trunk/rcssserver3d/rcssagent3d/naobehavior.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/rcssagent3d/naobehavior.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -94,7 +94,7 @@ { mZG.GetCore()->ImportBundle("sexpparser"); - mParser = shared_static_cast<BaseParser> + mParser = static_pointer_cast<BaseParser> (mZG.GetCore()->New("SexpParser")); if (mParser.get() == 0) Modified: trunk/rcssserver3d/rcssagent3d/soccerbehavior.cpp =================================================================== --- trunk/rcssserver3d/rcssagent3d/soccerbehavior.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/rcssagent3d/soccerbehavior.cpp 2013-02-13 08:31:45 UTC (rev 331) @@ -44,7 +44,7 @@ string SoccerBehavior::Init() { mZG.GetCore()->ImportBundle("sexpparser"); - mParser = shared_static_cast<BaseParser> + mParser = static_pointer_cast<BaseParser> (mZG.GetCore()->New("SexpParser")); if (mParser.get() == 0) Modified: trunk/rcssserver3d/rcssagent3d/soccerbotbehavior.cpp =================================================================== --- trunk/rcssserver3d/rcssagent3d/soccerbotbehavior.cpp 2012-11-26 20:28:16 UTC (rev 330) +++ trunk/rcssserver3d/rcssagent3d/soccerbotbehavior.cpp 2013-02-13 08:31... [truncated message content] |
From: yao L. <xua...@gm...> - 2013-01-25 13:05:27
|
Hello! I wish to post the mail list! -- 嘿嘿,试试gamil........ |
From: <he...@us...> - 2012-11-26 20:28:22
|
Revision: 330 http://simspark.svn.sourceforge.net/simspark/?rev=330&view=rev Author: hedayat Date: 2012-11-26 20:28:16 +0000 (Mon, 26 Nov 2012) Log Message: ----------- Added new nao.rsg which imports the standard Nao robot. It's added separately hoping that SVN will correctly handle original nao.rsg(now nao_hetero.rsg) history. Added Paths: ----------- trunk/rcssserver3d/data/rsg/agent/nao/nao.rsg Added: trunk/rcssserver3d/data/rsg/agent/nao/nao.rsg =================================================================== --- trunk/rcssserver3d/data/rsg/agent/nao/nao.rsg (rev 0) +++ trunk/rcssserver3d/data/rsg/agent/nao/nao.rsg 2012-11-26 20:28:16 UTC (rev 330) @@ -0,0 +1,7 @@ +; -*- mode: lisp; -*- + +(RSG 0 1) +( + (importScene rsg/agent/nao/nao_hetero.rsg 0) +) + \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2012-11-26 20:25:56
|
Revision: 329 http://simspark.svn.sourceforge.net/simspark/?rev=329&view=rev Author: hedayat Date: 2012-11-26 20:25:49 +0000 (Mon, 26 Nov 2012) Log Message: ----------- Added changed to enable heterogeneous Nao robots Modified Paths: -------------- trunk/rcssserver3d/ChangeLog trunk/rcssserver3d/rcssserver3d/CMakeLists.txt trunk/rcssserver3d/rcssserver3d/naosoccersim.rb Added Paths: ----------- trunk/rcssserver3d/data/rsg/agent/nao/nao_hetero.rsg trunk/rcssserver3d/rcssserver3d/naorobottypes.rb Removed Paths: ------------- trunk/rcssserver3d/data/rsg/agent/nao/nao.rsg Modified: trunk/rcssserver3d/ChangeLog =================================================================== --- trunk/rcssserver3d/ChangeLog 2012-11-24 15:19:21 UTC (rev 328) +++ trunk/rcssserver3d/ChangeLog 2012-11-26 20:25:49 UTC (rev 329) @@ -1,3 +1,14 @@ +2012-11-25 Hedayat Vatankhah <hed...@gm...> + + * data/rsg/agent/nao/nao_hetero.rsg: + - nao_hetero.rsg can be used to create different variants of Nao robot + - nao.rsg a compatbility scene to create default Nao type (type 0) + + * rcssserver3d/naorobottypes.rb: + * rcssserver3d/naosoccersim.rb: + * rcssserver3d/CMakeLists.txt: + - added naorobottypes.rb to initialize Nao heterogeneous robot parameters + 2012-06-21 Hedayat Vatankhah <hed...@gm...> * plugin/soccer/soccerruleaspect/soccerruleaspect.cpp: Deleted: trunk/rcssserver3d/data/rsg/agent/nao/nao.rsg =================================================================== --- trunk/rcssserver3d/data/rsg/agent/nao/nao.rsg 2012-11-24 15:19:21 UTC (rev 328) +++ trunk/rcssserver3d/data/rsg/agent/nao/nao.rsg 2012-11-26 20:25:49 UTC (rev 329) @@ -1,138 +0,0 @@ -; -*- mode: lisp; -*- - -; -; nao robot description file. -; - -(RSG 0 1) -( - -; -; The torso parameters -; - -(def $TorsoLength 0.1) -(def $TorsoWidth 0.1) -(def $TorsoHeight 0.18) -(def $TorsoMass 1.2171) - -(def $TorsoInitX 0) -(def $TorsoInitY -1) -(def $TorsoInitZ 1.5) - -(def $loadObj (eval Nao.UseTexture)) -; -;Begin Construct of Nao -; -(nd Space - (setName spacenao) - (disableInnerCollision true) - - ; - ;The torso part - ; - (nd AgentAspect - (setName body) - (setLocalPos $TorsoInitX $TorsoInitY $TorsoInitZ) - - (switch $loadObj - (true - (nd Transform - (setLocalRotation -90 0 180) - (nd StaticMesh - (load 'models/naobody.obj') - (setScale $TorsoLength $TorsoLength $TorsoLength) - ) - ) - ) - - (false - (importScene rsg/agent/nao/box_appearance.rsg $TorsoLength $TorsoWidth $TorsoHeight matGrey) - ) - ) - - ;(importScene rsg/agent/nao/box_physics.rsg $TorsoLength $TorsoWidth $TorsoHeight $TorsoMass) - (importScene rsg/agent/nao/box_physics_nocollider.rsg $TorsoLength $TorsoWidth $TorsoHeight $TorsoMass) - (nd BoxCollider - (setName TorsoCollider) - (setBoxLengths $TorsoLength $TorsoWidth $TorsoHeight) - (importScene rsg/agent/nao/contactjointhandler.rsg) - ) - - ;Install effectors and perceptors - (nd StaticMeshInitEffector) - - (nd TimePerceptor) - - (nd AgentState - (setName AgentState) - (nd GameStatePerceptor) - (nd HearPerceptor) - (nd Transform - (nd Cylinder - (setName SelectionMarker) - (setParams 1.0 1.0) - (setScale 0.2 0.2 0.02) - (setMaterial matSelect) - (setTransparent) - ) - ) - ) - - (nd GyroRatePerceptor (setName torso)) - (nd Accelerometer (setName torso)) - - ;(nd HMDPPerceptor) - ;(nd HMDPEffector) - - (nd BeamEffector) - - (nd SayEffector) - - ;(nd VisionPerceptor - ; (setSenseMyPos false) - ; (setStaticSenseAxis false) - ; (addNoise false)) - - (nd AgentSyncEffector) - - );end of AgentAspect - - - ; - ;The neck and head part - ; - (importScene rsg/agent/nao/naoneckhead.rsg $TorsoInitX $TorsoInitY $TorsoInitZ $loadObj) - - - ; - ;The Right Arm - ; - (importScene rsg/agent/nao/naoarm.rsg - 1 r - $TorsoInitX $TorsoInitY $TorsoInitZ $loadObj) - - ; - ;The Left Arm - ; - (importScene rsg/agent/nao/naoarm.rsg - -1 l - $TorsoInitX $TorsoInitY $TorsoInitZ $loadObj) - - ; - ;The Right Leg - ; - (importScene rsg/agent/nao/naoleg.rsg - 1 r - $TorsoInitX $TorsoInitY $TorsoInitZ $loadObj) - - ; - ;The Left Leg - ; - (importScene rsg/agent/nao/naoleg.rsg - -1 l - $TorsoInitX $TorsoInitY $TorsoInitZ $loadObj) - -);end of nd Space - -);end of RSG 0 1 Copied: trunk/rcssserver3d/data/rsg/agent/nao/nao_hetero.rsg (from rev 317, trunk/rcssserver3d/data/rsg/agent/nao/nao.rsg) =================================================================== --- trunk/rcssserver3d/data/rsg/agent/nao/nao_hetero.rsg (rev 0) +++ trunk/rcssserver3d/data/rsg/agent/nao/nao_hetero.rsg 2012-11-26 20:25:49 UTC (rev 329) @@ -0,0 +1,142 @@ +; -*- mode: lisp; -*- + +; +; nao robot description file. +; + +(RSG 0 1) +( + +(templ $type) + +; +; The torso parameters +; + +;(def $TorsoLength (eval "NaoType["$type"]['tl']")) + +(def $TorsoLength 0.1) +(def $TorsoWidth 0.1) +(def $TorsoHeight 0.18) +(def $TorsoMass 1.2171) + +(def $TorsoInitX 0) +(def $TorsoInitY -1) +(def $TorsoInitZ 1.5) + +(def $loadObj (eval Nao.UseTexture)) +; +;Begin Construct of Nao +; +(nd Space + (setName spacenao) + (disableInnerCollision true) + + ; + ;The torso part + ; + (nd AgentAspect + (setName body) + (setLocalPos $TorsoInitX $TorsoInitY $TorsoInitZ) + + (switch $loadObj + (true + (nd Transform + (setLocalRotation -90 0 180) + (nd StaticMesh + (load 'models/naobody.obj') + (setScale $TorsoLength $TorsoLength $TorsoLength) + ) + ) + ) + + (false + (importScene rsg/agent/nao/box_appearance.rsg $TorsoLength $TorsoWidth $TorsoHeight matGrey) + ) + ) + + ;(importScene rsg/agent/nao/box_physics.rsg $TorsoLength $TorsoWidth $TorsoHeight $TorsoMass) + (importScene rsg/agent/nao/box_physics_nocollider.rsg $TorsoLength $TorsoWidth $TorsoHeight $TorsoMass) + (nd BoxCollider + (setName TorsoCollider) + (setBoxLengths $TorsoLength $TorsoWidth $TorsoHeight) + (importScene rsg/agent/nao/contactjointhandler.rsg) + ) + + ;Install effectors and perceptors + (nd StaticMeshInitEffector) + + (nd TimePerceptor) + + (nd AgentState + (setName AgentState) + (nd GameStatePerceptor) + (nd HearPerceptor) + (nd Transform + (nd Cylinder + (setName SelectionMarker) + (setParams 1.0 1.0) + (setScale 0.2 0.2 0.02) + (setMaterial matSelect) + (setTransparent) + ) + ) + ) + + (nd GyroRatePerceptor (setName torso)) + (nd Accelerometer (setName torso)) + + ;(nd HMDPPerceptor) + ;(nd HMDPEffector) + + (nd BeamEffector) + + (nd SayEffector) + + ;(nd VisionPerceptor + ; (setSenseMyPos false) + ; (setStaticSenseAxis false) + ; (addNoise false)) + + (nd AgentSyncEffector) + + );end of AgentAspect + + + ; + ;The neck and head part + ; + (importScene rsg/agent/nao/naoneckhead.rsg $TorsoInitX $TorsoInitY $TorsoInitZ $loadObj) + + + ; + ;The Right Arm + ; + (importScene rsg/agent/nao/naoarm.rsg + 1 r + $TorsoInitX $TorsoInitY $TorsoInitZ $loadObj) + + ; + ;The Left Arm + ; + (importScene rsg/agent/nao/naoarm.rsg + -1 l + $TorsoInitX $TorsoInitY $TorsoInitZ $loadObj) + + ; + ;The Right Leg + ; + (importScene rsg/agent/nao/naoleg.rsg + 1 r + $TorsoInitX $TorsoInitY $TorsoInitZ $loadObj) + + ; + ;The Left Leg + ; + (importScene rsg/agent/nao/naoleg.rsg + -1 l + $TorsoInitX $TorsoInitY $TorsoInitZ $loadObj) + +);end of nd Space + +);end of RSG 0 1 Modified: trunk/rcssserver3d/rcssserver3d/CMakeLists.txt =================================================================== --- trunk/rcssserver3d/rcssserver3d/CMakeLists.txt 2012-11-24 15:19:21 UTC (rev 328) +++ trunk/rcssserver3d/rcssserver3d/CMakeLists.txt 2012-11-26 20:25:49 UTC (rev 329) @@ -27,7 +27,7 @@ ########### install files ############### -install(FILES rcssserver3d.rb soccersim.rb naosoccersim.rb +install(FILES rcssserver3d.rb soccersim.rb naosoccersim.rb naorobottypes.rb internalsoccermonitor.rb internalsoccerbindings.rb DESTINATION ${DATADIR}/${CMAKE_PROJECT_NAME}) Added: trunk/rcssserver3d/rcssserver3d/naorobottypes.rb =================================================================== --- trunk/rcssserver3d/rcssserver3d/naorobottypes.rb (rev 0) +++ trunk/rcssserver3d/rcssserver3d/naorobottypes.rb 2012-11-26 20:25:49 UTC (rev 329) @@ -0,0 +1,6 @@ +NaoType = [ +# Type 0 (Standard Nao) +{'tl' => 0.1}, +# Type 1 +{'tl' => 0.12} +] Modified: trunk/rcssserver3d/rcssserver3d/naosoccersim.rb =================================================================== --- trunk/rcssserver3d/rcssserver3d/naosoccersim.rb 2012-11-24 15:19:21 UTC (rev 328) +++ trunk/rcssserver3d/rcssserver3d/naosoccersim.rb 2012-11-26 20:25:49 UTC (rev 329) @@ -129,3 +129,6 @@ # install the TrainerCommandParser to parse commands received from a # monitor client sparkRegisterMonitorCmdParser 'TrainerCommandParser' + +# Load parameters for heterogeneous Nao robots +run "naorobottypes.rb" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2012-11-24 15:19:27
|
Revision: 328 http://simspark.svn.sourceforge.net/simspark/?rev=328&view=rev Author: hedayat Date: 2012-11-24 15:19:21 +0000 (Sat, 24 Nov 2012) Log Message: ----------- Removed a debugging snippet left in previous commit Modified Paths: -------------- trunk/spark/plugin/sceneeffector/sceneeffector.cpp Modified: trunk/spark/plugin/sceneeffector/sceneeffector.cpp =================================================================== --- trunk/spark/plugin/sceneeffector/sceneeffector.cpp 2012-11-24 15:15:30 UTC (rev 327) +++ trunk/spark/plugin/sceneeffector/sceneeffector.cpp 2012-11-24 15:19:21 UTC (rev 328) @@ -65,9 +65,6 @@ return; } - string s; - sceneAction->GetSceneParameters()->GetValue(sceneAction->GetSceneParameters()->begin(), s); - GetLog()->Error() << "HHHHHH Params: " << s << endl; aspect->ImportScene(sceneAction->GetScene(), sceneAction->GetSceneParameters()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2012-11-24 15:15:36
|
Revision: 327 http://simspark.svn.sourceforge.net/simspark/?rev=327&view=rev Author: hedayat Date: 2012-11-24 15:15:30 +0000 (Sat, 24 Nov 2012) Log Message: ----------- Scene parameters can be sent to SceneEffector now. Modified Paths: -------------- trunk/spark/ChangeLog trunk/spark/plugin/sceneeffector/sceneaction.h trunk/spark/plugin/sceneeffector/sceneeffector.cpp Modified: trunk/spark/ChangeLog =================================================================== --- trunk/spark/ChangeLog 2012-09-13 08:05:11 UTC (rev 326) +++ trunk/spark/ChangeLog 2012-11-24 15:15:30 UTC (rev 327) @@ -1,3 +1,9 @@ +2012-11-24 Hedayat Vatankhah <hed...@gm...> + + * plugin/sceneeffector/sceneaction.h: + * plugin/sceneeffector/sceneeffector.cpp: + - added the ability to receive and apply scene parameters + 2012-05-23 Hedayat Vatankhah <hed...@gm...> * lib/kerosin/CMakeLists.txt: Modified: trunk/spark/plugin/sceneeffector/sceneaction.h =================================================================== --- trunk/spark/plugin/sceneeffector/sceneaction.h 2012-09-13 08:05:11 UTC (rev 326) +++ trunk/spark/plugin/sceneeffector/sceneaction.h 2012-11-24 15:15:30 UTC (rev 327) @@ -24,20 +24,29 @@ #include <oxygen/gamecontrolserver/actionobject.h> #include <salt/vector.h> +#include <zeitgeist/parameterlist.h> class SceneAction : public oxygen::ActionObject { public: - SceneAction(const std::string& predicate, const std::string& scene) - : ActionObject(predicate), mScene(scene) {} + SceneAction(const std::string& predicate, const std::string& scene, + boost::shared_ptr<zeitgeist::ParameterList> parameters) + : ActionObject(predicate), mScene(scene), mParameters(parameters) {} virtual ~SceneAction() {} /** returns the stored scene name */ const std::string& GetScene() { return mScene; } + /** returns the stored scene parameters */ + const boost::shared_ptr<zeitgeist::ParameterList> &GetSceneParameters() + { return mParameters; } + protected: /** the name of the scene to be created by the SceneEffector */ std::string mScene; + + /** the parameters of the scene to be created by the SceneEffector */ + boost::shared_ptr<zeitgeist::ParameterList> mParameters; }; #endif // SCENEACTION_H Modified: trunk/spark/plugin/sceneeffector/sceneeffector.cpp =================================================================== --- trunk/spark/plugin/sceneeffector/sceneeffector.cpp 2012-09-13 08:05:11 UTC (rev 326) +++ trunk/spark/plugin/sceneeffector/sceneeffector.cpp 2012-11-24 15:15:30 UTC (rev 327) @@ -65,10 +65,12 @@ return; } - boost::shared_ptr<ParameterList> parameter(new ParameterList()); + string s; + sceneAction->GetSceneParameters()->GetValue(sceneAction->GetSceneParameters()->begin(), s); + GetLog()->Error() << "HHHHHH Params: " << s << endl; + aspect->ImportScene(sceneAction->GetScene(), + sceneAction->GetSceneParameters()); - aspect->ImportScene(sceneAction->GetScene(), parameter); - } boost::shared_ptr<ActionObject> @@ -89,5 +91,10 @@ return boost::shared_ptr<ActionObject>(); }; - return boost::shared_ptr<ActionObject>(new SceneAction(GetPredicate(),scene)); + boost::shared_ptr<ParameterList> parameters( + new ParameterList(predicate.parameter)); + parameters->Pop_Front(); + + return boost::shared_ptr<ActionObject>( + new SceneAction(GetPredicate(), scene, parameters)); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yx...@us...> - 2012-09-13 08:05:23
|
Revision: 326 http://simspark.svn.sourceforge.net/simspark/?rev=326&view=rev Author: yxu Date: 2012-09-13 08:05:11 +0000 (Thu, 13 Sep 2012) Log Message: ----------- Merge branch 'realistic_motor' * realistic_motor: revert changes for my testing doc of angular motor perceptor/effector, battery perceptor sense temperature send battery info every second is enough set stiffness to 1.0 by default configure for my testing stiffness effector remove backlash Modified Paths: -------------- branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/hingejoint.rsg branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/nao.rsg branches/realistic_motor/rcssserver3d/doc/users/simspark.tex branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.cpp branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.h branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor_c.cpp branches/realistic_motor/spark/plugin/sparkagent/CMakeLists.txt branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.cpp branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.h branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector_c.cpp branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor.cpp branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor.h branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor_c.cpp branches/realistic_motor/spark/plugin/sparkagent/export.cpp Added Paths: ----------- branches/realistic_motor/spark/plugin/sparkagent/stiffnessaction.h branches/realistic_motor/spark/plugin/sparkagent/stiffnesseffector.cpp branches/realistic_motor/spark/plugin/sparkagent/stiffnesseffector.h branches/realistic_motor/spark/plugin/sparkagent/stiffnesseffector_c.cpp Removed Paths: ------------- branches/realistic_motor/spark/plugin/sparkagent/angularmotoraction.h Modified: branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/hingejoint.rsg =================================================================== --- branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/hingejoint.rsg 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/hingejoint.rsg 2012-09-13 08:05:11 UTC (rev 326) @@ -40,7 +40,7 @@ (setNumAxes 1) (attach $PathBody1 $PathBody2) (setMotorAxis 0 1 $Axis_X $Axis_Y $Axis_Z) - (setMaxMotorForce 0 $FMax) + (setMaxTorque $FMax) (setJointMaxSpeed1 $MaxAbsSpeed) ;; constant of motor (setSpeedConstant $Ke) @@ -52,13 +52,14 @@ (setProtectionTempeature 80) (enableFeedback true) - (setBattery ../../../torso/Battery) + (setBattery ../../../body/Battery) - (nd AngularMotorPerceptor (setName $PerName)) - (nd AngularMotorEffector - (setName $EffName) - (setMaxForce $FMax) - ) + (nd AngularMotorPerceptor (setName $PerName) + (setSenseAngle true) + (setSenseTemperature true)) + (nd AngularMotorEffector (setName $EffName)) + (nd StiffnessEffector (setName (join $EffName s))) ) ) + ) ) Modified: branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/nao.rsg =================================================================== --- branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/nao.rsg 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/nao.rsg 2012-09-13 08:05:11 UTC (rev 326) @@ -65,6 +65,7 @@ (setPower 167184) (nd BatteryPerceptor (setName BAT) + (setInterval 50) ) ) Modified: branches/realistic_motor/rcssserver3d/doc/users/simspark.tex =================================================================== --- branches/realistic_motor/rcssserver3d/doc/users/simspark.tex 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/rcssserver3d/doc/users/simspark.tex 2012-09-13 08:05:11 UTC (rev 326) @@ -88,6 +88,7 @@ %klaus: What is the zero degree position, is the above correct? %Joschka: I don't think this is necessarily correct; to my knowledge, the zero position is determined by the orientation and position of the bodies at the time the joint is attached. Is this right? +%Yuan: Yes, exactly \begin{itemize} \item[Message format:] \texttt{(HJ (n <name>) (ax <ax>))} @@ -100,8 +101,38 @@ \item[Noise model:] None \end{itemize} +%-SUB-SUB-SECTION--------------------------------------------------- +%-------------------- AngularMotor Perceptor ----------------------- +%------------------------------------------------------------------- +\subsubsection{Angular Motor Perceptor} +\label{sec:AMP} +The \emph{angular motor} is a more realistic motor which simulates +power comsuming and tempeature. A \emph{angular motor perceptor} +recevies information of \emph{angular motor}, it may contains +information about angle, rate, torque, current, and tempeature, +depending on configuration. +The format of message is pretty similar as \emph{Hinge Joint + Perceptor} in \ref{sec:HJP}: +\begin{itemize} + \item[Message format:] \texttt{(HJ (n <name>)(ax <ax>)(rt <rt>)(tq <tq>)(ct <ct>)(tp <tp>))} + \begin{itemize} + \item[\texttt{<name>} -] the name of the corresponding joint + \item[\texttt{<ax>} -] the current position angle in degrees and an accuracy + of two digits + \item[\texttt{<rt>} -] the speed of motor in degrees per second + \item[\texttt{<tq>} -] the output torque of motor in Nm + \item[\texttt{<ct>} -] the currency of motor in A + \item[\texttt{<tp>} -] internal temperature of motor, in $^\circ$C + \end{itemize} + \item[Example message:] \texttt{(HJ (n laj3) (ax -1.02)(tp 40.0))} + \item[Noise model:] None +\end{itemize} + +All the information are updated every cycle, except temperature which +included in message only when the change is bigger than 1 $^\circ$C. + %-SUB-SUB-SECTION--------------------------------------------------- %-------------------- UniversalJoint Perceptor --------------------- %------------------------------------------------------------------- @@ -254,7 +285,18 @@ \end{itemize} +%-SUB-SUB-SECTION--------------------------------------------------- +%----------------------- Battery Perceptor --------------------------- +%------------------------------------------------------------------- +\subsubsection{Battery Perceptor} +\label{sec:batteryperceptor} +This perceptor gives information about battery of robot. +\begin{itemize} + \item[Message format:] \texttt{(BAT <charge>)} + \item[\texttt{<charge>} -] the charge level of battery in range [0, 1], 1 means fully charged. + \item[Example message:] \texttt{(BAT 0.9)} +\end{itemize} %-SUB-SECTION------------------------------------------------------- @@ -423,8 +465,8 @@ \item[Example message:] \texttt{(AgentState (temp 48) (battery 75))} \end{itemize} +Note: it is not used now. - %-SUB-SUB-SECTION--------------------------------------------------- %----------------------- GameState Perceptor ----------------------- %------------------------------------------------------------------- @@ -613,8 +655,38 @@ \item[Example message:] \texttt{(lae3 5.3)} \end{itemize} +%-SUB-SUB-SECTION--------------------------------------------------- +%----------------------- HingeJoint Effector ----------------------- +%------------------------------------------------------------------- +\subsubsection{Angular Motor Effector} +\label{sec:AME} +The \emph{angular motor effector} is able to drive \emph{angular + motor}, and the message format is exactly the same as \emph{hinge + joint effector} in section \ref{sec:HJE}. +%-SUB-SUB-SECTION--------------------------------------------------- +%----------------------- HingeJoint Effector ----------------------- +%------------------------------------------------------------------- +\subsubsection{Stiffness Effector} +\label{sec:AME} +The \emph{stiffness effector} is able to change the stiffness of +\emph{angular motor}, and the stiffness affects the maximum output +torque of motor: the motor is off when stiffness equals 0, and motor +has most power when stiffness is 1. +\begin{itemize} + \item[Message format:] \texttt{(<name> <st>)} + \begin{itemize} + \item[\texttt{<name>} -] the name of the corresponding effector + \item[\texttt{<st>} -] the requested stiffness in range [0, 1] + \end{itemize} + \item[Example message:] \texttt{(lae3s 1.0)} +\end{itemize} + +Note the \emph{angular motor} has temperature protection, it is +enabled when the motor is too hot, and then the maximum stiffness is +limited. + %-SUB-SUB-SECTION--------------------------------------------------- %--------------------- UniversalJoint Effector --------------------- %------------------------------------------------------------------- Modified: branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.cpp =================================================================== --- branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.cpp 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.cpp 2012-09-13 08:05:11 UTC (rev 326) @@ -38,9 +38,12 @@ mTempMotor(mTempEnvironment), mThermalConductivity(0.025), mHeatCapacity(26), - mTempProtection(80) + mTempProtection(80), + mProtectionStiffness(0.8), + mMaxTorque(0), + mStiffness(1), + mActualStiffness(1) { - } AngularMotor::~AngularMotor() @@ -163,6 +166,8 @@ float P = mKe * v * mI + Pr; float E = P * deltaTime; + updateStiffnessControl(); + if ( mBattery.get() != 0 ) { if (!mBattery->Consume(E)) @@ -171,11 +176,6 @@ } } - if (mTempMotor > mTempProtection) - { - SetMaxMotorForce(Joint::AI_FIRST, 0); - } - mTempMotor += (Pr - mThermalConductivity*(mTempMotor-mTempEnvironment)) * deltaTime / mHeatCapacity; } @@ -222,3 +222,9 @@ return (mTempMotor > mTempProtection); } + +void AngularMotor::updateStiffnessControl() +{ + mActualStiffness = mTempMotor < mTempProtection ? mStiffness : std::min(mStiffness, mProtectionStiffness); + SetMaxMotorForce(Joint::AI_FIRST, mActualStiffness * mMaxTorque); +} Modified: branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.h =================================================================== --- branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.h 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.h 2012-09-13 08:05:11 UTC (rev 326) @@ -130,7 +130,7 @@ float GetCurrent() const { return mI; } /** get the tempeature of joint */ - float GetTempeature() const { return mTempMotor; } + float GetTemperature() const { return mTempMotor; } /** constant setters */ void setSpeedConstant(float v) { mKe = v; } @@ -140,16 +140,22 @@ void setThermalConductivity(float v) { mThermalConductivity = v; } void setHeatCapacity(float v) { mHeatCapacity = v; } void setProtectionTempeature(float v) { mTempProtection = v; } + void setProtectionStiffness(float v) { mProtectionStiffness = v; } + void setMaxTorque(float v) { mMaxTorque = v; } /** returns the torque on the joint */ float GetTorque() const; + void SetStiffness(float v) { mStiffness = v; updateStiffnessControl(); } + protected: /** creates a new angularmotor joint */ virtual void OnLink(); /** update energe comsuption and tempeture */ virtual void PrePhysicsUpdateInternal(float deltaTime); + + void updateStiffnessControl(); private: static boost::shared_ptr<AngularMotorInt> mAngularMotorImp; @@ -167,7 +173,12 @@ float mThermalConductivity; float mHeatCapacity; float mTempProtection; + float mProtectionStiffness; + float mMaxTorque; + float mStiffness; + float mActualStiffness; + boost::shared_ptr<HingeJoint> mHingeJoint; // HACK: assume connected with hinge joint }; Modified: branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor_c.cpp =================================================================== --- branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor_c.cpp 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor_c.cpp 2012-09-13 08:05:11 UTC (rev 326) @@ -180,6 +180,8 @@ SET_ANGULAR_MOTOR_CONSTANT(setThermalConductivity) SET_ANGULAR_MOTOR_CONSTANT(setHeatCapacity) SET_ANGULAR_MOTOR_CONSTANT(setProtectionTempeature) +SET_ANGULAR_MOTOR_CONSTANT(setProtectionStiffness) +SET_ANGULAR_MOTOR_CONSTANT(setMaxTorque) void CLASS(AngularMotor)::DefineClass() { @@ -202,4 +204,6 @@ DEFINE_FUNCTION(setThermalConductivity); DEFINE_FUNCTION(setHeatCapacity); DEFINE_FUNCTION(setProtectionTempeature); + DEFINE_FUNCTION(setProtectionStiffness); + DEFINE_FUNCTION(setMaxTorque); } Modified: branches/realistic_motor/spark/plugin/sparkagent/CMakeLists.txt =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/CMakeLists.txt 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/spark/plugin/sparkagent/CMakeLists.txt 2012-09-13 08:05:11 UTC (rev 326) @@ -27,13 +27,16 @@ universaljointperceptor.h universaljointperceptor.cpp universaljointperceptor_c.cpp - angularmotoraction.h angularmotoreffector.h angularmotoreffector.cpp angularmotoreffector_c.cpp angularmotorperceptor.h angularmotorperceptor.cpp angularmotorperceptor_c.cpp + stiffnessaction.h + stiffnesseffector.h + stiffnesseffector.cpp + stiffnesseffector_c.cpp ) add_library(sparkagent MODULE ${sparkagent_LIB_SRCS}) Deleted: branches/realistic_motor/spark/plugin/sparkagent/angularmotoraction.h =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/angularmotoraction.h 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/spark/plugin/sparkagent/angularmotoraction.h 2012-09-13 08:05:11 UTC (rev 326) @@ -1,41 +0,0 @@ -/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- - - this file is part of rcssserver3D - - Copyright (C) 2012 RoboCup Soccer Server 3D Maintenance Group - - 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 ANGULAR_MOTOR_ACTION_H -#define ANGULAR_MOTOR_ACTION_H - -#include <oxygen/gamecontrolserver/actionobject.h> - -/* only one axis is supported at the moment */ -class AngularMotorAction : public oxygen::ActionObject -{ -public: - AngularMotorAction(const std::string& predicate, float velocity, float stiffness) - : ActionObject(predicate), mVelocity(velocity), mStiffness(stiffness) {} - - virtual ~AngularMotorAction() {} - float GetMotorVelocity() { return mVelocity; } - float GetStiffness() { return mStiffness; } - -protected: - float mVelocity; - float mStiffness; -}; - -#endif // ANGULAR_MOTOR_ACTION_H Modified: branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.cpp =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.cpp 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.cpp 2012-09-13 08:05:11 UTC (rev 326) @@ -18,21 +18,18 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "angularmotoreffector.h" -#include "angularmotoraction.h" +#include "hingeaction.h" #include <oxygen/physicsserver/rigidbody.h> -using namespace oxygen; -using namespace zeitgeist; -using namespace salt; -using namespace boost; using namespace std; +using namespace boost; +using namespace salt; +using namespace zeitgeist; +using namespace oxygen; + AngularMotorEffector::AngularMotorEffector() - : JointEffector<AngularMotor>::JointEffector("amotor"), - mUseBacklash(false), - mGearPosition(0), - mHalfDeadband(1), - mMaxForce(10) + : JointEffector<AngularMotor>::JointEffector("amotor") { } @@ -59,8 +56,7 @@ return false; } - boost::shared_ptr<AngularMotorAction> motorAction = - shared_dynamic_cast<AngularMotorAction>(action); + shared_ptr<HingeAction> motorAction = shared_dynamic_cast<HingeAction>(action); if (motorAction.get() == 0) { @@ -71,10 +67,8 @@ } float finalMotorVel = motorAction->GetMotorVelocity(); - float stiffness = motorAction->GetStiffness(); - stiffness = gClamp(stiffness, 0.0f, 1.0f); - float maxForce = stiffness * mMaxForce; + if (mJoint->IsLimitJointMaxSpeed1()) { finalMotorVel = (finalMotorVel > 0) ? @@ -84,30 +78,7 @@ } mJoint->SetParameter(2 /*value of dParamVel in ODE*/, finalMotorVel); - - if ( mUseBacklash ) - { - bool dead = false; - float jointAngle = mJoint->GetAxisAngle(Joint::AI_FIRST); - - float maxDeadband = jointAngle + mHalfDeadband; - float minDeadband = jointAngle - mHalfDeadband; - if ( mGearPosition < maxDeadband - && mGearPosition > minDeadband ) - { - dead = true; - } - mGearPosition += finalMotorVel * 0.02; - mGearPosition = salt::gClamp(mGearPosition, minDeadband-0.1f, maxDeadband+0.1f); - - mJoint->SetMaxMotorForce(Joint::AI_FIRST, dead?0.3:maxForce); - } - else - { - mJoint->SetMaxMotorForce(Joint::AI_FIRST, maxForce); - } - if (motorAction->GetMotorVelocity() != 0) { boost::shared_ptr<RigidBody> body = mJoint->GetBody(Joint::BI_FIRST); @@ -119,7 +90,7 @@ return true; } -boost::shared_ptr<ActionObject> AngularMotorEffector::GetActionObject(const Predicate& predicate) +shared_ptr<ActionObject> AngularMotorEffector::GetActionObject(const Predicate& predicate) { for(;;) { @@ -146,16 +117,17 @@ break; } + /* float stiffness; if (! predicate.AdvanceValue(iter, stiffness)) { GetLog()->Error() << "ERROR: (HingeEffector) motor stiffness expected\n"; break; - } + }*/ - return boost::shared_ptr<AngularMotorAction>(new AngularMotorAction(GetPredicate(),velocity,stiffness)); + return shared_ptr<HingeAction>(new HingeAction(GetPredicate(),velocity)); } - return boost::shared_ptr<ActionObject>(); + return shared_ptr<ActionObject>(); } Modified: branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.h =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.h 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.h 2012-09-13 08:05:11 UTC (rev 326) @@ -38,18 +38,6 @@ /** constructs an Actionobject, describing a predicate */ virtual boost::shared_ptr<oxygen::ActionObject> GetActionObject(const oxygen::Predicate& predicate); - - void SetUseBacklash(bool use) { mUseBacklash = use; } - - void SetDeadband(float deadband) { mHalfDeadband = deadband / 2;} - - void SetMaxForce(float force) { mMaxForce = force; } - -private: - bool mUseBacklash; - float mGearPosition; - float mHalfDeadband; - float mMaxForce; }; DECLARE_CLASS(AngularMotorEffector); Modified: branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector_c.cpp =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector_c.cpp 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector_c.cpp 2012-09-13 08:05:11 UTC (rev 326) @@ -20,61 +20,7 @@ #include "angularmotoreffector.h" -FUNCTION(AngularMotorEffector,setUseBacklash) -{ - bool use; - - if ( - (in.GetSize() != 1) || - (! in.GetValue(in.begin(), use)) - ) - { - return false; - } - - - obj->SetUseBacklash(use); - return true; -} - -FUNCTION(AngularMotorEffector,setDeadband) -{ - float deadband; - - if ( - (in.GetSize() != 1) || - (! in.GetValue(in.begin(), deadband)) - ) - { - return false; - } - - - obj->SetDeadband(deadband); - return true; -} - -FUNCTION(AngularMotorEffector,setMaxForce) -{ - float force; - - if ( - (in.GetSize() != 1) || - (! in.GetValue(in.begin(), force)) - ) - { - return false; - } - - - obj->SetMaxForce(force); - return true; -} - void CLASS(AngularMotorEffector)::DefineClass() { DEFINE_BASECLASS(oxygen/Effector); - DEFINE_FUNCTION(setUseBacklash); - DEFINE_FUNCTION(setDeadband); - DEFINE_FUNCTION(setMaxForce); } Modified: branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor.cpp =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor.cpp 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor.cpp 2012-09-13 08:05:11 UTC (rev 326) @@ -27,7 +27,12 @@ AngularMotorPerceptor::AngularMotorPerceptor() : JointPerceptor<AngularMotor>::JointPerceptor(), - mAngleRng(-0.005, 0.005)//-0.04395 + mSenseAngle(true), + mSenseRate(false), + mSenseTorque(false), + mSenseCurrent(false), + mSenseTemperature(false), + mLastTemperature(std::numeric_limits<float>::min()) { } @@ -39,8 +44,7 @@ { ParameterList& axisElement = predicate.parameter.AddList(); axisElement.AddValue(string("ax")); - float noise = mAngleRng(); - float ang = mJoint->GetAxisAngle(Joint::AI_FIRST);// + noise; + float ang = mJoint->GetAxisAngle(Joint::AI_FIRST); axisElement.AddValue(ang); } @@ -65,11 +69,16 @@ axisElement.AddValue(mJoint->GetCurrent() * 1000); } -void AngularMotorPerceptor::InsertTempeature(Predicate& predicate) +void AngularMotorPerceptor::InsertTemperature(Predicate& predicate) { - ParameterList& axisElement = predicate.parameter.AddList(); - axisElement.AddValue(string("tp")); - axisElement.AddValue(mJoint->GetTempeature()); + float temp = mJoint->GetTemperature(); + if (fabs(temp - mLastTemperature) > 1) + { + ParameterList& axisElement = predicate.parameter.AddList(); + axisElement.AddValue(string("tp")); + axisElement.AddValue(temp); + mLastTemperature = temp; + } } bool AngularMotorPerceptor::Percept(boost::shared_ptr<oxygen::PredicateList> predList) @@ -87,11 +96,10 @@ nameElement.AddValue(string("n")); nameElement.AddValue(GetName()); - InsertAxisAngle(predicate); - //InsertAxisRate(predicate); - //InsertAxisTorque(predicate); - InsertTempeature(predicate); - InsertCurrent(predicate); - + if (mSenseAngle) InsertAxisAngle(predicate); + if (mSenseRate) InsertAxisRate(predicate); + if (mSenseTorque) InsertAxisTorque(predicate); + if (mSenseTemperature) InsertTemperature(predicate); + if (mSenseCurrent) InsertCurrent(predicate); return true; } Modified: branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor.h =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor.h 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor.h 2012-09-13 08:05:11 UTC (rev 326) @@ -33,16 +33,26 @@ //! \return true, if valid data is available and false otherwise. bool Percept(boost::shared_ptr<oxygen::PredicateList> predList); + void SetSenseAngle(bool v) { mSenseAngle = v; } + void SetSenseRate(bool v) { mSenseRate = v; } + void SetSenseTorque(bool v) { mSenseTorque = v; } + void SetSenseCurrent(bool v) { mSenseCurrent = v; } + void SetSenseTemperature(bool v) { mSenseTemperature = v; } + protected: void InsertAxisAngle(oxygen::Predicate& predicate); void InsertAxisRate(oxygen::Predicate& predicate); void InsertAxisTorque(oxygen::Predicate& predicate); void InsertCurrent(oxygen::Predicate& predicate); - void InsertTempeature(oxygen::Predicate& predicate); + void InsertTemperature(oxygen::Predicate& predicate); private: - //! random number generator for distance errors - salt::UniformRNG<> mAngleRng; + bool mSenseAngle; + bool mSenseRate; + bool mSenseTorque; + bool mSenseCurrent; + bool mSenseTemperature; + float mLastTemperature; }; DECLARE_CLASS(AngularMotorPerceptor); Modified: branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor_c.cpp =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor_c.cpp 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor_c.cpp 2012-09-13 08:05:11 UTC (rev 326) @@ -20,7 +20,92 @@ #include "angularmotorperceptor.h" +FUNCTION(AngularMotorPerceptor,setSenseAngle) +{ + bool v; + + if ( + (in.GetSize() != 1) || + (!in.GetValue(in.begin(), v)) + ) + { + return false; + } + + obj->SetSenseAngle(v); + return true; +} + +FUNCTION(AngularMotorPerceptor,setSenseRate) +{ + bool v; + + if ( + (in.GetSize() != 1) || + (!in.GetValue(in.begin(), v)) + ) + { + return false; + } + + obj->SetSenseRate(v); + return true; +} + +FUNCTION(AngularMotorPerceptor,setSenseTorque) +{ + bool v; + + if ( + (in.GetSize() != 1) || + (!in.GetValue(in.begin(), v)) + ) + { + return false; + } + + obj->SetSenseTorque(v); + return true; +} + +FUNCTION(AngularMotorPerceptor,setSenseCurrent) +{ + bool v; + + if ( + (in.GetSize() != 1) || + (!in.GetValue(in.begin(), v)) + ) + { + return false; + } + + obj->SetSenseCurrent(v); + return true; +} + +FUNCTION(AngularMotorPerceptor,setSenseTemperature) +{ + bool v; + + if ( + (in.GetSize() != 1) || + (!in.GetValue(in.begin(), v)) + ) + { + return false; + } + + obj->SetSenseTemperature(v); + return true; +} + void CLASS(AngularMotorPerceptor)::DefineClass() { DEFINE_BASECLASS(oxygen/Perceptor); + DEFINE_FUNCTION(setSenseAngle); + DEFINE_FUNCTION(setSenseRate); + DEFINE_FUNCTION(setSenseTorque); + DEFINE_FUNCTION(setSenseCurrent); + DEFINE_FUNCTION(setSenseTemperature); } Modified: branches/realistic_motor/spark/plugin/sparkagent/export.cpp =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/export.cpp 2012-09-10 12:57:23 UTC (rev 325) +++ branches/realistic_motor/spark/plugin/sparkagent/export.cpp 2012-09-13 08:05:11 UTC (rev 326) @@ -29,6 +29,7 @@ #include "universaljointperceptor.h" #include "angularmotoreffector.h" #include "angularmotorperceptor.h" +#include "stiffnesseffector.h" ZEITGEIST_EXPORT_BEGIN() ZEITGEIST_EXPORT(Hinge2Effector); @@ -40,4 +41,5 @@ ZEITGEIST_EXPORT(UniversalJointPerceptor); ZEITGEIST_EXPORT(AngularMotorEffector); ZEITGEIST_EXPORT(AngularMotorPerceptor); + ZEITGEIST_EXPORT(StiffnessEffector); ZEITGEIST_EXPORT_END() Copied: branches/realistic_motor/spark/plugin/sparkagent/stiffnessaction.h (from rev 325, branches/realistic_motor/spark/plugin/sparkagent/angularmotoraction.h) =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/stiffnessaction.h (rev 0) +++ branches/realistic_motor/spark/plugin/sparkagent/stiffnessaction.h 2012-09-13 08:05:11 UTC (rev 326) @@ -0,0 +1,41 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + this file is part of rcssserver3D + + Copyright (C) 2012 RoboCup Soccer Server 3D Maintenance Group + + 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 STIFFNESSACTION_H +#define STIFFNESSACTION_H + +#include <oxygen/gamecontrolserver/actionobject.h> + +class StiffnessAction : public oxygen::ActionObject +{ +public: + StiffnessAction(const std::string& predicate, float stiffness) + : ActionObject(predicate), mStiffness(stiffness) {} + + virtual ~StiffnessAction() {} + + float GetStiffness() { return mStiffness; } + +protected: + float mStiffness; +}; + + +#endif // STIFFNESSACTION_H Added: branches/realistic_motor/spark/plugin/sparkagent/stiffnesseffector.cpp =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/stiffnesseffector.cpp (rev 0) +++ branches/realistic_motor/spark/plugin/sparkagent/stiffnesseffector.cpp 2012-09-13 08:05:11 UTC (rev 326) @@ -0,0 +1,92 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + this file is part of rcssserver3D + + Copyright (C) 2012 RoboCup Soccer Server 3D Maintenance Group + + 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 "stiffnesseffector.h" +#include "stiffnessaction.h" + +using namespace std; +using namespace boost; +using namespace salt; +using namespace zeitgeist; +using namespace oxygen; + + +StiffnessEffector::StiffnessEffector() + : JointEffector<AngularMotor>::JointEffector("amotorStiffness") +{ +} + +StiffnessEffector::~StiffnessEffector() +{ +} + +bool StiffnessEffector::Realize(boost::shared_ptr<ActionObject> action) +{ + if (mJoint.get() == 0) return false; + + shared_ptr<StiffnessAction> stiffnessAction = shared_dynamic_cast<StiffnessAction>(action); + + if (stiffnessAction.get() == 0) + { + GetLog()->Error() + << "ERROR: (StiffnessEffector) cannot realize an " + << "unknown ActionObject\n"; + return false; + } + + float stiffness = stiffnessAction->GetStiffness(); + stiffness = gClamp(stiffness, 0.0f, 1.0f); + mJoint->SetStiffness(stiffness); + return true; +} + +shared_ptr<ActionObject> StiffnessEffector::GetActionObject(const Predicate& predicate) +{ + for(;;) + { + if (mJoint.get() == 0) + { + break; + } + + if (predicate.name != GetPredicate()) + { + GetLog()->Error() + << "ERROR: (HingeEffector) invalid predicate" + << predicate.name << "\n"; + break; + } + + Predicate::Iterator iter = predicate.begin(); + + + float stiffness; + if (! predicate.AdvanceValue(iter, stiffness)) + { + GetLog()->Error() + << "ERROR: (HingeEffector) motor stiffness expected\n"; + break; + } + + return shared_ptr<StiffnessAction>(new StiffnessAction(GetPredicate(),stiffness)); + } + + return shared_ptr<ActionObject>(); +} Copied: branches/realistic_motor/spark/plugin/sparkagent/stiffnesseffector.h (from rev 325, branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.h) =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/stiffnesseffector.h (rev 0) +++ branches/realistic_motor/spark/plugin/sparkagent/stiffnesseffector.h 2012-09-13 08:05:11 UTC (rev 326) @@ -0,0 +1,46 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + this file is part of rcssserver3D + + Copyright (C) 2012 RoboCup Soccer Server 3D Maintenance Group + + 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 STIFFNESSEFFECTOR_H +#define STIFFNESSEFFECTOR_H + +#include <oxygen/agentaspect/jointeffector.h> +#include <oxygen/physicsserver/angularmotor.h> + +class StiffnessEffector: public oxygen::JointEffector<oxygen::AngularMotor> +{ +public: + StiffnessEffector(); + virtual ~StiffnessEffector(); + + /** realizes the action described by the ActionObject */ + virtual bool Realize(boost::shared_ptr<oxygen::ActionObject> action); + + /** returns the name of the predicate this effector implements. */ + virtual std::string GetPredicate() { return GetName(); } + + /** constructs an Actionobject, describing a predicate */ + virtual boost::shared_ptr<oxygen::ActionObject> + GetActionObject(const oxygen::Predicate& predicate); +}; + +DECLARE_CLASS(StiffnessEffector); + +#endif // STIFFNESSEFFECTOR_H Copied: branches/realistic_motor/spark/plugin/sparkagent/stiffnesseffector_c.cpp (from rev 325, branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor_c.cpp) =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/stiffnesseffector_c.cpp (rev 0) +++ branches/realistic_motor/spark/plugin/sparkagent/stiffnesseffector_c.cpp 2012-09-13 08:05:11 UTC (rev 326) @@ -0,0 +1,27 @@ + +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + this file is part of rcssserver3D + + Copyright (C) 2012 RoboCup Soccer Server 3D Maintenance Group + + 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 "stiffnesseffector.h" + +void CLASS(StiffnessEffector)::DefineClass() +{ + DEFINE_BASECLASS(oxygen/Effector); +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yx...@us...> - 2012-09-10 12:57:32
|
Revision: 325 http://simspark.svn.sourceforge.net/simspark/?rev=325&view=rev Author: yxu Date: 2012-09-10 12:57:23 +0000 (Mon, 10 Sep 2012) Log Message: ----------- merge changes in my local git Modified Paths: -------------- branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/hingejoint.rsg branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/nao.rsg branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/naoarm.rsg branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/naoleg.rsg branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/naoneckhead.rsg branches/realistic_motor/spark/lib/oxygen/CMakeLists.txt branches/realistic_motor/spark/lib/oxygen/oxygen.cpp branches/realistic_motor/spark/lib/oxygen/oxygen.h branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.cpp branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.h branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor_c.cpp branches/realistic_motor/spark/lib/oxygen/physicsserver/hingejoint.cpp branches/realistic_motor/spark/lib/oxygen/physicsserver/int/angularmotorint.h branches/realistic_motor/spark/lib/oxygen/physicsserver/int/jointint.h branches/realistic_motor/spark/lib/oxygen/physicsserver/joint.h branches/realistic_motor/spark/lib/salt/sharedlibrary.cpp branches/realistic_motor/spark/plugin/CMakeLists.txt branches/realistic_motor/spark/plugin/odeimps/odeangularmotor.cpp branches/realistic_motor/spark/plugin/odeimps/odeangularmotor.h branches/realistic_motor/spark/plugin/odeimps/odejoint.cpp branches/realistic_motor/spark/plugin/odeimps/odejoint.h branches/realistic_motor/spark/plugin/sparkagent/CMakeLists.txt branches/realistic_motor/spark/plugin/sparkagent/export.cpp branches/realistic_motor/spark/plugin/sparkagent/hingeaction.h branches/realistic_motor/spark/plugin/sparkagent/hingeeffector.cpp branches/realistic_motor/spark/plugin/sparkagent/hingeeffector.h branches/realistic_motor/spark/spark/spark.rb Added Paths: ----------- branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint1.rsg branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint2.rsg branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint3.rsg branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint4.rsg branches/realistic_motor/spark/lib/oxygen/physicsserver/battery.cpp branches/realistic_motor/spark/lib/oxygen/physicsserver/battery.h branches/realistic_motor/spark/lib/oxygen/physicsserver/battery_c.cpp branches/realistic_motor/spark/plugin/batteryperceptor/ branches/realistic_motor/spark/plugin/batteryperceptor/CMakeLists.txt branches/realistic_motor/spark/plugin/batteryperceptor/batteryperceptor.cpp branches/realistic_motor/spark/plugin/batteryperceptor/batteryperceptor.h branches/realistic_motor/spark/plugin/batteryperceptor/batteryperceptor_c.cpp branches/realistic_motor/spark/plugin/batteryperceptor/export.cpp branches/realistic_motor/spark/plugin/sparkagent/angularmotoraction.h branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.cpp branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.h branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector_c.cpp branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor.cpp branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor.h branches/realistic_motor/spark/plugin/sparkagent/angularmotorperceptor_c.cpp Modified: branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/hingejoint.rsg =================================================================== --- branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/hingejoint.rsg 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/hingejoint.rsg 2012-09-10 12:57:23 UTC (rev 325) @@ -2,54 +2,63 @@ (RSG 0 1) ( - (templ $PerName $EffName - $Path_Body1 $Path_Body2 - $Anchor_X $Anchor_Y $Anchor_Z - $Axis_X $Axis_Y $Axis_Z - $Min $Max + (templ $PerName $EffName + $Path_Body1 $Path_Body2 + $Anchor_X $Anchor_Y $Anchor_Z + $Axis_X $Axis_Y $Axis_Z + $MinDeg $MaxDeg + $Ke $Kt $R + $Te $Ct $Ch + $FMax $MaxAbsSpeed ) - (def $PI 3.14159265) - ;(def $MinDeg (eval $Min * (eval 180.0 / $PI))) - ;(def $MaxDeg (eval $Max * (eval 180.0 / $PI))) - (def $MinDeg $Min) - (def $MaxDeg $Max) - - ; There are 2 types of motor installed on the real Nao, each type has - ; 2 types of "Reduction ratio". - ; So, there are all 4 types of joint speed. - ; They are: 188.67 deg/s, 290.25 deg/s, 305.16 deg/s, 351.77 deg/s - ; The maximum of them is 351.77. - ; We don't need to follow them totally that different hingeeffector is using - ; different types of motor. - ; All the hingeeffector uses the 351.77 - (def $MaxAbsSpeed (eval $PI * (eval 351.77 / 180.0))) - ; ;Hinge Joint Parameters ; - (def $FMax 10) (def $CFM 1e-8) (def $Stop_CFM 1e-8) (def $Stop_ERP 0.8) (def $FudgeFactor 1e-5) (def $Bounce 1) + (def $PathBody1 (join ../ $Path_Body1)) + (def $PathBody2 (join ../ $Path_Body2)) + (nd HingeJoint - (attach $Path_Body1 $Path_Body2) - (setAnchor $Anchor_X $Anchor_Y $Anchor_Z) - (setAxis $Axis_X $Axis_Y $Axis_Z) - (setMaxMotorForce 0 $FMax) - (setCFM 0 $CFM) - (setStopCFM 0 $Stop_CFM) - (setStopERP 0 $Stop_ERP) - (setFudgeFactor 0 $FudgeFactor) - (setBounce 0 $Bounce) - (setLowStopDeg 0 $MinDeg) - (setHighStopDeg 0 $MaxDeg) - (setJointMaxSpeed1 $MaxAbsSpeed) - - (nd HingePerceptor (setName $PerName)) - (nd HingeEffector (setName $EffName)) - ) + (attach $Path_Body1 $Path_Body2) + (setAnchor $Anchor_X $Anchor_Y $Anchor_Z) + (setAxis $Axis_X $Axis_Y $Axis_Z) + (setCFM 0 $CFM) + (setStopCFM 0 $Stop_CFM) + (setStopERP 0 $Stop_ERP) + (setFudgeFactor 0 $FudgeFactor) + (setBounce 0 $Bounce) + (setLowStopDeg 0 $MinDeg) + (setHighStopDeg 0 $MaxDeg) + (setMaxMotorForce 0 0.1) ;; as friction + (nd AngularMotor + (setNumAxes 1) + (attach $PathBody1 $PathBody2) + (setMotorAxis 0 1 $Axis_X $Axis_Y $Axis_Z) + (setMaxMotorForce 0 $FMax) + (setJointMaxSpeed1 $MaxAbsSpeed) + ;; constant of motor + (setSpeedConstant $Ke) + (setTorqueConstant $Kt) + (setResistance $R) + (setEnvironmentTempeature $Te) + (setThermalConductivity $Ct) + (setHeatCapacity $Ch) + (setProtectionTempeature 80) + + (enableFeedback true) + (setBattery ../../../torso/Battery) + + (nd AngularMotorPerceptor (setName $PerName)) + (nd AngularMotorEffector + (setName $EffName) + (setMaxForce $FMax) + ) + ) + ) ) Added: branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint1.rsg =================================================================== --- branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint1.rsg (rev 0) +++ branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint1.rsg 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,33 @@ +; -*- mode: lisp; -*- + +(RSG 0 1) +( + (templ $PerName $EffName + $Path_Body1 $Path_Body2 + $Anchor_X $Anchor_Y $Anchor_Z + $Axis_X $Axis_Y $Axis_Z + $MinDeg $MaxDeg + $Te + ) + + (def $PI 3.14159265) + (def $RMP2RPS (eval $PI / 30)) + + (def $MaxAbsSpeed (eval 39.7 * $RMP2RPS)) + (def $Ke (eval 2.2 * $RMP2RPS)) + (def $Kt 4.3) + (def $R 6.44) + (def $Ct 0.0158) + (def $Ch 27.2) + (def $FMax 12) + + (importScene rsg/agent/nao/hingejoint.rsg + $PerName $EffName + $Path_Body1 $Path_Body2 + $Anchor_X $Anchor_Y $Anchor_Z + $Axis_X $Axis_Y $Axis_Z + $MinDeg $MaxDeg + $Ke $Kt $R + $Te $Ct $Ch + $FMax $MaxAbsSpeed) + ) Added: branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint2.rsg =================================================================== --- branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint2.rsg (rev 0) +++ branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint2.rsg 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,33 @@ +; -*- mode: lisp; -*- + +(RSG 0 1) +( + (templ $PerName $EffName + $Path_Body1 $Path_Body2 + $Anchor_X $Anchor_Y $Anchor_Z + $Axis_X $Axis_Y $Axis_Z + $MinDeg $MaxDeg + ) + + (def $PI 3.14159265) + (def $RMP2RPS (eval $PI / 30)) + + (def $MaxAbsSpeed (eval 79.2 * $RMP2RPS)) + (def $Ke (eval 3.8 * $RMP2RPS)) + (def $Kt 2.5) + (def $R 23.1) + (def $Ct 0.0158) + (def $Ch 27.2) + (def $Te 38) + (def $FMax 2.3) + + (importScene rsg/agent/nao/hingejoint.rsg + $PerName $EffName + $Path_Body1 $Path_Body2 + $Anchor_X $Anchor_Y $Anchor_Z + $Axis_X $Axis_Y $Axis_Z + $MinDeg $MaxDeg + $Ke $Kt $R + $Te $Ct $Ch + $FMax $MaxAbsSpeed) + ) Added: branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint3.rsg =================================================================== --- branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint3.rsg (rev 0) +++ branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint3.rsg 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,33 @@ +; -*- mode: lisp; -*- + +(RSG 0 1) +( + (templ $PerName $EffName + $Path_Body1 $Path_Body2 + $Anchor_X $Anchor_Y $Anchor_Z + $Axis_X $Axis_Y $Axis_Z + $MinDeg $MaxDeg + ) + + (def $PI 3.14159265) + (def $RMP2RPS (eval $PI / 30)) + + (def $MaxAbsSpeed (eval 61.1 * $RMP2RPS)) + (def $Ke (eval 3.4 * $RMP2RPS)) + (def $Kt 2.8) + (def $R 6.44) + (def $Ct 0.0198) + (def $Ch 43.6) + (def $Te 27) + (def $FMax 7.8) + + (importScene rsg/agent/nao/hingejoint.rsg + $PerName $EffName + $Path_Body1 $Path_Body2 + $Anchor_X $Anchor_Y $Anchor_Z + $Axis_X $Axis_Y $Axis_Z + $MinDeg $MaxDeg + $Ke $Kt $R + $Te $Ct $Ch + $FMax $MaxAbsSpeed) + ) Added: branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint4.rsg =================================================================== --- branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint4.rsg (rev 0) +++ branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/joint4.rsg 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,33 @@ +; -*- mode: lisp; -*- + +(RSG 0 1) +( + (templ $PerName $EffName + $Path_Body1 $Path_Body2 + $Anchor_X $Anchor_Y $Anchor_Z + $Axis_X $Axis_Y $Axis_Z + $MinDeg $MaxDeg + ) + + (def $PI 3.14159265) + (def $RMP2RPS (eval $PI / 30)) + + (def $MaxAbsSpeed (eval 68.7 * $RMP2RPS)) + (def $Ke (eval 3.3 * $RMP2RPS)) + (def $Kt 2.9) + (def $R 32.1) + (def $Ct 0.0198) + (def $Ch 43.6) + (def $Te 38) + (def $FMax 2.6) + + (importScene rsg/agent/nao/hingejoint.rsg + $PerName $EffName + $Path_Body1 $Path_Body2 + $Anchor_X $Anchor_Y $Anchor_Z + $Axis_X $Axis_Y $Axis_Z + $MinDeg $MaxDeg + $Ke $Kt $R + $Te $Ct $Ch + $FMax $MaxAbsSpeed) + ) Modified: branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/nao.rsg =================================================================== --- branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/nao.rsg 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/nao.rsg 2012-09-10 12:57:23 UTC (rev 325) @@ -59,6 +59,15 @@ (importScene rsg/agent/nao/contactjointhandler.rsg) ) + (nd Battery + (setName Battery) + (setCapacity 167184) + (setPower 167184) + (nd BatteryPerceptor + (setName BAT) + ) + ) + ;Install effectors and perceptors (nd StaticMeshInitEffector) Modified: branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/naoarm.rsg =================================================================== --- branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/naoarm.rsg 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/naoarm.rsg 2012-09-10 12:57:23 UTC (rev 325) @@ -147,7 +147,7 @@ ;(importScene rsg/agent/nao/sphere_physics.rsg $ShoulderRadius $ShoulderMass) (importScene rsg/agent/nao/sphere_physics_nocollider.rsg $ShoulderRadius $ShoulderMass) - (importScene rsg/agent/nao/hingejoint.rsg + (importScene rsg/agent/nao/joint2.rsg $Joint1PerName $Joint1EffName ../sphereBody ../../body/boxBody 0 0 0 @@ -174,7 +174,7 @@ (importScene rsg/agent/nao/box_physics.rsg $UpperArmSizeX $UpperArmSizeY $UpperArmSizeZ $UpperArmMass) - (importScene rsg/agent/nao/hingejoint.rsg + (importScene rsg/agent/nao/joint4.rsg $Joint2PerName $Joint2EffName ../boxBody $ShoulderBodyPath $aj2_Anchor_X $aj2_Anchor_Y $aj2_Anchor_Z @@ -194,7 +194,7 @@ ;(importScene rsg/agent/nao/sphere_physics.rsg $ElbowRadius $ElbowMass) (importScene rsg/agent/nao/sphere_physics_nocollider.rsg $ElbowRadius $ElbowMass) - (importScene rsg/agent/nao/hingejoint.rsg + (importScene rsg/agent/nao/joint2.rsg $Joint3PerName $Joint3EffName ../sphereBody $UpperarmBodyPath 0 0 0 @@ -220,7 +220,7 @@ (importScene rsg/agent/nao/box_physics.rsg $LowerArmSizeX $LowerArmSizeY $LowerArmSizeZ $LowerArmMass) - (importScene rsg/agent/nao/hingejoint.rsg + (importScene rsg/agent/nao/joint4.rsg $Joint4PerName $Joint4EffName ../boxBody $ElbowBodyPath $aj4_Anchor_X $aj4_Anchor_Y $aj4_Anchor_Z Modified: branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/naoleg.rsg =================================================================== --- branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/naoleg.rsg 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/naoleg.rsg 2012-09-10 12:57:23 UTC (rev 325) @@ -188,12 +188,13 @@ (importScene rsg/agent/nao/sphere_physics_nocollider.rsg $Hip1Radius $Hip1Mass) - (importScene rsg/agent/nao/hingejoint.rsg + (importScene rsg/agent/nao/joint1.rsg $Joint1PerName $Joint1EffName ../sphereBody ../../body/boxBody 0 0 0 $lj1_axis_x $lj1_axis_y $lj1_axis_z - $lj1_min $lj1_max) + $lj1_min $lj1_max + 33) ) ; @@ -207,12 +208,13 @@ ;(importScene rsg/agent/nao/sphere_physics.rsg $Hip2Radius $Hip2Mass) (importScene rsg/agent/nao/sphere_physics_nocollider.rsg $Hip2Radius $Hip2Mass) - (importScene rsg/agent/nao/hingejoint.rsg + (importScene rsg/agent/nao/joint1.rsg $Joint2PerName $Joint2EffName ../sphereBody $Hip1BodyPath 0 0 0 ;anchor 0 1 0 ;axis - $lj2_min $lj2_max) + $lj2_min $lj2_max + 27) ) ; @@ -242,7 +244,7 @@ ) - (importScene rsg/agent/nao/hingejoint.rsg + (importScene rsg/agent/nao/joint3.rsg $Joint3PerName $Joint3EffName ../boxBody $Hip2BodyPath $lj3_Anchor_X $lj3_Anchor_Y $lj3_Anchor_Z @@ -276,7 +278,7 @@ (importScene rsg/agent/nao/contactjointhandler.rsg) ) - (importScene rsg/agent/nao/hingejoint.rsg + (importScene rsg/agent/nao/joint3.rsg $Joint4PerName $Joint4EffName ../boxBody $ThighBodyPath 0 -0.01 0.045 @@ -296,7 +298,7 @@ ;(importScene rsg/agent/nao/sphere_physics.rsg $AnkleRadius $AnkleMass) (importScene rsg/agent/nao/sphere_physics_nocollider.rsg $AnkleRadius $AnkleMass) - (importScene rsg/agent/nao/hingejoint.rsg + (importScene rsg/agent/nao/joint3.rsg $Joint5PerName $Joint5EffName ../sphereBody $ShankBodyPath 0 0 0 @@ -335,12 +337,13 @@ (importScene rsg/agent/nao/touchperceptorhandler.rsg) ) - (importScene rsg/agent/nao/hingejoint.rsg + (importScene rsg/agent/nao/joint1.rsg $Joint6PerName $Joint6EffName ../boxBody $AnkleBodyPath 0 -0.03 0.035 0 1 0 ;1 -1 -1 - $lj6_min $lj6_max) + $lj6_min $lj6_max + 27) (nd ObjectState (setID $FootName) Modified: branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/naoneckhead.rsg =================================================================== --- branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/naoneckhead.rsg 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/rcssserver3d/data/rsg/agent/nao/naoneckhead.rsg 2012-09-10 12:57:23 UTC (rev 325) @@ -46,7 +46,7 @@ (importScene rsg/agent/nao/capsule_appearance.rsg $Neck_Radius $Neck_Length matDarkGrey) (importScene rsg/agent/nao/capsule_physics.rsg $Neck_Radius $Neck_Length $Neck_Mass) - (importScene rsg/agent/nao/hingejoint.rsg + (importScene rsg/agent/nao/joint2.rsg hj1 he1 ../capsuleBody ../../body/boxBody 0 0 0 @@ -78,7 +78,7 @@ ) (importScene rsg/agent/nao/sphere_physics.rsg $Head_Radius $Head_Mass) - (importScene rsg/agent/nao/hingejoint.rsg + (importScene rsg/agent/nao/joint4.rsg hj2 he2 ../sphereBody ../../neck/capsuleBody ;../boxBody ../../body/boxBody Modified: branches/realistic_motor/spark/lib/oxygen/CMakeLists.txt =================================================================== --- branches/realistic_motor/spark/lib/oxygen/CMakeLists.txt 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/lib/oxygen/CMakeLists.txt 2012-09-10 12:57:23 UTC (rev 325) @@ -53,6 +53,7 @@ physicsserver/universaljoint.h physicsserver/hinge2joint.h physicsserver/angularmotor.h + physicsserver/battery.h #interfaces physicsserver/int/angularmotorint.h @@ -227,6 +228,8 @@ physicsserver/hinge2joint_c.cpp physicsserver/angularmotor.cpp physicsserver/angularmotor_c.cpp + physicsserver/battery.cpp + physicsserver/battery_c.cpp sceneserver/basenode.cpp sceneserver/basenode_c.cpp Modified: branches/realistic_motor/spark/lib/oxygen/oxygen.cpp =================================================================== --- branches/realistic_motor/spark/lib/oxygen/oxygen.cpp 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/lib/oxygen/oxygen.cpp 2012-09-10 12:57:23 UTC (rev 325) @@ -75,6 +75,7 @@ zg.GetCore()->RegisterClassObject(new CLASS(SliderJoint), "oxygen/"); zg.GetCore()->RegisterClassObject(new CLASS(UniversalJoint), "oxygen/"); zg.GetCore()->RegisterClassObject(new CLASS(Hinge2Joint), "oxygen/"); + zg.GetCore()->RegisterClassObject(new CLASS(Battery), "oxygen/"); // collider zg.GetCore()->RegisterClassObject(new CLASS(Collider), "oxygen/"); Modified: branches/realistic_motor/spark/lib/oxygen/oxygen.h =================================================================== --- branches/realistic_motor/spark/lib/oxygen/oxygen.h 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/lib/oxygen/oxygen.h 2012-09-10 12:57:23 UTC (rev 325) @@ -73,6 +73,7 @@ #include <oxygen/physicsserver/sliderjoint.h> #include <oxygen/physicsserver/universaljoint.h> #include <oxygen/physicsserver/hinge2joint.h> +#include <oxygen/physicsserver/battery.h> #include <oxygen/sceneserver/basenode.h> #include <oxygen/sceneserver/camera.h> Modified: branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.cpp =================================================================== --- branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.cpp 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.cpp 2012-09-10 12:57:23 UTC (rev 325) @@ -29,7 +29,16 @@ boost::shared_ptr<AngularMotorInt> AngularMotor::mAngularMotorImp; -AngularMotor::AngularMotor() : Joint() +AngularMotor::AngularMotor() : Joint(), + mKe(4.3), + mKt(4.3), + mR(6.44), + mI(0), + mTempEnvironment(20), + mTempMotor(mTempEnvironment), + mThermalConductivity(0.025), + mHeatCapacity(26), + mTempProtection(80) { } @@ -53,6 +62,17 @@ } mJointID = mAngularMotorImp->CreateAngularMotor(world); + + mHingeJoint = FindParentSupportingClass<HingeJoint>().lock(); + + if (mHingeJoint.get() == 0) + { + GetLog()->Error() + << "(" << GetClass()->GetName() + << ") ERROR: found no Joint parent\n"; + } + + mTempMotor = mTempEnvironment; } void AngularMotor::SetMode(int mode) @@ -88,7 +108,7 @@ void AngularMotor::SetMotorAxis(EAxisIndex idx, EAxisAnchor anchor, const salt::Vector3f& axis) { - Vector3f globalAxis = GetWorldTransform() * axis; + Vector3f globalAxis = axis;//GetWorldTransform() * axis; mAngularMotorImp->SetMotorAxis(idx, anchor, globalAxis, mJointID); } @@ -109,6 +129,7 @@ float AngularMotor::GetAxisAngle(EAxisIndex idx) { + return mHingeJoint->GetAngle(); // HACK return mAngularMotorImp->GetAxisAngle(idx, mJointID); } @@ -126,3 +147,78 @@ { return mJointImp->GetParameter(parameter, mJointID); } + +float AngularMotor::GetTorque() const +{ + return mAngularMotorImp->GetTorque(mJointID); +} + +void AngularMotor::PrePhysicsUpdateInternal(float deltaTime) +{ + const float v = gAbs(gDegToRad(GetAngularMotorVelocity(Joint::AI_FIRST))); + const float t = GetTorque(); + + mI = t / mKt; + float Pr = mI * mI * mR; + float P = mKe * v * mI + Pr; + float E = P * deltaTime; + + if ( mBattery.get() != 0 ) + { + if (!mBattery->Consume(E)) + { + SetMaxMotorForce(Joint::AI_FIRST, 0); + } + } + + if (mTempMotor > mTempProtection) + { + SetMaxMotorForce(Joint::AI_FIRST, 0); + } + + mTempMotor += (Pr - mThermalConductivity*(mTempMotor-mTempEnvironment)) * deltaTime / mHeatCapacity; +} + +void AngularMotor::SetBattery(const std::string& batteryPath) +{ + mBattery.reset(); + if (batteryPath.empty()) + { + return; + } + + boost::shared_ptr<Leaf> mySelf = shared_static_cast<Leaf> + (GetSelf().lock()); + + boost::shared_ptr<Leaf> leaf = GetCore()->Get(batteryPath,mySelf); + + if (leaf.get() == 0) + { + GetLog()->Error() + << "(HingeJoint) ERROR: cannot find node '" + << batteryPath << "'\n"; + return; + } + + boost::shared_ptr<Battery> battery = shared_dynamic_cast<Battery>(leaf); + + if (battery.get() == 0) + { + GetLog()->Error() + << "(HingeJoint) ERROR: node '" + << batteryPath << "' is not a Battery node \n"; + return; + } + + mBattery = battery; +} + +bool AngularMotor::Disabled() +{ + if ( mBattery.get() != 0 && mBattery->IsEmpty() ) + { + return true; + } + + return (mTempMotor > mTempProtection); +} Modified: branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.h =================================================================== --- branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.h 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor.h 2012-09-10 12:57:23 UTC (rev 325) @@ -22,6 +22,8 @@ #include <oxygen/oxygen_defines.h> #include <oxygen/physicsserver/joint.h> +#include <oxygen/physicsserver/battery.h> +#include <oxygen/physicsserver/hingejoint.h> namespace oxygen { @@ -114,18 +116,59 @@ */ float GetAxisAngleRate(EAxisIndex idx); -protected: - /** creates a new angularmotor joint */ - virtual void OnLink(); - /** sets a joint parameter value */ virtual void SetParameter(int parameter, float value); /** returns a joint parameter value */ virtual float GetParameter(int parameter) const; + + void SetBattery(const std::string& batteryPath); + + bool Disabled(); + + /** get the current of joint */ + float GetCurrent() const { return mI; } + + /** get the tempeature of joint */ + float GetTempeature() const { return mTempMotor; } + + /** constant setters */ + void setSpeedConstant(float v) { mKe = v; } + void setTorqueConstant(float v) { mKt = v; } + void setResistance(float v) { mR = v; } + void setEnvironmentTempeature(float v) { mTempEnvironment = v; mTempMotor = v;} + void setThermalConductivity(float v) { mThermalConductivity = v; } + void setHeatCapacity(float v) { mHeatCapacity = v; } + void setProtectionTempeature(float v) { mTempProtection = v; } + + /** returns the torque on the joint */ + float GetTorque() const; + +protected: + /** creates a new angularmotor joint */ + virtual void OnLink(); + + /** update energe comsuption and tempeture */ + virtual void PrePhysicsUpdateInternal(float deltaTime); private: static boost::shared_ptr<AngularMotorInt> mAngularMotorImp; + + boost::shared_ptr<Battery> mBattery; + + /** parameters of motor */ + float mKe; + float mKt; + float mR; + float mI; // current + /** parameters of tempeature */ + float mTempEnvironment; + float mTempMotor; + float mThermalConductivity; + float mHeatCapacity; + float mTempProtection; + + boost::shared_ptr<HingeJoint> mHingeJoint; // HACK: assume connected with hinge joint }; DECLARE_CLASS(AngularMotor); Modified: branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor_c.cpp =================================================================== --- branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor_c.cpp 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/lib/oxygen/physicsserver/angularmotor_c.cpp 2012-09-10 12:57:23 UTC (rev 325) @@ -149,6 +149,38 @@ return obj->GetAxisAngleRate(static_cast<Joint::EAxisIndex>(inAxisIdx)); } +FUNCTION(AngularMotor,setBattery) +{ + std::string inPath; + + if (in.GetSize() != 1 + || (!in.GetValue(in[0], inPath))) + { + return false; + } + + obj->SetBattery(inPath); + return true; +} + +#define SET_ANGULAR_MOTOR_CONSTANT(functionName) \ + static zeitgeist::GCValue functionName(AngularMotor *obj, \ + __attribute__((unused)) const zeitgeist::ParameterList &in)\ +{\ + float inValue;\ + if (in.GetSize() != 1 || (!in.GetValue(in[0], inValue))) { return false; }\ + obj->functionName(inValue);\ + return true;\ +} + +SET_ANGULAR_MOTOR_CONSTANT(setSpeedConstant) +SET_ANGULAR_MOTOR_CONSTANT(setTorqueConstant) +SET_ANGULAR_MOTOR_CONSTANT(setResistance) +SET_ANGULAR_MOTOR_CONSTANT(setEnvironmentTempeature) +SET_ANGULAR_MOTOR_CONSTANT(setThermalConductivity) +SET_ANGULAR_MOTOR_CONSTANT(setHeatCapacity) +SET_ANGULAR_MOTOR_CONSTANT(setProtectionTempeature) + void CLASS(AngularMotor)::DefineClass() { DEFINE_BASECLASS(oxygen/Joint); @@ -162,4 +194,12 @@ DEFINE_FUNCTION(setAxisAngle); DEFINE_FUNCTION(getAxisAngle); DEFINE_FUNCTION(getAxisAngleRate); + DEFINE_FUNCTION(setBattery); + DEFINE_FUNCTION(setSpeedConstant); + DEFINE_FUNCTION(setTorqueConstant); + DEFINE_FUNCTION(setResistance); + DEFINE_FUNCTION(setEnvironmentTempeature); + DEFINE_FUNCTION(setThermalConductivity); + DEFINE_FUNCTION(setHeatCapacity); + DEFINE_FUNCTION(setProtectionTempeature); } Copied: branches/realistic_motor/spark/lib/oxygen/physicsserver/battery.cpp (from rev 324, branches/realistic_motor/spark/plugin/sparkagent/hingeaction.h) =================================================================== --- branches/realistic_motor/spark/lib/oxygen/physicsserver/battery.cpp (rev 0) +++ branches/realistic_motor/spark/lib/oxygen/physicsserver/battery.cpp 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,54 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + this file is part of rcssserver3D + Copyright (C) 2011 RoboCup Soccer Server 3D Maintenance Group + $Id$ + + 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 <oxygen/physicsserver/battery.h> + +using namespace oxygen; +using namespace boost; + + +Battery::Battery() : PhysicsObject(), + mCapacity(0), + mPower(0) +{ +} + +Battery::~Battery() +{ +} + +void Battery::OnLink() +{ + PhysicsObject::OnLink(); +} + +bool Battery::Consume(float v) +{ + if (mPower > v) + { + mPower -= v; + return true; + } + else + { + mPower = 0; + return false; + } +} Copied: branches/realistic_motor/spark/lib/oxygen/physicsserver/battery.h (from rev 324, branches/realistic_motor/spark/plugin/sparkagent/hingeaction.h) =================================================================== --- branches/realistic_motor/spark/lib/oxygen/physicsserver/battery.h (rev 0) +++ branches/realistic_motor/spark/lib/oxygen/physicsserver/battery.h 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,54 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + this file is part of rcssserver3D + Copyright (C) 2011 RoboCup Soccer Server 3D Maintenance Group + $Id$ + + 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 OXYGEN_BATTERY_H +#define OXYGEN_BATTERY_H + +#include <oxygen/physicsserver/physicsobject.h> + +namespace oxygen +{ + +class OXYGEN_API Battery : public PhysicsObject +{ +public: + Battery(); + virtual ~Battery(); + virtual void OnLink(); + + bool Consume(float v); + + void SetCapacity(float v) {mCapacity = v;} + + void SetPower(float v) { mPower = salt::gMin(mCapacity, v); } + + bool IsEmpty() const { return mPower <= 0; } + + float State() const { return mPower / mCapacity; } + +protected: + float mCapacity; + float mPower; +}; + +DECLARE_CLASS(Battery); + +} //namespace oxygen + +#endif //OXYGEN_BATTERY_H Added: branches/realistic_motor/spark/lib/oxygen/physicsserver/battery_c.cpp =================================================================== --- branches/realistic_motor/spark/lib/oxygen/physicsserver/battery_c.cpp (rev 0) +++ branches/realistic_motor/spark/lib/oxygen/physicsserver/battery_c.cpp 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,58 @@ +/* -*- mode: c++ -*- + + this file is part of rcssserver3D + Copyright (C) 2011 RoboCup Soccer Server 3D Maintenance Group + $Id$ + + 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 <oxygen/physicsserver/battery.h> + +using namespace oxygen; + +FUNCTION(Battery,setCapacity) +{ + float inValue; + + if (in.GetSize() != 1 + || (!in.GetValue(in[0], inValue))) + { + return false; + } + + obj->SetCapacity(inValue); + return true; +} + +FUNCTION(Battery,setPower) +{ + float inValue; + + if (in.GetSize() != 1 + || (!in.GetValue(in[0], inValue))) + { + return false; + } + + obj->SetPower(inValue); + return true; +} + +void CLASS(Battery)::DefineClass() +{ + DEFINE_BASECLASS(oxygen/PhysicsObject); + DEFINE_FUNCTION(setCapacity); + DEFINE_FUNCTION(setPower); +} Modified: branches/realistic_motor/spark/lib/oxygen/physicsserver/hingejoint.cpp =================================================================== --- branches/realistic_motor/spark/lib/oxygen/physicsserver/hingejoint.cpp 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/lib/oxygen/physicsserver/hingejoint.cpp 2012-09-10 12:57:23 UTC (rev 325) @@ -30,7 +30,6 @@ HingeJoint::HingeJoint() : Generic6DOFJoint() { - } HingeJoint::~HingeJoint() Modified: branches/realistic_motor/spark/lib/oxygen/physicsserver/int/angularmotorint.h =================================================================== --- branches/realistic_motor/spark/lib/oxygen/physicsserver/int/angularmotorint.h 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/lib/oxygen/physicsserver/int/angularmotorint.h 2012-09-10 12:57:23 UTC (rev 325) @@ -106,6 +106,9 @@ euler angle rate. */ virtual float GetAxisAngleRate(int idx, long jointID) = 0; + + /** returns the torque on the joint */ + virtual float GetTorque(long jointID) const = 0; }; } //namespace oxygen Modified: branches/realistic_motor/spark/lib/oxygen/physicsserver/int/jointint.h =================================================================== --- branches/realistic_motor/spark/lib/oxygen/physicsserver/int/jointint.h 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/lib/oxygen/physicsserver/int/jointint.h 2012-09-10 12:57:23 UTC (rev 325) @@ -211,9 +211,12 @@ /** sets the angular motor velocity in degrees */ virtual void SetAngularMotorVelocity(int idx, float deg, long jointID) = 0; - /** returns the angular motor velocity in degrees */ + /** returns the angular motor velocity in degrees / s */ virtual float GetAngularMotorVelocity(int idx, long jointID) const = 0; + /** returns the angular motor angle in degrees */ + virtual float GetAngularMotorAngle(int idx, long jointID) const = 0; + /** sets the maximum force or torque that the motor will use to achieve the desired velocity. This must always be greater than or equal to zero. Setting this to zero (the default value) Modified: branches/realistic_motor/spark/lib/oxygen/physicsserver/joint.h =================================================================== --- branches/realistic_motor/spark/lib/oxygen/physicsserver/joint.h 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/lib/oxygen/physicsserver/joint.h 2012-09-10 12:57:23 UTC (rev 325) @@ -274,7 +274,7 @@ /** This has to be declared here because rsgedit upcasts to Joint at one point and then calls this. */ - virtual void SetParameter(int parameter, float value){}; + virtual void SetParameter(int parameter, float value){} protected: /** associates the created joint with this node */ Modified: branches/realistic_motor/spark/lib/salt/sharedlibrary.cpp =================================================================== --- branches/realistic_motor/spark/lib/salt/sharedlibrary.cpp 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/lib/salt/sharedlibrary.cpp 2012-09-10 12:57:23 UTC (rev 325) @@ -80,6 +80,7 @@ #endif mLibHandle = ::dlopen((libName + ".so").c_str(), RTLD_LAZY); +#ifdef __APPLE__ if (mLibHandle == 0) { // we didn't find the plugin, so we try again... /* mainly to work with MacOS bundles, so that plugins can be located like this: @@ -93,6 +94,7 @@ */ mLibHandle = ::dlopen((RFile::BundlePath() + "Contents/plugins/" + libName + ".so").c_str(), RTLD_LAZY); } +#endif if (mLibHandle == 0) { std::cerr << "(SharedLibrary) ERROR: dlopen failed for " << libName Modified: branches/realistic_motor/spark/plugin/CMakeLists.txt =================================================================== --- branches/realistic_motor/spark/plugin/CMakeLists.txt 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/plugin/CMakeLists.txt 2012-09-10 12:57:23 UTC (rev 325) @@ -32,6 +32,7 @@ add_subdirectory(soundsystemfmod) add_subdirectory(timersystemboost) add_subdirectory(timersystemsdl) +add_subdirectory(batteryperceptor) if (APPLE) if (DEVEL) add_subdirectory(imageperceptor) Added: branches/realistic_motor/spark/plugin/batteryperceptor/CMakeLists.txt =================================================================== --- branches/realistic_motor/spark/plugin/batteryperceptor/CMakeLists.txt (rev 0) +++ branches/realistic_motor/spark/plugin/batteryperceptor/CMakeLists.txt 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,21 @@ + +########### next target ############### + +set(batteryperceptor_LIB_SRCS + export.cpp + batteryperceptor.h + batteryperceptor.cpp + batteryperceptor_c.cpp +) + +add_library(batteryperceptor MODULE ${batteryperceptor_LIB_SRCS}) + +target_link_libraries(batteryperceptor ${spark_libs} ${Boost_LIBRARIES}) + +if (NOT APPLE) + set_target_properties(batteryperceptor PROPERTIES VERSION 0.0.0 SOVERSION 0) +endif (NOT APPLE) + +if (NOT APPLE) + install(TARGETS batteryperceptor DESTINATION ${LIBDIR}/${CMAKE_PROJECT_NAME}) +endif (NOT APPLE) Added: branches/realistic_motor/spark/plugin/batteryperceptor/batteryperceptor.cpp =================================================================== --- branches/realistic_motor/spark/plugin/batteryperceptor/batteryperceptor.cpp (rev 0) +++ branches/realistic_motor/spark/plugin/batteryperceptor/batteryperceptor.cpp 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,67 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + this file is part of rcssserver3D + Copyright (C) 2008 RoboCup Soccer Server 3D Maintenance Group + $Id$ + + 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 "batteryperceptor.h" +#include <zeitgeist/logserver/logserver.h> + +using namespace oxygen; +using namespace boost; +using namespace zeitgeist; +using namespace salt; +using namespace std; + +BatteryPerceptor::BatteryPerceptor() : oxygen::Perceptor() +{ +} + +BatteryPerceptor::~BatteryPerceptor() +{ +} + +void BatteryPerceptor::OnLink() +{ + mBattery = shared_static_cast<Battery>(FindParentSupportingClass<Battery>().lock()); + if (0 == mBattery.get()) + { + GetLog()->Error()<< "(BatteryPerceptor) ERROR: can not link to battery\n"; + } +} + +void BatteryPerceptor::OnUnLink() +{ + mBattery.reset(); +} + +bool BatteryPerceptor::Percept(boost::shared_ptr<PredicateList> predList) +{ + Predicate &predicate = predList->AddPredicate(); + predicate.name = GetName(); + predicate.parameter.Clear(); + + float v = 0; + if(0 != mBattery.get()) + { + v = mBattery->State(); + } + + predicate.parameter.AddValue(v); + + return true; +} Copied: branches/realistic_motor/spark/plugin/batteryperceptor/batteryperceptor.h (from rev 324, branches/realistic_motor/spark/plugin/sparkagent/hingeaction.h) =================================================================== --- branches/realistic_motor/spark/plugin/batteryperceptor/batteryperceptor.h (rev 0) +++ branches/realistic_motor/spark/plugin/batteryperceptor/batteryperceptor.h 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,47 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + this file is part of rcssserver3D + Copyright (C) 2008 RoboCup Soccer Server 3D Maintenance Group + $Id$ + + 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 BATTERY_PERCEPTOR_H +#define BATTERY_PERCEPTOR_H + +#include <oxygen/agentaspect/perceptor.h> +#include <oxygen/physicsserver/battery.h> + +class BatteryPerceptor : public oxygen::Perceptor +{ +public: + BatteryPerceptor(); + virtual ~BatteryPerceptor(); + + //! \return true, if valid data is available and false otherwise. + bool Percept(boost::shared_ptr<oxygen::PredicateList> predList); + + virtual void OnLink(); + + virtual void OnUnLink(); + +private: + + boost::shared_ptr<oxygen::Battery> mBattery; +}; + +DECLARE_CLASS(BatteryPerceptor); + +#endif //BATTERY_PERCEPTOR_H Copied: branches/realistic_motor/spark/plugin/batteryperceptor/batteryperceptor_c.cpp (from rev 324, branches/realistic_motor/spark/plugin/sparkagent/hingeaction.h) =================================================================== --- branches/realistic_motor/spark/plugin/batteryperceptor/batteryperceptor_c.cpp (rev 0) +++ branches/realistic_motor/spark/plugin/batteryperceptor/batteryperceptor_c.cpp 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,29 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + this file is part of rcssserver3D + Copyright (C) 2008 RoboCup Soccer Server 3D Maintenance Group + $Id$ + + 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 "batteryperceptor.h" + +using namespace boost; +using namespace oxygen; + +void CLASS(BatteryPerceptor)::DefineClass() +{ + DEFINE_BASECLASS(oxygen/Perceptor); +} Copied: branches/realistic_motor/spark/plugin/batteryperceptor/export.cpp (from rev 324, branches/realistic_motor/spark/plugin/sparkagent/hingeaction.h) =================================================================== --- branches/realistic_motor/spark/plugin/batteryperceptor/export.cpp (rev 0) +++ branches/realistic_motor/spark/plugin/batteryperceptor/export.cpp 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,25 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + this file is part of rcssserver3D + Copyright (C) 2008 RoboCup Soccer Server 3D Maintenance Group + $Id$ + + 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 "batteryperceptor.h" + +ZEITGEIST_EXPORT_BEGIN() + ZEITGEIST_EXPORT(BatteryPerceptor); +ZEITGEIST_EXPORT_END() Modified: branches/realistic_motor/spark/plugin/odeimps/odeangularmotor.cpp =================================================================== --- branches/realistic_motor/spark/plugin/odeimps/odeangularmotor.cpp 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/plugin/odeimps/odeangularmotor.cpp 2012-09-10 12:57:23 UTC (rev 325) @@ -98,3 +98,13 @@ dJointID ODEJoint = (dJointID) jointID; return gRadToDeg(dJointGetAMotorAngleRate(ODEJoint,idx)); } + +float AngularMotorImp::GetTorque(long jointID) const +{ + dJointID ODEJoint = (dJointID) jointID; + dJointFeedback* fb = dJointGetFeedback(ODEJoint); + if(fb) + return dLENGTH(fb->t1); + else + return 0; +} Modified: branches/realistic_motor/spark/plugin/odeimps/odeangularmotor.h =================================================================== --- branches/realistic_motor/spark/plugin/odeimps/odeangularmotor.h 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/plugin/odeimps/odeangularmotor.h 2012-09-10 12:57:23 UTC (rev 325) @@ -50,6 +50,7 @@ void SetAxisAngle(int idx, float degAngle, long jointID); float GetAxisAngle(int idx, long jointID); float GetAxisAngleRate(int idx, long jointID); + virtual float GetTorque(long jointID) const; }; DECLARE_CLASS(AngularMotorImp); Modified: branches/realistic_motor/spark/plugin/odeimps/odejoint.cpp =================================================================== --- branches/realistic_motor/spark/plugin/odeimps/odejoint.cpp 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/plugin/odeimps/odejoint.cpp 2012-09-10 12:57:23 UTC (rev 325) @@ -295,6 +295,12 @@ return gRadToDeg(GetParameter(dParamVel + (idx * dParamGroup), jointID)); } +float JointImp::GetAngularMotorAngle(int idx, long jointID) const +{ + dJointID JointImp = (dJointID) jointID; + return gRadToDeg(dJointGetAMotorAngle(JointImp, idx)); +} + void JointImp::SetMaxMotorForce(int idx, float f, long jointID) { SetParameter(dParamFMax + (idx * dParamGroup), f, jointID); Modified: branches/realistic_motor/spark/plugin/odeimps/odejoint.h =================================================================== --- branches/realistic_motor/spark/plugin/odeimps/odejoint.h 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/plugin/odeimps/odejoint.h 2012-09-10 12:57:23 UTC (rev 325) @@ -74,6 +74,7 @@ float GetLinearMotorVelocity(int idx, long jointID) const; void SetAngularMotorVelocity(int idx, float deg, long jointID); float GetAngularMotorVelocity(int idx, long jointID) const; + float GetAngularMotorAngle(int idx, long jointID) const; void SetMaxMotorForce(int idx, float f, long jointID); float GetMaxMotorForce(int idx, long jointID) const; void SetParameter(int parameter, float value, long jointID); Modified: branches/realistic_motor/spark/plugin/sparkagent/CMakeLists.txt =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/CMakeLists.txt 2012-09-10 11:08:54 UTC (rev 324) +++ branches/realistic_motor/spark/plugin/sparkagent/CMakeLists.txt 2012-09-10 12:57:23 UTC (rev 325) @@ -27,6 +27,13 @@ universaljointperceptor.h universaljointperceptor.cpp universaljointperceptor_c.cpp + angularmotoraction.h + angularmotoreffector.h + angularmotoreffector.cpp + angularmotoreffector_c.cpp + angularmotorperceptor.h + angularmotorperceptor.cpp + angularmotorperceptor_c.cpp ) add_library(sparkagent MODULE ${sparkagent_LIB_SRCS}) Copied: branches/realistic_motor/spark/plugin/sparkagent/angularmotoraction.h (from rev 324, branches/realistic_motor/spark/plugin/sparkagent/hingeaction.h) =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/angularmotoraction.h (rev 0) +++ branches/realistic_motor/spark/plugin/sparkagent/angularmotoraction.h 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,41 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + this file is part of rcssserver3D + + Copyright (C) 2012 RoboCup Soccer Server 3D Maintenance Group + + 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 ANGULAR_MOTOR_ACTION_H +#define ANGULAR_MOTOR_ACTION_H + +#include <oxygen/gamecontrolserver/actionobject.h> + +/* only one axis is supported at the moment */ +class AngularMotorAction : public oxygen::ActionObject +{ +public: + AngularMotorAction(const std::string& predicate, float velocity, float stiffness) + : ActionObject(predicate), mVelocity(velocity), mStiffness(stiffness) {} + + virtual ~AngularMotorAction() {} + float GetMotorVelocity() { return mVelocity; } + float GetStiffness() { return mStiffness; } + +protected: + float mVelocity; + float mStiffness; +}; + +#endif // ANGULAR_MOTOR_ACTION_H Copied: branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.cpp (from rev 324, branches/realistic_motor/spark/plugin/sparkagent/hingeeffector.cpp) =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.cpp (rev 0) +++ branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.cpp 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,161 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + this file is part of rcssserver3D + + Copyright (C) 2012 RoboCup Soccer Server 3D Maintenance Group + + 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 "angularmotoreffector.h" +#include "angularmotoraction.h" +#include <oxygen/physicsserver/rigidbody.h> + +using namespace oxygen; +using namespace zeitgeist; +using namespace salt; +using namespace boost; +using namespace std; + +AngularMotorEffector::AngularMotorEffector() + : JointEffector<AngularMotor>::JointEffector("amotor"), + mUseBacklash(false), + mGearPosition(0), + mHalfDeadband(1), + mMaxForce(10) +{ +} + +AngularMotorEffector::~AngularMotorEffector() +{ +} + +bool AngularMotorEffector::Realize(boost::shared_ptr<ActionObject> action) +{ + if (mJoint.get() == 0) + { + return false; + } + + // disabled joint? + if ( mJoint->Disabled() ) + { + boost::shared_ptr<RigidBody> body = mJoint->GetBody(Joint::BI_FIRST); + if (body && !body->IsEnabled() ) + { + body->Enable(); + } + mJoint->SetParameter(2 /*value of dParamVel in ODE*/, 0); + return false; + } + + boost::shared_ptr<AngularMotorAction> motorAction = + shared_dynamic_cast<AngularMotorAction>(action); + + if (motorAction.get() == 0) + { + GetLog()->Error() + << "ERROR: (HingeEffector) cannot realize an " + << "unknown ActionObject\n"; + return false; + } + + float finalMotorVel = motorAction->GetMotorVelocity(); + float stiffness = motorAction->GetStiffness(); + stiffness = gClamp(stiffness, 0.0f, 1.0f); + float maxForce = stiffness * mMaxForce; + + if (mJoint->IsLimitJointMaxSpeed1()) + { + finalMotorVel = (finalMotorVel > 0) ? + gMin(finalMotorVel, mJoint->GetJointMaxSpeed1()) + : + gMax(finalMotorVel, - mJoint->GetJointMaxSpeed1()); + } + + mJoint->SetParameter(2 /*value of dParamVel in ODE*/, finalMotorVel); + + if ( mUseBacklash ) + { + bool dead = false; + float jointAngle = mJoint->GetAxisAngle(Joint::AI_FIRST); + + float maxDeadband = jointAngle + mHalfDeadband; + float minDeadband = jointAngle - mHalfDeadband; + if ( mGearPosition < maxDeadband + && mGearPosition > minDeadband ) + { + dead = true; + } + + mGearPosition += finalMotorVel * 0.02; + mGearPosition = salt::gClamp(mGearPosition, minDeadband-0.1f, maxDeadband+0.1f); + + mJoint->SetMaxMotorForce(Joint::AI_FIRST, dead?0.3:maxForce); + } + else + { + mJoint->SetMaxMotorForce(Joint::AI_FIRST, maxForce); + } + + if (motorAction->GetMotorVelocity() != 0) + { + boost::shared_ptr<RigidBody> body = mJoint->GetBody(Joint::BI_FIRST); + if (body && !body->IsEnabled()) + { + body->Enable(); + } + } + return true; +} + +boost::shared_ptr<ActionObject> AngularMotorEffector::GetActionObject(const Predicate& predicate) +{ + for(;;) + { + if (mJoint.get() == 0) + { + break; + } + + if (predicate.name != GetPredicate()) + { + GetLog()->Error() + << "ERROR: (HingeEffector) invalid predicate" + << predicate.name << "\n"; + break; + } + + Predicate::Iterator iter = predicate.begin(); + + float velocity; + if (! predicate.AdvanceValue(iter, velocity)) + { + GetLog()->Error() + << "ERROR: (HingeEffector) motor velocity expected\n"; + break; + } + + float stiffness; + if (! predicate.AdvanceValue(iter, stiffness)) + { + GetLog()->Error() + << "ERROR: (HingeEffector) motor stiffness expected\n"; + break; + } + + return boost::shared_ptr<AngularMotorAction>(new AngularMotorAction(GetPredicate(),velocity,stiffness)); + } + + return boost::shared_ptr<ActionObject>(); +} Copied: branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.h (from rev 324, branches/realistic_motor/spark/plugin/sparkagent/hingeeffector.h) =================================================================== --- branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.h (rev 0) +++ branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector.h 2012-09-10 12:57:23 UTC (rev 325) @@ -0,0 +1,57 @@ +/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- + + this file is part of rcssserver3D + + Copyright (C) 2012 RoboCup Soccer Server 3D Maintenance Group + + 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 ANGULAR_MOTOR_EFFECTOR_H +#define ANGULAR_MOTOR_EFFECTOR_H + +#include <oxygen/agentaspect/jointeffector.h> +#include <oxygen/physicsserver/angularmotor.h> + +class AngularMotorEffector : public oxygen::JointEffector<oxygen::AngularMotor> +{ +public: + AngularMotorEffector(); + virtual ~AngularMotorEffector(); + + /** realizes the action described by the ActionObject */ + virtual bool Realize(boost::shared_ptr<oxygen::ActionObject> action); + + /** returns the name of the predicate this effector implements. */ + virtual std::string GetPredicate() { return GetName(); } + + /** constructs an Actionobject, describing a predicate */ + virtual boost::shared_ptr<oxygen::ActionObject> + GetActionObject(const oxygen::Predicate& predicate); + + void SetUseBacklash(bool use) { mUseBacklash = use; } + + void SetDeadband(float deadband) { mHalfDeadband = deadband / 2;} + + void SetMaxForce(float force) { mMaxForce = force; } + +private: + bool mUseBacklash; + float mGearPosition; + float mHalfDeadband; + float mMaxForce; +}; + +DECLARE_CLASS(AngularMotorEffector); + +#endif // ANGULAR_MOTOR_EFFECTOR_H Added: branches/realistic_motor/spark/plugin/sparkagent/angularmotoreffector_c.cpp =================================================================== --- bra... [truncated message content] |
From: <yx...@us...> - 2012-09-10 11:09:04
|
Revision: 324 http://simspark.svn.sourceforge.net/simspark/?rev=324&view=rev Author: yxu Date: 2012-09-10 11:08:54 +0000 (Mon, 10 Sep 2012) Log Message: ----------- create branch realistic_motor Added Paths: ----------- branches/realistic_motor/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yx...@us...> - 2012-09-10 11:07:22
|
Revision: 323 http://simspark.svn.sourceforge.net/simspark/?rev=323&view=rev Author: yxu Date: 2012-09-10 11:07:16 +0000 (Mon, 10 Sep 2012) Log Message: ----------- remote branch created by git-svn Removed Paths: ------------- branches/realistic_motor/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yx...@us...> - 2012-09-10 10:37:23
|
Revision: 322 http://simspark.svn.sourceforge.net/simspark/?rev=322&view=rev Author: yxu Date: 2012-09-10 10:37:13 +0000 (Mon, 10 Sep 2012) Log Message: ----------- Create branch realistic_motor Added Paths: ----------- branches/realistic_motor/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2012-06-21 09:06:07
|
Revision: 320 http://simspark.svn.sourceforge.net/simspark/?rev=320&view=rev Author: hedayat Date: 2012-06-21 09:05:56 +0000 (Thu, 21 Jun 2012) Log Message: ----------- Don't enforce single-kick-in-kickoff rule when there are 2 players or less in the game (e.g. Penalty shoots!) A small cleanup: use SoccerBase::GetGameControlServer() Modified Paths: -------------- trunk/rcssserver3d/ChangeLog trunk/rcssserver3d/plugin/soccer/soccerruleaspect/soccerruleaspect.cpp Modified: trunk/rcssserver3d/ChangeLog =================================================================== --- trunk/rcssserver3d/ChangeLog 2012-05-27 18:52:22 UTC (rev 319) +++ trunk/rcssserver3d/ChangeLog 2012-06-21 09:05:56 UTC (rev 320) @@ -1,3 +1,12 @@ +2012-06-21 Hedayat Vatankhah <hed...@gm...> + + * plugin/soccer/soccerruleaspect/soccerruleaspect.cpp: + - let a player kick the ball more than once in kickoff if there are not + more than 2 players inside the game. Should be removed when a proper + "Penalty mode" is added to the simulator + - small cleanup: call SoccerBase::GetGameControlServer() to access + game control server + 2012-05-23 Hedayat Vatankhah <hed...@gm...> * NEWS: Modified: trunk/rcssserver3d/plugin/soccer/soccerruleaspect/soccerruleaspect.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/soccerruleaspect/soccerruleaspect.cpp 2012-05-27 18:52:22 UTC (rev 319) +++ trunk/rcssserver3d/plugin/soccer/soccerruleaspect/soccerruleaspect.cpp 2012-06-21 09:05:56 UTC (rev 320) @@ -713,18 +713,11 @@ SoccerRuleAspect::UpdateBeforeKickOff() { // get game control server to check agent count - static boost::shared_ptr<GameControlServer> game_control; + boost::shared_ptr<GameControlServer> game_control; - if (game_control.get() == 0) + if (!SoccerBase::GetGameControlServer(*this, game_control)) { - game_control = shared_dynamic_cast<GameControlServer> - (GetCore()->Get("/sys/server/gamecontrol")); - - if (game_control.get() == 0) - { - GetLog()->Error() << "(SoccerRuleAspect) Error: can't get GameControlServer.\n"; - return; - } + return; } // if no players are connected, just return @@ -786,8 +779,13 @@ } if (time > mGameState->GetLastModeChange()) { + boost::shared_ptr<GameControlServer> game_control; + if (SoccerBase::GetGameControlServer(*this, game_control) + && game_control->GetAgentCount() > 2) // todo: remove this when there is a "penalty" playmode + { + mCheckKickOffKickerFault = true; + } mLastKickOffKickTime = time; - mCheckKickOffKickerFault = true; mLastKickOffTaker = agent; mGameState->SetPlayMode(PM_PlayOn); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2012-05-27 18:52:28
|
Revision: 319 http://simspark.svn.sourceforge.net/simspark/?rev=319&view=rev Author: hedayat Date: 2012-05-27 18:52:22 +0000 (Sun, 27 May 2012) Log Message: ----------- rcssserver3d 0.6.6 release Added Paths: ----------- tags/RCSSSERVER3D_0.6.6_RELEASE/ Property changes on: tags/RCSSSERVER3D_0.6.6_RELEASE ___________________________________________________________________ Added: svn:ignore + .project .cproject Makefile.in rcssserver3d_config.h rcssserver3d_config.h.in configure stamp-h1 aclocal.m4 autom4te.cache config.status .cdtconfigure.Build (GNU) libtool Makefile .settings Added: svn:mergeinfo + /branches/agentselection/rcssserver3d:195-206 /branches/treehole/rcssserver3d:175 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2012-05-23 00:16:14
|
Revision: 318 http://simspark.svn.sourceforge.net/simspark/?rev=318&view=rev Author: hedayat Date: 2012-05-23 00:16:07 +0000 (Wed, 23 May 2012) Log Message: ----------- Simspark 0.2.3 release tag Added Paths: ----------- tags/SIMSPARK_0.2.3_RELEASE/ Property changes on: tags/SIMSPARK_0.2.3_RELEASE ___________________________________________________________________ Added: svn:ignore + .project .cproject autom4te.cache configure sparkconfig.h.in Makefile.in aclocal.m4 .cdtconfigure.Build (GNU) Makefile config.status stamp-h1 libtool sparkconfig.h .settings Added: svn:mergeinfo + /branches/agentselection/spark:195-206 /branches/treehole/spark:175 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2012-05-22 23:17:27
|
Revision: 317 http://simspark.svn.sourceforge.net/simspark/?rev=317&view=rev Author: hedayat Date: 2012-05-22 23:17:21 +0000 (Tue, 22 May 2012) Log Message: ----------- Improve compilation: don't link Kerosin against SDL and link corresponding plugins and test apps against SDL Modified Paths: -------------- trunk/spark/ChangeLog trunk/spark/lib/kerosin/CMakeLists.txt trunk/spark/plugin/accelerometer/accelerometer_c.cpp trunk/spark/plugin/accelerometer/export.cpp trunk/spark/plugin/inputsdl/CMakeLists.txt trunk/spark/plugin/openglsyssdl/CMakeLists.txt trunk/spark/plugin/timersystemsdl/CMakeLists.txt trunk/spark/test/fonttest/CMakeLists.txt trunk/spark/test/inputtest/CMakeLists.txt trunk/spark/test/scenetest/CMakeLists.txt trunk/spark/test/scenetest/main.cpp Modified: trunk/spark/ChangeLog =================================================================== --- trunk/spark/ChangeLog 2012-05-22 22:33:15 UTC (rev 316) +++ trunk/spark/ChangeLog 2012-05-22 23:17:21 UTC (rev 317) @@ -1,3 +1,19 @@ +2012-05-23 Hedayat Vatankhah <hed...@gm...> + + * lib/kerosin/CMakeLists.txt: + - latest cleanups for 0.2.3: don't link SDL to kerosin + + * test/fonttest/CMakeLists.txt: + * test/inputtest/CMakeLists.txt: + * plugin/inputsdl/CMakeLists.txt: + * plugin/openglsyssdl/CMakeLists.txt: + * plugin/timersystemsdl/CMakeLists.txt: + - link against SDL + + * test/scenetest/main.cpp: + * test/scenetest/CMakeLists.txt: + - scenetest doesn't need SDL + 2012-05-19 Hedayat Vatankhah <hed...@gm...> * lib/oxygen/physicsserver/int/angularmotorint.h: Modified: trunk/spark/lib/kerosin/CMakeLists.txt =================================================================== --- trunk/spark/lib/kerosin/CMakeLists.txt 2012-05-22 22:33:15 UTC (rev 316) +++ trunk/spark/lib/kerosin/CMakeLists.txt 2012-05-22 23:17:21 UTC (rev 317) @@ -118,12 +118,12 @@ ) include_directories(${CMAKE_SOURCE_DIR}/lib ${FREETYPE_INCLUDE_DIRS} - ${IL_INCLUDE_DIR} ${SDL_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR}) + ${IL_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR}) add_library(kerosin ${kerosin_LIB_SRCS} ${kerosin_LIB_HDRS}) target_link_libraries(kerosin ${FREETYPE_LIBRARIES} ${IL_LIBRARIES} - ${SDL_LIBRARY} ${OPENGL_LIBRARIES} ${kerosin_require_libs}) + ${OPENGL_LIBRARIES} ${kerosin_require_libs}) set_target_properties(kerosin PROPERTIES VERSION ${KEROSIN_VERSION} SOVERSION ${KEROSIN_SO_VERSION} DEBUG_POSTFIX _debug) Modified: trunk/spark/plugin/accelerometer/accelerometer_c.cpp =================================================================== --- trunk/spark/plugin/accelerometer/accelerometer_c.cpp 2012-05-22 22:33:15 UTC (rev 316) +++ trunk/spark/plugin/accelerometer/accelerometer_c.cpp 2012-05-22 23:17:21 UTC (rev 317) @@ -2,7 +2,7 @@ this file is part of rcssserver3D Copyright (C) 2008 RoboCup Soccer Server 3D Maintenance Group - $Id:$ + $Id$ 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 Modified: trunk/spark/plugin/accelerometer/export.cpp =================================================================== --- trunk/spark/plugin/accelerometer/export.cpp 2012-05-22 22:33:15 UTC (rev 316) +++ trunk/spark/plugin/accelerometer/export.cpp 2012-05-22 23:17:21 UTC (rev 317) @@ -2,7 +2,7 @@ this file is part of rcssserver3D Copyright (C) 2008 RoboCup Soccer Server 3D Maintenance Group - $Id:$ + $Id$ 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 Modified: trunk/spark/plugin/inputsdl/CMakeLists.txt =================================================================== --- trunk/spark/plugin/inputsdl/CMakeLists.txt 2012-05-22 22:33:15 UTC (rev 316) +++ trunk/spark/plugin/inputsdl/CMakeLists.txt 2012-05-22 23:17:21 UTC (rev 317) @@ -23,7 +23,7 @@ add_library(inputsdl MODULE ${inputsdl_LIB_SRCS}) -target_link_libraries(inputsdl ${spark_libs}) +target_link_libraries(inputsdl ${spark_libs} ${SDL_LIBRARY}) if (NOT APPLE) set_target_properties(inputsdl PROPERTIES VERSION 0.0.0 SOVERSION 0) Modified: trunk/spark/plugin/openglsyssdl/CMakeLists.txt =================================================================== --- trunk/spark/plugin/openglsyssdl/CMakeLists.txt 2012-05-22 22:33:15 UTC (rev 316) +++ trunk/spark/plugin/openglsyssdl/CMakeLists.txt 2012-05-22 23:17:21 UTC (rev 317) @@ -12,7 +12,7 @@ add_library(openglsyssdl MODULE ${openglsyssdl_LIB_SRCS}) -target_link_libraries(openglsyssdl ${spark_libs}) +target_link_libraries(openglsyssdl ${spark_libs} ${SDL_LIBRARY}) if (NOT APPLE) set_target_properties(openglsyssdl PROPERTIES VERSION 0.0.0 SOVERSION 0) Modified: trunk/spark/plugin/timersystemsdl/CMakeLists.txt =================================================================== --- trunk/spark/plugin/timersystemsdl/CMakeLists.txt 2012-05-22 22:33:15 UTC (rev 316) +++ trunk/spark/plugin/timersystemsdl/CMakeLists.txt 2012-05-22 23:17:21 UTC (rev 317) @@ -10,7 +10,7 @@ include_directories(${SDL_INCLUDE_DIR}) add_library(timersystemsdl MODULE ${timersystemsdl_LIB_SRCS}) -target_link_libraries(timersystemsdl ${spark_libs}) +target_link_libraries(timersystemsdl ${spark_libs} ${SDL_LIBRARY}) if (NOT APPLE) set_target_properties(timersystemsdl PROPERTIES VERSION 0.0.0 SOVERSION 0) Modified: trunk/spark/test/fonttest/CMakeLists.txt =================================================================== --- trunk/spark/test/fonttest/CMakeLists.txt 2012-05-22 22:33:15 UTC (rev 316) +++ trunk/spark/test/fonttest/CMakeLists.txt 2012-05-22 23:17:21 UTC (rev 317) @@ -10,5 +10,5 @@ add_executable(fonttest ${fonttest_SRCS}) -target_link_libraries(fonttest salt zeitgeist oxygen kerosin) +target_link_libraries(fonttest salt zeitgeist oxygen kerosin ${SDL_LIBRARY}) Modified: trunk/spark/test/inputtest/CMakeLists.txt =================================================================== --- trunk/spark/test/inputtest/CMakeLists.txt 2012-05-22 22:33:15 UTC (rev 316) +++ trunk/spark/test/inputtest/CMakeLists.txt 2012-05-22 23:17:21 UTC (rev 317) @@ -10,7 +10,7 @@ add_executable(inputtest ${inputtest_SRCS}) -target_link_libraries(inputtest salt zeitgeist oxygen kerosin) +target_link_libraries(inputtest salt zeitgeist oxygen kerosin ${SDL_LIBRARY}) ########### install files ############### Modified: trunk/spark/test/scenetest/CMakeLists.txt =================================================================== --- trunk/spark/test/scenetest/CMakeLists.txt 2012-05-22 22:33:15 UTC (rev 316) +++ trunk/spark/test/scenetest/CMakeLists.txt 2012-05-22 23:17:21 UTC (rev 317) @@ -8,8 +8,7 @@ md5mesh_c.cpp ) -include_directories(${SDL_INCLUDE_DIR} ${FREETYPE_INCLUDE_DIRS} - ${IL_INCLUDE_DIR}) +include_directories(${FREETYPE_INCLUDE_DIRS} ${IL_INCLUDE_DIR}) if (NOT WIN32) add_executable(scenetest ${scenetest_SRCS}) Modified: trunk/spark/test/scenetest/main.cpp =================================================================== --- trunk/spark/test/scenetest/main.cpp 2012-05-22 22:33:15 UTC (rev 316) +++ trunk/spark/test/scenetest/main.cpp 2012-05-22 23:17:21 UTC (rev 317) @@ -1,11 +1,6 @@ #include <zeitgeist/zeitgeist.h> #include <kerosin/kerosin.h> #include <oxygen/oxygen.h> -#ifndef WIN32 -#include <SDL/SDL.h> -#else -#include <SDL.h> -#endif #include <zeitgeist/fileserver/fileserver.h> using namespace boost; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |