argos Namespace Reference

The namespace containing all the ARGoS related code. More...

Classes

class  CAbstractSpaceHash
 The abstract definition of a space hash. More...
 
class  CAny
 
class  CARGoSCommandLineArgParser
 The command line argument parser used by the main ARGoS executable. More...
 
class  CARGoSException
 The exception that wraps all errors in ARGoS. More...
 
class  CARGoSLog
 
class  CBaseConfigurableResource
 This class is the base of all XML-configurable ARGoS interface. More...
 
class  CBatteryDefaultSensor
 
class  CBatteryDischargeModel
 The discharge model dictates how the battery discharges over time. More...
 
class  CBatteryDischargeModelMotion
 A battery discharge model based only on motion. More...
 
class  CBatteryDischargeModelTime
 A battery discharge model based only on time. More...
 
class  CBatteryDischargeModelTimeMotion
 A battery discharge model in which the charge decreases with both time and motion. More...
 
class  CBatteryEquippedEntity
 The battery entity. More...
 
class  CBox
 
class  CBoxEntity
 
class  CByteArray
 Byte array utility class. More...
 
class  CCameraDefaultSensor
 
class  CCameraSensorDirectionalLEDDetectorAlgorithm
 This class provides the most general interface to a camera. More...
 
class  CCameraSensorLEDDetectorAlgorithm
 This class provides the most general interface to a camera. More...
 
class  CCameraSensorSimulatedAlgorithm
 
class  CCameraSensorTagDetectorAlgorithm
 This class provides the most general interface to a camera. More...
 
class  CCI_Actuator
 The basic interface for all actuators. More...
 
class  CCI_AltitudeSensor
 
class  CCI_BatterySensor
 
class  CCI_CameraSensor
 
class  CCI_CameraSensorAlgorithm
 
class  CCI_CameraSensorDirectionalLEDDetectorAlgorithm
 
class  CCI_CameraSensorLEDDetectorAlgorithm
 
class  CCI_CameraSensorTagDetectorAlgorithm
 
class  CCI_ColoredBlobOmnidirectionalCameraSensor
 This class provides the most general interface to a camera. More...
 
class  CCI_ColoredBlobPerspectiveCameraSensor
 This class provides the most general interface to a camera. More...
 
class  CCI_Controller
 The basic interface for a robot controller. More...
 
class  CCI_DifferentialSteeringActuator
 
class  CCI_DifferentialSteeringSensor
 
class  CCI_DirectionalLEDsActuator
 
class  CCI_EPuckProximitySensor
 
class  CCI_EyeBotLightSensor
 
class  CCI_EyeBotProximitySensor
 
class  CCI_FootBotBaseGroundSensor
 
class  CCI_FootBotDistanceScannerActuator
 
class  CCI_FootBotDistanceScannerSensor
 
class  CCI_FootBotEncoderSensor
 
class  CCI_FootBotGripperActuator
 
class  CCI_FootBotLightSensor
 
class  CCI_FootBotMotorGroundSensor
 
class  CCI_FootBotProximitySensor
 
class  CCI_FootBotTurretActuator
 
class  CCI_FootBotTurretEncoderSensor
 
class  CCI_GripperActuator
 
class  CCI_GroundSensor
 
class  CCI_LEDsActuator
 
class  CCI_LightSensor
 
class  CCI_MagnetsActuator
 
class  CCI_MiniQuadrotorRotorActuator
 
class  CCI_MiniQuadrotorTrajectoryActuator
 
class  CCI_PanTiltCameraActuator
 
class  CCI_PositioningSensor
 
class  CCI_PrototypeJointsActuator
 
class  CCI_PrototypeJointsSensor
 
class  CCI_ProximitySensor
 
class  CCI_QuadRotorPositionActuator
 
class  CCI_QuadRotorSpeedActuator
 
class  CCI_RadiosActuator
 
class  CCI_RadiosSensor
 
class  CCI_RangeAndBearingActuator
 
class  CCI_RangeAndBearingSensor
 
class  CCI_Sensor
 The basic interface for all sensors. More...
 
class  CCI_TagsActuator
 
class  CColor
 The basic color type. More...
 
class  CColoredBlobOmnidirectionalCameraRotZOnlySensor
 
class  CColoredBlobPerspectiveCameraDefaultSensor
 
class  CCommandLineArgParser
 Easy-to-use command line argument parser. More...
 
class  CComposableEntity
 Basic class for an entity that contains other entities. More...
 
class  CControllableEntity
 An entity that contains a pointer to the user-defined controller. More...
 
class  CConvexHull
 
class  CCylinder
 
class  CCylinderEntity
 
class  CDefaultVisualization
 
class  CDegrees
 It defines the basic type CDegrees, used to store an angle value in degrees. More...
 
class  CDifferentialSteeringDefaultActuator
 
class  CDifferentialSteeringDefaultSensor
 
class  CDirectionalLEDEntity
 
class  CDirectionalLEDEntityGridUpdater
 
class  CDirectionalLEDEntitySpaceHashUpdater
 
class  CDirectionalLEDEquippedEntity
 A container of CDirectionalLEDEntity. More...
 
class  CDirectionalLEDMedium
 
class  CDirectionalLEDsDefaultActuator
 
class  CDynamicLoading
 Allows users to dynamically load shared libraries. More...
 
class  CDynamics2DBoxModel
 
class  CDynamics2DCylinderModel
 
class  CDynamics2DDifferentialSteeringControl
 
class  CDynamics2DEngine
 
class  CDynamics2DEPuckModel
 
class  CDynamics2DFootBotModel
 
class  CDynamics2DGrippable
 
class  CDynamics2DGripper
 
class  CDynamics2DModel
 The base class for models in the dynamics 2D engine. More...
 
class  CDynamics2DMultiBodyObjectModel
 Base class for object models with multiple bodies. More...
 
class  CDynamics2DOperation
 
class  CDynamics2DOperationAddEntity
 
class  CDynamics2DOperationRemoveEntity
 
class  CDynamics2DSingleBodyObjectModel
 Base class for object models with a single body. More...
 
class  CDynamics2DStretchableObjectModel
 A stretchable and grippable object model for the dynamics 2D engine. More...
 
class  CDynamics2DVelocityControl
 
class  CDynamics3DBoxModel
 
class  CDynamics3DCylinderModel
 
class  CDynamics3DEngine
 
class  CDynamics3DEPuckModel
 
class  CDynamics3DFloorPlugin
 
class  CDynamics3DGravityPlugin
 
class  CDynamics3DMagnetismPlugin
 
class  CDynamics3DModel
 
class  CDynamics3DMultiBodyObjectModel
 
class  CDynamics3DOperation
 
class  CDynamics3DOperationAddEntity
 
class  CDynamics3DOperationRemoveEntity
 
class  CDynamics3DPlugin
 
class  CDynamics3DPrototypeModel
 
class  CDynamics3DShapeManager
 
class  CDynamics3DSingleBodyObjectModel
 
class  CEmbodiedEntity
 This entity is a link to a body in the physics engine. More...
 
class  CEmbodiedEntityGridUpdater
 
class  CEntity
 The basic entity type. More...
 
class  CEntityOperation
 The basic operation to be stored in the vtable. More...
 
class  CEPuckEntity
 
class  CEPuckProximityDefaultSensor
 
class  CEyeBotEntity
 
class  CEyeBotLightRotZOnlySensor
 
class  CEyeBotProximityDefaultSensor
 
class  CFactory
 Basic factory template. More...
 
class  CFloorColorFromLoopFunctions
 
class  CFloorEntity
 
class  CFootBotBaseGroundRotZOnlySensor
 
class  CFootBotDistanceScannerDefaultActuator
 
class  CFootBotDistanceScannerEquippedEntity
 
class  CFootBotDistanceScannerRotZOnlySensor
 
class  CFootBotEntity
 
class  CFootBotGripperDefaultActuator
 
class  CFootBotLightRotZOnlySensor
 
class  CFootBotMotorGroundRotZOnlySensor
 
class  CFootBotProximityDefaultSensor
 
class  CFootBotTurretDefaultActuator
 
class  CFootBotTurretEncoderDefaultSensor
 
class  CFootBotTurretEntity
 
class  CGrid
 
class  CGripperDefaultActuator
 
class  CGripperEquippedEntity
 An entity that stores the state of a robot gripper. More...
 
class  CGroundRotZOnlySensor
 
class  CGroundSensorEquippedEntity
 
class  CLEDEntity
 
class  CLEDEntityGridUpdater
 
class  CLEDEntitySpaceHashUpdater
 
class  CLEDEquippedEntity
 A container of CLEDEntity. More...
 
class  CLEDMedium
 
class  CLEDsDefaultActuator
 
class  CLightDefaultSensor
 
class  CLightEntity
 
class  CLightSensorEquippedEntity
 
class  CLoopFunctions
 A set of hook functions to customize an experimental run. More...
 
class  CLuaController
 
class  CLuaQuaternion
 
class  CLuaUtility
 
class  CLuaVector2
 
class  CLuaVector3
 
class  CMagnetEntity
 
class  CMagnetEquippedEntity
 A container of CMagnetEntity. More...
 
class  CMagnetsDefaultActuator
 
class  CMatrix
 
class  CMedium
 
class  CMemento
 The interface inherited by all classes whose state must be saved and restored. More...
 
class  CMiniQuadrotorEntity
 
class  CMiniQuadrotorRotorDefaultActuator
 
class  COmnidirectionalCameraEquippedEntity
 
class  COmnidirectionalCameraLEDCheckOperation
 
class  ConstantGenerator
 
class  CPerspectiveCameraEquippedEntity
 
class  CPerspectiveCameraLEDCheckOperation
 
class  CPhysicsEngine
 
class  CPhysicsModel
 
class  CPhysXEPuckModel
 
class  CPhysXFootBotModel
 
class  CPhysXMiniQuadrotorModel
 
class  CPlane
 
class  CPointMass3DBoxModel
 
class  CPointMass3DCylinderModel
 
class  CPointMass3DEngine
 
class  CPointMass3DEyeBotModel
 
class  CPointMass3DFootBotModel
 
class  CPointMass3DModel
 
class  CPointMass3DOperation
 
class  CPointMass3DOperationAddEntity
 
class  CPointMass3DOperationRemoveEntity
 
class  CPointMass3DQuadRotorModel
 
class  CPointMass3DSpiriModel
 
class  CPositionalEntity
 
class  CPositionalIndex
 A data structure that contains positional entities. More...
 
class  CPositioningDefaultSensor
 
class  CProfiler
 
class  CPrototypeEntity
 
class  CPrototypeJointEntity
 
class  CPrototypeJointEquippedEntity
 
class  CPrototypeJointsDefaultActuator
 
class  CPrototypeJointsDefaultSensor
 
class  CPrototypeLinkEntity
 
class  CPrototypeLinkEquippedEntity
 
class  CProximityDefaultSensor
 
class  CProximitySensorEquippedEntity
 
class  CProximitySensorImpl
 
class  CQTOpenGLApplication
 
class  CQTOpenGLBox
 
class  CQTOpenGLCamera
 
class  CQTOpenGLCylinder
 
class  CQTOpenGLEPuck
 
class  CQTOpenGLEyeBot
 
class  CQTOpenGLFootBot
 
class  CQTOpenGLJoystick
 
class  CQTOpenGLLayout
 
class  CQTOpenGLLight
 
class  CQTOpenGLLogStream
 
class  CQTOpenGLLuaEditor
 
class  CQTOpenGLLuaFindDialog
 
class  CQTOpenGLLuaMainWindow
 
class  CQTOpenGLLuaStateTreeFunctionModel
 
class  CQTOpenGLLuaStateTreeItem
 
class  CQTOpenGLLuaStateTreeModel
 
class  CQTOpenGLLuaStateTreeVariableModel
 
class  CQTOpenGLLuaSyntaxHighlighter
 
class  CQTOpenGLMainWindow
 
class  CQTOpenGLMiniQuadrotor
 
class  CQTOpenGLObjModel
 
class  CQTOpenGLOperationDrawBoxNormal
 
class  CQTOpenGLOperationDrawBoxSelected
 
class  CQTOpenGLOperationDrawCylinderNormal
 
class  CQTOpenGLOperationDrawCylinderSelected
 
class  CQTOpenGLOperationDrawEPuckNormal
 
class  CQTOpenGLOperationDrawEPuckSelected
 
class  CQTOpenGLOperationDrawEyeBotNormal
 
class  CQTOpenGLOperationDrawEyeBotSelected
 
class  CQTOpenGLOperationDrawFootBotNormal
 
class  CQTOpenGLOperationDrawFootBotSelected
 
class  CQTOpenGLOperationDrawLightNormal
 
class  CQTOpenGLOperationDrawLightSelected
 
class  CQTOpenGLOperationDrawMiniQuadrotorNormal
 
class  CQTOpenGLOperationDrawMiniQuadrotorSelected
 
class  CQTOpenGLOperationDrawNormal
 
class  CQTOpenGLOperationDrawPrototypeNormal
 
class  CQTOpenGLOperationDrawPrototypeSelected
 
class  CQTOpenGLOperationDrawSelected
 
class  CQTOpenGLOperationDrawSpiriNormal
 
class  CQTOpenGLOperationDrawSpiriSelected
 
class  CQTOpenGLPrototype
 
class  CQTOpenGLRender
 
class  CQTOpenGLUserFunctions
 The QTOpenGL user functions. More...
 
class  CQTOpenGLWidget
 
class  CQuadRotorEntity
 
class  CQuadRotorPositionDefaultActuator
 
class  CQuadRotorSpeedDefaultActuator
 
class  CQuaternion
 
class  CRABEquippedEntity
 
class  CRABEquippedEntityGridCellUpdater
 
class  CRABEquippedEntityGridEntityUpdater
 
class  CRABEquippedEntitySpaceHashUpdater
 
class  CRABMedium
 
class  CRadians
 It defines the basic type CRadians, used to store an angle value in radians. More...
 
class  CRadioEntity
 
class  CRadioEntityGridUpdater
 
class  CRadioEntitySpaceHashUpdater
 
class  CRadioEquippedEntity
 A container of CRadioEntity. More...
 
class  CRadioMedium
 
class  CRadiosDefaultActuator
 
class  CRadiosDefaultSensor
 
class  CRandom
 The ARGoS random number generator. More...
 
class  CRange
 
class  CRangeAndBearingDefaultActuator
 
class  CRangeAndBearingMediumSensor
 
class  CRate
 
class  CRay2
 
class  CRay3
 
class  CRCLowPassFilter
 A simple infinite-impulse response filter for real-valued signals. More...
 
class  CRealRobot
 
class  CRotationMatrix2
 
class  CRotationMatrix3
 
class  CRotorEquippedEntity
 
class  CSet
 Defines a very simple double-linked list that stores unique elements. More...
 
class  CSetIterator
 The CSet iterator. More...
 
class  CSimulatedActuator
 The basic interface for a simulated actuator. More...
 
class  CSimulatedSensor
 The basic interface for a simulated sensor. More...
 
class  CSimulator
 The core class of ARGOS. More...
 
class  CSpace
 
class  CSpaceHash
 Defines the basic space hash. More...
 
class  CSpaceHashNative
 A space hash implementation that does not rely on std::map or std::tr1:unordered_map. More...
 
class  CSpaceHashUpdater
 Defines the basic cell updater of the space hash. More...
 
class  CSpaceMultiThreadBalanceLength
 
class  CSpaceMultiThreadBalanceQuantity
 
class  CSpaceNoThreads
 
class  CSpaceOperation
 
class  CSpaceOperationAddCDirectionalLEDEntity
 
class  CSpaceOperationAddCFloorEntity
 
class  CSpaceOperationAddCLEDEntity
 
class  CSpaceOperationAddCRABEquippedEntity
 
class  CSpaceOperationAddCRadioEntity
 
class  CSpaceOperationAddCTagEntity
 
class  CSpaceOperationAddEntity
 
class  CSpaceOperationRemoveCDirectionalLEDEntity
 
class  CSpaceOperationRemoveCLEDEntity
 
class  CSpaceOperationRemoveCRABEquippedEntity
 
class  CSpaceOperationRemoveCRadioEntity
 
class  CSpaceOperationRemoveCTagEntity
 
class  CSpaceOperationRemoveEntity
 
class  CSpiriEntity
 
class  CSquareMatrix
 
class  CStats
 Calculates the mean, variance, and std deviation of a real-valued signal. More...
 
class  CTagEntity
 
class  CTagEntityGridUpdater
 
class  CTagEntitySpaceHashUpdater
 
class  CTagEquippedEntity
 A container of CTagEntity. More...
 
class  CTagMedium
 
class  CTagsDefaultActuator
 
class  CTCPSocket
 
class  CTransformationMatrix2
 
class  CTransformationMatrix3
 
class  CVector2
 A 2D vector class. More...
 
class  CVector3
 A 3D vector class. More...
 
class  CVisualization
 
class  CVTable
 The actual vtable. More...
 
class  CWheeledEntity
 
class  CWiFiEquippedEntity
 
struct  EnableVTableFor
 Helper to make a class hierarchy vtable-enabled. More...
 
class  GaussianGenerator
 
class  GridGenerator
 
class  RealNumberGenerator
 
struct  SAnchor
 An anchor related to the body of an entity. More...
 
struct  SBoundingBox
 
struct  SCleanupThreadData
 
struct  SCleanupUpdateThreadData
 
struct  SDynamics2DEngineGripperData
 
struct  SDynamics2DSegmentHitData
 
struct  SEmbodiedEntityIntersectionItem
 
struct  SEntityComparator
 A generic entity comparator, used in containers that must be ordered deterministically. More...
 
struct  SLogColor
 Stream modifier to set attribute and color of the subsequent text. More...
 
struct  SOperationOutcome
 Type to use as return value for operation outcome. More...
 
struct  SQueryResultItem
 
struct  SSetElement
 The data container of CSet. More...
 
struct  STagCounter
 Holds the value of the last used tag. More...
 
struct  STagHolder
 Holds the value of the tag associated to DERIVED More...
 
class  UniformGenerator
 

Typedefs

typedef std::vector< CEmbodiedEntity * > TEmbodiedEntityVector
 
typedef std::map< std::string, CEmbodiedEntity * > TEmbodiedEntityMap
 
typedef CSet< CEmbodiedEntity * > TEmbodiedEntitySet
 
typedef std::vector< SEmbodiedEntityIntersectionItemTEmbodiedEntityIntersectionData
 
typedef std::vector< SQueryResultItemTQueryResult
 
typedef ticpp::Element TConfigurationNode
 The ARGoS configuration XML node. More...
 
typedef ticpp::Iterator< ticpp::Element > TConfigurationNodeIterator
 The iterator for the ARGoS configuration XML node. More...
 
typedef ticpp::Iterator< ticpp::Attribute > TConfigurationAttributeIterator
 The iterator for the attributes of an XML node. More...
 
typedef CFactory< CBatteryDischargeModelTFactoryBatteryDischargeModel
 For dynamic loading of battery discharge models. More...
 

Enumerations

enum  EARGoSLogAttributes {
  ARGOS_LOG_ATTRIBUTE_RESET = 0, ARGOS_LOG_ATTRIBUTE_BRIGHT = 1, ARGOS_LOG_ATTRIBUTE_DIM = 2, ARGOS_LOG_ATTRIBUTE_UNDERSCORE = 3,
  ARGOS_LOG_ATTRIBUTE_BLINK = 5, ARGOS_LOG_ATTRIBUTE_REVERSE = 7, ARGOS_LOG_ATTRIBUTE_HIDDEN = 8
}
 The possible attributes of the logged text. More...
 
enum  EARGoSLogColors {
  ARGOS_LOG_COLOR_BLACK = 0, ARGOS_LOG_COLOR_RED = 1, ARGOS_LOG_COLOR_GREEN = 2, ARGOS_LOG_COLOR_YELLOW = 3,
  ARGOS_LOG_COLOR_BLUE = 4, ARGOS_LOG_COLOR_MAGENTA = 5, ARGOS_LOG_COLOR_CYAN = 6, ARGOS_LOG_COLOR_WHITE = 7
}
 The possible colors of the logged text. More...
 
enum  EPUCK_WHEELS { EPUCK_LEFT_WHEEL = 0, EPUCK_RIGHT_WHEEL = 1, EPUCK_LEFT_WHEEL = 0, EPUCK_RIGHT_WHEEL = 1 }
 
enum  EPUCK_WHEELS { EPUCK_LEFT_WHEEL = 0, EPUCK_RIGHT_WHEEL = 1, EPUCK_LEFT_WHEEL = 0, EPUCK_RIGHT_WHEEL = 1 }
 
enum  FOOTBOT_WHEELS { FOOTBOT_LEFT_WHEEL = 0, FOOTBOT_RIGHT_WHEEL = 1, FOOTBOT_LEFT_WHEEL = 0, FOOTBOT_RIGHT_WHEEL = 1 }
 
enum  ETurretModes { MODE_OFF, MODE_PASSIVE, MODE_SPEED_CONTROL, MODE_POSITION_CONTROL }
 
enum  FOOTBOT_WHEELS { FOOTBOT_LEFT_WHEEL = 0, FOOTBOT_RIGHT_WHEEL = 1, FOOTBOT_LEFT_WHEEL = 0, FOOTBOT_RIGHT_WHEEL = 1 }
 

Functions

 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CComposableEntity)
 
bool operator== (const SAnchor *ps_anchor, const std::string &str_id)
 Returns true if the anchor id matches the given id. More...
 
 INIT_VTABLE_FOR (CEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CEntity)
 
template<typename LABEL , typename PLUGIN , typename RETURN_VALUE >
RETURN_VALUE CallEntityOperation (PLUGIN &t_plugin, CEntity &c_entity)
 Calls the operation corresponding to the given context and operand Skips the function call if the operation is missing in the vtable. More...
 
 REGISTER_ENTITY (CFloorEntity, "floor", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "It contains the properties of the arena floor.", "The floor entity contains the properties of the arena floor. In the current\n" "implementation, it contains only the color of the floor. The floor color is\n" "detected by the robots' ground sensors.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <arena ...>\n" " ...\n" " <floor id=\"floor\"\n" " source=\"SOURCE\" />\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same id, initialization aborts.\n" "The 'source' attribute specifies where to get the color of the floor from. Its\n" "value, here denoted as SOURCE, can assume the following values:\n\n" " image The color is calculated from the passed image file\n" " loop_functions The color is calculated calling the loop functions\n\n" "When 'source' is set to 'image', as showed in the following example, you have\n" "to specify the image path in the additional attribute 'path':\n\n" " <arena ...>\n" " ...\n" " <floor id=\"floor\"\n" " source=\"image\"\n" " path=\"/path/to/imagefile.ext\" />\n" " ...\n" " </arena>\n\n" "Many image formats are available, such as PNG, JPG, BMP, GIF and many more.\n" "Refer to the FreeImage webpage for a complete list of supported image formats\n" "(http://freeimage.sourceforge.net/features.html).\n\n" "When 'source' is set to 'loop_functions', as showed in the following example,\n" "an image is implicitly created to be used as texture for graphical\n" "visualizations. The algorithm that creates the texture needs to convert from\n" "meters (in the arena) to pixels (of the texture). You control how many pixels\n" "per meter are used with the attribute 'pixels_per_meter'. Clearly, the higher\n" "value, the higher the quality, but also the slower the algorithm and the bigger\n" "the texture. The algorithm is called only once at init time, so the fact that\n" "it is slow is not so important. However, the image size is limited by OpenGL.\n" "Every implementation has its own limit, and you should check yours if any\n" "texture-related problem arises. Now for the example:\n\n" " <arena ...>\n" " ...\n" " <floor id=\"floor\"\n" " source=\"loop_functions\"\n" " pixels_per_meter=\"100\" />\n" " ...\n" " </arena>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being.\n", "Usable")
 
 REGISTER_SPACE_OPERATION (CSpaceOperationAddEntity, CSpaceOperationAddCFloorEntity, CFloorEntity)
 
 REGISTER_STANDARD_SPACE_OPERATION_REMOVE_ENTITY (CFloorEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CPositionalEntity)
 
bool GetEmbodiedEntitiesIntersectedByRay (TEmbodiedEntityIntersectionData &t_data, const CRay3 &c_ray)
 Checks whether the given ray intersects any entity. More...
 
bool GetClosestEmbodiedEntityIntersectedByRay (SEmbodiedEntityIntersectionItem &s_item, const CRay3 &c_ray)
 Returns the closest intersection with an embodied entity to the ray start. More...
 
bool GetClosestEmbodiedEntityIntersectedByRay (SEmbodiedEntityIntersectionItem &s_item, const CRay3 &c_ray, CEmbodiedEntity &c_entity)
 Returns the closest intersection with an embodied entity to the ray start. More...
 
void QueryShowPluginDescription (const std::string &str_query)
 
void QueryPlugins (const std::string &str_query)
 
template<class TYPE >
void QuerySearchPlugins (const std::string &str_query, TQueryResult &t_result)
 
template<class TYPE >
void QueryShowList (const std::string &str_header)
 
RealNumberGeneratorCreateGenerator (TConfigurationNode &t_tree)
 
void * LaunchThreadBalanceLength (void *p_data)
 
void * LaunchUpdateThreadBalanceQuantity (void *p_data)
 
CRange< size_t > CalculatePluginRangeForThread (size_t un_id, size_t un_tot_plugins)
 
bool NodeExists (TConfigurationNode &t_node, const std::string &str_tag) throw ()
 Given a tree root node, returns true if one of its child nodes has the wanted name. More...
 
TConfigurationNodeGetNode (TConfigurationNode &t_node, const std::string &str_tag)
 Given a tree root node, returns the first of its child nodes with the wanted name. More...
 
void AddChildNode (TConfigurationNode &t_parent_node, TConfigurationNode &t_child_node)
 Adds an XML node as child of another XML node. More...
 
template<typename T >
void GetNodeText (TConfigurationNode &t_node, T &t_buffer)
 Returns the text of the passed XML node A node text is as follows: More...
 
template<typename T >
void GetNodeTextOrDefault (TConfigurationNode &t_node, T &t_buffer, const T &t_default)
 Returns the text of the passed XML node, or the passed default value. More...
 
bool NodeAttributeExists (TConfigurationNode &t_node, const std::string &str_attribute)
 Returns true if the specified attribute of a node exists. More...
 
template<typename T >
void GetNodeAttribute (TConfigurationNode &t_node, const std::string &str_attribute, T &t_buffer)
 Returns the value of a node's attribute. More...
 
void GetNodeAttribute (TConfigurationNode &t_node, const std::string &str_attribute, bool &b_buffer)
 Returns the value of a node's attribute. More...
 
void GetNodeAttribute (TConfigurationNode &t_node, const std::string &str_attribute, UInt8 &un_buffer)
 Returns the value of a node's attribute. More...
 
void GetNodeAttribute (TConfigurationNode &t_node, const std::string &str_attribute, SInt8 &n_buffer)
 Returns the value of a node's attribute. More...
 
template<typename T >
void GetNodeAttributeOrDefault (TConfigurationNode &t_node, const std::string &str_attribute, T &t_buffer, const T &t_default)
 Returns the value of a node's attribute, or the passed default value. More...
 
void GetNodeAttributeOrDefault (TConfigurationNode &t_node, const std::string &str_attribute, bool &b_buffer, const bool b_default)
 Returns the value of a node's attribute, or the passed default value. More...
 
void GetNodeAttributeOrDefault (TConfigurationNode &t_node, const std::string &str_attribute, UInt8 &un_buffer, const UInt8 un_default)
 Returns the value of a node's attribute, or the passed default value. More...
 
void GetNodeAttributeOrDefault (TConfigurationNode &t_node, const std::string &str_attribute, SInt8 &n_buffer, const SInt8 n_default)
 Returns the value of a node's attribute, or the passed default value. More...
 
template<typename T >
void SetNodeAttribute (TConfigurationNode &t_node, const std::string &str_attribute, const T &t_value)
 Sets the value of the wanted node's attribute. More...
 
void SetNodeAttribute (TConfigurationNode &t_node, const std::string &str_attribute, const bool b_value)
 Sets the value of the wanted node's attribute. More...
 
void SetNodeAttribute (TConfigurationNode &t_node, const std::string &str_attribute, const SInt8 n_value)
 Sets the value of the wanted node's attribute. More...
 
void SetNodeAttribute (TConfigurationNode &t_node, const std::string &str_attribute, const UInt8 un_value)
 Sets the value of the wanted node's attribute. More...
 
template<typename T >
T * any_cast (CAny *pc_any)
 Performs a cast on the any type to the desired type, when the any type is passed by non-const pointer. More...
 
template<typename T >
const T * any_cast (const CAny *pc_any)
 Performs a cast on the any type to the desired type, when the any type is passed by const pointer. More...
 
template<typename T >
const T & any_cast (const CAny &c_any)
 Performs a cast on the any type to the desired type, when the any type is passed by const reference. More...
 
template<typename T >
T & any_cast (CAny &c_any)
 Performs a cast on the any type to the desired type, when the any type is passed by non-const reference. More...
 
std::ostream & operator<< (std::ostream &c_os, const CByteArray &c_byte_array)
 
std::ostream & operator<< (std::ostream &c_os, const SLogColor &s_log_color)
 Stream operator that accepts the stream modifier. More...
 
 DEFINE_ARGOS_STREAM_COLOR_HELPER (red, RED)
 Bright red text modifier. More...
 
 DEFINE_ARGOS_STREAM_COLOR_HELPER (green, GREEN)
 Bright green text modifier. More...
 
 DEFINE_ARGOS_STREAM_COLOR_HELPER (yellow, YELLOW)
 Bright yellow text modifier. More...
 
 DEFINE_ARGOS_STREAM_COLOR_HELPER (blue, BLUE)
 Bright blue text modifier. More...
 
 DEFINE_ARGOS_STREAM_COLOR_HELPER (magenta, MAGENTA)
 Bright magenta text modifier. More...
 
 DEFINE_ARGOS_STREAM_COLOR_HELPER (cyan, CYAN)
 Bright cyan text modifier. More...
 
 DEFINE_ARGOS_STREAM_COLOR_HELPER (white, WHITE)
 Bright white text modifier. More...
 
std::ostream & reset (std::ostream &c_os)
 Resets the text to the default settings. More...
 
CDegrees ToDegrees (const CRadians &c_radians)
 Converts CRadians to CDegrees. More...
 
CRadians ToRadians (const CDegrees &c_degrees)
 Converts CDegrees to CRadians. More...
 
CRadians NormalizedDifference (const CRadians &c_angle1, const CRadians &c_angle2)
 Calculates the normalized difference between the given angles. More...
 
CDegrees NormalizedDifference (const CDegrees &c_angle1, const CDegrees &c_angle2)
 Calculates the normalized difference between the given angles. More...
 
void SinCos (const CRadians &c_radians, Real &f_sin, Real &f_cos)
 Computes the sine and cosine of the passed value in radians. More...
 
Real Sin (const CRadians &c_radians)
 Computes the sine of the passed value in radians. More...
 
Real Cos (const CRadians &c_radians)
 Computes the cosine of the passed value in radians. More...
 
Real Tan (const CRadians &c_radians)
 Computes the tangent of the passed value in radians. More...
 
CRadians ASin (Real f_value)
 Computes the arcsine of the passed value. More...
 
CRadians ACos (Real f_value)
 Computes the arccosine of the passed value. More...
 
CRadians ATan2 (const Real f_y, const Real f_x)
 Computes the arctangent of the passed values. More...
 
void Insert (std::vector< std::vector< CConvexHull::TEdge > > &vec_edges, const std::array< UInt32, 3 > &arr_vertices)
 
void Erase (std::vector< std::vector< CConvexHull::TEdge > > &vec_edges, const std::array< UInt32, 3 > &arr_vertices)
 
template<typename T >
Abs (const T &t_v)
 Returns the absolute value of the passed argument. More...
 
SInt32 Abs (SInt32 t_v)
 Returns the absolute value of the passed argument. More...
 
Real Abs (Real t_v)
 Returns the absolute value of the passed argument. More...
 
template<typename T >
Min (const T &t_v1, const T &t_v2)
 Returns the smaller of the two passed arguments. More...
 
template<typename T >
T & Min (T &t_v1, T &t_v2)
 Returns the smaller of the two passed arguments. More...
 
template<typename T >
Max (const T &t_v1, const T &t_v2)
 Returns the bigger of the two passed arguments. More...
 
template<typename T >
T & Max (T &t_v1, T &t_v2)
 Returns the bigger of the two passed arguments. More...
 
template<typename T >
SInt32 Sign (const T &t_v)
 Returns the sign of the value of the passed argument. More...
 
template<typename T >
Square (const T &t_v)
 Returns the square of the value of the passed argument. More...
 
SInt32 Floor (Real f_value)
 Rounds the passed floating-point value to the closest lower integer. More...
 
SInt32 Ceil (Real f_value)
 Rounds the passed floating-point value to the closest higher integer. More...
 
SInt32 Round (Real f_value)
 Rounds the passed floating-point value to the closest integer. More...
 
SInt32 RoundClosestToZero (Real f_value)
 Rounds the passed floating-point value to the integer closest to zero. More...
 
bool DoubleEqAbsolute (Real f_value1, Real f_value2, Real f_epsilon)
 Tests whether a floating-point value is lower than another. More...
 
bool DoubleEq (Real f_value1, Real f_value2)
 Tests whether a floating-point value is lower than another. More...
 
Real Interpolate (Real f_x, const std::vector< std::pair< Real, Real > > &c_points)
 Return the value of the linear interpolation. More...
 
Real SquareDistance (const CVector2 &c_v1, const CVector2 &c_v2)
 Computes the square distance between the passed vectors. More...
 
Real Distance (const CVector2 &c_v1, const CVector2 &c_v2)
 Computes the distance between the passed vectors. More...
 
Real SquareDistance (const CVector3 &c_v1, const CVector3 &c_v2)
 Computes the square distance between the passed vectors. More...
 
Real Distance (const CVector3 &c_v1, const CVector3 &c_v2)
 Computes the distance between the passed vectors. More...
 
template<typename DERIVED , typename BASE >
size_t GetTag ()
 Returns the value of the tag associated to DERIVED More...
 
template<typename CONTEXT , typename BASE , typename FUNCTION >
CVTable< CONTEXT, BASE, FUNCTION > & GetVTable ()
 Function that returns a reference to the static vtable. More...
 
void DumpResourceUsageHumanReadable (std::ostream &c_os, const ::rusage &t_resources)
 
void DumpResourceUsageAsTableRow (std::ostream &c_os, const ::rusage &t_resources)
 
::rusage operator- (const ::rusage &t_resource1, const ::rusage &t_resource2)
 
void Tokenize (const std::string &str_string, std::vector< std::string > &vec_tokens, const std::string &str_delimiters=" ")
 Tokenizes the given string according to the wanted delimiters (by default just a " "). More...
 
std::string StringToUpperCase (const std::string &str_string)
 Converts a string to upper case. More...
 
std::string StringToLowerCase (const std::string &str_string)
 Converts a string to lower case. More...
 
