> ## Documentation Index
> Fetch the complete documentation index at: https://docs.generalrobotics.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# IsaacArm

## IsaacArm

Inherits from: [`Arm`](/robot-api/reference/base/robot/arm/Arm), [`ZenohAgent`](/robot-api/reference/sim/zenoh/agent/ZenohAgent)

Isaac Sim arm implementation backed by Zenoh.

This class provides an interface to control a simulated arm in Isaac Sim
using Zenoh clients for poses, joints, and gripper control.

### Inherited methods

* From [`Arm`](/robot-api/reference/base/robot/arm/Arm): `setNamedPose`, `removeNamedPose`, `getNamedPose`
* From [`Robot`](/robot-api/reference/base/robot/robot/Robot): `addSensor`, `cleanup`
* From [`ZenohAgent`](/robot-api/reference/sim/zenoh/agent/ZenohAgent): `create_clients`, `getForce`, `getTorque`, `sendVelocity`, `sendPose`, `publishMsg`, `getMsg`, `getJointVelocities`, `getJointStates`, `getObjectPose`, `setObjectPose`, `run`, `prompt`, `reset`

### **init**

```python theme={null}
IsaacArm.__init__(config = default_isaac_config, clients: Optional[dict] = None)
```

Initialize an Isaac Sim arm interface.

<ResponseField name="Arguments">
  <ParamField query="config (dict)" type="dict">
    Configuration dictionary containing Zenoh topics and settings. (default: default\_isaac\_config)
  </ParamField>

  <ParamField query="clients (Optional[dict])" type="Optional[dict]">
    Pre-created Zenoh clients to reuse instead of creating new ones. (default: None)
  </ParamField>
</ResponseField>

### getImage

```python theme={null}
IsaacArm.getImage(camera_name: str = '', image_type: Optional[str] = 'rgb') -> Image
```

Get an image from a camera client.

<ResponseField name="Arguments">
  <ParamField query="camera_name (str)" type="str">
    Name of the image client to read from. If empty, selects the default camera based on image\_type. (default: "")
  </ParamField>

  <ParamField query="image_type (Optional[str])" type="Optional[str]">
    Image type used to select the default camera. Accepts "rgb" or "depth". (default: "rgb")
  </ParamField>
</ResponseField>

<ResponseField name="Returns">
  <ResponseField name="Image" type="Image">
    Captured image wrapped in the project's Image type.
  </ResponseField>
</ResponseField>

<ResponseField name="Raises">
  <ParamField query="ValueError" type="">
    If an invalid image\_type is provided.
  </ParamField>
</ResponseField>

### moveByVelocity

```python theme={null}
IsaacArm.moveByVelocity(linear_velocity: Velocity, angular_velocity: Velocity, frame: str = 'body')
```

Move the arm by specifying linear and angular velocities.

<ResponseField name="Arguments">
  <ParamField query="linear_velocity (Velocity)" type="Velocity" required>
    Linear velocity components.
  </ParamField>

  <ParamField query="angular_velocity (Velocity)" type="Velocity" required>
    Angular velocity components.
  </ParamField>

  <ParamField query="frame (str)" type="str">
    Reference frame for the velocity command. (default: "body")
  </ParamField>
</ResponseField>

### moveToPose

```python theme={null}
IsaacArm.moveToPose(position: Position, orientation: Orientation, blocking: bool = True, moving_time: float = 0.3, accel_time: float = 0.15)
```

Move the end effector to an absolute pose.

This method sends a single command to move the end effector to the specified
absolute position and orientation.

<ResponseField name="Arguments">
  <ParamField query="position (Position)" type="Position" required>
    Target position in meters (x, y, z).
  </ParamField>

  <ParamField query="orientation (Orientation)" type="Orientation" required>
    Target orientation as a quaternion (x, y, z, w).
  </ParamField>

  <ParamField query="blocking (bool)" type="bool">
    Whether to block until the move completes. (unused) (default: True)
  </ParamField>

  <ParamField query="moving_time (float)" type="float">
    Time allowed for movement in seconds. (unused) (default: 0.3)
  </ParamField>

  <ParamField query="accel_time (float)" type="float">
    Acceleration time in seconds. (unused) (default: 0.15)
  </ParamField>
