MoveTo

September 1, 2023 ยท View on GitHub

from tdw.replicant.actions.move_to import MoveTo

Turn the Replicant to a target position or object and then walk to it.

While walking, the Replicant will continuously play a walk cycle animation until the action ends.

The action can end for several reasons depending on the collision detection rules (see self.collision_detection.

  • If the Replicant walks the target distance (i.e. it reaches its target), the action succeeds.
  • If self.collision_detection.previous_was_same == True, and the previous action was MoveBy or MoveTo, and it was in the same direction (forwards/backwards), and the previous action ended in failure, this action ends immediately.
  • If self.collision_detection.avoid_obstacles == True and the Replicant encounters a wall or object in its path:
    • If the object is in self.collision_detection.exclude_objects, the Replicant ignores it.
    • Otherwise, the action ends in failure.
  • If the Replicant collides with an object or a wall and self.collision_detection.objects == True and/or self.collision_detection.walls == True respectively:
    • If the object is in self.collision_detection.exclude_objects, the Replicant ignores it.
    • Otherwise, the action ends in failure.

Fields

  • target The target. If int: An object ID. If dict: A position as an x, y, z dictionary. If numpy array: A position as an [x, y, z] numpy array.

  • collision_detection The CollisionDetection rules.

  • reset_arms If True, reset the arms to their neutral positions while beginning the walk cycle.

  • reset_arms_duration The speed at which the arms are reset in seconds.

  • scale_reset_arms_duration If True, reset_arms_duration will be multiplied by framerate / 60), ensuring smoother motions at faster-than-life simulation speeds.

  • arrived_at If at any point during the action the difference between the target distance and distance traversed is less than this, then the action is successful.

  • bounds_position If target is an integer object ID, move towards this bounds point of the object. Options: "center", "top", "bottom", "left", "right", "front", "back".

  • animation The name of the walk animation.

  • library The name of the walk animation's library.

  • collision_avoidance_distance If collision_detection.avoid == True, an overlap will be cast at this distance from the Wheelchair Replicant to detect obstacles.

  • collision_avoidance_half_extents If collision_detection.avoid == True, an overlap will be cast with these half extents to detect obstacles.

  • collision_avoidance_y The y coordinate of the collision detection overlap shape.

  • status The current status of the action. By default, this is ongoing (the action isn't done).

  • initialized If True, the action has initialized. If False, the action will try to send get_initialization_commands(resp) on this frame.

  • done If True, this action is done and won't send any more commands.


Functions

__init__

MoveTo(target, collision_detection, previous, reset_arms, reset_arms_duration, arrived_at, bounds_position, collision_avoidance_distance, collision_avoidance_half_extents, collision_avoidance_y)

MoveTo(target, collision_detection, previous, reset_arms, reset_arms_duration, arrived_at, bounds_position, collision_avoidance_distance, collision_avoidance_half_extents, collision_avoidance_y, animation="walking_2", library="humanoid_animations.json")

ParameterTypeDefaultDescription
targetTARGETThe target. If int: An object ID. If dict: A position as an x, y, z dictionary. If numpy array: A position as an [x, y, z] numpy array.
collision_detectionCollisionDetectionThe CollisionDetection rules.
previousOptional[Action]The previous action, if any.
reset_armsboolIf True, reset the arms to their neutral positions while beginning the walk cycle.
reset_arms_durationfloatThe speed at which the arms are reset in seconds.
arrived_atfloatIf at any point during the action the difference between the target distance and distance traversed is less than this, then the action is successful.
bounds_positionstrIf target is an integer object ID, move towards this bounds point of the object. Options: "center", "top", "bottom", "left", "right", "front", "back".
collision_avoidance_distancefloatIf collision_detection.avoid == True, an overlap will be cast at this distance from the Wheelchair Replicant to detect obstacles.
collision_avoidance_half_extentsDict[str, float]If collision_detection.avoid == True, an overlap will be cast with these half extents to detect obstacles.
collision_avoidance_yfloatThe y coordinate of the collision detection overlap shape.
animationstr"walking_2"The name of the walk animation.
librarystr"humanoid_animations.json"The name of the walk animation's library.

get_initialization_commands

self.get_initialization_commands(resp, static, dynamic, image_frequency)

ParameterTypeDefaultDescription
respList[bytes]The response from the build.
staticReplicantStaticThe ReplicantStatic data that doesn't change after the Replicant is initialized.
dynamicReplicantDynamicThe ReplicantDynamic data that changes per communicate() call.
image_frequencyImageFrequencyAn ImageFrequency value describing how often image data will be captured.

Returns: A list of commands to initialize this action.

get_ongoing_commands

self.get_ongoing_commands(resp, static, dynamic)

Evaluate an action per-frame to determine whether it's done.

ParameterTypeDefaultDescription
respList[bytes]The response from the build.
staticReplicantStaticThe ReplicantStatic data that doesn't change after the Replicant is initialized.
dynamicReplicantDynamicThe ReplicantDynamic data that changes per communicate() call.

Returns: A list of commands to send to the build to continue the action.

get_end_commands

self.get_end_commands(resp, static, dynamic, image_frequency)

ParameterTypeDefaultDescription
respList[bytes]The response from the build.
staticReplicantStaticThe ReplicantStatic data that doesn't change after the Replicant is initialized.
dynamicReplicantDynamicThe ReplicantDynamic data that changes per communicate() call.
image_frequencyImageFrequencyAn ImageFrequency value describing how often image data will be captured.

Returns: A list of commands that must be sent to end any action.