void Replace (std::string &str_buffer, const std::string &str_original, const std::string &str_new)
 Searches into str_buffer for occurrences of str_original and substitutes them with str_new. More...
 
bool MatchPattern (const std::string &str_input, const std::string &str_pattern)
 Returns true if str_pattern is matched by str_input. More...
 
std::string & ExpandEnvVariables (std::string &str_buffer)
 Searches into str_buffer for occurrences of an environment variable of the form $VAR and substitutes them with the value of the variable. More...
 
template<typename T >
std::string ToString (const T &t_value)
 Converts the given parameter to a std::string. More...
 
template<typename T >
FromString (const std::string &str_value)
 Converts the given std::string parameter to the wanted type. More...
 
template<typename T >
void ParseValues (std::istream &str_input, UInt32 un_num_fields, T *pt_field_buffer, const char ch_delimiter='\n')
 
template<typename T >
void ParseValues (const std::string &str_input, const UInt32 un_num_fields, T *pt_field_buffer, const char ch_delimiter='\n')
 
 REGISTER_CONTROLLER (CLuaController, "lua_controller")
 
int LuaRNGBernoulli (lua_State *pt_state)
 
int LuaRNGUniform (lua_State *pt_state)
 
int LuaRNGUniformInt (lua_State *pt_state)
 
int LuaRNGExponential (lua_State *pt_state)
 
int LuaRNGPoisson (lua_State *pt_state)
 
int LuaRNGGaussian (lua_State *pt_state)
 
void PrintStackEntry (CARGoSLog &c_log, lua_State *pt_state, SInt32 n_index)
 
void RecursivePrintGlobals (CARGoSLog &c_log, lua_State *pt_state, size_t un_depth)
 
std::ostream & operator<< (std::ostream &c_os, const CCI_EPuckProximitySensor::SReading &s_reading)
 
std::ostream & operator<< (std::ostream &c_os, const CCI_EPuckProximitySensor::TReadings &t_readings)
 
 REGISTER_STANDARD_DYNAMICS2D_OPERATIONS_ON_ENTITY (CEPuckEntity, CDynamics2DEPuckModel)
 
 REGISTER_STANDARD_DYNAMICS3D_OPERATIONS_ON_ENTITY (CEPuckEntity, CDynamics3DEPuckModel)
 
 REGISTER_ENTITY (CEPuckEntity, "e-puck", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The e-puck robot.", "The e-puck is a open-hardware, extensible robot intended for education. In its\n" "simplest form, it is a two-wheeled robot equipped with proximity sensors,\n" "ground sensors, light sensors, a microphone, a frontal camera, and a ring of\n" "red LEDs. More information is available at http://www.epuck.org\n\n" "REQUIRED XML CONFIGURATION\n\n" " <arena ...>\n" " ...\n" " <e-puck id=\"eb0\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,90,0\" />\n" " <controller config=\"mycntrl\" />\n" " </e-puck>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same id, initialization aborts.\n" "The 'body/position' attribute specifies the position of the pucktom point of the\n" "e-puck in the arena. When the robot is untranslated and unrotated, the\n" "pucktom point is in the origin and it is defined as the middle point between\n" "the two wheels on the XY plane and the lowest point of the robot on the Z\n" "axis, that is the point where the wheels touch the floor. The attribute values\n" "are in the X,Y,Z order.\n" "The 'body/orientation' attribute specifies the orientation of the e-puck. All\n" "rotations are performed with respect to the pucktom point. The order of the\n" "angles is Z,Y,X, which means that the first number corresponds to the rotation\n" "around the Z axis, the second around Y and the last around X. This reflects\n" "the internal convention used in ARGoS, in which rotations are performed in\n" "that order. Angles are expressed in degrees. When the robot is unrotated, it\n" "is oriented along the X axis.\n" "The 'controller/config' attribute is used to assign a controller to the\n" "e-puck. The value of the attribute must be set to the id of a previously\n" "defined controller. Controllers are defined in the <controllers> XML subtree.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "You can set the emission range of the range-and-bearing system. By default, a\n" "message sent by an e-puck can be received up to 80cm. By using the 'rab_range'\n" "attribute, you can change it to, i.e., 4m as follows:\n\n" " <arena ...>\n" " ...\n" " <e-puck id=\"eb0\" rab_range=\"4\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,90,0\" />\n" " <controller config=\"mycntrl\" />\n" " </e-puck>\n" " ...\n" " </arena>\n\n" "You can also set the data sent at each time step through the range-and-bearing\n" "system. By default, a message sent by an e-puck is 2 bytes long. By using the\n" "'rab_data_size' attribute, you can change it to, i.e., 20 bytes as follows:\n\n" " <arena ...>\n" " ...\n" " <e-puck id=\"eb0\" rab_data_size=\"20\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,90,0\" />\n" " <controller config=\"mycntrl\" />\n" " </e-puck>\n" " ...\n" " </arena>\n\n" "You can also configure the battery of the robot. By default, the battery never\n" "depletes. You can choose among several battery discharge models, such as\n" "- time: the battery depletes by a fixed amount at each time step\n" "- motion: the battery depletes according to how the robot moves\n" "- time_motion: a combination of the above models.\n" "You can define your own models too. Follow the examples in the file\n" "argos3/src/plugins/simulator/entities/battery_equipped_entity.cpp.\n\n" " <arena ...>\n" " ...\n" " <e-puck id=\"eb0\"\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " <battery model=\"time\" factor=\"1e-5\"/>\n" " </e-puck>\n" " ...\n" " </arena>\n\n" " <arena ...>\n" " ...\n" " <e-puck id=\"eb0\"\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " <battery model=\"motion\" pos_factor=\"1e-3\"\n" " orient_factor=\"1e-3\"/>\n" " </e-puck>\n" " ...\n" " </arena>\n\n" " <arena ...>\n" " ...\n" " <e-puck id=\"eb0\"\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " <battery model=\"time_motion\" time_factor=\"1e-5\"\n" " pos_factor=\"1e-3\"\n" " orient_factor=\"1e-3\"/>\n" " </e-puck>\n" " ...\n" " </arena>\n\n", "Under development")
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CEPuckEntity)
 
 REGISTER_SENSOR (CEPuckProximityDefaultSensor, "epuck_proximity", "default", "Danesh Tarapore [daneshtarapore@gmail.com]", "1.0", "The E-Puck proximity sensor.", "This sensor accesses the epuck proximity sensor. For a complete description\n" "of its usage, refer to the ci_epuck_proximity_sensor.h interface. For the XML\n" "configuration, refer to the default proximity sensor.\n", "Usable")
 
 REGISTER_STANDARD_PHYSX_OPERATIONS_ON_ENTITY (CEPuckEntity, CPhysXEPuckModel)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawNormal, CQTOpenGLOperationDrawEPuckNormal, CEPuckEntity)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawSelected, CQTOpenGLOperationDrawEPuckSelected, CEPuckEntity)
 
std::ostream & operator<< (std::ostream &c_os, const CCI_EyeBotLightSensor::SReading &s_reading)
 
std::ostream & operator<< (std::ostream &c_os, const CCI_EyeBotProximitySensor::SReading &s_reading)
 
 REGISTER_ENTITY (CEyeBotEntity, "eye-bot", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The eye-bot robot, developed in the Swarmanoid project.", "The eye-bot is a quad-rotor developed in the Swarmanoid Project. It is a\n" "fully autonomous robot with a rich set of sensors and actuators. For more\n" "information, refer to the dedicated web page\n" "(http://www.swarmanoid.org/swarmanoid_hardware.php).\n\n" "REQUIRED XML CONFIGURATION\n\n" " <arena ...>\n" " ...\n" " <eye-bot id=\"eb0\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </eye-bot>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same id, initialization aborts.\n" "The 'body/position' attribute specifies the position of the bottom point of the\n" "eye-bot in the arena. When the robot is untranslated and unrotated, the\n" "bottom point is in the origin and it is defined as the middle point between\n" "the two wheels on the XY plane and the lowest point of the robot on the Z\n" "axis, that is the point where the wheels touch the floor. The attribute values\n" "are in the X,Y,Z order.\n" "The 'body/orientation' attribute specifies the orientation of the eye-bot. All\n" "rotations are performed with respect to the bottom point. The order of the\n" "angles is Z,Y,X, which means that the first number corresponds to the rotation\n" "around the Z axis, the second around Y and the last around X. This reflects\n" "the internal convention used in ARGoS, in which rotations are performed in\n" "that order. Angles are expressed in degrees. When the robot is unrotated, it\n" "is oriented along the X axis.\n" "The 'controller/config' attribute is used to assign a controller to the\n" "eye-bot. The value of the attribute must be set to the id of a previously\n" "defined controller. Controllers are defined in the <controllers> XML subtree.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "You can set the emission range of the range-and-bearing system. By default, a\n" "message sent by an eye-bot can be received up to 3m. By using the 'rab_range'\n" "attribute, you can change it to, i.e., 4m as follows:\n\n" " <arena ...>\n" " ...\n" " <eye-bot id=\"eb0\" rab_range=\"4\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </eye-bot>\n" " ...\n" " </arena>\n\n" "You can also set the data sent at each time step through the range-and-bearing\n" "system. By default, a message sent by a eye-bot is 10 bytes long. By using the\n" "'rab_data_size' attribute, you can change it to, i.e., 20 bytes as follows:\n\n" " <arena ...>\n" " ...\n" " <eye-bot id=\"eb0\" rab_data_size=\"20\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </eye-bot>\n" " ...\n" " </arena>\n\n" "You can also configure the battery of the robot. By default, the battery never\n" "depletes. You can choose among several battery discharge models, such as\n" "- time: the battery depletes by a fixed amount at each time step\n" "- motion: the battery depletes according to how the robot moves\n" "- time_motion: a combination of the above models.\n" "You can define your own models too. Follow the examples in the file\n" "argos3/src/plugins/simulator/entities/battery_equipped_entity.cpp.\n\n" " <arena ...>\n" " ...\n" " <eye-bot id=\"eb0\"\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " <battery model=\"time\" factor=\"1e-5\"/>\n" " </eye-bot>\n" " ...\n" " </arena>\n\n" " <arena ...>\n" " ...\n" " <eye-bot id=\"eb0\"\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " <battery model=\"motion\" pos_factor=\"1e-3\"\n" " orient_factor=\"1e-3\"/>\n" " </eye-bot>\n" " ...\n" " </arena>\n\n" " <arena ...>\n" " ...\n" " <eye-bot id=\"eb0\"\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " <battery model=\"time_motion\" time_factor=\"1e-5\"\n" " pos_factor=\"1e-3\"\n" " orient_factor=\"1e-3\"/>\n" " </eye-bot>\n" " ...\n" " </arena>\n\n" "Finally, you can change the parameters of the camera. You can set its aperture,\n" "focal length, and range with the attributes 'camera_aperture',\n" "'camera_focal_length', and 'camera_range', respectively. The default values are:\n" "30 degrees for aperture, 0.035 for focal length, and 2 meters for range. Check\n" "the following example:\n\n" " <arena ...>\n" " ...\n" " <eye-bot id=\"eb0\"\n" " camera_aperture=\"45\"\n" " camera_focal_length=\"0.07\"\n" " camera_range=\"10\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </eye-bot>\n" " ...\n" " </arena>\n\n", "Usable")
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CEyeBotEntity)
 
 REGISTER_SENSOR (CEyeBotLightRotZOnlySensor, "eyebot_light", "rot_z_only", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The eye-bot light sensor (optimized for 2D).", "This sensor accesses a set of light sensors. The sensors all return a value\n" "between 0 and 1, where 0 means nothing within range and 1 means the perceived\n" "light saturates the sensor. Values between 0 and 1 depend on the distance of\n" "the perceived light. Each reading R is calculated with R=(I/x)^2, where x is the\n" "distance between a sensor and the light, and I is the reference intensity of the\n" "perceived light. The reference intensity corresponds to the minimum distance at\n" "which the light saturates a sensor. The reference intensity depends on the\n" "individual light, and it is set with the \"intensity\" attribute of the light\n" "entity. In case multiple lights are present in the environment, each sensor\n" "reading is calculated as the sum of the individual readings due to each light.\n" "In other words, light wave interference is not taken into account. In\n" "controllers, you must include the ci_light_sensor.h header.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <eyebot_light implementation=\"rot_z_only\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the light sensor in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. In OpenGL, the rays are drawn in cyan when\n" "they are not obstructed and in purple when they are. In case a ray is\n" "obstructed, a black dot is drawn where the intersection occurred.\n" "To turn this functionality on, add the attribute \"show_rays\" as in this\n" "example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <eyebot_light implementation=\"rot_z_only\"\n" " show_rays=\"true\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "It is possible to add uniform noise to the sensors, thus matching the\n" "characteristics of a real robot better. This can be done with the attribute\n" "\"noise_level\", whose allowed range is in [-1,1] and is added to the calculated\n" "reading. The final sensor reading is always normalized in the [0-1] range.\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <eyebot_light implementation=\"rot_z_only\"\n" " noise_level=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n", "Usable")
 
 REGISTER_SENSOR (CEyeBotProximityDefaultSensor, "eyebot_proximity", "default", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The eye-bot proximity sensor.", "This sensor accesses the eye-bot proximity sensor. For a complete description\n" "of its usage, refer to the ci_eyebot_proximity_sensor.h interface. For the XML\n" "configuration, refer to the default proximity sensor.\n", "Usable")
 
 REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY (CEyeBotEntity, CPointMass3DEyeBotModel)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawNormal, CQTOpenGLOperationDrawEyeBotNormal, CEyeBotEntity)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawSelected, CQTOpenGLOperationDrawEyeBotSelected, CEyeBotEntity)
 
std::ostream & operator<< (std::ostream &c_os, const CCI_FootBotBaseGroundSensor::SReading &s_reading)
 
std::ostream & operator<< (std::ostream &c_os, const CCI_FootBotLightSensor::SReading &s_reading)
 
std::ostream & operator<< (std::ostream &c_os, const CCI_FootBotMotorGroundSensor::SReading &s_reading)
 
std::ostream & operator<< (std::ostream &c_os, const CCI_FootBotProximitySensor::SReading &s_reading)
 
 REGISTER_STANDARD_DYNAMICS2D_OPERATIONS_ON_ENTITY (CFootBotEntity, CDynamics2DFootBotModel)
 
 REGISTER_SENSOR (CFootBotBaseGroundRotZOnlySensor, "footbot_base_ground", "rot_z_only", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The foot-bot base ground sensor.", "This sensor accesses the foot-bot base ground sensor. For a complete description\n" "of its usage, refer to the ci_footbot_base_ground_sensor.h interface. For the XML\n" "configuration, refer to the default ground sensor.\n", "Usable")
 
 REGISTER_ACTUATOR (CFootBotDistanceScannerDefaultActuator, "footbot_distance_scanner", "default", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The foot-bot distance scanner actuator.", "This actuator controls the foot-bot distance scanner. For a complete\n" "description of its usage, refer to the ci_footbot_distance_scanner_actuator\n" "file.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <actuators>\n" " ...\n" " <footbot_distance_scanner implementation=\"default\" />\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being.\n", "Usable")
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CFootBotDistanceScannerEquippedEntity)
 
 REGISTER_SENSOR (CFootBotDistanceScannerRotZOnlySensor, "footbot_distance_scanner", "rot_z_only", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The foot-bot distance scanner sensor (optimized for 2D).", "This sensor accesses the foot-bot distance scanner sensor. For a complete\n" "description of its usage, refer to the common interface.\n" "In this implementation, the readings are calculated under the assumption that\n" "the foot-bot is always parallel to the XY plane, i.e., it rotates only around\n" "the Z axis. This implementation is faster than a 3D one and should be used\n" "only when the assumption about the foot-bot rotation holds.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <footbot_distance_scanner implementation=\"rot_z_only\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the distance scanner in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. In OpenGL, the rays are drawn in cyan when\n" "they are not obstructed and in purple when they are. In case a ray is\n" "obstructed, a black dot is drawn where the intersection occurred.\n" "To turn this functionality on, add the attribute 'show_rays=\"true\"' in the\n" "XML as in this example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <footbot_distance_scanner implementation=\"rot_z_only\"\n" " show_rays=\"true\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n", "Usable")
 
 REGISTER_ENTITY (CFootBotEntity, "foot-bot", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The foot-bot robot, developed in the Swarmanoid project.", "The foot-bot is a wheeled robot developed in the Swarmanoid Project. It is a\n" "modular robot with a rich set of sensors and actuators. For more information,\n" "refer to the dedicated web page\n" "(http://www.swarmanoid.org/swarmanoid_hardware.php).\n\n" "REQUIRED XML CONFIGURATION\n\n" " <arena ...>\n" " ...\n" " <foot-bot id=\"fb0\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </foot-bot>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same id, initialization aborts.\n" "The 'body/position' attribute specifies the position of the bottom point of the\n" "foot-bot in the arena. When the robot is untranslated and unrotated, the\n" "bottom point is in the origin and it is defined as the middle point between\n" "the two wheels on the XY plane and the lowest point of the robot on the Z\n" "axis, that is the point where the wheels touch the floor. The attribute values\n" "are in the X,Y,Z order.\n" "The 'body/orientation' attribute specifies the orientation of the foot-bot. All\n" "rotations are performed with respect to the bottom point. The order of the\n" "angles is Z,Y,X, which means that the first number corresponds to the rotation\n" "around the Z axis, the second around Y and the last around X. This reflects\n" "the internal convention used in ARGoS, in which rotations are performed in\n" "that order. Angles are expressed in degrees. When the robot is unrotated, it\n" "is oriented along the X axis.\n" "The 'controller/config' attribute is used to assign a controller to the\n" "foot-bot. The value of the attribute must be set to the id of a previously\n" "defined controller. Controllers are defined in the <controllers> XML subtree.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "You can set the emission range of the range-and-bearing system. By default, a\n" "message sent by a foot-bot can be received up to 3m. By using the 'rab_range'\n" "attribute, you can change it to, i.e., 4m as follows:\n\n" " <arena ...>\n" " ...\n" " <foot-bot id=\"fb0\" rab_range=\"4\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </foot-bot>\n" " ...\n" " </arena>\n\n" "You can also set the data sent at each time step through the range-and-bearing\n" "system. By default, a message sent by a foot-bot is 10 bytes long. By using the\n" "'rab_data_size' attribute, you can change it to, i.e., 20 bytes as follows:\n\n" " <arena ...>\n" " ...\n" " <foot-bot id=\"fb0\" rab_data_size=\"20\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </foot-bot>\n" " ...\n" " </arena>\n\n" "You can also configure the battery of the robot. By default, the battery never\n" "depletes. You can choose among several battery discharge models, such as\n" "- time: the battery depletes by a fixed amount at each time step\n" "- motion: the battery depletes according to how the robot moves\n" "- time_motion: a combination of the above models.\n" "You can define your own models too. Follow the examples in the file\n" "argos3/src/plugins/simulator/entities/battery_equipped_entity.cpp.\n\n" " <arena ...>\n" " ...\n" " <foot-bot id=\"fb0\"\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " <battery model=\"time\" factor=\"1e-5\"/>\n" " </foot-bot>\n" " ...\n" " </arena>\n\n" " <arena ...>\n" " ...\n" " <foot-bot id=\"fb0\"\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " <battery model=\"motion\" pos_factor=\"1e-3\"\n" " orient_factor=\"1e-3\"/>\n" " </foot-bot>\n" " ...\n" " </arena>\n\n" " <arena ...>\n" " ...\n" " <foot-bot id=\"fb0\"\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " <battery model=\"time_motion\" time_factor=\"1e-5\"\n" " pos_factor=\"1e-3\"\n" " orient_factor=\"1e-3\"/>\n" " </foot-bot>\n" " ...\n" " </arena>\n\n" "You can also change the aperture of the omnidirectional camera. The aperture is\n" "set to 70 degrees by default. The tip of the omnidirectional camera is placed on\n" "top of the robot (h=0.289), and with an aperture of 70 degrees the range on the\n" "ground is r=h*tan(aperture)=0.289*tan(70)=0.794m. To change the aperture to 80\n" "degrees, use the 'omnidirectional_camera_aperture' as follows:\n\n" " <arena ...>\n" " ...\n" " <foot-bot id=\"fb0\" omnidirectional_camera_aperture=\"80\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </foot-bot>\n" " ...\n" " </arena>\n\n" "Finally, you can change the parameters of the perspective camera. You can set\n" "its direction, aperture, focal length, and range with the attributes\n" "'perspective_camera_front', 'perspective_camera_aperture',\n" "'perspective_camera_focal_length', and 'perspective_camera_range', respectively.\n" "The default values are: 'true' for front direction, 30 degrees for aperture,\n" "0.035 for focal length, and 2 meters for range. When the direction is set to\n" "'false', the camera looks up. This can be useful to see the eye-bot LEDs. Check\n" "the following example:\n\n" " <arena ...>\n" " ...\n" " <foot-bot id=\"fb0\"\n" " perspective_camera_front=\"false\"\n" " perspective_camera_aperture=\"45\"\n" " perspective_camera_focal_length=\"0.07\"\n" " perspective_camera_range=\"10\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </foot-bot>\n" " ...\n" " </arena>\n\n", "Under development")
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CFootBotEntity)
 
 REGISTER_SENSOR (CFootBotLightRotZOnlySensor, "footbot_light", "rot_z_only", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The foot-bot light sensor (optimized for 2D).", "This sensor accesses a set of light sensors. The sensors all return a value\n" "between 0 and 1, where 0 means nothing within range and 1 means the perceived\n" "light saturates the sensor. Values between 0 and 1 depend on the distance of\n" "the perceived light. Each reading R is calculated with R=(I/x)^2, where x is the\n" "distance between a sensor and the light, and I is the reference intensity of the\n" "perceived light. The reference intensity corresponds to the minimum distance at\n" "which the light saturates a sensor. The reference intensity depends on the\n" "individual light, and it is set with the \"intensity\" attribute of the light\n" "entity. In case multiple lights are present in the environment, each sensor\n" "reading is calculated as the sum of the individual readings due to each light.\n" "In other words, light wave interference is not taken into account. In\n" "controllers, you must include the ci_light_sensor.h header.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <footbot_light implementation=\"rot_z_only\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the light sensor in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. In OpenGL, the rays are drawn in cyan when\n" "they are not obstructed and in purple when they are. In case a ray is\n" "obstructed, a black dot is drawn where the intersection occurred.\n" "To turn this functionality on, add the attribute \"show_rays\" as in this\n" "example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <footbot_light implementation=\"rot_z_only\"\n" " show_rays=\"true\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "It is possible to add uniform noise to the sensors, thus matching the\n" "characteristics of a real robot better. This can be done with the attribute\n" "\"noise_level\", whose allowed range is in [-1,1] and is added to the calculated\n" "reading. The final sensor reading is always normalized in the [0-1] range.\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <footbot_light implementation=\"rot_z_only\"\n" " noise_level=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n", "Usable")
 
 REGISTER_SENSOR (CFootBotMotorGroundRotZOnlySensor, "footbot_motor_ground", "rot_z_only", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The foot-bot motor ground sensor.", "This sensor accesses the foot-bot motor ground sensor. For a complete description\n" "of its usage, refer to the ci_footbot_motor_ground_sensor.h interface. For the XML\n" "configuration, refer to the default ground sensor.\n", "Usable")
 
 REGISTER_SENSOR (CFootBotProximityDefaultSensor, "footbot_proximity", "default", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The foot-bot proximity sensor.", "This sensor accesses the foot-bot proximity sensor. For a complete description\n" "of its usage, refer to the ci_footbot_proximity_sensor.h interface. For the XML\n" "configuration, refer to the default proximity sensor.\n", "Usable")
 
 REGISTER_ACTUATOR (CFootBotTurretDefaultActuator, "footbot_turret", "default", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The foot-bot turret actuator.", "This actuator controls the foot-bot turret. For a complete\n" "description of its usage, refer to the ci_footbot_turret_actuator\n" "file.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <actuators>\n" " ...\n" " <footbot_turret implementation=\"default\" />\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being.\n", "Usable")
 
 REGISTER_SENSOR (CFootBotTurretEncoderDefaultSensor, "footbot_turret_encoder", "default", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The foot-bot turret encoder sensor.", "This sensor accesses the foot-bot turret encoder. For a complete\n" "description of its usage, refer to the ci_footbot_turret_encoder_sensor\n" "file.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <footbot_turret_encoder implementation=\"default\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being.\n", "Usable")
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CFootBotTurretEntity)
 
 REGISTER_STANDARD_PHYSX_OPERATIONS_ON_ENTITY (CFootBotEntity, CPhysXFootBotModel)
 
 REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY (CFootBotEntity, CPointMass3DFootBotModel)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawNormal, CQTOpenGLOperationDrawFootBotNormal, CFootBotEntity)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawSelected, CQTOpenGLOperationDrawFootBotSelected, CFootBotEntity)
 