</ResponseField>

### moveToDeltaPose

```python theme={null}
IsaacArm.moveToDeltaPose(position: Position, orientation: Orientation, blocking: bool = True, moving_time: float = 0.3, accel_time: float = 0.15)
```

Move the end effector to a relative pose.

<ResponseField name="Arguments">
  <ParamField query="position (Position)" type="Position" required>
    Desired relative position of the end effector.
  </ParamField>

  <ParamField query="orientation (Orientation)" type="Orientation" required>
    Desired relative orientation of the end effector.
  </ParamField>

  <ParamField query="blocking (bool)" type="bool">
    Whether to block until the move completes. (unused) (default: True)
  </ParamField>

  <ParamField query="moving_time (float)" type="float">
    Time allowed for movement in seconds. (unused) (default: 0.3)
  </ParamField>

  <ParamField query="accel_time (float)" type="float">
    Acceleration time in seconds. (unused) (default: 0.15)
  </ParamField>
</ResponseField>

### getState

```python theme={null}
IsaacArm.getState() -> dict
```

Get the current state of the arm.

<ResponseField name="Returns">
  <ResponseField name="dict" type="dict">
    Current state including position, orientation, and joint positions.
  </ResponseField>
</ResponseField>

### getPosition

```python theme={null}
IsaacArm.getPosition() -> Optional[Position]
```

Get the current position of the end effector.

<ResponseField name="Returns">
  <ResponseField name="Optional[Position]" type="Optional[Position]">
    Current position of the end effector.
  </ResponseField>
</ResponseField>

### getOrientation

```python theme={null}
IsaacArm.getOrientation() -> Orientation
```

Get the current orientation of the end effector.

<ResponseField name="Returns">
  <ResponseField name="Orientation" type="Orientation">
    Current orientation of the end effector as a quaternion (x, y, z, w).
  </ResponseField>
</ResponseField>

### grasp

```python theme={null}
IsaacArm.grasp()
```

Close the gripper.

### release

```python theme={null}
IsaacArm.release()
```

Open the gripper.

### getJointAngles

```python theme={null}
IsaacArm.getJointAngles() -> Optional[list]
```

Get the current joint angles of the arm.

<ResponseField name="Returns">
  <ResponseField name="Optional[list]" type="Optional[list]">
    List of current joint angles in radians.
  </ResponseField>
</ResponseField>

### setJointAngles

```python theme={null}
IsaacArm.setJointAngles(joint_positions: list, blocking: bool = True, moving_time: float = 2.0, accel_time: float = 0.5) -> None
```

Set the joint angles of the arm.

<ResponseField name="Arguments">
  <ParamField query="joint_positions (list)" type="list" required>
    List of joint angles for the robot in radians.
  </ParamField>

  <ParamField query="blocking (bool)" type="bool">
    Whether to block until the move completes. (unused) (default: True)
  </ParamField>

  <ParamField query="moving_time (float)" type="float">
    Time allowed for movement in seconds. (unused) (default: 2.0)
  </ParamField>

  <ParamField query="accel_time (float)" type="float">
    Acceleration time in seconds. (unused) (default: 0.5)
  </ParamField>
</ResponseField>

<ResponseField name="Returns">
  <ResponseField name="returns" type="None" />
</ResponseField>

### stop

```python theme={null}
IsaacArm.stop(immediate: bool = False)
```

Stop the robot.

<ResponseField name="Arguments">
  <ParamField query="immediate (bool)" type="bool">
    Whether to stop immediately. (unused) (default: False)
  </ParamField>
</ResponseField>
