ALTracker API

NAOqi Trackers - Overview | API | Tutorial or samples


Namespace : AL


#include <alproxies/altrackerproxy.h>

Method list

As any module, this module inherits methods from ALModule API. It also has the following specific methods:

class ALTrackerProxy

Deprecated Methods

Methods

void ALTrackerProxy::addEffector(const std::string& Effector)

Deprecated since version 1.22: use ALTrackerProxy::setEffector() instead.

Add an end-effector to move for tracking. Tracker always use the Head.

Parameters:
  • Effector – Name of the effector. Could be: “Arms”, “LArm” or “RArm”.
void ALTrackerProxy::addTarget(const std::string& TargetName, const AL::ALValue& Param)

Deprecated since version 1.22: use ALTrackerProxy::registerTarget() instead.

Add the predefined target with parameters (RedBall: diameter of ball). Subscribe to corresponding extractor and stock the last position if tracker is running. If the target is already added, only parameters are updated.

Parameters:
  • TargetName – a predefined target name. See: Target names.
  • Param – target parameters.
std::string ALTrackerProxy::getActiveTarget()

Return active target name set with ALTrackerProxy::track(). See: Target names. Or event name set with ALTrackerProxy::trackEvent().

Returns: Tracked target name.
std::vector<std::string> ALTrackerProxy::getAvailableModes()

Return a list of available modes. See: Tracking modes.

Returns: Available mode names.
std::string ALTrackerProxy::getEffector()

Return the current effector name. Could be: “Arms”, “LArm”, “RArm” or “None”. Use ALTrackerProxy::setEffector() to set this value.

Returns: Active effector name.
int ALTrackerProxy::getExtractorPeriod(const std::string& TargetName)

Get the current period of the extractor corresponding to the given target name. See: Modules to launch. Only works if the corresponding target name is tracked (call ALTrackerProxy::track() before). Use ALTrackerProxy::setExtractorPeriod() to set this value.

Parameters:
  • TargetName – a predefined target name. See: Target names.
Returns:

Current period in milliseconds of the extractor corresponding to the given target name.

std::vector<std::string> ALTrackerProxy::getManagedTargets()

Deprecated since version 1.22: use ALTrackerProxy::getRegisteredTargets() instead.

Return a list of managed targets names. See: Target names.

Returns: Managed targets names. See: Target names.
float ALTrackerProxy::getMaximumDistanceDetection()

Return target maximum distance detection in meter. If the distance to the target is greater than the distance presented here, the target is considered lost. By default, this parameter is set to a very high value, so no target will be considered lost with this setting. Use ALTrackerProxy::setMaximumDistanceDetection() to set this value.

Returns: The maximum distance in meter for target detection.
std::string ALTrackerProxy::getMode()

Return the current mode defined with ALTrackerProxy::setMode().

Returns: The current tracker predefined mode. See: Tracking modes.
AL::ALValue ALTrackerProxy::getMoveConfig()

Return the move config set with ALTrackerProxy::setMoveConfig(). For further details, see: Move config.

Returns: The move config used when Move is activated.
std::string ALTrackerProxy::getRegisteredTargets()

Return a list of registered targets names. Use ALTrackerProxy::registerTarget() to register a target.

Returns: Registered targets names. See: Target names.
AL::ALValue ALTrackerProxy::getRelativePosition()

Get the robot position relative to target in Move mode. Use ALTrackerProxy::setRelativePosition() to set this value.

Returns: Final goal of the tracking: [coordX, coordY, coordWz, thresholdX, thresholdY, thresholdWz].
std::vector<float> ALTrackerProxy::getRobotPosition()

Only available with LandMarks target name. Returns the [x, y, z, wx, wy, wz] position of the robot in coordinate system set with ALTrackerProxy::setTargetCoordinates(). This is done assuming an average target size, so it might not be very accurate.

Returns: Vector of 6 floats corresponding to the robot position 6D.
std::vector<std::string> ALTrackerProxy::getSupportedTargets()

Return a list of supported target names.

Returns: Array of supported target names. See: Target names.
std::vector<std::string> ALTrackerProxy::getTargetNames()

Deprecated since version 1.22: use ALTrackerProxy::getSupportedTargets() instead.

Return a list of valid target names. See: Target names.

Returns: Array of valid target names
AL::ALValue ALTrackerProxy::getTargetCoordinates()

Only work with LandMarks target name. Get objects coordinates set with ALTrackerProxy::setTargetCoordinates().

Returns:
Objects coordinates.
Could be:
[[first object coordinate], [second object coordinate]]
[[x1, y1, z1], [x2, y2, z2]].
std::vector<float> ALTrackerProxy::getTargetPosition(const int& Frame)

Returns the [x, y, z] position of active target in desired frame. This is done assuming an average target size, so it might not be very accurate.