CRange< RealUNIT (0.0f, 1.0f)
 
 REGISTER_SENSOR (CBatteryDefaultSensor, "battery", "default", "Adhavan Jayabalan [jadhu94@gmail.com]", "1.0", "A generic battery level sensor.", "This sensor returns the current battery level of a robot. This sensor\n" "can be used with any robot, since it accesses only the body component. In\n" "controllers, you must include the ci_battery_sensor.h header.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <battery implementation=\"default\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to add uniform noise to the sensor, thus matching the\n" "characteristics of a real robot better. You can add noise through the\n" "attribute 'noise_range' as follows:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <battery implementation=\"default\"\n" " noise_range=\"-0.3:0.4\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n", "Usable")
 
 REGISTER_SENSOR (CCameraDefaultSensor, "cameras", "default", "Michael Allwright [allsey87@gmail.com]", "1.0", "A generic multi-camera sensor capable of running various algorithms", "The generic multi-camera sensor can be attached to any composable entity in\n" "ARGoS that contains an embodied entity with at least one anchor. The sensor\n" "can be initialized with a number of cameras each running different algorithms\n" "for detecting different objects in the simulation. The sensor is designed so\n" "that algorithms can project a feature in the simulation on to the virtual\n" "sensor and store its 2D pixel coordinates as a reading. The implementation\n" "of algorithms that behave differently, however, is also possible.\n\n" "This sensor is disabled by default, and must be enabled before it can be\n" "used.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <cameras implementation=\"default\"/>\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the frustum of each camera sensor in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. To turn this functionality on, add the\n" "attribute \"show_frustum\" as follows:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <cameras implementation=\"default\" show_frustum=\"true\"/>\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "To add a camera to the plugin, create a camera node as shown in the following\n" "example. A camera is defined by its range (how close and how far the camera\n" "can see), its anchor and its position and orientation offsets from that\n" "that anchor, its focal length and principal point (which define the\n" "projection matrix), and its resolution.\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <cameras implementation=\"default\" show_frustum=\"true\">\n" " <camera id=\"camera0\" range=\"0.025:0.25\" anchor=\"origin\"\n" " position=\"0.1,0,0.1\" orientation=\"90,-90,0\"\n" " focal_length=\"800,800\" principal_point=\"320,240\"\n" " resolution=\"640,480\"/>\n" " </cameras>\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "To run an algorithm on the camera sensor, simply add the algorithm as a node\n" "under the camera node. At the time of writing, three algorithms are available\n" "by default: led_detector, directional_led_detector, and tag_detector. Each of\n" "algorithms requires a medium attribute that specifies the medium where the\n" "target entities are indexed. By setting the show_rays attribute to true, you\n" "can see whether or not a target was partially occluded by another object in\n" "the simulation. For example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <cameras implementation=\"default\" show_frustum=\"true\">\n" " <camera id=\"camera0\" range=\"0.025:0.25\" anchor=\"origin\"\n" " position=\"0.1,0,0.1\" orientation=\"90,-90,0\"\n" " focal_length=\"800,800\" principal_point=\"320,240\"\n" " resolution=\"640,480\">\n" " <led_detector medium=\"leds\" show_rays=\"true\"/>\n" " </camera>\n" " </cameras>\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n", "Usable")
 
 REGISTER_CAMERA_SENSOR_ALGORITHM (CCameraSensorDirectionalLEDDetectorAlgorithm, "directional_led_detector", "Michael Allwright [allsey87@gmail.com]", "1.0", "This algorithm detects nearby LEDs seen by the camera and\n" "returns the X and Y coordinates on the sensor", "This algorithm detects nearby LEDs seen by the camera and\n" "returns the X and Y coordinates on the sensor", "Under development")
 
 REGISTER_CAMERA_SENSOR_ALGORITHM (CCameraSensorLEDDetectorAlgorithm, "led_detector", "Michael Allwright [allsey87@gmail.com]", "1.0", "This algorithm detects nearby LEDs seen by the camera and\n" "returns the X and Y coordinates on the sensor", "This algorithm detects nearby LEDs seen by the camera and\n" "returns the X and Y coordinates on the sensor", "Under development")
 
 REGISTER_CAMERA_SENSOR_ALGORITHM (CCameraSensorTagDetectorAlgorithm, "tag_detector", "Michael Allwright [allsey87@gmail.com]", "1.0", "This algorithm detects nearby tags seen by the camera and\n" "returns the coordinates of their corners to the sensor", "This algorithm detects nearby tags seen by the camera and\n" "returns the coordinates of their corners to the sensor", "Under development")
 
 REGISTER_SENSOR (CColoredBlobOmnidirectionalCameraRotZOnlySensor, "colored_blob_omnidirectional_camera", "rot_z_only", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "A generic omnidirectional camera sensor to detect colored blobs.", "This sensor accesses an omnidirectional camera that detects colored blobs. The\n" "sensor returns a list of blobs, each defined by a color and a position with\n" "respect to the robot reference point on the ground. In controllers, you must\n" "include the ci_colored_blob_omnidirectional_camera_sensor.h header.\n\n" "This sensor is disabled by default, and must be enabled before it can be\n" "used.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <colored_blob_omnidirectional_camera implementation=\"rot_z_only\"\n" " medium=\"leds\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'medium' attribute must be set to the id of the leds medium declared in the\n" "<media> section.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the camera sensor in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. In OpenGL, the rays are drawn in cyan when\n" "they are not obstructed and in purple when they are. In case a ray is\n" "obstructed, a black dot is drawn where the intersection occurred.\n" "To turn this functionality on, add the attribute \"show_rays\" as in this\n" "example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <colored_blob_omnidirectional_camera implementation=\"rot_z_only\"\n" " medium=\"leds\" />\n" " show_rays=\"true\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "It is possible to add uniform noise to the blobs, thus matching the\n" "characteristics of a real robot better. This can be done with the attribute\n" "\"noise_std_dev\".\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <colored_blob_omnidirectional_camera implementation=\"rot_z_only\"\n" " medium=\"leds\" />\n" " noise_std_dev=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIMIZATION HINTS\n\n" "1. For small swarms, enabling the sensor (and therefore causing ARGoS to\n" " update its readings each timestep) unconditionally does not impact performance too\n" " much. For large swarms, it can impact performance, and selectively\n" " enabling/disabling the sensor according to when each individual robot needs it\n" " (e.g., only when it is looking for an LED equipped entity) can increase performance\n" " by only requiring ARGoS to update the readings on timesteps they will be used.\n", "Usable")
 
 REGISTER_SENSOR (CColoredBlobPerspectiveCameraDefaultSensor, "colored_blob_perspective_camera", "default", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "A generic perspective camera sensor to detect colored blobs.", "This sensor accesses an perspective camera that detects colored blobs. The\n" "sensor returns a list of blobs, each defined by a color and a position with\n" "respect to the robot reference point on the ground. In controllers, you must\n" "include the ci_colored_blob_perspective_camera_sensor.h header.\n\n" "This sensor is disabled by default, and must be enabled before it can be\n" "used.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <colored_blob_perspective_camera implementation=\"default\"\n" " medium=\"leds\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'medium' attribute must be set to the id of the leds medium declared in the\n" "<media> section.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the camera sensor in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. In OpenGL, the rays are drawn in cyan when\n" "they are not obstructed and in purple when they are. In case a ray is\n" "obstructed, a black dot is drawn where the intersection occurred.\n" "To turn this functionality on, add the attribute \"show_rays\" as in this\n" "example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <colored_blob_perspective_camera implementation=\"default\"\n" " medium=\"leds\" />\n" " show_rays=\"true\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "It is possible to add uniform noise to the blobs, thus matching the\n" "characteristics of a real robot better. This can be done with the attribute\n" "\"noise_std_dev\".\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <colored_blob_perspective_camera implementation=\"default\"\n" " medium=\"leds\" />\n" " noise_std_dev=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n", "Usable")
 
 REGISTER_SENSOR (CDifferentialSteeringDefaultSensor, "differential_steering", "default", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "A generic differential steering sensor.", "This sensor returns the current position and orientation of a robot. This sensor\n" "can be used with any robot, since it accesses only the body component. In\n" "controllers, you must include the ci_differential_steering_sensor.h header.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <differential_steering implementation=\"default\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to add uniform noise to the sensor, thus matching the\n" "characteristics of a real robot better. You can add noise through the\n" "attributes 'vel_noise_range' and 'dist_noise_range'.\n" "Attribute 'vel_noise_range' regulates the noise range on the velocity returned\n" "by the sensor. Attribute 'dist_noise_range' sets the noise range on the\n" "distance covered by the wheels.\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <differential_steering implementation=\"default\"\n" " vel_noise_range=\"-0.1:0.2\"\n" " dist_noise_range=\"-10.5:13.7\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n", "Usable")
 
 REGISTER_ACTUATOR (CDirectionalLEDsDefaultActuator, "directional_leds", "default", "Michael Allwright [allsey87@gmail.com]", "1.0", "The directional LEDs actuator.", "This actuator controls a group of directional LEDs. For a complete description\n" "of its usage, refer to the ci_leds_actuator.h file.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <actuators>\n" " ...\n" " <leds implementation=\"default\" />\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'medium' attribute sets the id of the LED medium declared in the <media>\n" "XML section.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n", "Usable")
 
 REGISTER_SENSOR (CGroundRotZOnlySensor, "ground", "rot_z_only", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "A generic ground sensor (optimized for 2D).", "This sensor accesses a set of ground sensors. The sensors all return a value\n" "between 0 and 1, where 0 means black and 1 means white. Depending on the type\n" "of ground sensor, readings can either take 0 or 1 as value (bw sensors) or a\n" "value in between (grayscale sensors). In controllers, you must include the\n" "ci_ground_sensor.h header.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <ground implementation=\"rot_z_only\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to add uniform noise to the sensors, thus matching the\n" "characteristics of a real robot better. This can be done with the attribute\n" "\"noise_level\", whose allowed range is in [-1,1] and is added to the calculated\n" "reading. The final sensor reading is always normalized in the [0-1] range.\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <ground implementation=\"rot_z_only\"\n" " noise_level=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n", "Usable")
 
 REGISTER_SENSOR (CLightDefaultSensor, "light", "default", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "A generic light sensor.", "This sensor accesses a set of light sensors. The sensors all return a value\n" "between 0 and 1, where 0 means nothing within range and 1 means the perceived\n" "light saturates the sensor. Values between 0 and 1 depend on the distance of\n" "the perceived light. Each reading R is calculated with R=(I/x)^2, where x is the\n" "distance between a sensor and the light, and I is the reference intensity of the\n" "perceived light. The reference intensity corresponds to the minimum distance at\n" "which the light saturates a sensor. The reference intensity depends on the\n" "individual light, and it is set with the \"intensity\" attribute of the light\n" "entity. In case multiple lights are present in the environment, each sensor\n" "reading is calculated as the sum of the individual readings due to each light.\n" "In other words, light wave interference is not taken into account. In\n" "controllers, you must include the ci_light_sensor.h header.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <light implementation=\"default\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the light sensor in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. In OpenGL, the rays are drawn in cyan when\n" "they are not obstructed and in purple when they are. In case a ray is\n" "obstructed, a black dot is drawn where the intersection occurred.\n" "To turn this functionality on, add the attribute \"show_rays\" as in this\n" "example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <light implementation=\"default\"\n" " show_rays=\"true\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "It is possible to add uniform noise to the sensors, thus matching the\n" "characteristics of a real robot better. This can be done with the attribute\n" "\"noise_level\", whose allowed range is in [-1,1] and is added to the calculated\n" "reading. The final sensor reading is always normalized in the [0-1] range.\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <light implementation=\"default\"\n" " noise_level=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIMIZATION HINTS\n\n" "1. For small swarms, enabling the light sensor (and therefore causing ARGoS to\n" " update its readings each timestep) unconditionally does not impact performance too\n" " much. For large swarms, it can impact performance, and selectively\n" " enabling/disabling the light sensor according to when each individual robot needs it\n" " (e.g., only when it is returning to the nest from foraging) can increase performance\n" " by only requiring ARGoS to update the readings for a robot on the timesteps will be\n" " used.\n", "Usable")
 
 REGISTER_ACTUATOR (CMagnetsDefaultActuator, "magnets", "default", "Michael Allwright [allsey87@gmail.com]", "1.0", "The (electro)magnet actuator.", "This actuator is used to modify the magnetic field of a magnet entity in the\n" "simulation. A magnetic entity has a passive and an active field. The overall\n" "field of a magnetic entity is calculated as:\n\n" " field = passive_field + (current x active_field)\n\n" "This actuator allows you to set the current, a scalar multiplier of the active\n" "field.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <actuators>\n" " ...\n" " <magnets implementation=\"default\"/>\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n", "Under development")
 
 REGISTER_SENSOR (CPositioningDefaultSensor, "positioning", "default", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "A generic positioning sensor.", "This sensor returns the current position and orientation of a robot. This sensor\n" "can be used with any robot, since it accesses only the body component. In\n" "controllers, you must include the ci_positioning_sensor.h header.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <positioning implementation=\"default\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to add uniform noise to the sensor, thus matching the\n" "characteristics of a real robot better. You can add noise through the\n" "attributes 'pos_noise_range', 'angle_noise_range', and 'axis_noise_range'.\n" "Attribute 'pos_noise_range' regulates the noise range on the position returned\n" "by the sensor. Attribute 'angle_noise_range' sets the noise range on the angle\n" "(values expressed in degrees). Attribute 'axis_noise_range' sets the noise for\n" "the rotation axis. Angle and axis are used to calculate a quaternion, which is\n" "the actual returned value for rotation.\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <positioning implementation=\"default\"\n" " pos_noise_range=\"-0.1:0.2\"\n" " angle_noise_range=\"-10.5:13.7\"\n" " axis_noise_range=\"-0.3:0.4\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n", "Usable")
 
 REGISTER_SENSOR (CProximityDefaultSensor, "proximity", "default", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "A generic proximity sensor.", "This sensor accesses a set of proximity sensors. The sensors all return a value\n" "between 0 and 1, where 0 means nothing within range and 1 means an external\n" "object is touching the sensor. Values between 0 and 1 depend on the distance of\n" "the occluding object, and are calculated as value=exp(-distance). In\n" "controllers, you must include the ci_proximity_sensor.h header.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <proximity implementation=\"default\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the proximity sensor in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. In OpenGL, the rays are drawn in cyan when\n" "they are not obstructed and in purple when they are. In case a ray is\n" "obstructed, a black dot is drawn where the intersection occurred.\n" "To turn this functionality on, add the attribute \"show_rays\" as in this\n" "example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <proximity implementation=\"default\"\n" " show_rays=\"true\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "It is possible to add uniform noise to the sensors, thus matching the\n" "characteristics of a real robot better. This can be done with the attribute\n" "\"noise_level\", whose allowed range is in [-1,1] and is added to the calculated\n" "reading. The final sensor reading is always normalized in the [0-1] range.\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <proximity implementation=\"default\"\n" " noise_level=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n", "Usable")
 
 REGISTER_ACTUATOR (CRadiosDefaultActuator, "radios", "default", "Michael Allwright [allsey87@gmail.com]", "1.0", "A generic radio actuator to send messages to nearby radios.", "This radio actuator implementation allows an arbitary number of messages\n" "containing an arbitary number of bytes to be sent to nearby radios. The\n" "implementation of this actuator is very basic and any concepts such as\n" "throughput, addressing, or formatting of a message's contents is beyond the\n" "scope of this actuator's implementation.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <actuators>\n" " ...\n" " <radios implementation=\"default\" medium=\"radios\" />\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'medium' attribute sets the id of the radio medium declared in the <media>\n" "XML section.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n", "Usable")
 
 REGISTER_SENSOR (CRadiosDefaultSensor, "radios", "default", "Michael Allwright [allsey87@gmail.com]", "1.0", "A generic radio sensor to receive messages from nearby radios.", "This radio sensor implementation allows an arbitary number of messages\n" "containing an arbitary number of bytes to be received from nearby robots. The\n" "implementation is very basic and any concepts such as throughput, addressing,\n" "or formatting of a message's contents is beyond the scope of this sensor's\n" "implementation\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <radios implementation=\"default\" medium=\"radios\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'medium' attribute sets the id of the radio medium declared in the <media>\n" "XML section.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n", "Usable")
 
 REGISTER_ACTUATOR (CRangeAndBearingDefaultActuator, "range_and_bearing", "default", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The range and bearing actuator.", "This actuator allows robots to perform situated communication, i.e., a form of\n" "wireless communication whereby the receiver also knows the location of the\n" "sender with respect to its own frame of reference.\n" "This actuator allows a robot to send messages. To receive messages, you need\n" "the range-and-bearing sensor.\n" "To use this actuator, in controllers you must include the\n" "ci_range_and_bearing_actuator.h header.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <actuators>\n" " ...\n" " <range_and_bearing implementation=\"default\" />\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n", "Usable")
 
 REGISTER_SENSOR (CRangeAndBearingMediumSensor, "range_and_bearing", "medium", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The range-and-bearing sensor.", "This sensor allows robots to perform situated communication, i.e., a form of\n" "wireless communication whereby the receiver also knows the location of the\n" "sender with respect to its own frame of reference.\n" "This implementation of the range-and-bearing sensor is associated to the\n" "range-and-bearing medium. To be able to use this sensor, you must add a\n" "range-and-bearing medium to the <media> section.\n" "This sensor allows a robot to receive messages. To send messages, you need the\n" "range-and-bearing actuator.\n" "To use this sensor, in controllers you must include the\n" "ci_range_and_bearing_sensor.h header.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <range_and_bearing implementation=\"medium\"\n" " medium=\"rab\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'medium' attribute must be set to the id of the range-and-bearing medium\n" "declared in the <media> section.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the range-and-bearing sensor in the\n" "OpenGL visualization. This can be useful for sensor debugging but also to\n" "understand what's wrong in your controller. In OpenGL, the rays are drawn in\n" "cyan when two robots are communicating.\n" "To turn this functionality on, add the attribute \"show_rays\" as in this\n" "example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <range_and_bearing implementation=\"medium\"\n" " medium=\"rab\"\n" " show_rays=\"true\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "It is possible to add noise to the readings, thus matching the characteristics\n" "of a real robot better. Noise is implemented as a random vector added to the\n" "vector joining two communicating robots. For the random vector, the inclination\n" "and azimuth are chosen uniformly in the range [0:PI] and [0:2PI], respectively,\n" "and the length is drawn from a Gaussian distribution. The standard deviation of\n" "the Gaussian distribution is expressed in meters and set by the user through\n" "the attribute 'noise_std_dev' as shown in this example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <range_and_bearing implementation=\"medium\"\n" " medium=\"rab\"\n" " noise_std_dev=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "In addition, it is possible to specify the probability that a packet gets lost\n" "even though the robot should have received it (i.e., packet dropping). To set\n" "this probability, use the attribute 'packet_drop_prob' as shown in the example:\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <range_and_bearing implementation=\"medium\"\n" " medium=\"rab\"\n" " packet_drop_prob=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n", "Usable")
 
 REGISTER_ACTUATOR (CTagsDefaultActuator, "tags", "default", "Michael Allwright [allsey87@gmail.com]", "1.0", "The tags actuator.", "This actuator controls the payloads of a group of tags. The idea" "is to represent an LCD screen that displays different tags. For a" "complete description of its usage, refer to the ci_tags_actuator.h" " file.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <actuators>\n" " ...\n" " <tags implementation=\"default\" />\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n", "Usable")
 
 REGISTER_ENTITY (CMiniQuadrotorEntity, "mini-quadrotor", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The mini-quadrotor robot, developed at UPenn.", "The mini-quadrotor is a fluing robot developed at UPenn by Vijay Kumar's group.\n" "It is a very agile robot, able to perform fast and precise movements.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <arena ...>\n" " ...\n" " <mini-quadrotor id=\"mq0\">\n" " <body position=\"0.4,2.3,2.0\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </mini-quadrotor>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same id, initialization aborts.\n" "The 'body/position' attribute specifies the position of the bottom point of the\n" "mini-quadrotor in the arena. When the robot is untranslated and unrotated, the\n" "bottom point is in the origin and it is defined as the middle point between\n" "the two wheels on the XY plane and the lowest point of the robot on the Z\n" "axis, that is the point where the wheels touch the floor. The attribute values\n" "are in the X,Y,Z order.\n" "The 'body/orientation' attribute specifies the orientation of the\n" "mini-quadrotor. All rotations are performed with respect to the bottom point.\n" "The order of the angles is Z,Y,X, which means that the first number corresponds\n" "to the rotation around the Z axis, the second around Y and the last around X.\n" "This reflects the internal convention used in ARGoS, in which rotations are\n" "performed in that order. Angles are expressed in degrees. When the robot is\n" "unrotated, it is oriented along the X axis.\n" "The 'controller/config' attribute is used to assign a controller to the\n" "mini-quadrotor. The value of the attribute must be set to the id of a previously\n" "defined controller. Controllers are defined in the <controllers> XML subtree.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n\n", "Under development")
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CMiniQuadrotorEntity)
 
 REGISTER_STANDARD_PHYSX_OPERATIONS_ON_ENTITY (CMiniQuadrotorEntity, CPhysXMiniQuadrotorModel)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawNormal, CQTOpenGLOperationDrawMiniQuadrotorNormal, CMiniQuadrotorEntity)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawSelected, CQTOpenGLOperationDrawMiniQuadrotorSelected, CMiniQuadrotorEntity)
 
 REGISTER_STANDARD_DYNAMICS3D_OPERATIONS_ON_ENTITY (CPrototypeEntity, CDynamics3DPrototypeModel)
 
 REGISTER_ENTITY (CPrototypeEntity, "prototype", "1.0", "Michael Allwright [allsey87@gmail.com]", "A generic and configurable entity", "The prototyping entity allows users to quickly implement new entities using an\n" "experiment's configuration file. A prototype entity is predominantly described\n" "as a set of links connected through joints. The joints can be fixed, prismatic,\n" "revolute, spherical, or planar. Sensors and actuators for prismatic and revolute\n" "joints are provided. Since each link defines an anchor in the embodied entity,\n" "it is also possible to attach the following entities to any link in the model:\n" "the directional LED entity, the LED entity, the magnet entity, the tag entity,\n" "the radio entity, and the proximity sensor equipped entity.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <arena ...>\n" " ...\n" " <prototype id=\"pt0\" movable=\"true\">\n" " <body position=\"0.1,0.1,0.0\" orientation=\"45,0,0\" />\n" " <links ref=\"base\">\n" " <link id=\"base\" geometry=\"box\" size=\"0.1,0.1,0.1\"\n" " mass=\"1\" position=\"0,0,0\" orientation=\"0,0,0\" />\n" " </prototype>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same id the initialization aborts and the simulator will\n" "terminate. The movable attribute defines whether the reference link of a robot\n" "is fixed or not. This attribute is useful, for example, if you want to model a\n" "robotic arm whose links are movable, but where there is one link (i.e. the\n" "reference link) that is fixed to the ground, a wall, or the ceiling.\n" "The body tag defines the position and orientation of the prototype entity in the\n" "global coordinate system. The most simple entity contains a single link and no\n" "joints. An important detail to note is the 'ref' attribute of the links node.\n" "This attribute specifies which link is to be used to refer to the prototype\n" "entity's location. The example in the required configuration defines a single\n" "link with a box geometry. Three geometries for links are currently supported:\n" "boxes, cylinders, and spheres. The size of a box is defined using the size\n" "attribute while cylinders and spheres are defined using a radius attribute and a\n" "height attribute in the case of the cylinder. The mass of each link must be\n" "defined and specified in kilograms. The position and orientation of each link\n" "refer to the offset of the link in the entity's local coordinate system.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "In the following example, additional links and joints are added to a prototype\n" "entity to form a small four-wheeled vehicle.\n\n" " <arena ...>\n" " ...\n" " <prototype id=\"vehicle\" movable=\"true\">\n" " <body position=\"0,0,0\" orientation=\"0,0,0\" />\n" " <links ref=\"base\">\n" " <link id=\"base\" geometry=\"box\" size=\"0.1,0.05,0.02\" mass=\"1\"\n" " position=\"0,0,0.01\" orientation=\"0,0,0\" />\n" " <link id=\"wheel_fl\" geometry=\"cylinder\" radius=\"0.02\" height=\".005\"\n" " mass=\".05\" position=\".025,.025,0.02\" orientation=\"0,0,-90\" />\n" " <link id=\"wheel_fr\" geometry=\"cylinder\" radius=\"0.02\" height=\".005\"\n" " mass=\".05\" position=\".025,-.025,0.02\" orientation=\"0,0,90\" />\n" " <link id=\"wheel_br\" geometry=\"cylinder\" radius=\"0.02\" height=\".005\"\n" " mass=\".05\" position=\"-.025,-.025,0.02\" orientation=\"0,0,90\" />\n" " <link id=\"wheel_bl\" geometry=\"cylinder\" radius=\"0.02\" height=\".005\"\n" " mass=\".05\" position=\"-.025,.025,0.02\" orientation=\"0,0,-90\" />\n" " </links>\n" " <joints>\n" " <joint id=\"base_wheel_fr\" type=\"revolute\" axis=\"0,0,1\">\n" " <parent link=\"base\" position=\".025,-.025,.01\" orientation=\"0,0,90\"/>\n" " <child link=\"wheel_fr\" position=\"0,0,0\" orientation=\"0,0,0\"/>\n" " </joint>\n" " <joint id=\"base_wheel_fl\" type=\"revolute\" axis=\"0,0,1\">\n" " <parent link=\"base\" position=\".025,.025,.01\" orientation=\"0,0,-90\"/>\n" " <child link=\"wheel_fl\" position=\"0,0,0\" orientation=\"0,0,0\"/>\n" " </joint>\n" " <joint id=\"base_wheel_br\" type=\"revolute\" axis=\"0,0,1\">\n" " <parent link=\"base\" position=\"-.025,-.025,.01\" orientation=\"0,0,90\"/>\n" " <child link=\"wheel_br\" position=\"0,0,0\" orientation=\"0,0,0\"/>\n" " </joint>\n" " <joint id=\"base_wheel_bl\" type=\"revolute\" axis=\"0,0,1\">\n" " <parent link=\"base\" position=\"-.025,.025,.01\" orientation=\"0,0,-90\"/>\n" " <child link=\"wheel_bl\" position=\"0,0,0\" orientation=\"0,0,0\"/>\n" " </joint>\n" " </joints>\n" " </prototype>\n" " ...\n" " </arena>\n\n" "In this example, there are five links: the base of the vehicle and four wheels.\n" "The wheels are attached to the base using revolute joints. The joint node\n" "requires the joint type attribute and in the case of prismatic and revolute\n" "joints an axis which defines the joint's degree of freedom. In addition to the\n" "axis attribute, prismatic and revolute joints can also be limited using the\n" "limit attribute. In the case of prismatic joints, this value is interpreted as a\n" "range in meters and in the case of revolute joints, this value is interpreted as\n" "a range in degrees. The maximum and minimum values must be separated with the\n" "colon character. The joint node requires two child nodes, namely the parent and\n" "child nodes which describe the links involved in the joint. Each of these nodes\n" "also specifies a position and an orientation, which defines the offset from the\n" "link's local coordinate system to the joint's reference frame. Note that the\n" "prototype entity is consistent with ARGoS conventions and the origin of all\n" "coordinate systems is at the base of an entity and not at its center of mass.\n" "Prismatic and revolute joints support sensors and actuators which can control\n" "and monitor the position and velocity of a joint. Refer to the documentation on\n" "the joints sensor and joints actuator by querying the joints plugin. It is also\n" "possible to attach any number of devices to the links in a prototype entity:\n\n" " <arena ...>\n" " ...\n" " <prototype id=\"block\" movable=\"true\">\n" " <body position=\"0,0,0\" orientation=\"0,0,0\" />\n" " <links ref=\"base\">\n" " <link id=\"base\" geometry=\"box\" size=\".015,.015,.015\" mass=\"0.1\"\n" " position=\"0,0,0\" orientation=\"0,0,0\" />\n" " </links>\n" " <devices>\n" " <directional_leds medium=\"leds\">\n" " <directional_led anchor=\"base\" color=\"red\" observable_angle=\"180\"\n" " position=\"0,0,.0155\" orientation=\"0,0,0\"/>\n" " </directional_leds>\n" " <tags medium=\"tags\">\n" " <tag position=\"0,0,.0155\" orientation=\"0,0,0\" payload=\"0\"\n" " side_length=\".01\" observable_angle=\"180\" anchor=\"base\"/>\n" " </tags>\n" " <radios medium=\"nfc\">\n" " <radio anchor=\"base\" duplex_mode=\"half\" range=\"1\"\n" " position=\"0,0,0.0075\"/>\n" " </radios>\n" " </devices>\n" " </prototype>\n" " ...\n" " </arena>\n\n" "Each of these devices has three attributes in common: an anchor, a position, and\n" "an orientation. Using these attributes you can attach any number of these\n" "entities to any link in the prototype entity since each link creates an anchor.\n" "In addition to these attributes, the entities have some attributes that define\n" "their characteristics. For example, tags have a side length and payload, while\n" "the directional LED has a color. The three devices in the example all require\n" "mediums. These mediums index the entities and allow them to be detected by\n" "sensors.", "Usable")
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CPrototypeEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CPrototypeJointEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CPrototypeJointEquippedEntity)
 
 REGISTER_ACTUATOR (CPrototypeJointsDefaultActuator, "joints", "default", "Michael Allwright [allsey87@gmail.com]", "1.0", "The prototype joints actuator: controls a prototype entity's joints.", "This actuator is used to control the joints inside a prototype entity. To\n" "control a joint, add a joint child node to the joints node. Each child node has\n" "three attributes, all of which are required.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <actuators>\n" " ...\n" " <joints implementation=\"default\">\n" " <joint id=\"joint0\" mode=\"velocity\" max_impulse=\"0.002f\"/>\n" " <joint id=\"joint1\" mode=\"position\" max_impulse=\"0.005f\"/>\n" " ...\n" " </joints>\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'id' attribute specifies which joint in the prototype joint equipped entity\n" "we are interested in controlling. The 'mode' attribute has three options:\n" "disabled, position, and velocity. The disabled mode is self-explanatory. The\n" "position and velocity modes enable closed loop position control and closed loop\n" "velocity control. The 'max_impulse' attribute defines the maximum impulse of\n" "the actuator in kg m/s for prismatic joints and kg m^2/s for revolute joints.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.", "Usable")
 
 REGISTER_SENSOR (CPrototypeJointsDefaultSensor, "joints", "default", "Michael Allwright [allsey87@gmail.com]", "1.0", "The prototype joints sensor: monitors a prototype entity's joints.", "This sensor is used to monitor the joints inside a prototype entity. To monitor\n" "a joint, add a joint child node to the joints node. Each child node has two\n" "required attributes.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <joints implementation=\"default\">\n" " <joint id=\"joint0\" mode=\"velocity\" />\n" " <joint id=\"joint1\" mode=\"position\" />\n" " ...\n" " </joints>\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'id' attribute specifies which joint in the prototype joint equipped entity\n" "we are interested in monitoring. The 'mode' attribute has three options:\n" "disabled, position, and velocity. The disabled mode is self-explanatory. The\n" "position mode measures the displacement of the joint from its initial position\n" "or orientation (depending on whether the specified joint is prismatic or\n" "revolute). The reading from the joint is reported in either meters or radians\n" "respectively. The velocity mode measures the how much the position or\n" "orientation of the joint is changing every second.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.", "Usable")
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CPrototypeLinkEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CPrototypeLinkEquippedEntity)
 
 REGISTER_ENTITY_OPERATION (CQTOpenGLOperationDrawNormal, CQTOpenGLWidget, CQTOpenGLOperationDrawPrototypeNormal, void, CPrototypeEntity)
 
 REGISTER_ENTITY_OPERATION (CQTOpenGLOperationDrawSelected, CQTOpenGLWidget, CQTOpenGLOperationDrawPrototypeSelected, void, CPrototypeEntity)
 
 REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY (CSpiriEntity, CPointMass3DSpiriModel)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawNormal, CQTOpenGLOperationDrawSpiriNormal, CSpiriEntity)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawSelected, CQTOpenGLOperationDrawSpiriSelected, CSpiriEntity)
 
 REGISTER_ENTITY (CSpiriEntity, "spiri", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The spiri robot, developed by Pleiades Robotics.", "The spiri is a quad-rotor developed by Pleiades Robotics. It is a\n" "fully autonomous robot with a rich set of sensors and actuators. For more\n" "information, refer to the dedicated web page (http://www.pleaides.ca/).\n\n" "REQUIRED XML CONFIGURATION\n\n" " <arena ...>\n" " ...\n" " <spiri id=\"sp0\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </spiri>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same id, initialization aborts.\n" "The 'body/position' attribute specifies the position of the bottom point of the\n" "spiri in the arena. When the robot is untranslated and unrotated, the\n" "bottom point is in the origin and it is defined as the middle point between\n" "the two wheels on the XY plane and the lowest point of the robot on the Z\n" "axis, that is the point where the wheels touch the floor. The attribute values\n" "are in the X,Y,Z order.\n" "The 'body/orientation' attribute specifies the orientation of the spiri. All\n" "rotations are performed with respect to the bottom point. The order of the\n" "angles is Z,Y,X, which means that the first number corresponds to the rotation\n" "around the Z axis, the second around Y and the last around X. This reflects\n" "the internal convention used in ARGoS, in which rotations are performed in\n" "that order. Angles are expressed in degrees. When the robot is unrotated, it\n" "is oriented along the X axis.\n" "The 'controller/config' attribute is used to assign a controller to the\n" "spiri. The value of the attribute must be set to the id of a previously\n" "defined controller. Controllers are defined in the <controllers> XML subtree.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "You can set the emission range of the range-and-bearing system. By default, a\n" "message sent by an spiri can be received up to 3m. By using the 'rab_range'\n" "attribute, you can change it to, i.e., 4m as follows:\n\n" " <arena ...>\n" " ...\n" " <spiri id=\"sp0\" rab_range=\"4\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </spiri>\n" " ...\n" " </arena>\n\n" "You can also set the data sent at each time step through the range-and-bearing\n" "system. By default, a message sent by a spiri is 10 bytes long. By using the\n" "'rab_data_size' attribute, you can change it to, i.e., 20 bytes as follows:\n\n" " <arena ...>\n" " ...\n" " <spiri id=\"sp0\" rab_data_size=\"20\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </spiri>\n" " ...\n" " </arena>\n\n" "You can also configure the battery of the robot. By default, the battery never\n" "depletes. You can choose among several battery discharge models, such as\n" "- time: the battery depletes by a fixed amount at each time step\n" "- motion: the battery depletes according to how the robot moves\n" "- time_motion: a combination of the above models.\n" "You can define your own models too. Follow the examples in the file\n" "argos3/src/plugins/simulator/entities/battery_equipped_entity.cpp.\n\n" " <arena ...>\n" " ...\n" " <spiri id=\"sp0\"\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " <battery model=\"time\" factor=\"1e-5\"/>\n" " </spiri>\n" " ...\n" " </arena>\n\n" " <arena ...>\n" " ...\n" " <spiri id=\"sp0\"\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " <battery model=\"motion\" pos_factor=\"1e-3\"\n" " orient_factor=\"1e-3\"/>\n" " </spiri>\n" " ...\n" " </arena>\n\n" " <arena ...>\n" " ...\n" " <spiri id=\"sp0\"\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " <battery model=\"time_motion\" time_factor=\"1e-5\"\n" " pos_factor=\"1e-3\"\n" " orient_factor=\"1e-3\"/>\n" " </spiri>\n" " ...\n" " </arena>\n\n", "Under development")
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CSpiriEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CBatteryEquippedEntity)
 
 REGISTER_BATTERY_DISCHARGE_MODEL (CBatteryDischargeModelTime, "time")
 
 REGISTER_BATTERY_DISCHARGE_MODEL (CBatteryDischargeModelMotion, "motion")
 
 REGISTER_BATTERY_DISCHARGE_MODEL (CBatteryDischargeModelTimeMotion, "time_motion")
 
 REGISTER_ENTITY (CBoxEntity, "box", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "A stretchable 3D box.", "The box entity can be used to model walls, obstacles or box-shaped grippable\n" "objects. It can be movable or not. A movable object can be pushed and gripped.\n" "An unmovable object is pretty much like a wall.\n\n" "REQUIRED XML CONFIGURATION\n\n" "To declare an unmovable object (i.e., a wall) you need the following:\n\n" " <arena ...>\n" " ...\n" " <box id=\"box1\" size=\"0.75,0.1,0.5\" movable=\"false\">\n" " <body position=\"0.4,2.3,0\" orientation=\"45,0,0\" />\n" " </box>\n" " ...\n" " </arena>\n\n" "To declare a movable object you need the following:\n\n" " <arena ...>\n" " ...\n" " <box id=\"box1\" size=\"0.75,0.1,0.5\" movable=\"true\" mass=\"2.5\">\n" " <body position=\"0.4,2.3,0\" orientation=\"45,0,0\" />\n" " </box>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same id, initialization aborts.\n" "The 'size' attribute specifies the size of the box along the three axes, in\n" "the X,Y,Z order. When you add a box, imagine it initially unrotated and\n" "centered in the origin. The size, then, corresponds to the extent along the X,\n" "Y and Z axes.\n" "The 'movable' attribute specifies whether or not the object is movable. When\n" "set to 'false', the object is unmovable: if another object pushes against it,\n" "the box won't move. When the attribute is set to 'true', the box is movable\n" "upon pushing or gripping. When an object is movable, the 'mass' attribute is\n" "required.\n" "The 'mass' attribute quantifies the mass of the box in kg.\n" "The 'body/position' attribute specifies the position of the base of the box in\n" "the arena. The three values are in the X,Y,Z order.\n" "The 'body/orientation' attribute specifies the orientation of the 3D box. All\n" "rotations are performed with respect to the center of mass. The order of the\n" "angles is Z,Y,X, which means that the first number corresponds to the rotation\n" "around the Z axis, the second around Y and the last around X. This reflects\n" "the internal convention used in ARGoS, in which rotations are performed in\n" "that order. Angles are expressed in degrees.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to add any number of colored LEDs to the box. In this way,\n" "the box is visible with a robot camera. The position and color of the\n" "LEDs is specified with the following syntax:\n\n" " <arena ...>\n" " ...\n" " <box id=\"box1\" size=\"0.75,0.1,0.5\" movable=\"true\" mass=\"2.5\">\n" " <body position=\"0.4,2.3,0\" orientation=\"45,0,0\" />\n" " <leds medium=\"id_of_led_medium\">\n" " <led offset=\" 0.15, 0.15,0.15\" anchor=\"origin\" color=\"white\" />\n" " <led offset=\"-0.15, 0.15,0\" anchor=\"origin\" color=\"red\" />\n" " <led offset=\" 0.15, 0.15,0\" anchor=\"origin\" color=\"blue\" />\n" " <led offset=\" 0.15,-0.15,0\" anchor=\"origin\" color=\"green\" />\n" " </leds>\n" " </box>\n" " ...\n" " </arena>\n\n" "In the example, four LEDs are added to the box. The LEDs have\n" "different colors and are located one on the top and three\n" "around the box. The LEDs are managed by the LED medium declared in\n" "the <media> section of the configuration file with id \"id_of_led_medium\"", "Usable")
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CBoxEntity)
 
 REGISTER_ENTITY (CCylinderEntity, "cylinder", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "A stretchable cylinder.", "The cylinder entity can be used to model obstacles or cylinder-shaped\n" "grippable objects. The cylinder has a red LED on the center of one\n" "of the circular surfaces, that allows perception using the cameras.\n" "The cylinder can be movable or not. A movable object can be pushed\n" "and gripped. An unmovable object is pretty much like a column.\n\n" "REQUIRED XML CONFIGURATION\n\n" "To declare an unmovable object (i.e., a column) you need the following:\n\n" " <arena ...>\n" " ...\n" " <cylinder id=\"cyl1\" radius=\"0.8\" height=\"0.5\" movable=\"false\">\n" " <body position=\"0.4,2.3,0\" orientation=\"45,0,0\" />\n" " </cylinder>\n" " ...\n" " </arena>\n\n" "To declare a movable object you need the following:\n\n" " <arena ...>\n" " ...\n" " <cylinder id=\"cyl1\" radius=\"0.8\" height=\"0.5\"\n" " movable=\"true\" mass=\"2.5\">\n" " <body position=\"0.4,2.3,0\" orientation=\"45,0,0\" />\n" " </cylinder>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same id, initialization aborts.\n" "The 'radius' and 'height' attributes specify the size of the cylinder. When\n" "you add a cylinder, imagine it initially unrotated and centered in the origin.\n" "The base of the cylinder, then, is parallel to the XY plane and its height\n" "goes with the Z axis.\n" "The 'movable' attribute specifies whether or not the object is movable. When\n" "set to 'false', the object is unmovable: if another object pushes against it,\n" "the cylinder won't move. When the attribute is set to 'true', the cylinder is\n" "movable upon pushing or gripping. When an object is movable, the 'mass'\n" "attribute is required.\n" "The 'mass' attribute quantifies the mass of the cylinder in kg.\n" "The 'body/position' attribute specifies the position of the base of the\n" "cylinder in the arena. The three values are in the X,Y,Z order.\n" "The 'body/orientation' attribute specifies the orientation of the cylinder. All\n" "rotations are performed with respect to the center of mass. The order of the\n" "angles is Z,Y,X, which means that the first number corresponds to the rotation\n" "around the Z axis, the second around Y and the last around X. This reflects\n" "the internal convention used in ARGoS, in which rotations are performed in\n" "that order. Angles are expressed in degrees.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to add any number of colored LEDs to the cylinder. In this way,\n" "the cylinder is visible with a robot camera. The position and color of the\n" "LEDs is specified with the following syntax:\n\n" " <arena ...>\n" " ...\n" " <cylinder id=\"cyl1\" radius=\"0.8\" height=\"0.5\"\n" " movable=\"true\" mass=\"2.5\">\n" " <body position=\"0.4,2.3,0\" orientation=\"45,0,0\" />\n" " <leds medium=\"id_of_led_medium\">\n" " <led offset=\" 0.15, 0.15,0.15\" anchor=\"origin\" color=\"white\" />\n" " <led offset=\"-0.15, 0.15,0\" anchor=\"origin\" color=\"red\" />\n" " <led offset=\" 0.15, 0.15,0\" anchor=\"origin\" color=\"blue\" />\n" " <led offset=\" 0.15,-0.15,0\" anchor=\"origin\" color=\"green\" />\n" " </leds>\n" " </cylinder>\n" " ...\n" " </arena>\n\n" "In the example, four LEDs are added around the cylinder. The LEDs have\n" "different colors and are located around the cylinder. The LEDs are\n" "managed by the LED medium declared in the <media> section of the\n" "configuration file with id \"id_of_led_medium\"", "Usable")
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CCylinderEntity)
 
 REGISTER_SPACE_OPERATION (CSpaceOperationAddEntity, CSpaceOperationAddCDirectionalLEDEntity, CDirectionalLEDEntity)
 
 REGISTER_SPACE_OPERATION (CSpaceOperationRemoveEntity, CSpaceOperationRemoveCDirectionalLEDEntity, CDirectionalLEDEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CDirectionalLEDEquippedEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CGripperEquippedEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CGroundSensorEquippedEntity)
 
 REGISTER_SPACE_OPERATION (CSpaceOperationAddEntity, CSpaceOperationAddCLEDEntity, CLEDEntity)
 
 REGISTER_SPACE_OPERATION (CSpaceOperationRemoveEntity, CSpaceOperationRemoveCLEDEntity, CLEDEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CLEDEquippedEntity)
 
 REGISTER_ENTITY (CLightEntity, "light", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "A colored light.", "The light entity is an entity that emits a light detectable by a robot camera\n" "(as a normal LED) or by light sensors. A light is bodyless, therefore it must\n" "not be added to physics engines.\n" "A light is characterized by a color and an intensity. The color of the light\n" "is perceived by cameras. The intensity modifies the reading of the light\n" "sensors. The higher the intensity, the closer the light is perceived.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <arena ...>\n" " ...\n" " <light id=\"light0\"\n" " position=\"0.4,2.3,0.25\"\n" " orientation=\"0,0,0\"\n" " color=\"yellow\"\n" " intensity=\"1.0\"\n" " medium=\"leds\"/>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same id, initialization aborts.\n" "The 'position' attribute specifies the position of the center of the light.\n" "The attribute values are in the X,Y,Z order.\n" "The 'orientation' attribute specifies the orientation of the light. At the\n" "moment this attribute is mandatory but its value is ignored. In the future,\n" "it will be used to implement a directional light.\n" "The 'color' attribute specifies the color of the light.\n" "The 'intensity' attribute sets the intensity of the light. When the value is\n" "1.0, the light emits a normal amount of light. When it is 0.5 the amount of\n" "light is half, and when the value is 2.0 the emission is doubled. The\n" "intensity of the light affects the readings of the light sensors but not\n" "those of the cameras.\n" "The 'medium' attribute is used to add the light the corresponding LED medium.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n", "Usable")
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CLightEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CLightSensorEquippedEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CMagnetEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CMagnetEquippedEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (COmnidirectionalCameraEquippedEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CPerspectiveCameraEquippedEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CProximitySensorEquippedEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CQuadRotorEntity)
 
 REGISTER_SPACE_OPERATION (CSpaceOperationAddEntity, CSpaceOperationAddCRABEquippedEntity, CRABEquippedEntity)
 
 REGISTER_SPACE_OPERATION (CSpaceOperationRemoveEntity, CSpaceOperationRemoveCRABEquippedEntity, CRABEquippedEntity)
 
 REGISTER_SPACE_OPERATION (CSpaceOperationAddEntity, CSpaceOperationAddCRadioEntity, CRadioEntity)
 
 REGISTER_SPACE_OPERATION (CSpaceOperationRemoveEntity, CSpaceOperationRemoveCRadioEntity, CRadioEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CRadioEquippedEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CRotorEquippedEntity)
 
 REGISTER_SPACE_OPERATION (CSpaceOperationAddEntity, CSpaceOperationAddCTagEntity, CTagEntity)
 
 REGISTER_SPACE_OPERATION (CSpaceOperationRemoveEntity, CSpaceOperationRemoveCTagEntity, CTagEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE (CTagEquippedEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CWheeledEntity)
 
 REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY (CWiFiEquippedEntity)
 
 REGISTER_MEDIUM (CDirectionalLEDMedium, "directional_led", "Michael Allwright [allsey87@gmail.com]", "1.0", "Manages directional LED entities.", "This medium is required to manage the directional LED entities, so that\n" "the associated camera sensors can find them. If you use a camera sensor,\n" "you must add this medium the sensors XML configuration.\n\n" "REQUIRED XML CONFIGURATION\n\n" "<directional_led id=\"led\" />\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being\n", "Under development")
 
 REGISTER_MEDIUM (CLEDMedium, "led", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "Manages the LEDs.", "This medium is required to manage the LED entities, thus allowing the\n" "associated camera sensors to work properly. If you intend to use a camera\n" "sensor that detects colored blobs, you must add this medium to the XML\n" "configuration file.\n\n" "REQUIRED XML CONFIGURATION\n\n" "<led id=\"led\" />\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being\n", "Under development")
 
 REGISTER_MEDIUM (CRABMedium, "range_and_bearing", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "It simulates the communication across range-and-bearing-equipped robots.", "This medium is required to simulate communication across range-and-bearing-\n" "equipped robots. You need to add it to the <media> section every time you add\n" "a range-and-bearing-equipped entity whose controller has a range-and-bearing\n" "device activated.\n\n" "REQUIRED XML CONFIGURATION\n\n" "<range_and_bearing id=\"rab\" />\n\n" "OPTIONAL XML CONFIGURATION\n\n" "By default, the RAB medium requires two robots to be in direct line-of-sight in\n" "order to be able to exchange messages. You can toggle this behavior on or off\n" "through the 'check_occlusions' attribute:\n\n" "<range_and_bearing id=\"rab\" check_occlusions=\"false\" />\n\n", "Under development")
 
 REGISTER_MEDIUM (CRadioMedium, "radio", "Michael Allwright [allsey87@gmail.com]", "1.0", "Enables communication between a radio actuator and radio sensor.", "This medium indexes the radio entities in the space and allows\n" "transmitting radios to find nearby receiving radios.\n\n" "REQUIRED XML CONFIGURATION\n\n" "<radio id=\"radios\" />\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being\n", "Under development")
 
 REGISTER_MEDIUM (CTagMedium, "tag", "Michael Allwright [allsey87@gmail.com]", "1.0", "Manages tag entities.", "This medium is required to manage the tag entities, so that the\n" "associated camera sensors can find them. If you use a camera sensor, you\n" "must add this medium the sensors XML configuration.\n\n" "REQUIRED XML CONFIGURATION\n\n" "<tag id=\"qrcodes\" />\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being\n", "Under development")
 
 REGISTER_STANDARD_DYNAMICS2D_OPERATIONS_ON_ENTITY (CBoxEntity, CDynamics2DBoxModel)
 
 REGISTER_STANDARD_DYNAMICS2D_OPERATIONS_ON_ENTITY (CCylinderEntity, CDynamics2DCylinderModel)
 
 REGISTER_PHYSICS_ENGINE (CDynamics2DEngine, "dynamics2d", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "A 2D dynamics physics engine.", "This physics engine is a 2D dynamics engine based on the Chipmunk library\n" "(http://code.google.com/p/chipmunk-physics) version 6.0.1.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <physics_engines>\n" " ...\n" " <dynamics2d id=\"dyn2d\" />\n" " ...\n" " </physics_engines>\n\n" "The 'id' attribute is necessary and must be unique among the physics engines.\n" "If two engines share the same id, initialization aborts.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to set how many iterations this physics engine performs between\n" "each simulation step. By default, this physics engine performs 10 steps every\n" "two simulation steps. This means that, if the simulation step is 100ms, the\n" "physics engine step is, by default, 10ms. Sometimes, collisions and joints are\n" "not simulated with sufficient precision using these parameters. By increasing\n" "the number of iterations, the temporal granularity of the solver increases and\n" "with it its accuracy, at the cost of higher computational cost. To change the\n" "number of iterations per simulation step use this syntax:\n\n" " <physics_engines>\n" " ...\n" " <dynamics2d id=\"dyn2d\"\n" " iterations=\"20\" />\n" " ...\n" " </physics_engines>\n\n" "The plane of the physics engine can be translated on the Z axis, to simulate\n" "for example hovering objects, such as flying robots. To translate the plane\n" "2m up the Z axis, use the 'elevation' attribute as follows:\n\n" " <physics_engines>\n" " ...\n" " <dynamics2d id=\"dyn2d\"\n" " elevation=\"2.0\" />\n" " ...\n" " </physics_engines>\n\n" "When not specified, the elevation is zero, which means that the plane\n" "corresponds to the XY plane.\n\n" "The friction parameters between the ground and movable boxes and cylinders can\n" "be overridden. You can set both the linear and angular friction parameters.\n" "The default value is 1.49 for each of them. To override the values, use this\n" "syntax (all attributes are optional):\n\n" " <physics_engines>\n" " ...\n" " <dynamics2d id=\"dyn2d\">\n" " <friction box_linear_friction=\"1.0\"\n" " box_angular_friction=\"2.0\"\n" " cylinder_linear_friction=\"3.0\"\n" " cylinder_angular_friction=\"4.0\" />\n" " </dynamics2d>\n" " ...\n" " </physics_engines>\n\n" "For the the robots that use velocity-based control, such as ground robots with\n" "the differential_steering actuator (e.g. the foot-bot and the e-puck), it is\n" "possible to customize robot-specific attributes that set the maximum force and\n" "torque the robot has. The syntax is as follows, taking a foot-bot as example:\n\n" " <arena ...>\n" " ...\n" " <foot-bot id=\"fb0\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " <!-- Specify new value for max_force and max_torque -->\n" " <dynamics2d>\n" " <differential_steering max_force=\"0.1\" max_torque=\"0.1\"/>\n" " </dynamics2d>\n" " </foot-bot>\n" " ...\n" " </arena>\n\n" "The attributes 'max_force' and 'max_torque' are both optional, and they take the\n" "robot-specific default if not set. Check the code of the dynamics2d model of the\n" "robot you're using to know the default values.\n\n" "Multiple physics engines can also be used. If multiple physics engines are used,\n" "the disjoint union of the area within the arena assigned to each engine must cover\n" "the entire arena without overlapping. If the entire arena is not covered, robots can\n" "\"escape\" the configured physics engines and cause a fatal exception (this is not an\n" "issue when a single physics engine is used, because the engine covers the entire arena\n" "by default). To use multiple physics engines, use the following syntax (all attributes\n" "are mandatory):\n\n" " <physics_engines>\n" " ...\n" " <dynamics2d id=\"dyn2d0\">\n" " <boundaries>\n" " <top height=\"1.0\"/>\n" " <botton height=\"0.0\"/>\n" " <sides>\n" " <vertex point=\"0.0, 0.0\"/>\n" " <vertex point=\"4.0, 0.0\"/>\n" " <vertex point=\"4.0, 4.0\"/>\n" " <vertex point=\"0.0, 4.0\"/>\n" " </sides>\n" " </boundaries>\n" " </dynamics2d>\n" " <dynamics2d id=\"dyn2d1\">\n" " ..." " </dynamics2d>\n" " ...\n" " </physics_engines>\n\n" "The 'top' and 'bottom' nodes are relevant for 3D physics engines. For 2D\n" "engines, it safe to set their height to 1.0 and 0.0, respectively. A physics\n" "engine can be defined having any number of sides >= 3, as long as the sides form\n" "a closed polygon in the 2D plane. The vertices must be declared in\n" "counter-clockwise order. In the above example, the physics engine \"dyn2d0\" is\n" "assigned to the area within the arena with lower-left coordinates (0,0) and\n" "upper-right coordinates (4,4) and vertices are specified in counter clockwise\n" "order: south-east, south-west, north-west, north-east.\n\n" "OPTIMIZATION HINTS\n\n" "1. A single physics engine is generally sufficient for small swarms (say <= 50\n" " robots) within a reasonably small arena to obtain faster than real-time\n" " performance with optimized code. For larger swarms and/or large arenas,\n" " multiple engines should be used for maximum performance.\n\n" "2. In general, using the same number of ARGoS threads as physics engines gives\n" " maximum performance (1-thread per engine per CPU core).\n\n" "3. Using multiple engines in simulations with any of the following\n" " characteristics generally incurs more overhead (due to thread context\n" " switching) than the performance benefits from multiple engines:\n" " - Small swarms\n" " - Small arenas\n" " - Less available ARGoS threads than assigned physics engines\n" " - Less available CPU cores than assigned ARGoS threads\n\n" "4. A good starting strategy for physics engine boundary assignment is to assign\n" " each physics engine the same amount of area within the arena. This will be\n" " sufficient for most cases. Depending on the nature of the simulation, using\n" " non-homogeneous physics engine sizes may yield increased performance. An\n" " example would be a narrow hallway between larger open areas in the arena--the\n" " hallway will likely experience increased robot density and assigning more\n" " physics engines to that area than the relatively unpopulated open areas may\n" " increase performance.\n\n" "5. By default, this engine uses the bounding-box tree method for collision shape\n" " indexing. This method is the default in Chipmunk and it works well most of\n" " the times. However, if you are running simulations with hundreds or thousands\n" " of identical robots, a different shape collision indexing is available: the\n" " spatial hash. The spatial hash is a grid stored in a hashmap. To get the max\n" " out of this indexing method, you must set two parameters: the cell size and\n" " the suggested minimum number of cells in the space. According to the\n" " documentation of Chipmunk, the cell size should correspond to the size of the\n" " bounding box of the most common object in the simulation; the minimum number\n" " of cells should be at least 10x the number of objects managed by the physics\n" " engine. To use this indexing method, use this syntax (all attributes are\n" " mandatory):\n\n" " <physics_engines>\n" " ...\n" " <dynamics2d id=\"dyn2d\">\n" " <spatial_hash>\n" " <cell_size=\"1.0\"/>\n" " <cell_num=\"2.0\"/>\n" " </spatial_hash>\n" " </dynamics2d>\n" " ...\n" " </physics_engines>\n", "Usable")
 
int BeginCollisionBetweenGripperAndGrippable (cpArbiter *pt_arb, cpSpace *pt_space, void *p_data)
 
int ManageCollisionBetweenGripperAndGrippable (cpArbiter *pt_arb, cpSpace *pt_space, void *p_data)
 
void AddConstraintBetweenGripperAndGrippable (cpSpace *pt_space, void *p_obj, void *p_data)
 
void RemoveConstraintBetweenGripperAndGrippable (cpSpace *pt_space, void *p_obj, void *p_data)
 
 REGISTER_STANDARD_DYNAMICS3D_OPERATIONS_ON_ENTITY (CBoxEntity, CDynamics3DBoxModel)
 
 REGISTER_STANDARD_DYNAMICS3D_OPERATIONS_ON_ENTITY (CCylinderEntity, CDynamics3DCylinderModel)
 
 REGISTER_PHYSICS_ENGINE (CDynamics3DEngine, "dynamics3d", "Michael Allwright [allsey87@gmail.com]", "1.0", "A 3D dynamics physics engine", "This physics engine is a 3D dynamics engine based on the Bullet Physics SDK\n" "(https://github.com/bulletphysics/bullet3).\n\n" "REQUIRED XML CONFIGURATION\n\n" " <physics_engines>\n" " ...\n" " <dynamics3d id=\"dyn3d\" />\n" " ...\n" " </physics_engines>\n\n" "The 'id' attribute is necessary and must be unique among the physics engines.\n\n" "Multiple physics engines of this type cannot be used, and defining '<boundaries>'\n" "as a child tag under the '<dynamics3d>' tree will result in an initialization error.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to change the default friction used in the simulation from\n" "its initial value of 1.0 using the default_friction attribute as shown\n" "below. For debugging purposes, it is also possible to provide a filename\n" "via the debug_file attribute which will cause the Bullet world to be\n" "serialized and written out to a file at the end of each step. This file can\n" "then be opened using the Bullet example browser and can provide useful\n" "insights into the stability of a simulation.\n\n" " <physics_engines>\n" " ...\n" " <dynamics3d id=\"dyn3d\"\n" " default_friction=\"1.0\"\n" " debug_file=\"dynamics3d.bullet\"/>\n" " ...\n" " </physics_engines>\n\n" "The physics engine supports a number of plugins that add features to the\n" "simulation. In the example below, a floor plane has been added which has a\n" "height of 1 cm and the dimensions of the floor as specified by the arena\n" "node. It is possible to change the coefficient of friction of the floor\n" "using the friction attribute. This will override the default friction used\n" "by the physics engine. By default, there will be no gravity in the\n" "simulation. This can be changed by adding a gravity node with a single\n" "attribute 'g' which is the downwards acceleration caused by gravity.\n" "Finally, there is a magnetism plugin. This plugin applies forces and\n" "torques to bodies in the simulation that contains magnetic dipoles. The\n" "'max_distance' attribute is an optional optimization that sets the maximum\n" "distance at which two magnetic dipoles will interact with each other. In\n" "the example below, this distance has been set to 4 cm.\n\n" " <physics_engines>\n" " ...\n" " <dynamics3d id=\"dyn3d\" default_friction=\"2.0\">\n" " <floor height=\"0.01\" friction=\"0.05\"/>\n" " <gravity g=\"10\" />\n" " <magnetism max_distance=\"0.04\" />\n" " </dynamics3d>\n" " ...\n" " </physics_engines>\n\n", "Usable (multiple engines not supported)")
 
 REGISTER_DYNAMICS3D_PLUGIN (CDynamics3DFloorPlugin, "floor", "Michael Allwright [allsey87@gmail.com]", "1.0", "Inserts a floor into the 3D dynamics engine", "For a description on how to use this plugin, please consult the documentation\n" "for the dynamics3d physics engine plugin", "Usable")
 
 REGISTER_DYNAMICS3D_PLUGIN (CDynamics3DGravityPlugin, "gravity", "Michael Allwright [allsey87@gmail.com]", "1.0", "Applies a gravity force to all bodies in the simulation", "For a description on how to use this plugin, please consult the documentation\n" "for the dynamics3d physics engine plugin", "Usable")
 
 REGISTER_DYNAMICS3D_PLUGIN (CDynamics3DMagnetismPlugin, "magnetism", "Michael Allwright [allsey87@gmail.com]", "1.0", "Applies forces and torques between magnetic dipoles in the simulation", "For a description on how to use this plugin, please consult the documentation\n" "for the dynamics3d physics engine plugin", "Usable")
 
 REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY (CBoxEntity, CPointMass3DBoxModel)
 
 REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY (CCylinderEntity, CPointMass3DCylinderModel)
 
 REGISTER_PHYSICS_ENGINE (CPointMass3DEngine, "pointmass3d", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "A 3D point-mass physics engine.", "This physics engine is a 3D point-mass engine.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <physics_engines>\n" " ...\n" " <pointmass3d id=\"pm3d\" />\n" " ...\n" " </physics_engines>\n\n" "The 'id' attribute is necessary and must be unique among the physics engines.\n" "If two engines share the same id, initialization aborts.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "By default, there will -9.81 m/s gravity in the simulation. This can be\n" "changed by specifying the 'gravity' attribute:\n\n" " <physics_engines>\n" " ...\n" " <pointmass3d id=\"pm3d\" gravity=\"-9.81\"/>\n" " ...\n" " </physics_engines>\n\n" "Multiple physics engines can also be used. If multiple physics engines are used,\n" "the disjoint union of the 3D volumes within the arena assigned to each engine must cover\n" "the entire arena without overlapping. If the entire arena is not covered, robots can\n" "\"escape\" the configured physics engines and cause a fatal exception (this is not an\n" "issue when a single physics engine is used, because the engine covers the entire arena\n" "by default). To use multiple physics engines, use the following syntax (all attributes\n" "are mandatory):\n\n" " <physics_engines>\n" " ...\n" " <pointmass3d id=\"pm0\">\n" " <boundaries>\n" " <top height=\"1.0\"/>\n" " <botton height=\"0.0\"/>\n" " <sides>\n" " <vertex point=\"0.0, 0.0\"/>\n" " <vertex point=\"4.0, 0.0\"/>\n" " <vertex point=\"4.0, 4.0\"/>\n" " <vertex point=\"0.0, 4.0\"/>\n" " </sides>\n" " </boundaries>\n" " </pointmass3d>\n" " <pointmass3d id=\"pm1\">\n" " ...\n" " </pointmass3d>\n" " ...\n" " </physics_engines>\n\n" "A physics engine can be defined having any number of sides >= 3, as long as the\n" "sides from a closed polygon in the 2D plane (vertices must be declared in the\n" "XML file in counter-clockwise order). In the above example, the physics engine\n" "'pm0' is assigned to the area within the arena with lower left coordinates (0,0)\n" "and upper right coordinates (4,4) and vertices are specified in counter\n" "clockwise order: LL, LR, UR, UL.\n\n" "OPTIMIZATION HINTS\n\n" "1. A single physics engine is generally sufficient for small swarms (say <= 50\n" " robots) within a reasonably small arena to obtain faster than real-time\n" " performance with optimized code. For larger swarms and/or large arenas multiple\n" " engines should be used for maximum performance.\n\n" "2. In general, using the same number of ARGoS threads as physics engines gives\n" " maximum performance (1-thread per engine per CPU core).\n\n" "3. Using multiple engines in simulations with any of the following characteristics\n" " generally incurs more overhead due to thread context switching than the\n" " performance benefits from multiple engines:\n\n" " - Small swarms\n" " - Small arenas\n" " - Less available ARGoS threads than assigned physics engines\n" " - Less available CPU cores than assigned ARGoS threads\n\n" "4. A good starting strategy for physics engine boundary assignment is to assign\n" " each physics engine the same amount of area within the arena. This will be\n" " sufficient for most cases. Depending on the nature of the simulation, using\n" " non-homogeneous physics engine sizes may yield increased performance. An example\n" " would be a narrow hallway between larger open areas in the arena--the hallway\n" " will likely experience increased robot density and assigning more physics\n" " engines to that area than the relatively unpopulated open areas may increase\n" " performance.\n\n", "Usable")
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawNormal, CQTOpenGLOperationDrawBoxNormal, CBoxEntity)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawSelected, CQTOpenGLOperationDrawBoxSelected, CBoxEntity)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawNormal, CQTOpenGLOperationDrawCylinderNormal, CCylinderEntity)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawSelected, CQTOpenGLOperationDrawCylinderSelected, CCylinderEntity)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawNormal, CQTOpenGLOperationDrawLightNormal, CLightEntity)
 
 REGISTER_QTOPENGL_ENTITY_OPERATION (CQTOpenGLOperationDrawSelected, CQTOpenGLOperationDrawLightSelected, CLightEntity)
 
