Picked up objects can also obstruct the Agent’s view of the environment since the Agent’s hand is always in camera view, so know that picking up larger objects will obstruct the field of vision.
Certain objects are
The target object's
Set to
By default, objects picked up by the agent teleport into the agent’s hand at a default position in front of the agent camera. Set this to
The target object's
Enable to ignore any Receptacle Restrictions when attempting to place objects. Normally objects will fail to be put on a receptacle if that receptacle is not valid for the object. This will also ignore interaction range restrictions of the agent. Note this does not guarantee an object will be placed in a receptacle, as some objects will not fit inside a receptacle regardless of the default object restrictions.
If
Additionally, this drop action will fail if the held object is not clear from all collisions. Most importantly, the agent’s collision will prevent drop, as dropping an object if it is “inside” the agent will lead to unintended behavior.
Set to
The amount of force used to throw the object in newtons. Note that objects of different masses will have different throw distances if this magnitude is not changed.
Set to
While the agent is holding an object, it has several available actions to manipulate it. One such action is the ability to move the held object closer or further away from it. Held object movement is useful if we want to drop an object on a surface that is relatively far away.
There are several directions that the agent can move the held object. They include:
controller.step(
action="MoveHeldObjectAhead",
moveMagnitude=0.1,
forceVisible=False
)
# Other supported directions
controller.step("MoveHeldObjectBack")
controller.step("MoveHeldObjectLeft")
controller.step("MoveHeldObjectRight")
controller.step("MoveHeldObjectUp")
controller.step("MoveHeldObjectDown")
The distance, in meters, to move the held object in the specified direction.
Setting
We also provide a separate helper action,
The distance, in meters, to move the held object forward, from the agent's current facing direction.
The distance, in meters, to move the held object rightwards, from the agent's current facing direction.
The distance, in meters, to move the held object upwards, from the agent's current facing direction.
Setting
Increments the pitch of an object from the agent's current facing direction. Specified in degrees. The video below shows the held object's
Increments the yaw of an object from the agent's current facing direction. Specified in degrees. The video below shows the held object's
Increments the roll of an object from the agent's current facing direction. Specified in degrees. The video below shows the held object's
An overload of
Sets the rotation of the object to the provided rotation, in degrees. The rotation is relative to the object's axes. So, the set rotation is independent of the object's current rotation. Rotations are specified in degrees.
controller.step
action="DirectionalPush",
objectId="Sofa|3|2|1",
moveMagnitude="100",
pushAngle="90"
)
The amount of force used to pull the object in newtons. Following natural physics, objects of different masses may move different distances with the same amount of force.
The direction vector to push the object. Values in are valid, with being the current forward direction of the agent. This value will change the push direction clockwise from the agent’s forward. (i.e., will push the object directly right, a value of will push the object backwards).
controller.step(
action="PushObject",
objectId="Mug|0.25|-0.27",
forceAction=False
)
The amount of force used to push the object in newtons. Note that objects of different masses will move different distances if this magnitude is not changed.
controller.step(
action="PullObject",
objectId="Mug|0.25|-0.27",
forceAction=False
)
The amount of force used to pull the object in newtons. Note that objects of different masses will move different distances if this magnitude is not changed.
event = controller.step(
action="TouchThenApplyForce",
x=0.5,
y=0.5,
direction={
"x": 0.0,
"y": 1.0,
"z": 0.0
},
moveMagnitude=80,
handDistance=1.5
)
Used instead of
Used in tandem with
The direction vector relative to the agent’s current forward to push any object touched.
The amount of force to apply to a touched object in newtons.
The maximum Euclidean distance from the agent's camera that the (x, y) point that targets the object can be, in meters. If the point on the object is further away than
{
"didHandTouchSomething": True
"objectId": "Apple|+1|+1|+1"
"armsLength": 1.20
}
Returns
The unique string id of the object touched by the ray. If the object touched in the scene has collision but is not a sim object, this
The distance from the touched point on the object to the agent’s camera. This distance will never exceed the handDistance value passed in originally unless the action finishes as a failed action (see below).
This action will return a failure (event.metadata["lastActionSuccess"] == False) only in two cases:
Note that this action interacts with the visibility of an object in order to determine what can be poked. The visibility of an object is defined by:
Because visibility is defined by the cylinder with radius visibilityDistance, the total area of objects that are touchable by this action is the intersection of the sphere of radius handDistance centered around the agent’s camera, and the cylinder of radius visibilityDistance about the agent’s vertical axis. Note that the agent camera is also centered around the agent’s vertical axis.
controller.step(
action="PlaceObjectAtPoint",
objectId="Toaster|1|1|1",
position={
"x": -1.25,
"y": 1.0,
"z": -1.0
}
)
Global coordinates for the point to try and place the object.
controller.step(
action="GetSpawnCoordinatesAboveReceptacle",
objectId="CounterTop|1|1|1",
anywhere=False
)
If