Files
sics/lin2ang.w
2012-11-15 12:39:51 +11:00

60 lines
1.9 KiB
OpenEdge ABL

\subsection{lin2ang}
lin2ang is a virtual motor object which allows to drive an angle
through a translation table. In ist first incarnation this is meant
for TOPSI but this may be useful in other places as well. The
displacement x is calculated from the formula: $ x = L sin 2\theta $
with L being the length of the arm around which the angle
pivots. This must be a configurable parameter.
lin2ang's datastructure is quite simple:
\begin{verbatim}
typedef struct __LIN2ANG {
pObjectDescriptor pDes;
pIDrivable pDriv;
pMotor lin;
float length;
float zero;
}Lin2Ang;
\end{verbatim}
The fields are:
\begin{description}
\item[pDes] The standard SICS object descriptor.
\item[pDriv] The drivable interface which hides most of the
functionality of this object.
\item[lin] The translation table motor to use for driving the angle.
\item[length] The length of the arm around which the angle pivots.
\item[zero] The angular zero point of this virtual motor.
\end{description}
The interface to this is quite simple, most of the functionality is
hidden in the drivable interface. Basically there are only the
interpreter interface functions.
@d lin2angint @{
int MakeLin2Ang(SConnection *pCon, SicsInterp *pSics, void *pData,
int argc, char *argv[]);
int Lin2AngAction(SConnection *pCon, SicsInterp *pSics, void *pData,
int argc, char *argv[]);
@}
@o lin2ang.h @{
/*-------------------------------------------------------------------------
L I N 2 A N G
Drive an angle through a translation table. As of now only for
TOPSI.
copyright: see copyright.h
Mark Koennecke, February 2000
--------------------------------------------------------------------------*/
#ifndef LIN2ANG
#define LIN2ANG
#include "motor.h"
@<lin2angint@>
#endif
@}