bool ItemLessThan (const CQTOpenGLLuaStateTreeItem *pc_i1, const CQTOpenGLLuaStateTreeItem *pc_i2)
 
 REGISTER_VISUALIZATION (CQTOpenGLRender, "qt-opengl", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "An interactive graphical renderer based on Qt and OpenGL.", "The QT-OpenGL renderer is a graphical renderer based on Qt >= 4.5 and OpenGL.\n" "It allows the user to watch and modify the simulation as it's running in an\n" "intuitive way.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <visualization>\n" " <qt-opengl />\n" " </visualization>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "You can auto-play the simulation at startup by specifying the 'autoplay'\n" "attribute as follows:\n\n" " <visualization>\n" " <qt-opengl autoplay=\"true\" />\n" " </visualization>\n\n" "It is also possible to set the camera parameters. There are 12 available slots\n" "in which cameras can be configured. These cameras can be selected in the user\n" "interface by pressing F1-F12 or by clicking on the corresponding camera icon.\n" "By default, and if no configuration is given, each of these slots defaults to a\n" "camera position calculated from the size of the arena and the arena's center.\n" "The following example demonstrates overriding four of these camera\n" "configurations:\n\n" " <visualization>\n" " <qt-opengl>\n" " <camera>\n" " <placements>\n" " <placement index=\"0\" position=\"2,2,2\" look_at=\"1,1,1\" />\n" " <placement index=\"1\" position=\"1,0,7\" look_at=\"1,0,0\" />\n" " <placement index=\"2\" position=\"3,3,4\" look_at=\"1,6,0\" />\n" " <placement index=\"3\" position=\"2,3,2\" look_at=\"0,1,0\" />\n" " </placements>\n" " </camera>\n" " </qt-opengl>\n" " </visualization>\n\n" "The 'index' attribute specifies the camera to override, with the zeroth index\n" "corresponding to the camera bound to the F1 key and so on.\n" "The 'position' attribute contains the position of the camera in the arena.\n" "The 'look_at' attribute sets the point the camera is looking at.\n" "Sometimes, specifying a camera positioning with only 'position' and 'look_at'\n" "generates ambiguous configurations, which ARGoS resolves in a default way after\n" "printing a warning message. To place the camera without ambiguities, specify\n" "also the 'up' vector of the camera. If the camera is your head, imagine this\n" "vector as an arrow that stems from the center of your head and extends upwards\n." "The 'up' vector must be perpendicular to the difference between the 'look_at'\n" "and the 'position' vectors.\n" "You can also set the focal length of the camera. For example:\n\n" " <visualization>\n" " <qt-opengl>\n" " <camera>\n" " <placements>\n" " ...\n" " <placement index=\"4\"\n" " position=\"4,1,4\"\n" " look_at=\"2,1,0\"\n" " lens_focal_length=\"50\" />\n" " ...\n" " <placements>\n" " </camera>\n" " </qt-opengl>\n" " </visualization>\n\n" "The 'lens_focal_length' attribute controls the focal length of the lens of the\n" "simulated camera. The value is in millimeters and defaults to 20 mm, if it is\n" "not set from the XML.\n" "You can also configure the camera to switch placement automatically according\n" "to a timeline and even interpolate between different placements as shown below:\n" " <visualization>\n" " <qt-opengl>\n" " <camera>\n" " <placements>\n" " ...\n" " <placement index=\"0\" ... />\n" " <placement index=\"1\" ... />\n" " <placement index=\"2\" ... />\n" " ...\n" " </placements>\n" " <timeline loop=\"400\">\n" " <keyframe placement=\"0\" step=\"0\" />\n" " <interpolate />\n" " <keyframe placement=\"1\" step=\"100\" />\n" " <keyframe placement=\"2\" step=\"200\" />\n" " <keyframe placement=\"1\" step=\"300\" />\n" " <interpolate />\n" " </timeline>\n" " </camera>\n" " </qt-opengl>\n" " </visualization>\n\n" "This feature is enabled by adding a <timeline> node which consists of\n" "<keyframe> nodes. These keyframe nodes indicate the step number on which a\n" "given camera placement will be used. It is possible to interpolate between two\n" "keyframes by adding a <interpolate> node between them. The keyframes must be\n" "specified in order. The timeline can be set to loop by setting the loop\n" "attribute on the timeline node to the value at which the timeline should start\n" "over from the beginning.\n" "This visualization also allows for user customization. In a similar fashion to\n" "the loop functions, you can set a plug-in that derives from the\n" "CQTOpenGLUserFunctions class. To load it in the system, follow this example:\n\n" " <visualization>\n" " <qt-opengl>\n" " <user_functions library=\"/path/to/libmyuserfunctions.so\"\n" " label=\"my_user_functions\" />\n" " </qt-opengl>\n" " </visualization>\n\n" "The 'library' attribute points to the library where the user functions are\n" "stored. This library can be the same as the loop functions, or a new one.\n" "There is no limitation to where the code is to be found.\n" "The 'label' attribute identifies the user function class to use. In this way,\n" "in a single library you can have multiple user function implementations, if\n" "you wish.\n" "You can also grab frames and store them into image files, for example to create\n" "videos in a fast way. This can be done from within the ARGoS window and when\n" "running ARGoS without visualizations (headless). To do it from within the ARGoS\n" "window, you just need to press the red capture button and frame grabbing will be\n" "on.\n" "You can also grab frames when running without visualizations by running ARGoS\n" "under Xvfb to give it a virtual framebuffer to render into. The command\n\n" " xvfb-run -s \"-screen 0 1600x1200x24\" argos3 -c example.argos\n\n" "will run spawn a new Xvfb server with a virtual window size of 1600x1200, 8-bit\n" "color per channel and run ARGoS under it (ARGoS can also be made to attach to an\n" "existing Xvfb server via the DISPLAY environment variable). Refer to the\n" "documentation on Xvfb for the precise meaning of the arguments.\n" "By default, the frames are named 'frame_NNNNN.png' and are stored in the current\n" "directory, i.e. the directory where you run the 'argos' command. If you want to\n" "override these defaults, you can add the optional 'frame_grabbing' section as\n" "follows:\n\n" " <visualization>\n" " <qt-opengl>\n" " <frame_grabbing directory=\"frames\"\n" " base_name=\"myframe_\"\n" " format=\"png\"\n" " quality=\"100\"\n" " headless_grabbing=\"false\"\n" " headless_frame_size=\"1600x1200\"\n" " headless_frame_rate=\"1\"/>\n" " </qt-opengl>\n" " </visualization>\n\n" "All the attributes in this section are optional. If you don't specify one of\n" "them, the default is taken.\n" "The 'directory' attribute stores the directory where the frames are saved. If\n" "the directory does not exist, a fatal error occurs. The directory must exist\n" "and be writable. Both absolute and relative paths are allowed. The default\n" "value is '.'\n" "The 'base_name' attribute is the string to prepend to the file name. After this\n" "string, the frame number (padded to 5 digits) is added. The default value is\n" "'frame_', so a typical resulting name is 'frame_00165'.\n" "The 'format' attribute specifies the format. The default value is 'png' but you\n" "can put any format supported by Qt>=4.5. Refer to the Qt documentation for the\n" "complete list of supported formats.\n" "The 'quality' attribute dictates the quality of the image. Its value is in the\n" "range [0:100] where 0 means maximum compression and minimum quality, and 100\n" "means maximum quality and no compression at all. The default value is '-1',\n" "which means to use Qt's default quality. For videos, it's best to use 100 to\n" "avoid artifacts due to compression. For a normal screenshot, the default is the\n" "safest choice.\n" "The 'headless_grabbing' attribute defaults to 'false'.\n" "The 'headless_frame_size' attribute is the size of the main QTWidget in ARGoS,\n" "*not* the size of the converted frames (actual images will be somewhat smaller).\n" "The 'headless_frame_rate' attribute specifes the frame skip rate (i.e. grab\n" "every n-th frame). The default value is '1'.\n", "Usable")
 

Variables

size_t DEBUG_INDENTATION = 0
 
CARGoSLog LOG (std::cout, SLogColor(ARGOS_LOG_ATTRIBUTE_BRIGHT, ARGOS_LOG_COLOR_GREEN))
 
CARGoSLog LOGERR (std::cerr, SLogColor(ARGOS_LOG_ATTRIBUTE_BRIGHT, ARGOS_LOG_COLOR_RED))
 
CRange< CRadiansAPERTURE_RANGE (CCI_FootBotGripperActuator::LOCKED_NEGATIVE, CCI_FootBotGripperActuator::LOCKED_POSITIVE)
 
const Real RPM_TO_RADIANS_PER_SEC = ARGOS_PI / 30.0f
 
CRange< CRadiansINCLINATION_RANGE (CRadians(0), CRadians(ARGOS_PI))
 
const GLfloat BODY_COLOR [] = { 0.5f, 0.5f, 0.5f, 1.0f }
 
const GLfloat SPECULAR [] = { 0.0f, 0.0f, 0.0f, 1.0f }
 
const GLfloat SHININESS [] = { 0.0f }
 
const GLfloat EMISSION [] = { 0.0f, 0.0f, 0.0f, 1.0f }
 
const GLfloat MOVABLE_COLOR [] = { 1.0f, 0.0f, 0.0f, 1.0f }
 
const GLfloat NONMOVABLE_COLOR [] = { 0.7f, 0.7f, 0.7f, 1.0f }
 
const GLfloat DEFAULT_SPECULAR [] = { 0.0f, 0.0f, 0.0f, 1.0f }
 
const GLfloat DEFAULT_SHININESS [] = { 100.0f }
 
const GLfloat DEFAULT_EMISSION [] = { 0.0f, 0.0f, 0.0f, 1.0f }
 

Detailed Description

The namespace containing all the ARGoS related code.

The namespace containing all the ARGoS-related code.

Typedef Documentation

◆ TConfigurationAttributeIterator

typedef ticpp::Iterator<ticpp::Attribute> argos::TConfigurationAttributeIterator

The iterator for the attributes of an XML node.

Definition at line 31 of file argos_configuration.h.

◆ TConfigurationNode

typedef ticpp::Element argos::TConfigurationNode

The ARGoS configuration XML node.

Definition at line 27 of file argos_configuration.h.

◆ TConfigurationNodeIterator

typedef ticpp::Iterator<ticpp::Element> argos::TConfigurationNodeIterator

The iterator for the ARGoS configuration XML node.

Definition at line 29 of file argos_configuration.h.

◆ TEmbodiedEntityIntersectionData

◆ TEmbodiedEntityMap

typedef std::map<std::string, CEmbodiedEntity*> argos::TEmbodiedEntityMap

Definition at line 349 of file embodied_entity.h.

◆ TEmbodiedEntitySet

Definition at line 350 of file embodied_entity.h.

◆ TEmbodiedEntityVector

Definition at line 348 of file embodied_entity.h.

◆ TFactoryBatteryDischargeModel

For dynamic loading of battery discharge models.

Definition at line 131 of file battery_equipped_entity.h.

◆ TQueryResult

typedef std::vector<SQueryResultItem> argos::TQueryResult

Definition at line 44 of file query_plugins.h.

Enumeration Type Documentation

◆ EARGoSLogAttributes

The possible attributes of the logged text.

Enumerator
ARGOS_LOG_ATTRIBUTE_RESET 
ARGOS_LOG_ATTRIBUTE_BRIGHT 
ARGOS_LOG_ATTRIBUTE_DIM 
ARGOS_LOG_ATTRIBUTE_UNDERSCORE 
ARGOS_LOG_ATTRIBUTE_BLINK 
ARGOS_LOG_ATTRIBUTE_REVERSE 
ARGOS_LOG_ATTRIBUTE_HIDDEN 

Definition at line 22 of file argos_colored_text.h.

◆ EARGoSLogColors

The possible colors of the logged text.

Enumerator
ARGOS_LOG_COLOR_BLACK 
ARGOS_LOG_COLOR_RED 
ARGOS_LOG_COLOR_GREEN 
ARGOS_LOG_COLOR_YELLOW 
ARGOS_LOG_COLOR_BLUE 
ARGOS_LOG_COLOR_MAGENTA 
ARGOS_LOG_COLOR_CYAN 
ARGOS_LOG_COLOR_WHITE 

Definition at line 35 of file argos_colored_text.h.

◆ EPUCK_WHEELS [1/2]

Enumerator
EPUCK_LEFT_WHEEL 
EPUCK_RIGHT_WHEEL 
EPUCK_LEFT_WHEEL 
EPUCK_RIGHT_WHEEL 

Definition at line 25 of file dynamics2d_epuck_model.cpp.

◆ EPUCK_WHEELS [2/2]

Enumerator
EPUCK_LEFT_WHEEL 
EPUCK_RIGHT_WHEEL 
EPUCK_LEFT_WHEEL 
EPUCK_RIGHT_WHEEL 

Definition at line 29 of file physx_epuck_model.cpp.

◆ ETurretModes

Enumerator
MODE_OFF 
MODE_PASSIVE 
MODE_SPEED_CONTROL 
MODE_POSITION_CONTROL 

Definition at line 33 of file dynamics2d_footbot_model.cpp.

◆ FOOTBOT_WHEELS [1/2]

Enumerator
FOOTBOT_LEFT_WHEEL 
FOOTBOT_RIGHT_WHEEL 
FOOTBOT_LEFT_WHEEL 
FOOTBOT_RIGHT_WHEEL 

Definition at line 28 of file dynamics2d_footbot_model.cpp.

◆ FOOTBOT_WHEELS [2/2]

Enumerator
FOOTBOT_LEFT_WHEEL 
FOOTBOT_RIGHT_WHEEL 
FOOTBOT_LEFT_WHEEL 
FOOTBOT_RIGHT_WHEEL 

Definition at line 16 of file pointmass3d_footbot_model.cpp.

Function Documentation

◆ Abs() [1/3]

template<typename T >
T argos::Abs ( const T &  t_v)

Returns the absolute value of the passed argument.

Returns
the absolute value of the passed argument.

Definition at line 25 of file general.h.

◆ Abs() [2/3]

Real argos::Abs ( Real  t_v)
inline

Returns the absolute value of the passed argument.

Specific implementation for the Real type.

Returns
the absolute value of the passed argument.

Definition at line 48 of file general.h.

◆ Abs() [3/3]

SInt32 argos::Abs ( SInt32  t_v)
inline

Returns the absolute value of the passed argument.

Specific implementation for the SInt32 type.

Returns
the absolute value of the passed argument.
See also
Abs()

Definition at line 37 of file general.h.

◆ ACos()

CRadians argos::ACos ( Real  f_value)
inline

Computes the arccosine of the passed value.

Parameters
f_valuea value in the range [-1:1]
Returns
the arccosine in CRadians

Definition at line 622 of file angles.h.

◆ AddChildNode()

void argos::AddChildNode ( TConfigurationNode t_parent_node,
TConfigurationNode t_child_node 
)
inline

Adds an XML node as child of another XML node.

The node is added at the end of the children of the parent node.

Parameters
t_parent_nodethe parent node
t_child_nodethe child node to add to the parent
Exceptions
CARGoSExceptionif an error occurred

Definition at line 88 of file argos_configuration.h.

◆ AddConstraintBetweenGripperAndGrippable()

void argos::AddConstraintBetweenGripperAndGrippable ( cpSpace *  pt_space,
void *  p_obj,
void *  p_data 
)