Parameters:
Returns:

Vector of 3 floats corresponding to the target position 3D.

std::vector<float> ALTrackerProxy::getTargetPosition()

Deprecated since version 1.22: use ALTrackerProxy::getTargetPosition with frame in parameters instead.

Returns the [x, y, z] position of active target in FRAME_TORSO. This is done assuming an average target size, so it might not be very accurate.

Returns: Vector of 3 floats corresponding to the target position 3D.
int ALTrackerProxy::getTimeOut()

Return current target lost timeout value in milliseconds.

Returns: The current target lost timeout value in milliseconds.
bool ALTrackerProxy::isActive()

Return true if Tracker is running.

Returns: True if tracker is running.
bool ALTrackerProxy::isNewTargetDetected()

Return true if a new target was detected since the last ALTrackerProxy::getTargetPosition().

Returns: True if a new target was detected.
bool ALTrackerProxy::isSearchEnabled()

Return true if the target search process is enabled. Use ALTrackerProxy::toggleSearch() to set this value.

Returns: True if the target search process is enabled.
bool ALTrackerProxy::isTargetLost()

Return true if the target is lost.

Returns: True if the target was lost.
void ALTrackerProxy::lookAt(const std::vector<float>& Position, const int& Frame, const float& FractionMaxSpeed, const bool UseWholeBody)

Look at the target position with head in desired frame. If tracker is active, it’s stopped and restarted at the last location of active target after lookAt. This is a blocking call.

Parameters:
  • Position – position 3D [x, y, z].
  • Frame – position frame {FRAME_TORSO = 0, FRAME_WORLD = 1, FRAME_ROBOT = 2}..
  • FractionMaxSpeed – a fraction.
  • UseWholeBody – if true, use whole body constraints.
void ALTrackerProxy::lookAt(const std::vector<float>& Position, const float& FractionMaxSpeed, const bool UseWholeBody)

Deprecated since version 1.22: use ALTrackerProxy::lookAt with frame in parameters instead.

Look at the target position with head. If tracker is active, it’s stopped and restarted at the last location of active target after lookAt. This is a blocking call.

Parameters:
  • Position – position 3D [x, y, z] in FRAME_TORSO.
  • FractionMaxSpeed – a fraction.
  • UseWholeBody – if true, use whole body constraints.
void ALTrackerProxy::pointAt(const std::string& Effector, const std::vector<float>& Position, const int& Frame, const float& FractionMaxSpeed)

Point at the target position with arms in desired frame. If tracker is active, it’s stopped and restarted at the last location of active target after pointAt. This is a blocking call.

Parameters:
  • Effector – effector name. Could be “Arms”, “LArm”, “RArm”.
  • Position – position 3D [x, y, z].
  • Frame – position frame {FRAME_TORSO = 0, FRAME_WORLD = 1, FRAME_ROBOT = 2}.
  • FractionMaxSpeed – a fraction.
void ALTrackerProxy::pointAt(const std::string& Effector, const std::vector<float>& Position, const float& FractionMaxSpeed)

Deprecated since version 1.22: use ALTrackerProxy::pointAt with frame in parameters instead.

Point at the target position with arms. If tracker is active, it’s stopped and restarted at the last location of active target after pointAt. This is a blocking call.

Parameters:
  • Effector – effector name. Could be “Arms”, “LArm”, “RArm”.
  • Position – position 3D [x, y, z] in FRAME_TORSO.
  • FractionMaxSpeed – a fraction.
void ALTrackerProxy::registerTarget(const std::string& TargetName, const AL::ALValue& Param)

Register the predefined target with parameters (RedBall: diameter of ball). Subscribe to corresponding extractor and stock the last position if tracker is running. If the target is already registered, only parameters are updated.

Parameters:
  • TargetName – a predefined target name. See: Target names.
  • Param – target parameters.
void ALTrackerProxy::removeAllTargets()

Deprecated since version 1.22: use ALTrackerProxy::unregisterAllTargets() instead.

Remove all registered targets and unsubscribe from all extractors.

void ALTrackerProxy::removeEffector(const std::string& Effector)

Deprecated since version 1.22: use ALTrackerProxy::setEffector() instead.

Remove an end-effector from tracking.

Parameters:
  • Effector – Name of the effector. Could be: “Arms”, “LArm” or “RArm”.
void ALTrackerProxy::removeTarget(const std::string& TargetName)

Deprecated since version 1.22: use ALTrackerProxy::unregisterTarget() instead.

Remove a predefined target and unsubscribe from corresponding extractor.

Parameters:
  • TargetName – a predefined target name. See: Target names.
void ALTrackerProxy::removeTargets(const std::vector<std::string>& TargetNames)

Deprecated since version 1.22: use ALTrackerProxy::unregisterTargets() instead.