Definition at line 199 of file dynamics2d_gripping.cpp.

◆ any_cast() [1/4]

template<typename T >
T& argos::any_cast ( CAny c_any)

Performs a cast on the any type to the desired type, when the any type is passed by non-const reference.

Definition at line 205 of file any.h.

◆ any_cast() [2/4]

template<typename T >
T* argos::any_cast ( CAny pc_any)

Performs a cast on the any type to the desired type, when the any type is passed by non-const pointer.

Definition at line 148 of file any.h.

◆ any_cast() [3/4]

template<typename T >
const T& argos::any_cast ( const CAny c_any)

Performs a cast on the any type to the desired type, when the any type is passed by const reference.

Definition at line 184 of file any.h.

◆ any_cast() [4/4]

template<typename T >
const T* argos::any_cast ( const CAny pc_any)

Performs a cast on the any type to the desired type, when the any type is passed by const pointer.

Definition at line 166 of file any.h.

◆ ASin()

CRadians argos::ASin ( Real  f_value)
inline

Computes the arcsine of the passed value.

Parameters
f_valuea value in the range [-1:1]
Returns
the arcsine in CRadians

Definition at line 613 of file angles.h.

◆ ATan2()

CRadians argos::ATan2 ( const Real  f_y,
const Real  f_x 
)
inline

Computes the arctangent of the passed values.

It internally uses the standard function atan2(y,x).

Parameters
f_ythe extent on the y axis
f_xthe extent on the x axis
Returns
the arctangent in CRadians

Definition at line 633 of file angles.h.

◆ BeginCollisionBetweenGripperAndGrippable()

int argos::BeginCollisionBetweenGripperAndGrippable ( cpArbiter *  pt_arb,
cpSpace *  pt_space,
void *  p_data 
)

Definition at line 143 of file dynamics2d_gripping.cpp.

◆ CalculatePluginRangeForThread()

CRange<size_t> argos::CalculatePluginRangeForThread ( size_t  un_id,
size_t  un_tot_plugins 
)

Definition at line 272 of file space_multi_thread_balance_quantity.cpp.

◆ CallEntityOperation()

template<typename LABEL , typename PLUGIN , typename RETURN_VALUE >
RETURN_VALUE argos::CallEntityOperation ( PLUGIN &  t_plugin,
CEntity c_entity 
)

Calls the operation corresponding to the given context and operand Skips the function call if the operation is missing in the vtable.

Definition at line 418 of file entity.h.

◆ Ceil()

SInt32 argos::Ceil ( Real  f_value)
inline

Rounds the passed floating-point value to the closest higher integer.

Profiled, it takes 50% the time of ceil().

Returns
the closest higher integer to the passed value.

Definition at line 151 of file general.h.

◆ Cos()

Real argos::Cos ( const CRadians c_radians)
inline

Computes the cosine of the passed value in radians.

Parameters
c_radiansthe angle in CRadians
Returns
the cosine of the passed value

Definition at line 595 of file angles.h.

◆ CreateGenerator()

RealNumberGenerator* argos::CreateGenerator ( TConfigurationNode t_tree)

Definition at line 352 of file space.cpp.

◆ DEFINE_ARGOS_STREAM_COLOR_HELPER() [1/7]

argos::DEFINE_ARGOS_STREAM_COLOR_HELPER ( blue  ,
BLUE   
)

Bright blue text modifier.

◆ DEFINE_ARGOS_STREAM_COLOR_HELPER() [2/7]

argos::DEFINE_ARGOS_STREAM_COLOR_HELPER ( cyan  ,
CYAN   
)

Bright cyan text modifier.

◆ DEFINE_ARGOS_STREAM_COLOR_HELPER() [3/7]

argos::DEFINE_ARGOS_STREAM_COLOR_HELPER ( green  ,
GREEN   
)

Bright green text modifier.

◆ DEFINE_ARGOS_STREAM_COLOR_HELPER() [4/7]

argos::DEFINE_ARGOS_STREAM_COLOR_HELPER ( magenta  ,
MAGENTA   
)

Bright magenta text modifier.

◆ DEFINE_ARGOS_STREAM_COLOR_HELPER() [5/7]

argos::DEFINE_ARGOS_STREAM_COLOR_HELPER ( red  ,
RED   
)

Bright red text modifier.

◆ DEFINE_ARGOS_STREAM_COLOR_HELPER() [6/7]

argos::DEFINE_ARGOS_STREAM_COLOR_HELPER ( white  ,
WHITE   
)

Bright white text modifier.

◆ DEFINE_ARGOS_STREAM_COLOR_HELPER() [7/7]

argos::DEFINE_ARGOS_STREAM_COLOR_HELPER ( yellow  ,
YELLOW   
)

Bright yellow text modifier.

◆ Distance() [1/2]

Real argos::Distance ( const CVector2 c_v1,
const CVector2 c_v2 
)
inline

Computes the distance between the passed vectors.

Parameters
c_v1The first vector
c_v2The second vector
Returns
The distance between the passed vectors

Definition at line 462 of file vector2.h.

◆ Distance() [2/2]

Real argos::Distance ( const CVector3 c_v1,
const CVector3 c_v2 
)
inline

Computes the distance between the passed vectors.

Parameters
c_v1The first vector
c_v2The second vector
Returns
The distance between the passed vectors

Definition at line 727 of file vector3.h.

◆ DoubleEq()

bool argos::DoubleEq ( Real  f_value1,
Real  f_value2 
)
inline

Tests whether a floating-point value is lower than another.

This method is like DoubleEqAbsolute(), but with f_epsilon = 0.0001.

Parameters
f_value1the first value to test
f_value2the second value to test
Returns
true if f_value1 < f_value2, false otherwise.
See also
DoubleEqAbsolute()

Definition at line 206 of file general.h.

◆ DoubleEqAbsolute()

bool argos::DoubleEqAbsolute ( Real  f_value1,
Real  f_value2,
Real  f_epsilon 
)
inline

Tests whether a floating-point value is lower than another.

This function perform the following test:

          Abs(f_value1 - f_value2)
--------------------------------------------- <= f_epsilon
Max (1.0f, Max(Abs(f_value1), Abs(f_value2)))
Parameters
f_value1the first value to test
f_value2the second value to test
f_epsilonthe tolerance of the test
Returns
true if f_value1 < f_value2, false otherwise.
See also
DoubleEq()

Definition at line 194 of file general.h.

◆ DumpResourceUsageAsTableRow()

void argos::DumpResourceUsageAsTableRow ( std::ostream &  c_os,
const ::rusage &  t_resources 
)

Definition at line 63 of file profiler.cpp.

◆ DumpResourceUsageHumanReadable()

void argos::DumpResourceUsageHumanReadable ( std::ostream &  c_os,
const ::rusage &  t_resources 
)

Definition at line 37 of file profiler.cpp.

◆ Erase()

void argos::Erase ( std::vector< std::vector< CConvexHull::TEdge > > &  vec_edges,
const std::array< UInt32, 3 > &  arr_vertices 
)

Definition at line 36 of file convex_hull.cpp.

◆ ExpandEnvVariables()

std::string & argos::ExpandEnvVariables ( std::string &  str_buffer)

Searches into str_buffer for occurrences of an environment variable of the form $VAR and substitutes them with the value of the variable.

Parameters
str_bufferthe string to modify.
Returns
the modified string

Definition at line 127 of file string_utilities.cpp.

◆ Floor()

SInt32 argos::Floor ( Real  f_value)
inline

Rounds the passed floating-point value to the closest lower integer.

Profiled, it takes 50% the time of floor().

Returns
the closest lower integer to the passed value.

Definition at line 140 of file general.h.

◆ FromString()

template<typename T >
T argos::FromString ( const std::string &  str_value)

Converts the given std::string parameter to the wanted type.

Example of use:

std::string strToBeConverted("36");
UInt32 unConverted = FromString(strToBeConverted);

Internally uses an std::ostringstream. If you want to use it with a custom type, you must define its std::istream& operator>>(std::istream&, type).

Template Parameters
Tthe type of the target parameter.
Parameters
str_valuethe string to convert.
Returns
the converted value.

Definition at line 59 of file string_utilities.h.

◆ GetClosestEmbodiedEntityIntersectedByRay() [1/2]

bool argos::GetClosestEmbodiedEntityIntersectedByRay ( SEmbodiedEntityIntersectionItem s_item,
const CRay3 c_ray 
)

Returns the closest intersection with an embodied entity to the ray start.

Parameters
t_dataThe data of the intersection, if any.
c_rayThe ray to test for intersections.
Returns
true if an intersection is found

Definition at line 41 of file physics_engine.cpp.

◆ GetClosestEmbodiedEntityIntersectedByRay() [2/2]

bool argos::GetClosestEmbodiedEntityIntersectedByRay ( SEmbodiedEntityIntersectionItem s_item,
const CRay3 c_ray,
CEmbodiedEntity c_entity 
)

Returns the closest intersection with an embodied entity to the ray start.

This function allows you to exclude one entity from the list of intersections.

Parameters
t_dataThe data of the intersection, if any.
c_rayThe ray to test for intersections.
c_entityThe entity to exclude from the intersection check.
Returns
true if an intersection is found

Definition at line 61 of file physics_engine.cpp.

◆ GetEmbodiedEntitiesIntersectedByRay()

bool argos::GetEmbodiedEntitiesIntersectedByRay ( TEmbodiedEntityIntersectionData t_data,
const CRay3 c_ray 
)

Checks whether the given ray intersects any entity.

The t_data parameter is cleared.

Parameters
t_dataThe list of intersections found.
c_rayThe ray to test for intersections.
Returns
true if at least one intersection is found

Definition at line 21 of file physics_engine.cpp.

◆ GetNode()

TConfigurationNode& argos::GetNode ( TConfigurationNode t_node,
const std::string &  str_tag 
)
inline

Given a tree root node, returns the first of its child nodes with the wanted name.

Given an XML tree, this function checks for the existence of a first-level node in this tree (i.e., a direct child of the root node) with the given name.

Parameters
t_nodethe root node of the XML tree
str_tagthe name of the wanted child node
Returns
the first child node with the given name
Exceptions
CARGoSExceptionif no child node with the wanted name exists

Definition at line 63 of file argos_configuration.h.

◆ GetNodeAttribute() [1/4]

void argos::GetNodeAttribute ( TConfigurationNode t_node,
const std::string &  str_attribute,
bool &  b_buffer 
)
inline

Returns the value of a node's attribute.

This function is an overloaded version of the templetized GetNodeAttribute() in which the buffer is a boolean.

Parameters
t_nodethe node
str_attributethe name of the wanted attribute
b_buffera buffer where the value must be stored
Exceptions
CARGoSExceptionif an error occurred (i.e., parse error) or the attribute does not exist
See also
GetNodeAttribute()

Definition at line 231 of file argos_configuration.h.

◆ GetNodeAttribute() [2/4]

void argos::GetNodeAttribute ( TConfigurationNode t_node,
const std::string &  str_attribute,
SInt8 n_buffer 
)
inline

Returns the value of a node's attribute.

This function is an overloaded version of the templetized GetNodeAttribute() in which the buffer is a SInt8.

Parameters
t_nodethe node
str_attributethe name of the wanted attribute
n_buffera buffer where the value must be stored
Exceptions
CARGoSExceptionif an error occurred (i.e., parse error) or the attribute does not exist
See also
GetNodeAttribute()

Definition at line 289 of file argos_configuration.h.

◆ GetNodeAttribute() [3/4]

template<typename T >
void argos::GetNodeAttribute ( TConfigurationNode t_node,
const std::string &  str_attribute,
T &  t_buffer 
)

Returns the value of a node's attribute.

XML nodes can have attributes: <mynode attribute1="this is a string attribute" attribute2="-87" attribute3="-0.5, 12.3, 4" > This function is templetized. This means that you can pass any variable type to this function and parsing will occur automatically. For instance: std::string strValue; GetNodeAttribute(tMyNode, "attribute1", strValue); // tMyNode points to <mynode> // strValue now is "this is a string attribute" SInt32 nValue; GetNodeAttribute(tMyNode, "attribute2", nValue); // tMyNode points to <mynode> // nValue now is -87 CVector3 cValue; GetNodeAttribute(tMyNode, "attribute3", cValue); // tMyNode points to <mynode> // cValue now is CVector3(-0.5, 12.3, 4)

Parameters
t_nodethe node
str_attributethe name of the wanted attribute
t_buffera buffer where the value must be stored
Exceptions
CARGoSExceptionif an error occurred (i.e., parse error) or the attribute does not exist
See also
GetNodeAttributeOrDefault()

Definition at line 208 of file argos_configuration.h.

◆ GetNodeAttribute() [4/4]

void argos::GetNodeAttribute ( TConfigurationNode t_node,
const std::string &  str_attribute,
UInt8 un_buffer 
)
inline

Returns the value of a node's attribute.

This function is an overloaded version of the templetized GetNodeAttribute() in which the buffer is a UInt8.

Parameters
t_nodethe node
str_attributethe name of the wanted attribute
un_buffera buffer where the value must be stored
Exceptions
CARGoSExceptionif an error occurred (i.e., parse error) or the attribute does not exist
See also
GetNodeAttribute()

Definition at line 264 of file argos_configuration.h.

◆ GetNodeAttributeOrDefault() [1/4]

void argos::GetNodeAttributeOrDefault ( TConfigurationNode t_node,
const std::string &  str_attribute,
bool &  b_buffer,
const bool  b_default 
)
inline

Returns the value of a node's attribute, or the passed default value.

This function is an overloaded version of the templetized GetNodeAttributeOrDefault() in which the buffer is a boolean. stored in the buffer variable instead.

Parameters
t_nodethe node
str_attributethe name of the wanted attribute
b_buffera buffer where the value must be stored
b_defaulta default value to be used if the attribute does not exist
Exceptions
CARGoSExceptionif an error occurred (i.e., parse error)
See also
GetNodeAttributeOrDefault()

Definition at line 344 of file argos_configuration.h.

◆ GetNodeAttributeOrDefault() [2/4]

void argos::GetNodeAttributeOrDefault ( TConfigurationNode t_node,
const std::string &  str_attribute,
SInt8 n_buffer,
const SInt8  n_default 
)
inline

Returns the value of a node's attribute, or the passed default value.

This function is an overloaded version of the templetized GetNodeAttributeOrDefault() in which the buffer is a SInt8. stored in the buffer variable instead.

Parameters
t_nodethe node
str_attributethe name of the wanted attribute
n_buffera buffer where the value must be stored
n_defaulta default value to be used if the attribute does not exist
Exceptions
CARGoSExceptionif an error occurred (i.e., parse error)
See also
GetNodeAttributeOrDefault()

Definition at line 409 of file argos_configuration.h.

◆ GetNodeAttributeOrDefault() [3/4]

template<typename T >
void argos::GetNodeAttributeOrDefault ( TConfigurationNode t_node,
const std::string &  str_attribute,
T &  t_buffer,
const T &  t_default 
)

Returns the value of a node's attribute, or the passed default value.

This function works like GetNodeAttribute(). The only difference is that if the wanted attribute does not exist, the passed default is stored in the buffer instead. stored in the buffer variable instead.

Parameters
t_nodethe node
str_attributethe name of the wanted attribute
t_buffera buffer where the value must be stored
t_defaulta default value to be used if the attribute does not exist
Exceptions
CARGoSExceptionif an error occurred (i.e., parse error)
See also
GetNodeAttribute()

Definition at line 318 of file argos_configuration.h.

◆ GetNodeAttributeOrDefault() [4/4]

void argos::GetNodeAttributeOrDefault ( TConfigurationNode t_node,
const std::string &  str_attribute,
UInt8 un_buffer,
const UInt8  un_default 
)
inline

Returns the value of a node's attribute, or the passed default value.

This function is an overloaded version of the templetized GetNodeAttributeOrDefault() in which the buffer is a UInt8. stored in the buffer variable instead.

Parameters
t_nodethe node
str_attributethe name of the wanted attribute
un_buffera buffer where the value must be stored
un_defaulta default value to be used if the attribute does not exist
Exceptions
CARGoSExceptionif an error occurred (i.e., parse error)
See also
GetNodeAttributeOrDefault()

Definition at line 381 of file argos_configuration.h.

◆ GetNodeText()

template<typename T >
void argos::GetNodeText ( TConfigurationNode t_node,
T &  t_buffer 
)

Returns the text of the passed XML node A node text is as follows:

<mynode1>this is the text</mynode1>
<mynode2>25</mynode2>
<mynode3>3.14, 5.87</mynode3>

This function is templetized. This means that you can pass any variable type to this function and parsing will occur automatically. For instance:

std::string strText;
GetNodeText(tMyNode1, strText); // tMyNode1 points to <mynode1>
                                // strText now is "this is the text"
UInt32 unText;
GetNodeText(tMyNode2, unText);  // tMyNode2 points to <mynode2>
                                // unText now is 25
CVector2 cText;
GetNodeText(tMyNode3, cText);   // tMyNode3 points to <mynode3>
                                // cText now is CVector2(3.14, 5.87)
Parameters
t_nodethe node
t_buffera buffer where the text must be stored
Exceptions
CARGoSExceptionif an error occurred (i.e., parse error) or the node has no text value
See also
GetNodeTextOrDefault()

Definition at line 128 of file argos_configuration.h.

◆ GetNodeTextOrDefault()

template<typename T >
void argos::GetNodeTextOrDefault ( TConfigurationNode t_node,
T &  t_buffer,
const T &  t_default 
)

Returns the text of the passed XML node, or the passed default value.

This function works like GetNodeText(). The only difference is that if no text value is found, the passed default is stored in the buffer variable instead.

Parameters
t_nodethe node
t_buffera buffer where the text must be stored
t_defaulta default value to be used if the node has no text
Exceptions
CARGoSExceptionif an error occurred (i.e., parse error)
See also
GetNodeText()

Definition at line 152 of file argos_configuration.h.

◆ GetTag()

template<typename DERIVED , typename BASE >
size_t argos::GetTag ( )

Returns the value of the tag associated to DERIVED

Definition at line 116 of file vtable.h.

◆ GetVTable()

template<typename CONTEXT , typename BASE , typename FUNCTION >
CVTable<CONTEXT, BASE, FUNCTION>& argos::GetVTable ( )

Function that returns a reference to the static vtable.

Definition at line 199 of file vtable.h.

◆ INIT_VTABLE_FOR()

argos::INIT_VTABLE_FOR ( CEntity  )

◆ Insert()

void argos::Insert ( std::vector< std::vector< CConvexHull::TEdge > > &  vec_edges,
const std::array< UInt32, 3 > &  arr_vertices 
)

Definition at line 16 of file convex_hull.cpp.

◆ Interpolate()

Real argos::Interpolate ( Real  f_x,
const std::vector< std::pair< Real, Real > > &  c_points 
)
inline

Return the value of the linear interpolation.

Parameters
f_xthe value of x that you want to interpolate
c_pointsvector of points NOTE: the vector has to be ordered in INCREASING ORDER.
Returns
value of y.

Definition at line 219 of file general.h.

◆ ItemLessThan()

bool argos::ItemLessThan ( const CQTOpenGLLuaStateTreeItem pc_i1,
const CQTOpenGLLuaStateTreeItem pc_i2 
)

Definition at line 71 of file qtopengl_lua_statetree_item.cpp.

◆ LaunchThreadBalanceLength()

void* argos::LaunchThreadBalanceLength ( void *  p_data)

Definition at line 40 of file space_multi_thread_balance_length.cpp.

◆ LaunchUpdateThreadBalanceQuantity()

void* argos::LaunchUpdateThreadBalanceQuantity ( void *  p_data)

Definition at line 40 of file space_multi_thread_balance_quantity.cpp.

◆ LuaRNGBernoulli()

int argos::LuaRNGBernoulli ( lua_State *  pt_state)

Definition at line 27 of file lua_utility.cpp.

◆ LuaRNGExponential()

int argos::LuaRNGExponential ( lua_State *  pt_state)

Definition at line 119 of file lua_utility.cpp.

◆ LuaRNGGaussian()

int argos::LuaRNGGaussian ( lua_State *  pt_state)

Definition at line 149 of file lua_utility.cpp.

◆ LuaRNGPoisson()

int argos::LuaRNGPoisson ( lua_State *  pt_state)

Definition at line 134 of file lua_utility.cpp.

◆ LuaRNGUniform()

int argos::LuaRNGUniform ( lua_State *  pt_state)

Definition at line 52 of file lua_utility.cpp.

◆ LuaRNGUniformInt()

int argos::LuaRNGUniformInt ( lua_State *  pt_state)

Definition at line 88 of file lua_utility.cpp.

◆ ManageCollisionBetweenGripperAndGrippable()

int argos::ManageCollisionBetweenGripperAndGrippable ( cpArbiter *  pt_arb,
cpSpace *  pt_space,
void *  p_data 
)

Definition at line 159 of file dynamics2d_gripping.cpp.

◆ MatchPattern()

bool argos::MatchPattern ( const std::string &  str_input,
const std::string &  str_pattern 
)

Returns true if str_pattern is matched by str_input.

Internally uses the C function regcomp().

Parameters
str_inputthe input string to analyze.
str_patternthe extended regular expression to match.
Returns
true if str_pattern is matched by str_input.

Definition at line 106 of file string_utilities.cpp.

◆ Max() [1/2]

template<typename T >
T argos::Max ( const T &  t_v1,
const T &  t_v2 
)

Returns the bigger of the two passed arguments.

This version accepts const references as arguments.

Returns
the bigger of the two passed arguments.

Definition at line 95 of file general.h.

◆ Max() [2/2]

template<typename T >
T& argos::Max ( T &  t_v1,
T &  t_v2 
)

Returns the bigger of the two passed arguments.

This version accepts non-const references as arguments.

Returns
the bigger of the two passed arguments.

Definition at line 104 of file general.h.

◆ Min() [1/2]

template<typename T >
T argos::Min ( const T &  t_v1,
const T &  t_v2 
)

Returns the smaller of the two passed arguments.

This version accepts const references as arguments.

Returns
the smaller of the two passed arguments.

Definition at line 77 of file general.h.

◆ Min() [2/2]

template<typename T >
T& argos::Min ( T &  t_v1,
T &  t_v2 
)

Returns the smaller of the two passed arguments.

This version accepts non-const references as arguments.

Returns
the smaller of the two passed arguments.

Definition at line 86 of file general.h.

◆ NodeAttributeExists()

bool argos::NodeAttributeExists ( TConfigurationNode t_node,
const std::string &  str_attribute 
)
inline

Returns true if the specified attribute of a node exists.

Parameters
t_nodethe node whose attribute we want to search for
str_attributethe name of the attribute to search for
Returns
true if the attribute exists, false otherwise

Definition at line 172 of file argos_configuration.h.

◆ NodeExists()

bool argos::NodeExists ( TConfigurationNode t_node,
const std::string &  str_tag 
)
throw (
)
inline

Given a tree root node, returns true if one of its child nodes has the wanted name.

Given an XML tree, this function checks for the existence of a first-level node in this tree (i.e., a direct child of the root node) with the given name.

Parameters
t_nodethe root node of the XML tree
str_tagthe name of the wanted child node
Returns
true when the node exists, false otherwise

Definition at line 44 of file argos_configuration.h.

◆ NormalizedDifference() [1/2]

CDegrees argos::NormalizedDifference ( const CDegrees c_angle1,
const CDegrees c_angle2 
)
inline

Calculates the normalized difference between the given angles.

The difference is calculated as c_angle1 - c_angle2 and normalized in the range [-180,180].

Parameters
c_angle1The first angle
c_angle2The second angle
Returns
The smallest difference between the two angles

Definition at line 528 of file angles.h.

◆ NormalizedDifference() [2/2]

CRadians argos::NormalizedDifference ( const CRadians c_angle1,
const CRadians c_angle2 
)
inline

Calculates the normalized difference between the given angles.

The difference is calculated as c_angle1 - c_angle2 and normalized in the range [-pi,pi].

Parameters
c_angle1The first angle
c_angle2The second angle
Returns
The smallest difference between the two angles

Definition at line 510 of file angles.h.

◆ operator-()

::rusage argos::operator- ( const ::rusage &  t_resource1,
const ::rusage &  t_resource2 
)

Definition at line 89 of file profiler.cpp.

◆ operator<<() [1/10]

std::ostream& argos::operator<< ( std::ostream &  c_os,
const CByteArray c_byte_array 
)

It streams the byte array through the given stream. Useful for files, for instance.

Parameters
c_osthe C++ output stream the byte array to.
c_byte_arraythe byte array to stream.
Returns
the new state of the output stream.

Definition at line 530 of file byte_array.cpp.

◆ operator<<() [2/10]

std::ostream& argos::operator<< ( std::ostream &  c_os,
const CCI_EPuckProximitySensor::SReading s_reading 
)

Definition at line 92 of file ci_epuck_proximity_sensor.cpp.

◆ operator<<() [3/10]

std::ostream & argos::operator<< ( std::ostream &  c_os,
const CCI_EPuckProximitySensor::TReadings t_readings 
)

Definition at line 102 of file ci_epuck_proximity_sensor.cpp.

◆ operator<<() [4/10]

std::ostream & argos::operator<< ( std::ostream &  c_os,
const CCI_EyeBotLightSensor::SReading s_reading 
)

Definition at line 76 of file ci_eyebot_light_sensor.cpp.

◆ operator<<() [5/10]

std::ostream & argos::operator<< ( std::ostream &  c_os,
const CCI_EyeBotProximitySensor::SReading s_reading 
)

Definition at line 77 of file ci_eyebot_proximity_sensor.cpp.

◆ operator<<() [6/10]

std::ostream & argos::operator<< ( std::ostream &  c_os,
const CCI_FootBotBaseGroundSensor::SReading s_reading 
)

Definition at line 67 of file ci_footbot_base_ground_sensor.cpp.

◆ operator<<() [7/10]

std::ostream & argos::operator<< ( std::ostream &  c_os,
const CCI_FootBotLightSensor::SReading s_reading 
)

Definition at line 76 of file ci_footbot_light_sensor.cpp.

◆ operator<<() [8/10]

std::ostream & argos::operator<< ( std::ostream &  c_os,
const CCI_FootBotMotorGroundSensor::SReading s_reading 
)

Definition at line 38 of file ci_footbot_motor_ground_sensor.cpp.

◆ operator<<() [9/10]

std::ostream & argos::operator<< ( std::ostream &  c_os,
const CCI_FootBotProximitySensor::SReading s_reading 
)

Definition at line 77 of file ci_footbot_proximity_sensor.cpp.

◆ operator<<() [10/10]

std::ostream& argos::operator<< ( std::ostream &  c_os,
const SLogColor s_log_color 
)
inline

Stream operator that accepts the stream modifier.

See also
SLogColor

Definition at line 78 of file argos_colored_text.h.

◆ operator==()

bool argos::operator== ( const SAnchor ps_anchor,
const std::string &  str_id 
)

Returns true if the anchor id matches the given id.

This method makes it easier to run functions such as std::find().

Parameters
ps_anchorA pointer to the anchor.
str_idThe id to compare.
Returns
true if the anchor id matches the given id.

Definition at line 449 of file embodied_entity.cpp.

◆ ParseValues() [1/2]

template<typename T >
void argos::ParseValues ( const std::string &  str_input,
const UInt32  un_num_fields,
T *  pt_field_buffer,
const char  ch_delimiter = '\n' 
)

Definition at line 96 of file string_utilities.h.

◆ ParseValues() [2/2]

template<typename T >
void argos::ParseValues ( std::istream &  str_input,
UInt32  un_num_fields,
T *  pt_field_buffer,
const char  ch_delimiter = '\n' 
)

Definition at line 70 of file string_utilities.h.

◆ PrintStackEntry()

void argos::PrintStackEntry ( CARGoSLog c_log,
lua_State *  pt_state,
SInt32  n_index 
)

Definition at line 217 of file lua_utility.cpp.

◆ QueryPlugins()

void argos::QueryPlugins ( const std::string &  str_query)

Definition at line 52 of file query_plugins.cpp.

◆ QuerySearchPlugins()

template<class TYPE >
void argos::QuerySearchPlugins ( const std::string &  str_query,
TQueryResult t_result 
)

Definition at line 60 of file query_plugins.h.

◆ QueryShowList()

template<class TYPE >
void argos::QueryShowList ( const std::string &  str_header)

Definition at line 84 of file query_plugins.h.

◆ QueryShowPluginDescription()

void argos::QueryShowPluginDescription ( const std::string &  str_query)

Definition at line 19 of file query_plugins.cpp.

◆ RecursivePrintGlobals()

void argos::RecursivePrintGlobals ( CARGoSLog c_log,
lua_State *  pt_state,
size_t  un_depth 
)

Definition at line 229 of file lua_utility.cpp.

◆ REGISTER_ACTUATOR() [1/8]

argos::REGISTER_ACTUATOR ( CDirectionalLEDsDefaultActuator  ,
"directional_leds"  ,
"default"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"The directional LEDs actuator."  ,
"This actuator controls a group of directional LEDs. For a complete description\n" "of its  usage,
refer to the ci_leds_actuator.h file.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< actuators >\n" " ...\n" "< leds implementation=\"default\" />\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'medium' attribute sets the id of the LED medium declared in the <media>\n" "XML section.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n"  ,
"Usable"   
)

◆ REGISTER_ACTUATOR() [2/8]

argos::REGISTER_ACTUATOR ( CFootBotDistanceScannerDefaultActuator  ,
"footbot_distance_scanner"  ,
"default"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The foot-bot distance scanner actuator."  ,
"This actuator controls the foot-bot distance scanner. For a complete\n" "description of its  usage,
refer to the ci_footbot_distance_scanner_actuator\n" "file.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< actuators >\n" " ...\n" "< footbot_distance_scanner implementation=\"default\" />\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being.\n"  ,
"Usable"   
)

◆ REGISTER_ACTUATOR() [3/8]

argos::REGISTER_ACTUATOR ( CFootBotTurretDefaultActuator  ,
"footbot_turret"  ,
"default"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The foot-bot turret actuator."  ,
"This actuator controls the foot-bot turret. For a complete\n" "description of its  usage,
refer to the ci_footbot_turret_actuator\n" "file.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< actuators >\n" " ...\n" "< footbot_turret implementation=\"default\" />\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being.\n"  ,
"Usable"   
)

◆ REGISTER_ACTUATOR() [4/8]

argos::REGISTER_ACTUATOR ( CMagnetsDefaultActuator  ,
"magnets"  ,
"default"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"The (electro)magnet actuator."  ,
"This actuator is used to modify the magnetic field of a magnet entity in the\n" "simulation. A magnetic entity has a passive and an active field. The overall\n" "field of a magnetic entity is calculated as:\n\n" "  field = passive_field + (current x active_field)\n\n" "This actuator allows you to set the current,
a scalar multiplier of the active\n" "field.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< actuators >\n" " ...\n" "< magnets implementation=\"default\"/>\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n"  ,
"Under development"   
)

◆ REGISTER_ACTUATOR() [5/8]

argos::REGISTER_ACTUATOR ( CPrototypeJointsDefaultActuator  ,
"joints"  ,
"default"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"The prototype joints actuator: controls a prototype entity's joints."  ,
"This actuator is used to control the joints inside a prototype entity. To\n" "control a  joint,
add a joint child node to the joints node. Each child node has\n" "three  attributes,
all of which are required.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< actuators >\n" " ...\n" "< joints implementation=\"default\">\n" " <joint id=\"joint0\" mode=\"velocity\" max_impulse=\"0.002f\"/>\n" " <joint id=\"joint1\" mode=\"position\" max_impulse=\"0.005f\"/>\n" " ...\n" " </joints>\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'id' attribute specifies which joint in the prototype joint equipped entity\n" "we are interested in controlling. The 'mode' attribute has three options:\n" "  disabled,
position  ,
and velocity. The disabled mode is self-explanatory. The\n" "position and velocity modes enable closed loop position control and closed loop\n" "velocity control. The 'max_impulse' attribute defines the maximum impulse of\n" "the actuator in kg m/s for prismatic joints and kg m^2/s for revolute joints.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None."  ,
"Usable"   
)

◆ REGISTER_ACTUATOR() [6/8]

argos::REGISTER_ACTUATOR ( CRadiosDefaultActuator  ,
"radios"  ,
"default"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"A generic radio actuator to send messages to nearby radios."  ,
"This radio actuator implementation allows an arbitary number of messages\n" "containing an arbitary number of bytes to be sent to nearby radios. The\n" "implementation of this actuator is very basic and any concepts such as\n" "  throughput,
addressing  ,
or formatting of a message 's contents is beyond the\n" "scope of this actuator 's implementation.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< actuators >\n" " ...\n" "< radios implementation=\"default\" medium=\"radios\" />\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'medium' attribute sets the id of the radio medium declared in the <media>\n" "XML section.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n"  ,
"Usable"   
)

◆ REGISTER_ACTUATOR() [7/8]

argos::REGISTER_ACTUATOR ( CRangeAndBearingDefaultActuator  ,
"range_and_bearing"  ,
"default"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The range and bearing actuator."  ,
"This actuator allows robots to perform situated  communication,
i.  e.,
a form of\n" "wireless communication whereby the receiver also knows the location of the\n" "sender with respect to its own frame of reference.\n" "This actuator allows a robot to send messages. To receive  messages,
you need\n" "the range-and-bearing sensor.\n" "To use this  actuator,
in controllers you must include the\n" "ci_range_and_bearing_actuator.h header.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< actuators >\n" " ...\n" "< range_and_bearing implementation=\"default\" />\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n"  ,
"Usable"   
)

◆ REGISTER_ACTUATOR() [8/8]

argos::REGISTER_ACTUATOR ( CTagsDefaultActuator  ,
"tags"  ,
"default"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"The tags actuator."  ,
"This actuator controls the payloads of a group of tags. The idea" "is to represent an LCD screen that displays different tags. For a" "complete description of its  usage,
refer to the ci_tags_actuator.h" " file.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< actuators >\n" " ...\n" "< tags implementation=\"default\" />\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n"  ,
"Usable"   
)

◆ REGISTER_BATTERY_DISCHARGE_MODEL() [1/3]

argos::REGISTER_BATTERY_DISCHARGE_MODEL ( CBatteryDischargeModelMotion  ,
"motion"   
)

◆ REGISTER_BATTERY_DISCHARGE_MODEL() [2/3]

argos::REGISTER_BATTERY_DISCHARGE_MODEL ( CBatteryDischargeModelTime  ,
"time"   
)

◆ REGISTER_BATTERY_DISCHARGE_MODEL() [3/3]

argos::REGISTER_BATTERY_DISCHARGE_MODEL ( CBatteryDischargeModelTimeMotion  ,
"time_motion"   
)

◆ REGISTER_CAMERA_SENSOR_ALGORITHM() [1/3]

argos::REGISTER_CAMERA_SENSOR_ALGORITHM ( CCameraSensorDirectionalLEDDetectorAlgorithm  ,
"directional_led_detector"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"This algorithm detects nearby LEDs seen by the camera and\n" "returns the X and Y coordinates on the sensor"  ,
"This algorithm detects nearby LEDs seen by the camera and\n" "returns the X and Y coordinates on the sensor"  ,
"Under development"   
)

◆ REGISTER_CAMERA_SENSOR_ALGORITHM() [2/3]

argos::REGISTER_CAMERA_SENSOR_ALGORITHM ( CCameraSensorLEDDetectorAlgorithm  ,
"led_detector"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"This algorithm detects nearby LEDs seen by the camera and\n" "returns the X and Y coordinates on the sensor"  ,
"This algorithm detects nearby LEDs seen by the camera and\n" "returns the X and Y coordinates on the sensor"  ,
"Under development"   
)

◆ REGISTER_CAMERA_SENSOR_ALGORITHM() [3/3]

argos::REGISTER_CAMERA_SENSOR_ALGORITHM ( CCameraSensorTagDetectorAlgorithm  ,
"tag_detector"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"This algorithm detects nearby tags seen by the camera and\n" "returns the coordinates of their corners to the sensor"  ,
"This algorithm detects nearby tags seen by the camera and\n" "returns the coordinates of their corners to the sensor"  ,
"Under development"   
)

◆ REGISTER_CONTROLLER()

argos::REGISTER_CONTROLLER ( CLuaController  ,
"lua_controller"   
)

◆ REGISTER_DYNAMICS3D_PLUGIN() [1/3]

argos::REGISTER_DYNAMICS3D_PLUGIN ( CDynamics3DFloorPlugin  ,
"floor"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"Inserts a floor into the 3D dynamics engine"  ,
"For a description on how to use this  plugin,
please consult the documentation\n" "for the dynamics3d physics engine plugin"  ,
"Usable"   
)

◆ REGISTER_DYNAMICS3D_PLUGIN() [2/3]

argos::REGISTER_DYNAMICS3D_PLUGIN ( CDynamics3DGravityPlugin  ,
"gravity"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"Applies a gravity force to all bodies in the simulation"  ,
"For a description on how to use this  plugin,
please consult the documentation\n" "for the dynamics3d physics engine plugin"  ,
"Usable"   
)

◆ REGISTER_DYNAMICS3D_PLUGIN() [3/3]

argos::REGISTER_DYNAMICS3D_PLUGIN ( CDynamics3DMagnetismPlugin  ,
"magnetism"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"Applies forces and torques between magnetic dipoles in the simulation"  ,
"For a description on how to use this  plugin,
please consult the documentation\n" "for the dynamics3d physics engine plugin"  ,
"Usable"   
)

◆ REGISTER_ENTITY() [1/10]

argos::REGISTER_ENTITY ( CBoxEntity  ,
"box"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"A stretchable 3D box."  ,
"The box entity can be used to model  walls,
obstacles or box-shaped grippable\n" "objects. It can be movable or not. A movable object can be pushed and gripped.\n" "An unmovable object is pretty much like a wall.\n\n" "REQUIRED XML CONFIGURATION\n\n" "To declare an unmovable object(i.e., a wall) you need the following:\n\n" "< arena ... >\n" " ...\n" "< box id=\"box1\" size=\"0.75,0.1,0.5\" movable=\"false\">\n" " <body position=\"0.4,2.3,0\" orientation=\"45,0,0\" />\n" " </box>\n" " ...\n" " </arena>\n\n" "To declare a movable object you need the following:\n\n" " <arena ...>\n" " ...\n" " <box id=\"box1\" size=\"0.75,0.1,0.5\" movable=\"true\" mass=\"2.5\">\n" " <body position=\"0.4,2.3,0\" orientation=\"45,0,0\" />\n" " </box>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same  id,
initialization aborts.\n" "The 'size' attribute specifies the size of the box along the three  axes,
in\n" "the  X,
,
Z order. When you add a  box,
imagine it initially unrotated and\n" "centered in the origin. The  size,
then  ,
corresponds to the extent along the  X,
\n" "Y and Z axes.\n" "The 'movable' attribute specifies whether or not the object is movable. When\n" "set to 'false'  ,
the object is unmovable:if another object pushes against  it,
\n" "the box won 't move. When the attribute is set to 'true'  ,
the box is movable\n" "upon pushing or gripping. When an object is  movable,
the 'mass' attribute is\n" "required.\n" "The 'mass' attribute quantifies the mass of the box in kg.\n" "The 'body/position' attribute specifies the position of the base of the box in\n" "the arena. The three values are in the  X,
,
Z order.\n" "The 'body/orientation' attribute specifies the orientation of the 3D box. All\n" "rotations are performed with respect to the center of mass. The order of the\n" "angles is  Z,
,
,
which means that the first number corresponds to the rotation\n" "around the Z  axis,
the second around Y and the last around X. This reflects\n" "the internal convention used in  ARGoS,
in which rotations are performed in\n" "that order. Angles are expressed in degrees.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to add any number of colored LEDs to the box. In this  way,
\n" "the box is visible with a robot camera. The position and color of the\n" "LEDs is specified with the following syntax:\n\n" "< arena ... >\n" " ...\n" "< box id=\"box1\" size=\"0.75,0.1,0.5\" movable=\"true\" mass=\"2.5\">\n" " <body position=\"0.4,2.3,0\" orientation=\"45,0,0\" />\n" " <leds medium=\"id_of_led_medium\">\n" " <led offset=\" 0.15, 0.15,0.15\" anchor=\"origin\" color=\"white\" />\n" " <led offset=\"-0.15, 0.15,0\" anchor=\"origin\" color=\"red\" />\n" " <led offset=\" 0.15, 0.15,0\" anchor=\"origin\" color=\"blue\" />\n" " <led offset=\" 0.15,-0.15,0\" anchor=\"origin\" color=\"green\" />\n" " </leds>\n" " </box>\n" " ...\n" " </arena>\n\n" "In the  example,
four LEDs are added to the box. The LEDs have\n" "different colors and are located one on the top and three\n" "around the box. The LEDs are managed by the LED medium declared in\n" "the< media > section of the configuration file with id \"id_of_led_medium\""  ,
"Usable"   
)

◆ REGISTER_ENTITY() [2/10]

argos::REGISTER_ENTITY ( CCylinderEntity  ,
"cylinder"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"A stretchable cylinder."  ,
"The cylinder entity can be used to model obstacles or cylinder-shaped\n" "grippable objects. The cylinder has a red LED on the center of one\n" "of the circular  surfaces,
that allows perception using the cameras.\n" "The cylinder can be movable or not. A movable object can be pushed\n" "and gripped. An unmovable object is pretty much like a column.\n\n" "REQUIRED XML CONFIGURATION\n\n" "To declare an unmovable object(i.e., a column) you need the following:\n\n" "< arena ... >\n" " ...\n" "< cylinder id=\"cyl1\" radius=\"0.8\" height=\"0.5\" movable=\"false\">\n" " <body position=\"0.4,2.3,0\" orientation=\"45,0,0\" />\n" " </cylinder>\n" " ...\n" " </arena>\n\n" "To declare a movable object you need the following:\n\n" " <arena ...>\n" " ...\n" " <cylinder id=\"cyl1\" radius=\"0.8\" height=\"0.5\"\n" " movable=\"true\" mass=\"2.5\">\n" " <body position=\"0.4,2.3,0\" orientation=\"45,0,0\" />\n" " </cylinder>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same  id,
initialization aborts.\n" "The 'radius' and 'height' attributes specify the size of the cylinder. When\n" "you add a  cylinder,
imagine it initially unrotated and centered in the origin.\n" "The base of the  cylinder,
then  ,
is parallel to the XY plane and its height\n" "goes with the Z axis.\n" "The 'movable' attribute specifies whether or not the object is movable. When\n" "set to 'false'  ,
the object is unmovable:if another object pushes against  it,
\n" "the cylinder won 't move. When the attribute is set to 'true'  ,
the cylinder is\n" "movable upon pushing or gripping. When an object is  movable,
the 'mass'\n" "attribute is required.\n" "The 'mass' attribute quantifies the mass of the cylinder in kg.\n" "The 'body/position' attribute specifies the position of the base of the\n" "cylinder in the arena. The three values are in the  X,
,
Z order.\n" "The 'body/orientation' attribute specifies the orientation of the cylinder. All\n" "rotations are performed with respect to the center of mass. The order of the\n" "angles is  Z,
,
,
which means that the first number corresponds to the rotation\n" "around the Z  axis,
the second around Y and the last around X. This reflects\n" "the internal convention used in  ARGoS,
in which rotations are performed in\n" "that order. Angles are expressed in degrees.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to add any number of colored LEDs to the cylinder. In this  way,
\n" "the cylinder is visible with a robot camera. The position and color of the\n" "LEDs is specified with the following syntax:\n\n" "< arena ... >\n" " ...\n" "< cylinder id=\"cyl1\" radius=\"0.8\" height=\"0.5\"\n" " movable=\"true\" mass=\"2.5\">\n" " <body position=\"0.4,2.3,0\" orientation=\"45,0,0\" />\n" " <leds medium=\"id_of_led_medium\">\n" " <led offset=\" 0.15, 0.15,0.15\" anchor=\"origin\" color=\"white\" />\n" " <led offset=\"-0.15, 0.15,0\" anchor=\"origin\" color=\"red\" />\n" " <led offset=\" 0.15, 0.15,0\" anchor=\"origin\" color=\"blue\" />\n" " <led offset=\" 0.15,-0.15,0\" anchor=\"origin\" color=\"green\" />\n" " </leds>\n" " </cylinder>\n" " ...\n" " </arena>\n\n" "In the  example,
four LEDs are added around the cylinder. The LEDs have\n" "different colors and are located around the cylinder. The LEDs are\n" "managed by the LED medium declared in the< media > section of the\n" "configuration file with id \"id_of_led_medium\""  ,
"Usable"   
)

◆ REGISTER_ENTITY() [3/10]

argos::REGISTER_ENTITY ( CEPuckEntity  ,
"e-puck"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The e-puck robot."  ,
"The e-puck is a open-  hardware,
extensible robot intended for education. In its\n" "simplest  form,
it is a two-wheeled robot equipped with proximity  sensors,
\n" "ground  sensors,
light  sensors,
microphone,
a frontal  camera,
and a ring of\n" "red LEDs. More information is available at http://www.epuck.org\n\n" "REQUIRED XML CONFIGURATION\n\n" "< arena ... >\n" " ...\n" "< e-puck id=\"eb0\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,90,0\" />\n" " <controller config=\"mycntrl\" />\n" " </e-puck>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same  id,
initialization aborts.\n" "The 'body/position' attribute specifies the position of the pucktom point of the\n" "e-puck in the arena. When the robot is untranslated and  unrotated,
the\n" "pucktom point is in the origin and it is defined as the middle point between\n" "the two wheels on the XY plane and the lowest point of the robot on the Z\n" "  axis,
that is the point where the wheels touch the floor. The attribute values\n" "are in the  X,
,
Z order.\n" "The 'body/orientation' attribute specifies the orientation of the e-puck. All\n" "rotations are performed with respect to the pucktom point. The order of the\n" "angles is  Z,
,
,
which means that the first number corresponds to the rotation\n" "around the Z  axis,
the second around Y and the last around X. This reflects\n" "the internal convention used in  ARGoS,
in which rotations are performed in\n" "that order. Angles are expressed in degrees. When the robot is  unrotated,
it\n" "is oriented along the X axis.\n" "The 'controller/config' attribute is used to assign a controller to the\n" "e-puck. The value of the attribute must be set to the id of a previously\n" "defined controller. Controllers are defined in the< controllers > XML subtree.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "You can set the emission range of the range-and-bearing system. By  default,
a\n" "message sent by an e-puck can be received up to 80cm. By using the 'rab_range'\n" "  attribute,
you can change it  to,
i.  e.,
4m as follows:\n\n" "< arena ... >\n" " ...\n" "< e-puck id=\"eb0\" rab_range=\"4\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,90,0\" />\n" " <controller config=\"mycntrl\" />\n" " </e-puck>\n" " ...\n" " </arena>\n\n" "You can also set the data sent at each time step through the range-and-bearing\n" "system. By  default,
a message sent by an e-puck is 2 bytes long. By using the\n" " 'rab_data_size'  attribute,
you can change it  to,
i.  e.,
20 bytes as follows:\n\n" "< arena ... >\n" " ...\n" "< e-puck id=\"eb0\" rab_data_size=\"20\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,90,0\" />\n" " <controller config=\"mycntrl\" />\n" " </e-puck>\n" " ...\n" " </arena>\n\n" "You can also configure the battery of the robot. By  default,
the battery never\n" "depletes. You can choose among several battery discharge  models 
)

◆ REGISTER_ENTITY() [4/10]