Remove predefined targets and unsubscribe from corresponding extractors.

Parameters:
  • TargetNames – array of predefined target names. See: Target names.
void ALTrackerProxy::setEffector(const std::string& Effector)

Set an end-effector to move for tracking. Tracker always used the Head. Use ALTrackerProxy::getEffector() to get this value.

Parameters:
  • Effector – Name of the effector. Could be: “Arms”, “LArm”, “RArm” or “None”..
void ALTrackerProxy::setExtractorPeriod(const std::string& TargetName, const int& Period)

Set the period of the extractor corresponding to the given target name. See: Modules to launch. Only works if the corresponding target name is tracked (call ALTrackerProxy::track() before). Use ALTrackerProxy::getExtractorPeriod() to get this value.

Parameters:
  • TargetName – a predefined target name. See: Target names.
  • Period – a period in milliseconds.
void ALTrackerProxy::setMaximumDistanceDetection(const float& MaxDistance)

Set the strictly positive maximum distance in meter for target detection. If the distance to the target is greater than the distance presented here, the target is considered lost.

Parameters:
  • MaxDistance – The Max Distance for target detection in meter.
void ALTrackerProxy::setMode(const std::string& Mode)

Set the tracker in the predefined mode. Use ALTrackerProxy::getMode() to get this value.

Parameters:
void ALTrackerProxy::setMoveConfig(const AL::ALValue& Config)

Set a move config to be used when the Move mode is activated. Use ALTrackerProxy::getMoveConfig() to get this value.

Parameters:
  • Config – An ALValue with the custom move configuration. For further details, see: Move config.
void ALTrackerProxy::setRelativePosition(const AL::ALValue& Target)

Set the robot position relative to target in Move mode. Use ALTrackerProxy::getRelativePosition() to get this value.

Parameters:
  • Target – Final goal of the tracking: [coordX, coordY, coordWz, thresholdX, thresholdY, thresholdWz].
void ALTrackerProxy::setTargetCoordinates(const AL::ALValue& Coord)

Only work with LandMarks target name. Set objects coordinates. Use ALTrackerProxy::getTargetCoordinates() to get this value.

Parameters:
  • Coord
    Objects coordinates.
    Could be:
    [[first object coordinate], [second object coordinate]]
    [[x1, y1, z1], [x2, y2, z2]].
void ALTrackerProxy::setTimeOut(const int& TimeMs)

Set target lost timeout in milliseconds.

Parameters:
  • TimeMs – Time in milliseconds.
void ALTrackerProxy::stopTracker()

Stop the tracker.

void ALTrackerProxy::track(const std::string& TargetName)

Set the predefined target to track and start tracking process. Target name need to be registered before with ALTrackerProxy::registerTarget().

Parameters:
  • TargetName – a predefined target name. See: Target names.
void ALTrackerProxy::trackEvent(const std::string& EventName)

Track an event from ALMemory. The value from EventName should have a predefined structure.

Parameters:
  • EventName – ALMemory event name.

EventName Value Structure

The output ALValue from EventName should be organized as follows:


EventNameInfo {
  TargetPositionInFrameTorso,
  TargetPositionInFrameRobot,
  TimeStamp,
  EffectorId,
  HeadThreshold (optional)
}

TargetPositionInFrameTorso

Position6D of target to track in FRAME_TORSO.

TargetPositionInFrameRobot

Position6D of target to track in FRAME_ROBOT.

TimeStamp

This field is the time stamp of detection.


TimeStamp {
  TimeStamp_Seconds,
  Timestamp_Microseconds
}

EffectorId

This field corresponds to the ID of the effector used for tracking the target:

  • 0 to track with middle of eyes
  • 1 to track with camera top
  • 2 to track with camera bottom
  • 3 no effector, the head does not move

HeadThreshold

This is an optional field to avoid oscillation, this corresponds to an angle in radians.

void ALTrackerProxy::toggleSearch(const bool& SearchOn)

Enables/disables the target search process. Target search process occurs only when the target is lost. Use ALTrackerProxy::isSearchEnabled() to get this value.

Parameters:
  • pSearch
    If True and if the target is lost, the robot moves the head in order to find the target.
    If False and if the target is lost the robot does not move.
void ALTrackerProxy::unregisterAllTargets()

Unregister all targets and unsubscribe from all extractors.

void ALTrackerProxy::unregisterTarget(const std::string& TargetName)

Unregister a predefined target and unsubscribe from corresponding extractor.

Parameters:
  • TargetName – a predefined target name. See: Target names.
void ALTrackerProxy::unregisterTargets(const std::vector<std::string>& TargetNames)

Unregister predefined targets and unsubscribe from corresponding extractors.

Parameters:
  • TargetNames – array of predefined target names. See: Target names.