argos::REGISTER_ENTITY ( CEyeBotEntity  ,
"eye-bot"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The eye-bot  robot,
developed in the Swarmanoid project."  ,
"The eye-bot is a quad-rotor developed in the Swarmanoid Project. It is a\n" "fully autonomous robot with a rich set of sensors and actuators. For more\n" "  information,
refer to the dedicated web page\n" "(http://www.swarmanoid.org/swarmanoid_hardware.php).\n\n" "REQUIRED XML CONFIGURATION\n\n" "< arena ... >\n" " ...\n" "< eye-bot id=\"eb0\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </eye-bot>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same  id,
initialization aborts.\n" "The 'body/position' attribute specifies the position of the bottom point of the\n" "eye-bot in the arena. When the robot is untranslated and  unrotated,
the\n" "bottom point is in the origin and it is defined as the middle point between\n" "the two wheels on the XY plane and the lowest point of the robot on the Z\n" "  axis,
that is the point where the wheels touch the floor. The attribute values\n" "are in the  X,
,
Z order.\n" "The 'body/orientation' attribute specifies the orientation of the eye-bot. All\n" "rotations are performed with respect to the bottom point. The order of the\n" "angles is  Z,
,
,
which means that the first number corresponds to the rotation\n" "around the Z  axis,
the second around Y and the last around X. This reflects\n" "the internal convention used in  ARGoS,
in which rotations are performed in\n" "that order. Angles are expressed in degrees. When the robot is  unrotated,
it\n" "is oriented along the X axis.\n" "The 'controller/config' attribute is used to assign a controller to the\n" "eye-bot. The value of the attribute must be set to the id of a previously\n" "defined controller. Controllers are defined in the< controllers > XML subtree.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "You can set the emission range of the range-and-bearing system. By  default,
a\n" "message sent by an eye-bot can be received up to 3m. By using the 'rab_range'\n" "  attribute,
you can change it  to,
i.  e.,
4m as follows:\n\n" "< arena ... >\n" " ...\n" "< eye-bot id=\"eb0\" rab_range=\"4\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </eye-bot>\n" " ...\n" " </arena>\n\n" "You can also set the data sent at each time step through the range-and-bearing\n" "system. By  default,
a message sent by a eye-bot is 10 bytes long. By using the\n" " 'rab_data_size'  attribute,
you can change it  to,
i.  e.,
20 bytes as follows:\n\n" "< arena ... >\n" " ...\n" "< eye-bot id=\"eb0\" rab_data_size=\"20\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </eye-bot>\n" " ...\n" " </arena>\n\n" "You can also configure the battery of the robot. By  default,
the battery never\n" "depletes. You can choose among several battery discharge  models 
)

◆ REGISTER_ENTITY() [5/10]

argos::REGISTER_ENTITY ( CFloorEntity  ,
"floor"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"It contains the properties of the arena floor."  ,
"The floor entity contains the properties of the arena floor. In the current\n" "  implementation,
it contains only the color of the floor. The floor color is\n" "detected by the robots' ground sensors.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< arena ... >\n" " ...\n" "< floor id=\"floor\"\n" " source=\"SOURCE\" />\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same  id,
initialization aborts.\n" "The 'source' attribute specifies where to get the color of the floor from. Its\n" "  value,
here denoted as  SOURCE,
can assume the following values:\n\n" " image The color is calculated from the passed image file\n" " loop_functions The color is calculated calling the loop functions\n\n" "When 'source' is set to 'image'  ,
as showed in the following  example,
you have\n" "to specify the image path in the additional attribute 'path':\n\n" "< arena ... >\n" " ...\n" "< floor id=\"floor\"\n" " source=\"image\"\n" " path=\"/path/to/imagefile.ext\" />\n" " ...\n" " </arena>\n\n" "Many image formats are  available,
such as  PNG,
JPG  ,
BMP  ,
GIF and many more.\n" "Refer to the FreeImage webpage for a complete list of supported image formats\n" "(http://freeimage.sourceforge.net/features.html).\n\n" "When 'source' is set to 'loop_functions'  ,
as showed in the following  example,
\n" "an image is implicitly created to be used as texture for graphical\n" "visualizations. The algorithm that creates the texture needs to convert from\n" "meters(in the arena) to pixels(of the texture). You control how many pixels\n" "per meter are used with the attribute 'pixels_per_meter'.  Clearly,
the higher\n" "  value,
the higher the  quality,
but also the slower the algorithm and the bigger\n" "the texture. The algorithm is called only once at init  time,
so the fact that\n" "it is slow is not so important.  However,
the image size is limited by OpenGL.\n" "Every implementation has its own  limit,
and you should check yours if any\n" "texture-related problem arises. Now for the example:\n\n" "< arena ... >\n" " ...\n" "< floor id=\"floor\"\n" " source=\"loop_functions\"\n" " pixels_per_meter=\"100\" />\n" " ...\n" " </arena>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being.\n"  ,
"Usable"   
)

◆ REGISTER_ENTITY() [6/10]

argos::REGISTER_ENTITY ( CFootBotEntity  ,
"foot-bot"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The foot-bot  robot,
developed in the Swarmanoid project."  ,
"The foot-bot is a wheeled robot developed in the Swarmanoid Project. It is a\n" "modular robot with a rich set of sensors and actuators. For more  information,
\n" "refer to the dedicated web page\n" "(http://www.swarmanoid.org/swarmanoid_hardware.php).\n\n" "REQUIRED XML CONFIGURATION\n\n" "< arena ... >\n" " ...\n" "< foot-bot id=\"fb0\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </foot-bot>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same  id,
initialization aborts.\n" "The 'body/position' attribute specifies the position of the bottom point of the\n" "foot-bot in the arena. When the robot is untranslated and  unrotated,
the\n" "bottom point is in the origin and it is defined as the middle point between\n" "the two wheels on the XY plane and the lowest point of the robot on the Z\n" "  axis,
that is the point where the wheels touch the floor. The attribute values\n" "are in the  X,
,
Z order.\n" "The 'body/orientation' attribute specifies the orientation of the foot-bot. All\n" "rotations are performed with respect to the bottom point. The order of the\n" "angles is  Z,
,
,
which means that the first number corresponds to the rotation\n" "around the Z  axis,
the second around Y and the last around X. This reflects\n" "the internal convention used in  ARGoS,
in which rotations are performed in\n" "that order. Angles are expressed in degrees. When the robot is  unrotated,
it\n" "is oriented along the X axis.\n" "The 'controller/config' attribute is used to assign a controller to the\n" "foot-bot. The value of the attribute must be set to the id of a previously\n" "defined controller. Controllers are defined in the< controllers > XML subtree.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "You can set the emission range of the range-and-bearing system. By  default,
a\n" "message sent by a foot-bot can be received up to 3m. By using the 'rab_range'\n" "  attribute,
you can change it  to,
i.  e.,
4m as follows:\n\n" "< arena ... >\n" " ...\n" "< foot-bot id=\"fb0\" rab_range=\"4\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </foot-bot>\n" " ...\n" " </arena>\n\n" "You can also set the data sent at each time step through the range-and-bearing\n" "system. By  default,
a message sent by a foot-bot is 10 bytes long. By using the\n" " 'rab_data_size'  attribute,
you can change it  to,
i.  e.,
20 bytes as follows:\n\n" "< arena ... >\n" " ...\n" "< foot-bot id=\"fb0\" rab_data_size=\"20\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </foot-bot>\n" " ...\n" " </arena>\n\n" "You can also configure the battery of the robot. By  default,
the battery never\n" "depletes. You can choose among several battery discharge  models 
)

◆ REGISTER_ENTITY() [7/10]

argos::REGISTER_ENTITY ( CLightEntity  ,
"light"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"A colored light."  ,
"The light entity is an entity that emits a light detectable by a robot camera\n" "(as a normal LED) or by light sensors. A light is  bodyless,
therefore it must\n" "not be added to physics engines.\n" "A light is characterized by a color and an intensity. The color of the light\n" "is perceived by cameras. The intensity modifies the reading of the light\n" "sensors. The higher the  intensity,
the closer the light is perceived.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< arena ... >\n" " ...\n" "< light id=\"light0\"\n" " position=\"0.4,2.3,0.25\"\n" " orientation=\"0,0,0\"\n" " color=\"yellow\"\n" " intensity=\"1.0\"\n" " medium=\"leds\"/>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same  id,
initialization aborts.\n" "The 'position' attribute specifies the position of the center of the light.\n" "The attribute values are in the  X,
,
Z order.\n" "The 'orientation' attribute specifies the orientation of the light. At the\n" "moment this attribute is mandatory but its value is ignored. In the  future,
\n" "it will be used to implement a directional light.\n" "The 'color' attribute specifies the color of the light.\n" "The 'intensity' attribute sets the intensity of the light. When the value is\n" "1.  0,
the light emits a normal amount of light. When it is 0.5 the amount of\n" "light is  half,
and when the value is 2.0 the emission is doubled. The\n" "intensity of the light affects the readings of the light sensors but not\n" "those of the cameras.\n" "The 'medium' attribute is used to add the light the corresponding LED medium.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n"  ,
"Usable"   
)

◆ REGISTER_ENTITY() [8/10]

argos::REGISTER_ENTITY ( CMiniQuadrotorEntity  ,
"mini-quadrotor"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The mini-quadrotor  robot,
developed at UPenn."  ,
"The mini-quadrotor is a fluing robot developed at UPenn by Vijay Kumar's group.\n" "It is a very agile  robot,
able to perform fast and precise movements.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< arena ... >\n" " ...\n" "< mini-quadrotor id=\"mq0\">\n" " <body position=\"0.4,2.3,2.0\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </mini-quadrotor>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same  id,
initialization aborts.\n" "The 'body/position' attribute specifies the position of the bottom point of the\n" "mini-quadrotor in the arena. When the robot is untranslated and  unrotated,
the\n" "bottom point is in the origin and it is defined as the middle point between\n" "the two wheels on the XY plane and the lowest point of the robot on the Z\n" "  axis,
that is the point where the wheels touch the floor. The attribute values\n" "are in the  X,
,
Z order.\n" "The 'body/orientation' attribute specifies the orientation of the\n" "mini-quadrotor. All rotations are performed with respect to the bottom point.\n" "The order of the angles is  Z,
,
,
which means that the first number corresponds\n" "to the rotation around the Z  axis,
the second around Y and the last around X.\n" "This reflects the internal convention used in  ARGoS,
in which rotations are\n" "performed in that order. Angles are expressed in degrees. When the robot is\n" "  unrotated,
it is oriented along the X axis.\n" "The 'controller/config' attribute is used to assign a controller to the\n" "mini-quadrotor. The value of the attribute must be set to the id of a previously\n" "defined controller. Controllers are defined in the< controllers > XML subtree.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n\n"  ,
"Under development"   
)

◆ REGISTER_ENTITY() [9/10]

argos::REGISTER_ENTITY ( CPrototypeEntity  ,
"prototype"  ,
"1.0"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"A generic and configurable entity"  ,
"The prototyping entity allows users to quickly implement new entities using an\n" "experiment's configuration file. A prototype entity is predominantly described\n" "as a set of links connected through joints. The joints can be  fixed,
prismatic  ,
\n" "  revolute,
spherical  ,
or planar. Sensors and actuators for prismatic and revolute\n" "joints are provided. Since each link defines an anchor in the embodied  entity,
\n" "it is also possible to attach the following entities to any link in the model:\n" "the directional LED  entity,
the LED  entity,
the magnet  entity,
the tag  entity,
\n" "the radio  entity,
and the proximity sensor equipped entity.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< arena ... >\n" " ...\n" "< prototype id=\"pt0\" movable=\"true\">\n" " <body position=\"0.1,0.1,0.0\" orientation=\"45,0,0\" />\n" " <links ref=\"base\">\n" " <link id=\"base\" geometry=\"box\" size=\"0.1,0.1,0.1\"\n" " mass=\"1\" position=\"0,0,0\" orientation=\"0,0,0\" />\n" " </prototype>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same id the initialization aborts and the simulator will\n" "terminate. The movable attribute defines whether the reference link of a robot\n" "is fixed or not. This attribute is  useful,
for  example,
if you want to model a\n" "robotic arm whose links are  movable,
but where there is one link(i.e. the\n" "reference link) that is fixed to the  ground,
wall,
or the ceiling.\n" "The body tag defines the position and orientation of the prototype entity in the\n" "global coordinate system. The most simple entity contains a single link and no\n" "joints. An important detail to note is the 'ref' attribute of the links node.\n" "This attribute specifies which link is to be used to refer to the prototype\n" "entity 's location. The example in the required configuration defines a single\n" "link with a box geometry. Three geometries for links are currently supported:\n" "  boxes,
cylinders  ,
and spheres. The size of a box is defined using the size\n" "attribute while cylinders and spheres are defined using a radius attribute and a\n" "height attribute in the case of the cylinder. The mass of each link must be\n" "defined and specified in kilograms. The position and orientation of each link\n" "refer to the offset of the link in the entity 's local coordinate system.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "In the following  example,
additional links and joints are added to a prototype\n" "entity to form a small four-wheeled vehicle.\n\n" "< arena ... >\n" " ...\n" "< prototype id=\"vehicle\" movable=\"true\">\n" " <body position=\"0,0,0\" orientation=\"0,0,0\" />\n" " <links ref=\"base\">\n" " <link id=\"base\" geometry=\"box\" size=\"0.1,0.05,0.02\" mass=\"1\"\n" " position=\"0,0,0.01\" orientation=\"0,0,0\" />\n" " <link id=\"wheel_fl\" geometry=\"cylinder\" radius=\"0.02\" height=\".005\"\n" " mass=\".05\" position=\".025,.025,0.02\" orientation=\"0,0,-90\" />\n" " <link id=\"wheel_fr\" geometry=\"cylinder\" radius=\"0.02\" height=\".005\"\n" " mass=\".05\" position=\".025,-.025,0.02\" orientation=\"0,0,90\" />\n" " <link id=\"wheel_br\" geometry=\"cylinder\" radius=\"0.02\" height=\".005\"\n" " mass=\".05\" position=\"-.025,-.025,0.02\" orientation=\"0,0,90\" />\n" " <link id=\"wheel_bl\" geometry=\"cylinder\" radius=\"0.02\" height=\".005\"\n" " mass=\".05\" position=\"-.025,.025,0.02\" orientation=\"0,0,-90\" />\n" " </links>\n" " <joints>\n" " <joint id=\"base_wheel_fr\" type=\"revolute\" axis=\"0,0,1\">\n" " <parent link=\"base\" position=\".025,-.025,.01\" orientation=\"0,0,90\"/>\n" " <child link=\"wheel_fr\" position=\"0,0,0\" orientation=\"0,0,0\"/>\n" " </joint>\n" " <joint id=\"base_wheel_fl\" type=\"revolute\" axis=\"0,0,1\">\n" " <parent link=\"base\" position=\".025,.025,.01\" orientation=\"0,0,-90\"/>\n" " <child link=\"wheel_fl\" position=\"0,0,0\" orientation=\"0,0,0\"/>\n" " </joint>\n" " <joint id=\"base_wheel_br\" type=\"revolute\" axis=\"0,0,1\">\n" " <parent link=\"base\" position=\"-.025,-.025,.01\" orientation=\"0,0,90\"/>\n" " <child link=\"wheel_br\" position=\"0,0,0\" orientation=\"0,0,0\"/>\n" " </joint>\n" " <joint id=\"base_wheel_bl\" type=\"revolute\" axis=\"0,0,1\">\n" " <parent link=\"base\" position=\"-.025,.025,.01\" orientation=\"0,0,-90\"/>\n" " <child link=\"wheel_bl\" position=\"0,0,0\" orientation=\"0,0,0\"/>\n" " </joint>\n" " </joints>\n" " </prototype>\n" " ...\n" " </arena>\n\n" "In this  example,
there are five links:the base of the vehicle and four wheels.\n" "The wheels are attached to the base using revolute joints. The joint node\n" "requires the joint type attribute and in the case of prismatic and revolute\n" "joints an axis which defines the joint 's degree of freedom. In addition to the\n" "axis  attribute,
prismatic and revolute joints can also be limited using the\n" "limit attribute. In the case of prismatic  joints,
this value is interpreted as a\n" "range in meters and in the case of revolute  joints,
this value is interpreted as\n" "a range in degrees. The maximum and minimum values must be separated with the\n" "colon character. The joint node requires two child  nodes,
namely the parent and\n" "child nodes which describe the links involved in the joint. Each of these nodes\n" "also specifies a position and an  orientation,
which defines the offset from the\n" "link 's local coordinate system to the joint 's reference frame. Note that the\n" "prototype entity is consistent with ARGoS conventions and the origin of all\n" "coordinate systems is at the base of an entity and not at its center of mass.\n" "Prismatic and revolute joints support sensors and actuators which can control\n" "and monitor the position and velocity of a joint. Refer to the documentation on\n" "the joints sensor and joints actuator by querying the joints plugin. It is also\n" "possible to attach any number of devices to the links in a prototype entity:\n\n" "< arena ... >\n" " ...\n" "< prototype id=\"block\" movable=\"true\">\n" " <body position=\"0,0,0\" orientation=\"0,0,0\" />\n" " <links ref=\"base\">\n" " <link id=\"base\" geometry=\"box\" size=\".015,.015,.015\" mass=\"0.1\"\n" " position=\"0,0,0\" orientation=\"0,0,0\" />\n" " </links>\n" " <devices>\n" " <directional_leds medium=\"leds\">\n" " <directional_led anchor=\"base\" color=\"red\" observable_angle=\"180\"\n" " position=\"0,0,.0155\" orientation=\"0,0,0\"/>\n" " </directional_leds>\n" " <tags medium=\"tags\">\n" " <tag position=\"0,0,.0155\" orientation=\"0,0,0\" payload=\"0\"\n" " side_length=\".01\" observable_angle=\"180\" anchor=\"base\"/>\n" " </tags>\n" " <radios medium=\"nfc\">\n" " <radio anchor=\"base\" duplex_mode=\"half\" range=\"1\"\n" " position=\"0,0,0.0075\"/>\n" " </radios>\n" " </devices>\n" " </prototype>\n" " ...\n" " </arena>\n\n" "Each of these devices has three attributes in common: an  anchor,
position,
and\n" "an orientation. Using these attributes you can attach any number of these\n" "entities to any link in the prototype entity since each link creates an anchor.\n" "In addition to these  attributes,
the entities have some attributes that define\n" "their characteristics. For  example,
tags have a side length and  payload,
while\n" "the directional LED has a color. The three devices in the example all require\n" "mediums. These mediums index the entities and allow them to be detected by\n" "sensors."  ,
"Usable"   
)

◆ REGISTER_ENTITY() [10/10]

argos::REGISTER_ENTITY ( CSpiriEntity  ,
"spiri"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The spiri  robot,
developed by Pleiades Robotics."  ,
"The spiri is a quad-rotor developed by Pleiades Robotics. It is a\n" "fully autonomous robot with a rich set of sensors and actuators. For more\n" "  information,
refer to the dedicated web page(http://www.pleaides.ca/).\n\n" "REQUIRED XML CONFIGURATION\n\n" "< arena ... >\n" " ...\n" "< spiri id=\"sp0\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </spiri>\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same  id,
initialization aborts.\n" "The 'body/position' attribute specifies the position of the bottom point of the\n" "spiri in the arena. When the robot is untranslated and  unrotated,
the\n" "bottom point is in the origin and it is defined as the middle point between\n" "the two wheels on the XY plane and the lowest point of the robot on the Z\n" "  axis,
that is the point where the wheels touch the floor. The attribute values\n" "are in the  X,
,
Z order.\n" "The 'body/orientation' attribute specifies the orientation of the spiri. All\n" "rotations are performed with respect to the bottom point. The order of the\n" "angles is  Z,
,
,
which means that the first number corresponds to the rotation\n" "around the Z  axis,
the second around Y and the last around X. This reflects\n" "the internal convention used in  ARGoS,
in which rotations are performed in\n" "that order. Angles are expressed in degrees. When the robot is  unrotated,
it\n" "is oriented along the X axis.\n" "The 'controller/config' attribute is used to assign a controller to the\n" "spiri. The value of the attribute must be set to the id of a previously\n" "defined controller. Controllers are defined in the< controllers > XML subtree.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "You can set the emission range of the range-and-bearing system. By  default,
a\n" "message sent by an spiri can be received up to 3m. By using the 'rab_range'\n" "  attribute,
you can change it  to,
i.  e.,
4m as follows:\n\n" "< arena ... >\n" " ...\n" "< spiri id=\"sp0\" rab_range=\"4\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </spiri>\n" " ...\n" " </arena>\n\n" "You can also set the data sent at each time step through the range-and-bearing\n" "system. By  default,
a message sent by a spiri is 10 bytes long. By using the\n" " 'rab_data_size'  attribute,
you can change it  to,
i.  e.,
20 bytes as follows:\n\n" "< arena ... >\n" " ...\n" "< spiri id=\"sp0\" rab_data_size=\"20\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " </spiri>\n" " ...\n" " </arena>\n\n" "You can also configure the battery of the robot. By  default,
the battery never\n" "depletes. You can choose among several battery discharge  models 
)

◆ REGISTER_ENTITY_OPERATION() [1/2]

argos::REGISTER_ENTITY_OPERATION ( CQTOpenGLOperationDrawNormal  ,
CQTOpenGLWidget  ,
CQTOpenGLOperationDrawPrototypeNormal  ,
void  ,
CPrototypeEntity   
)

◆ REGISTER_ENTITY_OPERATION() [2/2]

argos::REGISTER_ENTITY_OPERATION ( CQTOpenGLOperationDrawSelected  ,
CQTOpenGLWidget  ,
CQTOpenGLOperationDrawPrototypeSelected  ,
void  ,
CPrototypeEntity   
)

◆ REGISTER_MEDIUM() [1/5]

argos::REGISTER_MEDIUM ( CDirectionalLEDMedium  ,
"directional_led"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"Manages directional LED entities."  ,
"This medium is required to manage the directional LED  entities,
so that\n" "the associated camera sensors can find them. If you use a camera  sensor,
\n" "you must add this medium the sensors XML configuration.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< directional_led id=\"led\" />\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being\n"  ,
"Under development"   
)

◆ REGISTER_MEDIUM() [2/5]

argos::REGISTER_MEDIUM ( CLEDMedium  ,
"led"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"Manages the LEDs."  ,
"This medium is required to manage the LED  entities,
thus allowing the\n" "associated camera sensors to work properly. If you intend to use a camera\n" "sensor that detects colored  blobs,
you must add this medium to the XML\n" "configuration file.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< led id=\"led\" />\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being\n"  ,
"Under development"   
)

◆ REGISTER_MEDIUM() [3/5]

argos::REGISTER_MEDIUM ( CRABMedium  ,
"range_and_bearing"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"It simulates the communication across range-and-bearing-equipped robots."  ,
"This medium is required to simulate communication across range-and-bearing-\n" "equipped robots. You need to add it to the <media> section every time you add\n" "a range-and-bearing-equipped entity whose controller has a range-and-bearing\n" "device activated.\n\n" "REQUIRED XML CONFIGURATION\n\n" "<range_and_bearing id=\"rab\" />\n\n" "OPTIONAL XML CONFIGURATION\n\n" "By  default,
the RAB medium requires two robots to be in direct line-of-sight in\n" "order to be able to exchange messages. You can toggle this behavior on or off\n" "through the 'check_occlusions' attribute:\n\n" "< range_and_bearing id=\"rab\" check_occlusions=\"false\" />\n\n"  ,
"Under development"   
)

◆ REGISTER_MEDIUM() [4/5]

argos::REGISTER_MEDIUM ( CRadioMedium  ,
"radio"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"Enables communication between a radio actuator and radio sensor."  ,
"This medium indexes the radio entities in the space and allows\n" "transmitting radios to find nearby receiving radios.\n\n" "REQUIRED XML CONFIGURATION\n\n" "<radio id=\"radios\" />\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being\n"  ,
"Under development"   
)

◆ REGISTER_MEDIUM() [5/5]

argos::REGISTER_MEDIUM ( CTagMedium  ,
"tag"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"Manages tag entities."  ,
"This medium is required to manage the tag  entities,
so that the\n" "associated camera sensors can find them. If you use a camera  sensor,
you\n" "must add this medium the sensors XML configuration.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< tag id=\"qrcodes\" />\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being\n"  ,
"Under development"   
)

◆ REGISTER_PHYSICS_ENGINE() [1/3]

argos::REGISTER_PHYSICS_ENGINE ( CDynamics2DEngine  ,
"dynamics2d"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"A 2D dynamics physics engine."  ,
"This physics engine is a 2D dynamics engine based on the Chipmunk library\n" "(http://code.google.com/p/chipmunk-physics) version 6.0.1.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <physics_engines>\n" " ...\n" " <dynamics2d id=\"dyn2d\" />\n" " ...\n" " </physics_engines>\n\n" "The 'id' attribute is necessary and must be unique among the physics engines.\n" "If two engines share the same  id,
initialization aborts.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to set how many iterations this physics engine performs between\n" "each simulation step. By  default,
this physics engine performs 10 steps every\n" "two simulation steps. This means  that,
if the simulation step is  100ms,
the\n" "physics engine step  is,
by  default,
10ms.  Sometimes,
collisions and joints are\n" "not simulated with sufficient precision using these parameters. By increasing\n" "the number of  iterations,
the temporal granularity of the solver increases and\n" "with it its  accuracy,
at the cost of higher computational cost. To change the\n" "number of iterations per simulation step use this syntax:\n\n" "< physics_engines >\n" " ...\n" "< dynamics2d id=\"dyn2d\"\n" " iterations=\"20\" />\n" " ...\n" " </physics_engines>\n\n" "The plane of the physics engine can be translated on the Z  axis,
to simulate\n" "for example hovering  objects,
such as flying robots. To translate the plane\n" "2m up the Z  axis,
use the 'elevation' attribute as follows:\n\n" "< physics_engines >\n" " ...\n" "< dynamics2d id=\"dyn2d\"\n" " elevation=\"2.0\" />\n" " ...\n" " </physics_engines>\n\n" "When not  specified,
the elevation is  zero,
which means that the plane\n" "corresponds to the XY plane.\n\n" "The friction parameters between the ground and movable boxes and cylinders can\n" "be overridden. You can set both the linear and angular friction parameters.\n" "The default value is 1.49 for each of them. To override the  values,
use this\n" "syntax(all attributes are optional):\n\n" "< physics_engines >\n" " ...\n" "< dynamics2d id=\"dyn2d\">\n" " <friction box_linear_friction=\"1.0\"\n" " box_angular_friction=\"2.0\"\n" " cylinder_linear_friction=\"3.0\"\n" " cylinder_angular_friction=\"4.0\" />\n" " </dynamics2d>\n" " ...\n" " </physics_engines>\n\n" "For the the robots that use velocity-based  control,
such as ground robots with\n" "the differential_steering   actuatore.g. the foot-bot and the e-puck,
it is\n" "possible to customize robot-specific attributes that set the maximum force and\n" "torque the robot has. The syntax is as  follows,
taking a foot-bot as example:\n\n" "< arena ... >\n" " ...\n" "< foot-bot id=\"fb0\">\n" " <body position=\"0.4,2.3,0.25\" orientation=\"45,0,0\" />\n" " <controller config=\"mycntrl\" />\n" " <!-- Specify new value for max_force and max_torque -->\n" " <dynamics2d>\n" " <differential_steering max_force=\"0.1\" max_torque=\"0.1\"/>\n" " </dynamics2d>\n" " </foot-bot>\n" " ...\n" " </arena>\n\n" "The attributes 'max_force' and 'max_torque' are both  optional,
and they take the\n" "robot-specific default if not set. Check the code of the dynamics2d model of the\n" "robot you 're using to know the default values.\n\n" "Multiple physics engines can also be used. If multiple physics engines are  used,
\n" "the disjoint union of the area within the arena assigned to each engine must cover\n" "the entire arena without overlapping. If the entire arena is not  covered,
robots can\n" "\"escape\" the configured physics engines and cause a fatal exception (this is not an\n" "issue when a single physics engine is used, because the engine covers the entire arena\n" "by default). To use multiple physics  engines,
use the following syntax(all attributes\n" "are mandatory):\n\n" "< physics_engines >\n" " ...\n" "< dynamics2d id=\"dyn2d0\">\n" " <boundaries>\n" " <top height=\"1.0\"/>\n" " <botton height=\"0.0\"/>\n" " <sides>\n" " <vertex point=\"0.0, 0.0\"/>\n" " <vertex point=\"4.0, 0.0\"/>\n" " <vertex point=\"4.0, 4.0\"/>\n" " <vertex point=\"0.0, 4.0\"/>\n" " </sides>\n" " </boundaries>\n" " </dynamics2d>\n" " <dynamics2d id=\"dyn2d1\">\n" " ..." " </dynamics2d>\n" " ...\n" " </physics_engines>\n\n" "The 'top' and 'bottom' nodes are relevant for 3D physics engines. For 2D\n" "  engines,
it safe to set their height to 1.0 and 0.  0,
respectively. A physics\n" "engine can be defined having any number of sides >=  3,
as long as the sides form\n" "a closed polygon in the 2D plane. The vertices must be declared in\n" "counter-clockwise order. In the above  example,
the physics engine \"dyn2d0\" is\n" "assigned to the area within the arena with lower-left coordinates (0,0) and\n" "upper-right coordinates (4,4) and vertices are specified in counter clockwise\n" "order: south-  east,
south-  west,
north-  west,
north-east.\n\n" "OPTIMIZATION HINTS\n\n" "1. A single physics engine is generally sufficient for small swarms(say<=50\n" " robots) within a reasonably small arena to obtain faster than real-time\n" " performance with optimized code. For larger swarms and/or large  arenas,
\n" " multiple engines should be used for maximum performance.\n\n" "2. In  general,
using the same number of ARGoS threads as physics engines gives\n" " maximum performance(1-thread per engine per CPU core).\n\n" "3. Using multiple engines in simulations with any of the following\n" " characteristics generally incurs more overhead(due to thread context\n" " switching) than the performance benefits from multiple engines:\n" " - Small swarms\n" " - Small arenas\n" " - Less available ARGoS threads than assigned physics engines\n" " - Less available CPU cores than assigned ARGoS threads\n\n" "4. A good starting strategy for physics engine boundary assignment is to assign\n" " each physics engine the same amount of area within the arena. This will be\n" " sufficient for most cases. Depending on the nature of the  simulation,
using\n" " non-homogeneous physics engine sizes may yield increased performance. An\n" " example would be a narrow hallway between larger open areas in the arena--the\n" " hallway will likely experience increased robot density and assigning more\n" " physics engines to that area than the relatively unpopulated open areas may\n" " increase performance.\n\n" "5. By  default,
this engine uses the bounding-box tree method for collision shape\n" " indexing. This method is the default in Chipmunk and it works well most of\n" " the times.  However,
if you are running simulations with hundreds or thousands\n" " of identical  robots,
a different shape collision indexing is available:the\n" " spatial hash. The spatial hash is a grid stored in a hashmap. To get the max\n" " out of this indexing  method,
you must set two parameters:the cell size and\n" " the suggested minimum number of cells in the space. According to the\n" " documentation of  Chipmunk,
the cell size should correspond to the size of the\n" " bounding box of the most common object in the simulation;the minimum number\n" " of cells should be at least 10x the number of objects managed by the physics\n" " engine. To use this indexing  method,
use this syntax(all attributes are\n" " mandatory):\n\n" "< physics_engines >\n" " ...\n" "< dynamics2d id=\"dyn2d\">\n" " <spatial_hash>\n" " <cell_size=\"1.0\"/>\n" " <cell_num=\"2.0\"/>\n" " </spatial_hash>\n" " </dynamics2d>\n" " ...\n" " </physics_engines>\n"  ,
"Usable"   
)

◆ REGISTER_PHYSICS_ENGINE() [2/3]

argos::REGISTER_PHYSICS_ENGINE ( CDynamics3DEngine  ,
"dynamics3d"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"A 3D dynamics physics engine"  ,
"This physics engine is a 3D dynamics engine based on the Bullet Physics SDK\n" "(https://github.com/bulletphysics/bullet3).\n\n" "REQUIRED XML CONFIGURATION\n\n" " <physics_engines>\n" " ...\n" " <dynamics3d id=\"dyn3d\" />\n" " ...\n" " </physics_engines>\n\n" "The 'id' attribute is necessary and must be unique among the physics engines.\n\n" "Multiple physics engines of this type cannot be  used,
and defining '< boundaries >'\n" "as a child tag under the '< dynamics3d >' tree will result in an initialization error.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to change the default friction used in the simulation from\n" "its initial value of 1.0 using the default_friction attribute as shown\n" "below. For debugging  purposes,
it is also possible to provide a filename\n" "via the debug_file attribute which will cause the Bullet world to be\n" "serialized and written out to a file at the end of each step. This file can\n" "then be opened using the Bullet example browser and can provide useful\n" "insights into the stability of a simulation.\n\n" "< physics_engines >\n" " ...\n" "< dynamics3d id=\"dyn3d\"\n" " default_friction=\"1.0\"\n" " debug_file=\"dynamics3d.bullet\"/>\n" " ...\n" " </physics_engines>\n\n" "The physics engine supports a number of plugins that add features to the\n" "simulation. In the example  below,
a floor plane has been added which has a\n" "height of 1 cm and the dimensions of the floor as specified by the arena\n" "node. It is possible to change the coefficient of friction of the floor\n" "using the friction attribute. This will override the default friction used\n" "by the physics engine. By  default,
there will be no gravity in the\n" "simulation. This can be changed by adding a gravity node with a single\n" "attribute 'g' which is the downwards acceleration caused by gravity.\n" "  Finally,
there is a magnetism plugin. This plugin applies forces and\n" "torques to bodies in the simulation that contains magnetic dipoles. The\n" " 'max_distance' attribute is an optional optimization that sets the maximum\n" "distance at which two magnetic dipoles will interact with each other. In\n" "the example  below,
this distance has been set to 4 cm.\n\n" "< physics_engines >\n" " ...\n" "< dynamics3d id=\"dyn3d\" default_friction=\"2.0\">\n" " <floor height=\"0.01\" friction=\"0.05\"/>\n" " <gravity g=\"10\" />\n" " <magnetism max_distance=\"0.04\" />\n" " </dynamics3d>\n" " ...\n" " </physics_engines>\n\n"  ,
"Usable (multiple engines not supported)"   
)

◆ REGISTER_PHYSICS_ENGINE() [3/3]

argos::REGISTER_PHYSICS_ENGINE ( CPointMass3DEngine  ,
"pointmass3d"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"A 3D point-mass physics engine."  ,
"This physics engine is a 3D point-mass engine.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <physics_engines>\n" " ...\n" " <pointmass3d id=\"pm3d\" />\n" " ...\n" " </physics_engines>\n\n" "The 'id' attribute is necessary and must be unique among the physics engines.\n" "If two engines share the same  id,
initialization aborts.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "By  default,
there will -9.81 m/s gravity in the simulation. This can be\n" "changed by specifying the 'gravity' attribute:\n\n" "< physics_engines >\n" " ...\n" "< pointmass3d id=\"pm3d\" gravity=\"-9.81\"/>\n" " ...\n" " </physics_engines>\n\n" "Multiple physics engines can also be used. If multiple physics engines are  used,
\n" "the disjoint union of the 3D volumes within the arena assigned to each engine must cover\n" "the entire arena without overlapping. If the entire arena is not  covered,
robots can\n" "\"escape\" the configured physics engines and cause a fatal exception (this is not an\n" "issue when a single physics engine is used, because the engine covers the entire arena\n" "by default). To use multiple physics  engines,
use the following syntax(all attributes\n" "are mandatory):\n\n" "< physics_engines >\n" " ...\n" "< pointmass3d id=\"pm0\">\n" " <boundaries>\n" " <top height=\"1.0\"/>\n" " <botton height=\"0.0\"/>\n" " <sides>\n" " <vertex point=\"0.0, 0.0\"/>\n" " <vertex point=\"4.0, 0.0\"/>\n" " <vertex point=\"4.0, 4.0\"/>\n" " <vertex point=\"0.0, 4.0\"/>\n" " </sides>\n" " </boundaries>\n" " </pointmass3d>\n" " <pointmass3d id=\"pm1\">\n" " ...\n" " </pointmass3d>\n" " ...\n" " </physics_engines>\n\n" "A physics engine can be defined having any number of sides >=  3,
as long as the\n" "sides from a closed polygon in the 2D plane(vertices must be declared in the\n" "XML file in counter-clockwise order). In the above  example,
the physics engine\n" " 'pm0' is assigned to the area within the arena with lower left coordinates(0, 0)\n" "and upper right coordinates(4, 4) and vertices are specified in counter\n" "clockwise order:LL  ,
LR  ,
UR  ,
UL.\n\n" "OPTIMIZATION HINTS\n\n" "1. A single physics engine is generally sufficient for small swarms(say<=50\n" " robots) within a reasonably small arena to obtain faster than real-time\n" " performance with optimized code. For larger swarms and/or large arenas multiple\n" " engines should be used for maximum performance.\n\n" "2. In  general,
using the same number of ARGoS threads as physics engines gives\n" " maximum performance(1-thread per engine per CPU core).\n\n" "3. Using multiple engines in simulations with any of the following characteristics\n" " generally incurs more overhead due to thread context switching than the\n" " performance benefits from multiple engines:\n\n" " - Small swarms\n" " - Small arenas\n" " - Less available ARGoS threads than assigned physics engines\n" " - Less available CPU cores than assigned ARGoS threads\n\n" "4. A good starting strategy for physics engine boundary assignment is to assign\n" " each physics engine the same amount of area within the arena. This will be\n" " sufficient for most cases. Depending on the nature of the  simulation,
using\n" " non-homogeneous physics engine sizes may yield increased performance. An example\n" " would be a narrow hallway between larger open areas in the arena--the hallway\n" " will likely experience increased robot density and assigning more physics\n" " engines to that area than the relatively unpopulated open areas may increase\n" " performance.\n\n"  ,
"Usable"   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [1/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawNormal  ,
CQTOpenGLOperationDrawBoxNormal  ,
CBoxEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [2/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawNormal  ,
CQTOpenGLOperationDrawCylinderNormal  ,
CCylinderEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [3/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawNormal  ,
CQTOpenGLOperationDrawEPuckNormal  ,
CEPuckEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [4/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawNormal  ,
CQTOpenGLOperationDrawEyeBotNormal  ,
CEyeBotEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [5/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawNormal  ,
CQTOpenGLOperationDrawFootBotNormal  ,
CFootBotEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [6/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawNormal  ,
CQTOpenGLOperationDrawLightNormal  ,
CLightEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [7/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawNormal  ,
CQTOpenGLOperationDrawMiniQuadrotorNormal  ,
CMiniQuadrotorEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [8/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawNormal  ,
CQTOpenGLOperationDrawSpiriNormal  ,
CSpiriEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [9/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawSelected  ,
CQTOpenGLOperationDrawBoxSelected  ,
CBoxEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [10/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawSelected  ,
CQTOpenGLOperationDrawCylinderSelected  ,
CCylinderEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [11/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawSelected  ,
CQTOpenGLOperationDrawEPuckSelected  ,
CEPuckEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [12/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawSelected  ,
CQTOpenGLOperationDrawEyeBotSelected  ,
CEyeBotEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [13/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawSelected  ,
CQTOpenGLOperationDrawFootBotSelected  ,
CFootBotEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [14/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawSelected  ,
CQTOpenGLOperationDrawLightSelected  ,
CLightEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [15/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawSelected  ,
CQTOpenGLOperationDrawMiniQuadrotorSelected  ,
CMiniQuadrotorEntity   
)

◆ REGISTER_QTOPENGL_ENTITY_OPERATION() [16/16]

argos::REGISTER_QTOPENGL_ENTITY_OPERATION ( CQTOpenGLOperationDrawSelected  ,
CQTOpenGLOperationDrawSpiriSelected  ,
CSpiriEntity   
)

◆ REGISTER_SENSOR() [1/21]

argos::REGISTER_SENSOR ( CBatteryDefaultSensor  ,
"battery"  ,
"default"  ,
"Adhavan Jayabalan "  [jadhu94 @gmail.com],
"1.0"  ,
"A generic battery level sensor."  ,
"This sensor returns the current battery level of a robot. This sensor\n" "can be used with any  robot,
since it accesses only the body component. In\n" "  controllers,
you must include the ci_battery_sensor.h header.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< battery implementation=\"default\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to add uniform noise to the  sensor,
thus matching the\n" "characteristics of a real robot better. You can add noise through the\n" "attribute 'noise_range' as follows:\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< battery implementation=\"default\"\n" " noise_range=\"-0.3:0.4\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n"  ,
"Usable"   
)

◆ REGISTER_SENSOR() [2/21]

argos::REGISTER_SENSOR ( CCameraDefaultSensor  ,
"cameras"  ,
"default"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"A generic multi-camera sensor capable of running various algorithms"  ,
"The generic multi-camera sensor can be attached to any composable entity in\n" "ARGoS that contains an embodied entity with at least one anchor. The sensor\n" "can be initialized with a number of cameras each running different algorithms\n" "for detecting different objects in the simulation. The sensor is designed so\n" "that algorithms can project a feature in the simulation on to the virtual\n" "sensor and store its 2D pixel coordinates as a reading. The implementation\n" "of algorithms that behave  differently,
however  ,
is also possible.\n\n" "This sensor is disabled by  default,
and must be enabled before it can be\n" "used.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< cameras implementation=\"default\"/>\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the frustum of each camera sensor in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. To turn this functionality  on,
add the\n" "attribute \"show_frustum\" as follows:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <cameras implementation=\"default\" show_frustum=\"true\"/>\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "To add a camera to the  plugin,
create a camera node as shown in the following\n" "example. A camera is defined by its   rangehow close and how far the camera\n" "can see,
its anchor and its position and orientation offsets from that\n" "that  anchor,
its focal length and principal   pointwhich define the\n" "projection matrix,
and its resolution.\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< cameras implementation=\"default\" show_frustum=\"true\">\n" " <camera id=\"camera0\" range=\"0.025:0.25\" anchor=\"origin\"\n" " position=\"0.1,0,0.1\" orientation=\"90,-90,0\"\n" " focal_length=\"800,800\" principal_point=\"320,240\"\n" " resolution=\"640,480\"/>\n" " </cameras>\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "To run an algorithm on the camera  sensor,
simply add the algorithm as a node\n" "under the camera node. At the time of  writing,
three algorithms are available\n" "by default:led_detector  ,
directional_led_detector  ,
and tag_detector. Each of\n" "algorithms requires a medium attribute that specifies the medium where the\n" "target entities are indexed. By setting the show_rays attribute to  true,
you\n" "can see whether or not a target was partially occluded by another object in\n" "the simulation. For example:\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< cameras implementation=\"default\" show_frustum=\"true\">\n" " <camera id=\"camera0\" range=\"0.025:0.25\" anchor=\"origin\"\n" " position=\"0.1,0,0.1\" orientation=\"90,-90,0\"\n" " focal_length=\"800,800\" principal_point=\"320,240\"\n" " resolution=\"640,480\">\n" " <led_detector medium=\"leds\" show_rays=\"true\"/>\n" " </camera>\n" " </cameras>\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n"  ,
"Usable"   
)

◆ REGISTER_SENSOR() [3/21]

argos::REGISTER_SENSOR ( CColoredBlobOmnidirectionalCameraRotZOnlySensor  ,
"colored_blob_omnidirectional_camera"  ,
"rot_z_only"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"A generic omnidirectional camera sensor to detect colored blobs."  ,
"This sensor accesses an omnidirectional camera that detects colored blobs. The\n" "sensor returns a list of  blobs,
each defined by a color and a position with\n" "respect to the robot reference point on the ground. In  controllers,
you must\n" "include the ci_colored_blob_omnidirectional_camera_sensor.h header.\n\n" "This sensor is disabled by  default,
and must be enabled before it can be\n" "used.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< colored_blob_omnidirectional_camera implementation=\"rot_z_only\"\n" " medium=\"leds\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'medium' attribute must be set to the id of the leds medium declared in the\n" "<media> section.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the camera sensor in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. In  OpenGL,
the rays are drawn in cyan when\n" "they are not obstructed and in purple when they are. In case a ray is\n" "  obstructed,
a black dot is drawn where the intersection occurred.\n" "To turn this functionality  on,
add the attribute \"show_rays\" as in this\n" "example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <colored_blob_omnidirectional_camera implementation=\"rot_z_only\"\n" " medium=\"leds\" />\n" "  show_rays = \"true\" />\n" "        ...\n" "      </sensors>\n" "      ...\n" "    </my_controller>\n" "    ...\n" "  </controllers>\n\n" "It is possible to add uniform noise to the blobs, thus matching the\n" "characteristics of a real robot better. This can be done with the attribute\n" "\"noise_std_dev\".\n\n" "  <controllers>\n" "    ...\n" "    <my_controller ...>\n" "      ...\n" "      <sensors>\n" "        ...\n" "        <colored_blob_omnidirectional_camera implementation=\"rot_z_only\"\n" "                                             medium=\"leds\" />\n" "                                             noise_std_dev=\"0.1\" />\n" "        ...\n" "      </sensors>\n" "      ...\n" "    </my_controller>\n" "    ...\n" "  </controllers>\n\n" "OPTIMIZATION HINTS\n\n" "1. For small swarms, enabling the sensor (and therefore causing ARGoS to\n" "   update its readings each timestep) unconditionally does not impact performance too\n" "   much. For large swarms, it can impact performance, and selectively\n" "   enabling/disabling the sensor according to when each individual robot needs it\n" "   (e.g., only when it is looking for an LED equipped entity) can increase performance\n" "   by only requiring ARGoS to update the readings on timesteps they will be used.\n",
"Usable"   
)

◆ REGISTER_SENSOR() [4/21]

argos::REGISTER_SENSOR ( CColoredBlobPerspectiveCameraDefaultSensor  ,
"colored_blob_perspective_camera"  ,
"default"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"A generic perspective camera sensor to detect colored blobs."  ,
"This sensor accesses an perspective camera that detects colored blobs. The\n" "sensor returns a list of  blobs,
each defined by a color and a position with\n" "respect to the robot reference point on the ground. In  controllers,
you must\n" "include the ci_colored_blob_perspective_camera_sensor.h header.\n\n" "This sensor is disabled by  default,
and must be enabled before it can be\n" "used.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< colored_blob_perspective_camera implementation=\"default\"\n" " medium=\"leds\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'medium' attribute must be set to the id of the leds medium declared in the\n" "<media> section.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the camera sensor in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. In  OpenGL,
the rays are drawn in cyan when\n" "they are not obstructed and in purple when they are. In case a ray is\n" "  obstructed,
a black dot is drawn where the intersection occurred.\n" "To turn this functionality  on,
add the attribute \"show_rays\" as in this\n" "example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <colored_blob_perspective_camera implementation=\"default\"\n" " medium=\"leds\" />\n" "  show_rays = \"true\" />\n" "        ...\n" "      </sensors>\n" "      ...\n" "    </my_controller>\n" "    ...\n" "  </controllers>\n\n" "It is possible to add uniform noise to the blobs, thus matching the\n" "characteristics of a real robot better. This can be done with the attribute\n" "\"noise_std_dev\".\n\n" "  <controllers>\n" "    ...\n" "    <my_controller ...>\n" "      ...\n" "      <sensors>\n" "        ...\n" "        <colored_blob_perspective_camera implementation=\"default\"\n" "                                         medium=\"leds\" />\n" "                                         noise_std_dev=\"0.1\" />\n" "        ...\n" "      </sensors>\n" "      ...\n" "    </my_controller>\n" "    ...\n" "  </controllers>\n",
"Usable"   
)

◆ REGISTER_SENSOR() [5/21]

argos::REGISTER_SENSOR ( CDifferentialSteeringDefaultSensor  ,
"differential_steering"  ,
"default"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"A generic differential steering sensor."  ,
"This sensor returns the current position and orientation of a robot. This sensor\n" "can be used with any  robot,
since it accesses only the body component. In\n" "  controllers,
you must include the ci_differential_steering_sensor.h header.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< differential_steering implementation=\"default\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to add uniform noise to the  sensor,
thus matching the\n" "characteristics of a real robot better. You can add noise through the\n" "attributes 'vel_noise_range' and 'dist_noise_range'.\n" "Attribute 'vel_noise_range' regulates the noise range on the velocity returned\n" "by the sensor. Attribute 'dist_noise_range' sets the noise range on the\n" "distance covered by the wheels.\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< differential_steering implementation=\"default\"\n" " vel_noise_range=\"-0.1:0.2\"\n" " dist_noise_range=\"-10.5:13.7\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n"  ,
"Usable"   
)

◆ REGISTER_SENSOR() [6/21]

argos::REGISTER_SENSOR ( CEPuckProximityDefaultSensor  ,
"epuck_proximity"  ,
"default"  ,
"Danesh Tarapore "  [daneshtarapore @gmail.com],
"1.0"  ,
"The E-Puck proximity sensor."  ,
"This sensor accesses the epuck proximity sensor. For a complete description\n" "of its  usage,
refer to the ci_epuck_proximity_sensor.h interface. For the XML\n" "  configuration,
refer to the default proximity sensor.\n"  ,
"Usable"   
)

◆ REGISTER_SENSOR() [7/21]

argos::REGISTER_SENSOR ( CEyeBotLightRotZOnlySensor  ,
"eyebot_light"  ,
"rot_z_only"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The eye-bot light sensor (optimized for 2D)."  ,
"This sensor accesses a set of light sensors. The sensors all return a value\n" "between 0 and  1,
where 0 means nothing within range and 1 means the perceived\n" "light saturates the sensor. Values between 0 and 1 depend on the distance of\n" "the perceived light. Each reading R is calculated with  R = (I/x)^2,
where x is the\n" "distance between a sensor and the  light,
and I is the reference intensity of the\n" "perceived light. The reference intensity corresponds to the minimum distance at\n" "which the light saturates a sensor. The reference intensity depends on the\n" "individual  light,
and it is set with the \"intensity\" attribute of the light\n" "entity. In case multiple lights are present in the  environment,
each sensor\n" "reading is calculated as the sum of the individual readings due to each light.\n" "In other  words,
light wave interference is not taken into account. In\n" "  controllers,
you must include the ci_light_sensor.h header.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< eyebot_light implementation=\"rot_z_only\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the light sensor in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. In  OpenGL,
the rays are drawn in cyan when\n" "they are not obstructed and in purple when they are. In case a ray is\n" "  obstructed,
a black dot is drawn where the intersection occurred.\n" "To turn this functionality  on,
add the attribute \"show_rays\" as in this\n" "example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <eyebot_light implementation=\"rot_z_only\"\n" " show_rays=\"true\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "It is possible to add uniform noise to the  sensors,
thus matching the\n" "characteristics of a real robot better. This can be done with the attribute\n" "\"noise_level\"  ,
whose allowed range is in and is added to the calculated\n" "reading. The final sensor reading is always normalized in the range.\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< eyebot_light implementation=\"rot_z_only\"\n" " noise_level=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n"  [-1, 1][0-1],
"Usable"   
)

◆ REGISTER_SENSOR() [8/21]

argos::REGISTER_SENSOR ( CEyeBotProximityDefaultSensor  ,
"eyebot_proximity"  ,
"default"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The eye-bot proximity sensor."  ,
"This sensor accesses the eye-bot proximity sensor. For a complete description\n" "of its  usage,
refer to the ci_eyebot_proximity_sensor.h interface. For the XML\n" "  configuration,
refer to the default proximity sensor.\n"  ,
"Usable"   
)

◆ REGISTER_SENSOR() [9/21]

argos::REGISTER_SENSOR ( CFootBotBaseGroundRotZOnlySensor  ,
"footbot_base_ground"  ,
"rot_z_only"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The foot-bot base ground sensor."  ,
"This sensor accesses the foot-bot base ground sensor. For a complete description\n" "of its  usage,
refer to the ci_footbot_base_ground_sensor.h interface. For the XML\n" "  configuration,
refer to the default ground sensor.\n"  ,
"Usable"   
)

◆ REGISTER_SENSOR() [10/21]

argos::REGISTER_SENSOR ( CFootBotDistanceScannerRotZOnlySensor  ,
"footbot_distance_scanner"  ,
"rot_z_only"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The foot-bot distance scanner sensor (optimized for 2D)."  ,
"This sensor accesses the foot-bot distance scanner sensor. For a complete\n" "description of its  usage,
refer to the common interface.\n" "In this  implementation,
the readings are calculated under the assumption that\n" "the foot-bot is always parallel to the XY  plane,
i.  e.,
it rotates only around\n" "the Z axis. This implementation is faster than a 3D one and should be used\n" "only when the assumption about the foot-bot rotation holds.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< footbot_distance_scanner implementation=\"rot_z_only\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the distance scanner in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. In  OpenGL,
the rays are drawn in cyan when\n" "they are not obstructed and in purple when they are. In case a ray is\n" "  obstructed,
a black dot is drawn where the intersection occurred.\n" "To turn this functionality  on,
add the attribute '  show_rays = \"true\"' in the\n" "XML as in this example:\n\n" "  <controllers>\n" "    ...\n" "    <my_controller ...>\n" "      ...\n" "      <sensors>\n" "        ...\n" "        <footbot_distance_scanner implementation=\"rot_z_only\"\n" "                                  show_rays=\"true\" />\n" "        ...\n" "      </sensors>\n" "      ...\n" "    </my_controller>\n" "    ...\n" "  </controllers>\n",
"Usable"   
)

◆ REGISTER_SENSOR() [11/21]

argos::REGISTER_SENSOR ( CFootBotLightRotZOnlySensor  ,
"footbot_light"  ,
"rot_z_only"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The foot-bot light sensor (optimized for 2D)."  ,
"This sensor accesses a set of light sensors. The sensors all return a value\n" "between 0 and  1,
where 0 means nothing within range and 1 means the perceived\n" "light saturates the sensor. Values between 0 and 1 depend on the distance of\n" "the perceived light. Each reading R is calculated with  R = (I/x)^2,
where x is the\n" "distance between a sensor and the  light,
and I is the reference intensity of the\n" "perceived light. The reference intensity corresponds to the minimum distance at\n" "which the light saturates a sensor. The reference intensity depends on the\n" "individual  light,
and it is set with the \"intensity\" attribute of the light\n" "entity. In case multiple lights are present in the  environment,
each sensor\n" "reading is calculated as the sum of the individual readings due to each light.\n" "In other  words,
light wave interference is not taken into account. In\n" "  controllers,
you must include the ci_light_sensor.h header.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< footbot_light implementation=\"rot_z_only\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the light sensor in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. In  OpenGL,
the rays are drawn in cyan when\n" "they are not obstructed and in purple when they are. In case a ray is\n" "  obstructed,
a black dot is drawn where the intersection occurred.\n" "To turn this functionality  on,
add the attribute \"show_rays\" as in this\n" "example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <footbot_light implementation=\"rot_z_only\"\n" " show_rays=\"true\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "It is possible to add uniform noise to the  sensors,
thus matching the\n" "characteristics of a real robot better. This can be done with the attribute\n" "\"noise_level\"  ,
whose allowed range is in and is added to the calculated\n" "reading. The final sensor reading is always normalized in the range.\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< footbot_light implementation=\"rot_z_only\"\n" " noise_level=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n"  [-1, 1][0-1],
"Usable"   
)

◆ REGISTER_SENSOR() [12/21]

argos::REGISTER_SENSOR ( CFootBotMotorGroundRotZOnlySensor  ,
"footbot_motor_ground"  ,
"rot_z_only"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The foot-bot motor ground sensor."  ,
"This sensor accesses the foot-bot motor ground sensor. For a complete description\n" "of its  usage,
refer to the ci_footbot_motor_ground_sensor.h interface. For the XML\n" "  configuration,
refer to the default ground sensor.\n"  ,
"Usable"   
)

◆ REGISTER_SENSOR() [13/21]

argos::REGISTER_SENSOR ( CFootBotProximityDefaultSensor  ,
"footbot_proximity"  ,
"default"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The foot-bot proximity sensor."  ,
"This sensor accesses the foot-bot proximity sensor. For a complete description\n" "of its  usage,
refer to the ci_footbot_proximity_sensor.h interface. For the XML\n" "  configuration,
refer to the default proximity sensor.\n"  ,
"Usable"   
)

◆ REGISTER_SENSOR() [14/21]

argos::REGISTER_SENSOR ( CFootBotTurretEncoderDefaultSensor  ,
"footbot_turret_encoder"  ,
"default"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The foot-bot turret encoder sensor."  ,
"This sensor accesses the foot-bot turret encoder. For a complete\n" "description of its  usage,
refer to the ci_footbot_turret_encoder_sensor\n" "file.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< footbot_turret_encoder implementation=\"default\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being.\n"  ,
"Usable"   
)

◆ REGISTER_SENSOR() [15/21]

argos::REGISTER_SENSOR ( CGroundRotZOnlySensor  ,
"ground"  ,
"rot_z_only"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"A generic ground sensor (optimized for 2D)."  ,
"This sensor accesses a set of ground sensors. The sensors all return a value\n" "between 0 and  1,
where 0 means black and 1 means white. Depending on the type\n" "of ground  sensor,
readings can either take 0 or 1 as value(bw sensors) or a\n" "value in between(grayscale sensors). In  controllers,
you must include the\n" "ci_ground_sensor.h header.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< ground implementation=\"rot_z_only\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to add uniform noise to the  sensors,
thus matching the\n" "characteristics of a real robot better. This can be done with the attribute\n" "\"noise_level\"  ,
whose allowed range is in and is added to the calculated\n" "reading. The final sensor reading is always normalized in the range.\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< ground implementation=\"rot_z_only\"\n" " noise_level=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n"  [-1, 1][0-1],
"Usable"   
)

◆ REGISTER_SENSOR() [16/21]

argos::REGISTER_SENSOR ( CLightDefaultSensor  ,
"light"  ,
"default"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"A generic light sensor."  ,
"This sensor accesses a set of light sensors. The sensors all return a value\n" "between 0 and  1,
where 0 means nothing within range and 1 means the perceived\n" "light saturates the sensor. Values between 0 and 1 depend on the distance of\n" "the perceived light. Each reading R is calculated with  R = (I/x)^2,
where x is the\n" "distance between a sensor and the  light,
and I is the reference intensity of the\n" "perceived light. The reference intensity corresponds to the minimum distance at\n" "which the light saturates a sensor. The reference intensity depends on the\n" "individual  light,
and it is set with the \"intensity\" attribute of the light\n" "entity. In case multiple lights are present in the  environment,
each sensor\n" "reading is calculated as the sum of the individual readings due to each light.\n" "In other  words,
light wave interference is not taken into account. In\n" "  controllers,
you must include the ci_light_sensor.h header.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< light implementation=\"default\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the light sensor in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. In  OpenGL,
the rays are drawn in cyan when\n" "they are not obstructed and in purple when they are. In case a ray is\n" "  obstructed,
a black dot is drawn where the intersection occurred.\n" "To turn this functionality  on,
add the attribute \"show_rays\" as in this\n" "example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <light implementation=\"default\"\n" " show_rays=\"true\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "It is possible to add uniform noise to the  sensors,
thus matching the\n" "characteristics of a real robot better. This can be done with the attribute\n" "\"noise_level\"  ,
whose allowed range is in and is added to the calculated\n" "reading. The final sensor reading is always normalized in the range.\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< light implementation=\"default\"\n" " noise_level=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIMIZATION HINTS\n\n" "1. For small  swarms[-1, 1][0-1],
enabling the light sensor(and therefore causing ARGoS to\n" " update its readings each timestep) unconditionally does not impact performance too\n" " much. For large  swarms,
it can impact  performance,
and selectively\n" " enabling/disabling the light sensor according to when each individual robot needs it\n" "(e.g., only when it is returning to the nest from foraging) can increase performance\n" " by only requiring ARGoS to update the readings for a robot on the timesteps will be\n" " used.\n"  ,
"Usable"   
)

◆ REGISTER_SENSOR() [17/21]

argos::REGISTER_SENSOR ( CPositioningDefaultSensor  ,
"positioning"  ,
"default"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"A generic positioning sensor."  ,
"This sensor returns the current position and orientation of a robot. This sensor\n" "can be used with any  robot,
since it accesses only the body component. In\n" "  controllers,
you must include the ci_positioning_sensor.h header.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< positioning implementation=\"default\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to add uniform noise to the  sensor,
thus matching the\n" "characteristics of a real robot better. You can add noise through the\n" "attributes 'pos_noise_range'  ,
'angle_noise_range'  ,
and 'axis_noise_range'.\n" "Attribute 'pos_noise_range' regulates the noise range on the position returned\n" "by the sensor. Attribute 'angle_noise_range' sets the noise range on the angle\n" "(values expressed in degrees). Attribute 'axis_noise_range' sets the noise for\n" "the rotation axis. Angle and axis are used to calculate a  quaternion,
which is\n" "the actual returned value for rotation.\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< positioning implementation=\"default\"\n" " pos_noise_range=\"-0.1:0.2\"\n" " angle_noise_range=\"-10.5:13.7\"\n" " axis_noise_range=\"-0.3:0.4\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n"  ,
"Usable"   
)

◆ REGISTER_SENSOR() [18/21]

argos::REGISTER_SENSOR ( CPrototypeJointsDefaultSensor  ,
"joints"  ,
"default"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"The prototype joints sensor: monitors a prototype entity's joints."  ,
"This sensor is used to monitor the joints inside a prototype entity. To monitor\n" "a  joint,
add a joint child node to the joints node. Each child node has two\n" "required attributes.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< joints implementation=\"default\">\n" " <joint id=\"joint0\" mode=\"velocity\" />\n" " <joint id=\"joint1\" mode=\"position\" />\n" " ...\n" " </joints>\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'id' attribute specifies which joint in the prototype joint equipped entity\n" "we are interested in monitoring. The 'mode' attribute has three options:\n" "  disabled,
position  ,
and velocity. The disabled mode is self-explanatory. The\n" "position mode measures the displacement of the joint from its initial position\n" "or orientation(depending on whether the specified joint is prismatic or\n" "revolute). The reading from the joint is reported in either meters or radians\n" "respectively. The velocity mode measures the how much the position or\n" "orientation of the joint is changing every second.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None."  ,
"Usable"   
)

◆ REGISTER_SENSOR() [19/21]

argos::REGISTER_SENSOR ( CProximityDefaultSensor  ,
"proximity"  ,
"default"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"A generic proximity sensor."  ,
"This sensor accesses a set of proximity sensors. The sensors all return a value\n" "between 0 and  1,
where 0 means nothing within range and 1 means an external\n" "object is touching the sensor. Values between 0 and 1 depend on the distance of\n" "the occluding  object,
and are calculated as  value = exp(-distance). In\n" "controllers,
you must include the ci_proximity_sensor.h header.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< proximity implementation=\"default\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the proximity sensor in the OpenGL\n" "visualization. This can be useful for sensor debugging but also to understand\n" "what's wrong in your controller. In  OpenGL,
the rays are drawn in cyan when\n" "they are not obstructed and in purple when they are. In case a ray is\n" "  obstructed,
a black dot is drawn where the intersection occurred.\n" "To turn this functionality  on,
add the attribute \"show_rays\" as in this\n" "example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <proximity implementation=\"default\"\n" " show_rays=\"true\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "It is possible to add uniform noise to the  sensors,
thus matching the\n" "characteristics of a real robot better. This can be done with the attribute\n" "\"noise_level\"  ,
whose allowed range is in and is added to the calculated\n" "reading. The final sensor reading is always normalized in the range.\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< proximity implementation=\"default\"\n" " noise_level=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n"  [-1, 1][0-1],
"Usable"   
)

◆ REGISTER_SENSOR() [20/21]

argos::REGISTER_SENSOR ( CRadiosDefaultSensor  ,
"radios"  ,
"default"  ,
"Michael Allwright "  [allsey87 @gmail.com],
"1.0"  ,
"A generic radio sensor to receive messages from nearby radios."  ,
"This radio sensor implementation allows an arbitary number of messages\n" "containing an arbitary number of bytes to be received from nearby robots. The\n" "implementation is very basic and any concepts such as  throughput,
addressing  ,
\n" "or formatting of a message 's contents is beyond the scope of this sensor 's\n" "implementation\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< radios implementation=\"default\" medium=\"radios\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'medium' attribute sets the id of the radio medium declared in the <media>\n" "XML section.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None.\n"  ,
"Usable"   
)

◆ REGISTER_SENSOR() [21/21]

argos::REGISTER_SENSOR ( CRangeAndBearingMediumSensor  ,
"range_and_bearing"  ,
"medium"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"The range-and-bearing sensor."  ,
"This sensor allows robots to perform situated  communication,
i.  e.,
a form of\n" "wireless communication whereby the receiver also knows the location of the\n" "sender with respect to its own frame of reference.\n" "This implementation of the range-and-bearing sensor is associated to the\n" "range-and-bearing medium. To be able to use this  sensor,
you must add a\n" "range-and-bearing medium to the< media > section.\n" "This sensor allows a robot to receive messages. To send  messages,
you need the\n" "range-and-bearing actuator.\n" "To use this  sensor,
in controllers you must include the\n" "ci_range_and_bearing_sensor.h header.\n\n" "This sensor is enabled by default.\n\n" "REQUIRED XML CONFIGURATION\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< range_and_bearing implementation=\"medium\"\n" " medium=\"rab\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "The 'medium' attribute must be set to the id of the range-and-bearing medium\n" "declared in the <media> section.\n\n" "OPTIONAL XML CONFIGURATION\n\n" "It is possible to draw the rays shot by the range-and-bearing sensor in the\n" "OpenGL visualization. This can be useful for sensor debugging but also to\n" "understand what's wrong in your controller. In  OpenGL,
the rays are drawn in\n" "cyan when two robots are communicating.\n" "To turn this functionality  on,
add the attribute \"show_rays\" as in this\n" "example:\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <sensors>\n" " ...\n" " <range_and_bearing implementation=\"medium\"\n" " medium=\"rab\"\n" " show_rays=\"true\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "It is possible to add noise to the  readings,
thus matching the characteristics\n" "of a real robot better. Noise is implemented as a random vector added to the\n" "vector joining two communicating robots. For the random  vector,
the inclination\n" "and azimuth are chosen uniformly in the range  and[0:PI][0:2PI],
respectively  ,
\n" "and the length is drawn from a Gaussian distribution. The standard deviation of\n" "the Gaussian distribution is expressed in meters and set by the user through\n" "the attribute 'noise_std_dev' as shown in this example:\n\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< range_and_bearing implementation=\"medium\"\n" " medium=\"rab\"\n" " noise_std_dev=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "In  addition,
it is possible to specify the probability that a packet gets lost\n" "even though the robot should have received it(i.e., packet dropping). To set\n" "this  probability,
use the attribute 'packet_drop_prob' as shown in the example:\n" "< controllers >\n" " ...\n" "< my_controller ... >\n" " ...\n" "< sensors >\n" " ...\n" "< range_and_bearing implementation=\"medium\"\n" " medium=\"rab\"\n" " packet_drop_prob=\"0.1\" />\n" " ...\n" " </sensors>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n"  ,
"Usable"   
)

◆ REGISTER_SPACE_OPERATION() [1/11]

◆ REGISTER_SPACE_OPERATION() [2/11]

argos::REGISTER_SPACE_OPERATION ( CSpaceOperationAddEntity  ,
CSpaceOperationAddCFloorEntity  ,
CFloorEntity   
)

◆ REGISTER_SPACE_OPERATION() [3/11]

argos::REGISTER_SPACE_OPERATION ( CSpaceOperationAddEntity  ,
CSpaceOperationAddCLEDEntity  ,
CLEDEntity   
)

◆ REGISTER_SPACE_OPERATION() [4/11]

argos::REGISTER_SPACE_OPERATION ( CSpaceOperationAddEntity  ,
CSpaceOperationAddCRABEquippedEntity  ,
CRABEquippedEntity   
)

◆ REGISTER_SPACE_OPERATION() [5/11]

argos::REGISTER_SPACE_OPERATION ( CSpaceOperationAddEntity  ,
CSpaceOperationAddCRadioEntity  ,
CRadioEntity   
)

◆ REGISTER_SPACE_OPERATION() [6/11]

argos::REGISTER_SPACE_OPERATION ( CSpaceOperationAddEntity  ,
CSpaceOperationAddCTagEntity  ,
CTagEntity   
)

◆ REGISTER_SPACE_OPERATION() [7/11]

◆ REGISTER_SPACE_OPERATION() [8/11]

argos::REGISTER_SPACE_OPERATION ( CSpaceOperationRemoveEntity  ,
CSpaceOperationRemoveCLEDEntity  ,
CLEDEntity   
)

◆ REGISTER_SPACE_OPERATION() [9/11]

◆ REGISTER_SPACE_OPERATION() [10/11]

argos::REGISTER_SPACE_OPERATION ( CSpaceOperationRemoveEntity  ,
CSpaceOperationRemoveCRadioEntity  ,
CRadioEntity   
)

◆ REGISTER_SPACE_OPERATION() [11/11]

argos::REGISTER_SPACE_OPERATION ( CSpaceOperationRemoveEntity  ,
CSpaceOperationRemoveCTagEntity  ,
CTagEntity   
)

◆ REGISTER_STANDARD_DYNAMICS2D_OPERATIONS_ON_ENTITY() [1/4]

argos::REGISTER_STANDARD_DYNAMICS2D_OPERATIONS_ON_ENTITY ( CBoxEntity  ,
CDynamics2DBoxModel   
)

◆ REGISTER_STANDARD_DYNAMICS2D_OPERATIONS_ON_ENTITY() [2/4]

argos::REGISTER_STANDARD_DYNAMICS2D_OPERATIONS_ON_ENTITY ( CCylinderEntity  ,
CDynamics2DCylinderModel   
)

◆ REGISTER_STANDARD_DYNAMICS2D_OPERATIONS_ON_ENTITY() [3/4]

argos::REGISTER_STANDARD_DYNAMICS2D_OPERATIONS_ON_ENTITY ( CEPuckEntity  ,
CDynamics2DEPuckModel   
)

◆ REGISTER_STANDARD_DYNAMICS2D_OPERATIONS_ON_ENTITY() [4/4]

argos::REGISTER_STANDARD_DYNAMICS2D_OPERATIONS_ON_ENTITY ( CFootBotEntity  ,
CDynamics2DFootBotModel   
)

◆ REGISTER_STANDARD_DYNAMICS3D_OPERATIONS_ON_ENTITY() [1/4]

argos::REGISTER_STANDARD_DYNAMICS3D_OPERATIONS_ON_ENTITY ( CBoxEntity  ,
CDynamics3DBoxModel   
)

◆ REGISTER_STANDARD_DYNAMICS3D_OPERATIONS_ON_ENTITY() [2/4]

argos::REGISTER_STANDARD_DYNAMICS3D_OPERATIONS_ON_ENTITY ( CCylinderEntity  ,
CDynamics3DCylinderModel   
)

◆ REGISTER_STANDARD_DYNAMICS3D_OPERATIONS_ON_ENTITY() [3/4]

argos::REGISTER_STANDARD_DYNAMICS3D_OPERATIONS_ON_ENTITY ( CEPuckEntity  ,
CDynamics3DEPuckModel   
)

◆ REGISTER_STANDARD_DYNAMICS3D_OPERATIONS_ON_ENTITY() [4/4]

argos::REGISTER_STANDARD_DYNAMICS3D_OPERATIONS_ON_ENTITY ( CPrototypeEntity  ,
CDynamics3DPrototypeModel   
)

◆ REGISTER_STANDARD_PHYSX_OPERATIONS_ON_ENTITY() [1/3]

argos::REGISTER_STANDARD_PHYSX_OPERATIONS_ON_ENTITY ( CEPuckEntity  ,
CPhysXEPuckModel   
)

◆ REGISTER_STANDARD_PHYSX_OPERATIONS_ON_ENTITY() [2/3]

argos::REGISTER_STANDARD_PHYSX_OPERATIONS_ON_ENTITY ( CFootBotEntity  ,
CPhysXFootBotModel   
)

◆ REGISTER_STANDARD_PHYSX_OPERATIONS_ON_ENTITY() [3/3]

argos::REGISTER_STANDARD_PHYSX_OPERATIONS_ON_ENTITY ( CMiniQuadrotorEntity  ,
CPhysXMiniQuadrotorModel   
)

◆ REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY() [1/5]

argos::REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY ( CBoxEntity  ,
CPointMass3DBoxModel   
)

◆ REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY() [2/5]

argos::REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY ( CCylinderEntity  ,
CPointMass3DCylinderModel   
)

◆ REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY() [3/5]

argos::REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY ( CEyeBotEntity  ,
CPointMass3DEyeBotModel   
)

◆ REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY() [4/5]

argos::REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY ( CFootBotEntity  ,
CPointMass3DFootBotModel   
)

◆ REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY() [5/5]

argos::REGISTER_STANDARD_POINTMASS3D_OPERATIONS_ON_ENTITY ( CSpiriEntity  ,
CPointMass3DSpiriModel   
)

◆ REGISTER_STANDARD_SPACE_OPERATION_REMOVE_ENTITY()

argos::REGISTER_STANDARD_SPACE_OPERATION_REMOVE_ENTITY ( CFloorEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [1/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CBoxEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [2/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CComposableEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [3/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CCylinderEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [4/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CDirectionalLEDEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [5/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CEPuckEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [6/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CEyeBotEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [7/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CFootBotEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [8/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CLEDEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [9/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CMagnetEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [10/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CMiniQuadrotorEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [11/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CPrototypeEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [12/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CPrototypeJointEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [13/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CPrototypeJointEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [14/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CPrototypeLinkEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [15/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CRadioEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [16/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CSpiriEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE() [17/17]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE ( CTagEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [1/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CBatteryEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [2/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [3/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CFootBotDistanceScannerEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [4/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CFootBotTurretEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [5/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CGripperEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [6/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CGroundSensorEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [7/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CLightEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [8/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CLightSensorEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [9/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CMagnetEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [10/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( COmnidirectionalCameraEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [11/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CPerspectiveCameraEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [12/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CPositionalEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [13/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CPrototypeLinkEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [14/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CProximitySensorEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [15/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CQuadRotorEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [16/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CRotorEquippedEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [17/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CWheeledEntity  )

◆ REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY() [18/18]

argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY ( CWiFiEquippedEntity  )

◆ REGISTER_VISUALIZATION()

argos::REGISTER_VISUALIZATION ( CQTOpenGLRender  ,
"qt-opengl"  ,
"Carlo Pinciroli "  [ilpincy @gmail.com],
"1.0"  ,
"An interactive graphical renderer based on Qt and OpenGL."  ,
"The QT-OpenGL renderer is a graphical renderer based on Qt >= 4.5 and OpenGL.\n" "It allows the user to watch and modify the simulation as it's running in an\n" "intuitive way.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <visualization>\n" " <qt-opengl />\n" " </visualization>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "You can auto-play the simulation at startup by specifying the 'autoplay'\n" "attribute as follows:\n\n" " <visualization>\n" " <qt-opengl autoplay=\"true\" />\n" " </visualization>\n\n" "It is also possible to set the camera parameters. There are 12 available slots\n" "in which cameras can be configured. These cameras can be selected in the user\n" "interface by pressing F1-F12 or by clicking on the corresponding camera icon.\n" "By  default,
and if no configuration is  given,
each of these slots defaults to a\n" "camera position calculated from the size of the arena and the arena 's center.\n" "The following example demonstrates overriding four of these camera\n" "configurations:\n\n" "< visualization >\n" "< qt-opengl >\n" "< camera >\n" "< placements >\n" "< placement index=\"0\" position=\"2,2,2\" look_at=\"1,1,1\" />\n" " <placement index=\"1\" position=\"1,0,7\" look_at=\"1,0,0\" />\n" " <placement index=\"2\" position=\"3,3,4\" look_at=\"1,6,0\" />\n" " <placement index=\"3\" position=\"2,3,2\" look_at=\"0,1,0\" />\n" " </placements>\n" " </camera>\n" " </qt-opengl>\n" " </visualization>\n\n" "The 'index' attribute specifies the camera to  override,
with the zeroth index\n" "corresponding to the camera bound to the F1 key and so on.\n" "The 'position' attribute contains the position of the camera in the arena.\n" "The 'look_at' attribute sets the point the camera is looking at.\n" "  Sometimes,
specifying a camera positioning with only 'position' and 'look_at'\n" "generates ambiguous  configurations,
which ARGoS resolves in a default way after\n" "printing a warning message. To place the camera without  ambiguities,
specify\n" "also the 'up' vector of the camera. If the camera is your  head,
imagine this\n" "vector as an arrow that stems from the center of your head and extends upwards\n." "The 'up' vector must be perpendicular to the difference between the 'look_at'\n" "and the 'position' vectors.\n" "You can also set the focal length of the camera. For example:\n\n" "< visualization >\n" "< qt-opengl >\n" "< camera >\n" "< placements >\n" " ...\n" "< placement index=\"4\"\n" " position=\"4,1,4\"\n" " look_at=\"2,1,0\"\n" " lens_focal_length=\"50\" />\n" " ...\n" " <placements>\n" " </camera>\n" " </qt-opengl>\n" " </visualization>\n\n" "The 'lens_focal_length' attribute controls the focal length of the lens of the\n" "simulated camera. The value is in millimeters and defaults to 20  mm,
if it is\n" "not set from the XML.\n" "You can also configure the camera to switch placement automatically according\n" "to a timeline and even interpolate between different placements as shown below:\n" "< visualization >\n" "< qt-opengl >\n" "< camera >\n" "< placements >\n" " ...\n" "< placement index=\"0\" ... />\n" " <placement index=\"1\" ... />\n" " <placement index=\"2\" ... />\n" " ...\n" " </placements>\n" " <timeline loop=\"400\">\n" " <keyframe placement=\"0\" step=\"0\" />\n" " <interpolate />\n" " <keyframe placement=\"1\" step=\"100\" />\n" " <keyframe placement=\"2\" step=\"200\" />\n" " <keyframe placement=\"1\" step=\"300\" />\n" " <interpolate />\n" " </timeline>\n" " </camera>\n" " </qt-opengl>\n" " </visualization>\n\n" "This feature is enabled by adding a <timeline> node which consists of\n" "<keyframe> nodes. These keyframe nodes indicate the step number on which a\n" "given camera placement will be used. It is possible to interpolate between two\n" "keyframes by adding a <interpolate> node between them. The keyframes must be\n" "specified in order. The timeline can be set to loop by setting the loop\n" "attribute on the timeline node to the value at which the timeline should start\n" "over from the beginning.\n" "This visualization also allows for user customization. In a similar fashion to\n" "the loop  functions,
you can set a plug-in that derives from the\n" "CQTOpenGLUserFunctions class. To load it in the  system,
follow this example:\n\n" "< visualization >\n" "< qt-opengl >\n" "< user_functions library=\"/path/to/libmyuserfunctions.so\"\n" " label=\"my_user_functions\" />\n" " </qt-opengl>\n" " </visualization>\n\n" "The 'library' attribute points to the library where the user functions are\n" "stored. This library can be the same as the loop  functions,
or a new one.\n" "There is no limitation to where the code is to be found.\n" "The 'label' attribute identifies the user function class to use. In this  way,
\n" "in a single library you can have multiple user function  implementations,
if\n" "you wish.\n" "You can also grab frames and store them into image  files,
for example to create\n" "videos in a fast way. This can be done from within the ARGoS window and when\n" "running ARGoS without visualizations(headless). To do it from within the ARGoS\n" "  window,
you just need to press the red capture button and frame grabbing will be\n" "on.\n" "You can also grab frames when running without visualizations by running ARGoS\n" "under Xvfb to give it a virtual framebuffer to render into. The command\n\n" " xvfb-run -s \"-screen 0 1600x1200x24\" argos3 -c example.argos\n\n" "will run spawn a new Xvfb server with a virtual window size of  1600x1200,
8-bit\n" "color per channel and run ARGoS under it(ARGoS can also be made to attach to an\n" "existing Xvfb server via the DISPLAY environment variable). Refer to the\n" "documentation on Xvfb for the precise meaning of the arguments.\n" "By  default,
the frames are named 'frame_NNNNN.png' and are stored in the current\n" "  directory,
i.e. the directory where you run the 'argos' command. If you want to\n" "override these  defaults,
you can add the optional 'frame_grabbing' section as\n" "follows:\n\n" "< visualization >\n" "< qt-opengl >\n" "< frame_grabbing directory=\"frames\"\n" " base_name=\"myframe_\"\n" " format=\"png\"\n" " quality=\"100\"\n" " headless_grabbing=\"false\"\n" " headless_frame_size=\"1600x1200\"\n" " headless_frame_rate=\"1\"/>\n" " </qt-opengl>\n" " </visualization>\n\n" "All the attributes in this section are optional. If you don't specify one of\n" "  them,
the default is taken.\n" "The 'directory' attribute stores the directory where the frames are saved. If\n" "the directory does not  exist,
a fatal error occurs. The directory must exist\n" "and be writable. Both absolute and relative paths are allowed. The default\n" "value is '.'\n" "The 'base_name' attribute is the string to prepend to the file name. After this\n" "  string,
the frame number(padded to 5 digits) is added. The default value is\n" " 'frame_'  ,
so a typical resulting name is 'frame_00165'.\n" "The 'format' attribute specifies the format. The default value is 'png' but you\n" "can put any format supported by Qt >=4.5. Refer to the Qt documentation for the\n" "complete list of supported formats.\n" "The 'quality' attribute dictates the quality of the image. Its value is in the\n" "range where 0 means maximum compression and minimum  quality[0:100],
and 100\n" "means maximum quality and no compression at all. The default value is '-1'  ,
\n" "which means to use Qt 's default quality. For  videos,
it 's best to use 100 to\n" "avoid artifacts due to compression. For a normal  screenshot,
the default is the\n" "safest choice.\n" "The 'headless_grabbing' attribute defaults to 'false'.\n" "The 'headless_frame_size' attribute is the size of the main QTWidget in  ARGoS,
\n" " *not *the size of the converted frames(actual images will be somewhat smaller).\n" "The 'headless_frame_rate' attribute specifes the frame skip rate(i.e. grab\n" "every n-th frame). The default value is '1'.\n"  ,
"Usable"   
)

◆ RemoveConstraintBetweenGripperAndGrippable()

void argos::RemoveConstraintBetweenGripperAndGrippable ( cpSpace *  pt_space,
void *  p_obj,
void *  p_data 
)

Definition at line 212 of file dynamics2d_gripping.cpp.

◆ Replace()

void argos::Replace ( std::string &  str_buffer,
const std::string &  str_original,
const std::string &  str_new 
)

Searches into str_buffer for occurrences of str_original and substitutes them with str_new.

Parameters
str_bufferthe string to modify.
str_originalthe string to search for.
str_newthe substitute string.

Definition at line 79 of file string_utilities.cpp.

◆ reset()

std::ostream& argos::reset ( std::ostream &  c_os)
inline

Resets the text to the default settings.

The default settings are white text on black background.

Definition at line 128 of file argos_colored_text.h.

◆ Round()

SInt32 argos::Round ( Real  f_value)
inline

Rounds the passed floating-point value to the closest integer.

If the passed value is >0, Floor() is called. Otherwise, Ceil() is called.

Returns
the closest integer.

Definition at line 162 of file general.h.

◆ RoundClosestToZero()

SInt32 argos::RoundClosestToZero ( Real  f_value)
inline

Rounds the passed floating-point value to the integer closest to zero.

If the passed value is >0, Floor() is called. Otherwise, Ceil() is called.

Returns
the integer closest to zero.

Definition at line 172 of file general.h.

◆ SetNodeAttribute() [1/4]

void argos::SetNodeAttribute ( TConfigurationNode t_node,
const std::string &  str_attribute,
const bool  b_value 
)
inline

Sets the value of the wanted node's attribute.

This function is an overloaded version of the templetized SetNodeAttribute() for boolean values.

Parameters
t_nodethe node
str_attributethe name of the wanted attribute
b_valuethe value to set
See also
SetNodeAttribute()

Definition at line 451 of file argos_configuration.h.

◆ SetNodeAttribute() [2/4]

void argos::SetNodeAttribute ( TConfigurationNode t_node,
const std::string &  str_attribute,
const SInt8  n_value 
)
inline

Sets the value of the wanted node's attribute.

This function is an overloaded version of the templetized SetNodeAttribute() for SInt8 values.

Parameters
t_nodethe node
str_attributethe name of the wanted attribute
n_valuethe value to set
See also
SetNodeAttribute()

Definition at line 473 of file argos_configuration.h.

◆ SetNodeAttribute() [3/4]

template<typename T >
void argos::SetNodeAttribute ( TConfigurationNode t_node,
const std::string &  str_attribute,
const T &  t_value 
)

Sets the value of the wanted node's attribute.

If the attribute does not exist, it is created.

Parameters
t_nodethe node
str_attributethe name of the wanted attribute
t_valuethe value to set

Definition at line 434 of file argos_configuration.h.

◆ SetNodeAttribute() [4/4]

void argos::SetNodeAttribute ( TConfigurationNode t_node,
const std::string &  str_attribute,
const UInt8  un_value 
)
inline

Sets the value of the wanted node's attribute.

This function is an overloaded version of the templetized SetNodeAttribute() for UInt8 values.

Parameters
t_nodethe node
str_attributethe name of the wanted attribute
un_valuethe value to set
See also
SetNodeAttribute()

Definition at line 490 of file argos_configuration.h.

◆ Sign()

template<typename T >
SInt32 argos::Sign ( const T &  t_v)

Returns the sign of the value of the passed argument.

Returns
-1 if the value is negative, +1 if it is positive, or 0 if the value is 0.

Definition at line 115 of file general.h.

◆ Sin()

Real argos::Sin ( const CRadians c_radians)
inline

Computes the sine of the passed value in radians.

Parameters
c_radiansthe angle in CRadians
Returns
the sine of the passed value

Definition at line 586 of file angles.h.

◆ SinCos()

void argos::SinCos ( const CRadians c_radians,
Real f_sin,
Real f_cos 
)
inline

Computes the sine and cosine of the passed value in radians.

Parameters
c_radiansthe angle in CRadians
f_sinthe buffer in which the sin must be stored
f_costhe buffer in which the cos must be stored

Definition at line 574 of file angles.h.

◆ Square()

template<typename T >
T argos::Square ( const T &  t_v)

Returns the square of the value of the passed argument.

Returns
the square of the value of the passed argument.

Definition at line 128 of file general.h.

◆ SquareDistance() [1/2]

Real argos::SquareDistance ( const CVector2 c_v1,
const CVector2 c_v2 
)
inline

Computes the square distance between the passed vectors.

Parameters
c_v1The first vector
c_v2The second vector
Returns
The square distance between the passed vectors

Definition at line 452 of file vector2.h.

◆ SquareDistance() [2/2]

Real argos::SquareDistance ( const CVector3 c_v1,
const CVector3 c_v2 
)
inline

Computes the square distance between the passed vectors.

Parameters
c_v1The first vector
c_v2The second vector
Returns
The square distance between the passed vectors

Definition at line 717 of file vector3.h.

◆ StringToLowerCase()

std::string argos::StringToLowerCase ( const std::string &  str_string)

Converts a string to lower case.

Parameters
str_stringthe string to convert.
Returns
the lower case string.

Definition at line 62 of file string_utilities.cpp.

◆ StringToUpperCase()

std::string argos::StringToUpperCase ( const std::string &  str_string)

Converts a string to upper case.

Parameters
str_stringthe string to convert.
Returns
the upper case string.

Definition at line 45 of file string_utilities.cpp.

◆ Tan()

Real argos::Tan ( const CRadians c_radians)
inline

Computes the tangent of the passed value in radians.

Parameters
c_radiansthe angle in CRadians
Returns
the tangent of the passed value

Definition at line 604 of file angles.h.

◆ ToDegrees()

CDegrees argos::ToDegrees ( const CRadians c_radians)
inline

Converts CRadians to CDegrees.

Converts this object to CDegrees.

Parameters
c_radiansthe object to convert
Returns
the converted CDegrees object

Definition at line 489 of file angles.h.

◆ Tokenize()

void argos::Tokenize ( const std::string &  str_string,
std::vector< std::string > &  vec_tokens,
const std::string &  str_delimiters = " " 
)

Tokenizes the given string according to the wanted delimiters (by default just a " ").

Parameters
str_stringthe string to tokenize.
vec_tokensthe vector to fill with tokens.
str_delimitersthe delimiters to use.

Definition at line 16 of file string_utilities.cpp.

◆ ToRadians()

CRadians argos::ToRadians ( const CDegrees c_degrees)
inline

Converts CDegrees to CRadians.

Converts this object to CRadians.

Parameters
c_degreesthe object to convert
Returns
the converted CRadians object

Definition at line 498 of file angles.h.

◆ ToString()

template<typename T >
std::string argos::ToString ( const T &  t_value)

Converts the given parameter to a std::string.

Example of use:

UInt32 unToBeConverted(22);
std::string strConverted = ToString(unToBeConverted);

Internally uses an std::ostringstream. If you want to use it with a custom type, you must define its std::ostream& operator<<(std::ostream&, type).

Template Parameters
Tthe type of the parameter to convert.
Parameters
t_valuethe parameter to convert.
Returns
the std::string.

Definition at line 36 of file string_utilities.h.

◆ UNIT()

CRange< Real > argos::UNIT ( 0.  0f,
1.  0f 
)

Variable Documentation

◆ APERTURE_RANGE

◆ BODY_COLOR

const GLfloat argos::BODY_COLOR[] = { 0.5f, 0.5f, 0.5f, 1.0f }

Definition at line 24 of file qtopengl_prototype.cpp.

◆ DEBUG_INDENTATION

size_t argos::DEBUG_INDENTATION = 0

Definition at line 11 of file argos_log.cpp.

◆ DEFAULT_EMISSION

const GLfloat argos::DEFAULT_EMISSION[] = { 0.0f, 0.0f, 0.0f, 1.0f }

Definition at line 18 of file qtopengl_user_functions.cpp.

◆ DEFAULT_SHININESS

const GLfloat argos::DEFAULT_SHININESS[] = { 100.0f }

Definition at line 17 of file qtopengl_user_functions.cpp.

◆ DEFAULT_SPECULAR

const GLfloat argos::DEFAULT_SPECULAR[] = { 0.0f, 0.0f, 0.0f, 1.0f }

Definition at line 16 of file qtopengl_user_functions.cpp.

◆ EMISSION

const GLfloat argos::EMISSION = { 0.0f, 0.0f, 0.0f, 1.0f }

Definition at line 27 of file qtopengl_prototype.cpp.

◆ INCLINATION_RANGE

CRange<CRadians> argos::INCLINATION_RANGE(CRadians(0), CRadians(ARGOS_PI))

◆ LOG

CARGoSLog argos::LOG

Definition at line 179 of file argos_log.h.

◆ LOGERR

CARGoSLog argos::LOGERR

Definition at line 180 of file argos_log.h.

◆ MOVABLE_COLOR

const GLfloat argos::MOVABLE_COLOR = { 1.0f, 0.0f, 0.0f, 1.0f }

Definition at line 19 of file qtopengl_box.cpp.

◆ NONMOVABLE_COLOR

const GLfloat argos::NONMOVABLE_COLOR = { 0.7f, 0.7f, 0.7f, 1.0f }

Definition at line 20 of file qtopengl_box.cpp.

◆ RPM_TO_RADIANS_PER_SEC

const Real argos::RPM_TO_RADIANS_PER_SEC = ARGOS_PI / 30.0f

Definition at line 11 of file footbot_turret_default_actuator.cpp.

◆ SHININESS

const GLfloat argos::SHININESS = { 0.0f }

Definition at line 26 of file qtopengl_prototype.cpp.

◆ SPECULAR

const GLfloat argos::SPECULAR = { 0.0f, 0.0f, 0.0f, 1.0f }

Definition at line 25 of file qtopengl_prototype.cpp.