> For the complete documentation index, see [llms.txt](https://docs.hello-robot.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hello-robot.com/stretch4_docs/working-with-stretch/getting-started/robot-overview.md).

# Robot Overview

Stretch comes with a number of command line utilities that you can run by opening a Terminal window. Below, we will explore some commonly used CLI tools as a way of accessing Stretch's individual motors and sensors.

### System Check

One of the most useful tools for Stretch is the System Check function. This checks out the state of Stretch's hardware, firmware, and software, and reports any errors or issues it can find. It is good practice to run this whenever you start using the robot, and can be&#x20;

To run a system check, open a Teminal and enter:

```bash
stretch_system_check
```

If all checks pass, your robot is ready to go. Use `stretch_about` to print robot identity and configuration, and `stretch_params` to inspect all robot parameters.

### Homing

If you've turned off your robot since running the first tutorial, System Check might inform you that the robot needs to be homed.

Homing refers to a procedure where Stretch moves all of its joints to the end of travel one time, to find the zero positions. Until the robot has been homed, it does not know the position of its manipulator and will refuse many types of commands. The homing procedure takes approximately 30 seconds, and must be run once every time the robot is powered on.

To home the robot:

```bash
stretch_robot_home
```

The robot will beep when finished. The motors will remember their homing state while the robot remains powered on — using the runstop, backdriving the robot, or restarting the NUC will **not** require rehoming. Powering the robot down completely will require homing again on the next boot.

If your system check did not complete due to rehoming, run it again now.&#x20;

### Stowing

As a tall robot, Stretch is most stable when it keeps its center of mass relatively low. When navigating the robot through its environment, we recommend keeping the arm and wrist retracted inside the base footprint and the  To stow the robot to its compact travel pose:

```bash
stretch_robot_stow
```

{% columns %}
{% column %}
{% embed url="<https://vimeo.com/1208949624>" %}
{% endcolumn %}

{% column %}
{% embed url="<https://vimeo.com/1208949625>" %}
{% endcolumn %}
{% endcolumns %}

## Motors and Joints

### Omnibase

Stretch 4 has a three-wheeled omnibase, consisting of three holonomic closed-loop stepper motors each driving one wheel. The omnibase supports full planar motion — forward, sideways, diagonal, and rotation in place, all simultaneously. It also supports Guarded Contact sensitivity, which can be calibrated and tuned per use case.

Wheel numbering increases counter-clockwise, with "Wheel 0" to the left of the forward direction. This is consistent with the ROS frame convention where X+ is forward and Y+ is to the left, forming a right-handed coordinate frame.

To jog the base, you can use this CLI tool:

```bash
stretch_omni_base_jog
```

### Lift

The lift provides vertical translation of the arm, reaching up to 47 inches high and all the way down to the ground. It is driven by a closed-loop stepper motor through a low gear-ratio belt drive, providing smooth and precise motion.

To jog the lift, you can use this CLI tool:

```bash
stretch_lift_jog
```

### Arm

The arm comprises 4 telescoping links set on rollers, extending 21.6 inches beyond the base footprint and retracting to stow within it. Its proprietary drivetrain is driven by a stepper motor with closed-loop control and current sensing, enabling contact detection during motion. In combination, the lift, arm, and mobile base provide three orthogonal axes of motion — a Cartesian system for end-effector placement.

To jog the arm, you can use this CLI tool:

```bash
stretch_arm_jog
```

### Wrist and Gripper

#### Dexterous Wrist

Stretch 4 has a three degree-of-freedom wrist with yaw, pitch, and roll actuation — all driven by Feetech smart servo actuators.

| Axis        | Raw Servo Range | Notes                                                                      |
| ----------- | --------------- | -------------------------------------------------------------------------- |
| Wrist Yaw   | 310°            | `range_deg: [-65, 245]`                                                    |
| Wrist Pitch | 310°            | `range_deg: [-65, 245]` — effective range reduced by self-collision limits |
| Wrist Roll  | 310°            | `range_deg: [-65, 245]`                                                    |

To jog individual wrist joints:

```bash
stretch_dex_wrist_jog
```

To home all wrist joints:

```bash
stretch_dex_wrist_home
```

Individual axis homing is also available with `stretch_wrist_yaw_home`, `stretch_wrist_pitch_home`, and `stretch_wrist_roll_home`.

#### Gripper

The compliant gripper is a robust single-degree-of-freedom end-effector. A Feetech smart servo motor drives the center of the spring mechanism, which causes the outer fingers to flex and provide a grasping force.

```bash
stretch_gripper_jog
stretch_gripper_home
```

#### Motor Errors and Reset

The Feetech motors in the wrist and gripper can enter an error state from over-force or over-temperature events. When in this state, the motor becomes backdrivable, stops responding to commands, and the LED on the motor body blinks red.

To clear this error, the motors must be power cycled, either through rebooting the robot or with this CLI tool:&#x20;

```bash
stretch_feetech_reboot
```

This reboots all Feetech motors and resets their error status. You will need to re-run wrist and gripper homing after doing this, since the wrist\_yaw and gripper joints lose their homed positions.

{% hint style="info" %}
Rebooting only the robot PC will not clear errors like these, as the robot motors remain powered during the computer power cycle.
{% endhint %}

## Sensors

Stretch 4 includes the following sensors:

* **Cameras**
  * Luxonis OAK-FFC-3P Camera Module (Head: 3-camera array)
  * Luxonis OAK-D-SR (Gripper: stereo pair)
* **Lidar**
  * 2x Hesai JT128 3D LiDAR (Left and Right, mounted on the head)
* Speaker (mounted at the bottom of the head)
* Pixart Single-Axis Distance Sensor Array (base)

### Head Cameras

Stretch 4 has a Luxonis OAK-FFC-3P camera module mounted in the head with three RGB cameras:

| Camera | Shutter        | Type                  | Resolution | Target FPS |
| ------ | -------------- | --------------------- | ---------- | ---------- |
| Left   | Global Shutter | Fish-eye wide angle   | 1920×1200  | 30         |
| Right  | Global Shutter | Fish-eye wide angle   | 1920×1200  | 30         |
| Center | Global Shutter | High-resolution color | 4032×3040  | 10         |

The left and right cameras are fish-eye wide-angle cameras providing a broad environmental field of view. The center camera is a high-resolution color camera. All three are angled to maximize combined visual coverage in every frame.

To easily display any combination of camera feeds and open them in `rerun` or `opencv` , run the CLI tool stretch\_camera\_show with flags for the camera and for the visualizer - for example:

```bash
stretch_camera_show --left --rerun
stretch_camera_show --center --opencv
stretch_camera_show --right --rerun
stretch_camera_show --left_right_center --opencv
```

{% hint style="info" %}
Use the flag -h to see all options
{% endhint %}

### Gripper Cameras

Stretch 4 has an OAK-D-SR (Short Range) mounted at the gripper, an integrated passive stereo depth camera module optimized for short range sensing, perfect for sensing depth around the fingertips during grasping. These are detected as a separate Luxonis device from the head cameras (2-sensor device vs. the 3-sensor head device).

To visualize this camera view, use the same CLI command as above:<br>

```bash
stretch_camera_show --gripper --rerun
stretch_camera_show --gripper --opencv
```

### 3D LiDAR

Stretch 4 has two Hesai JT128 3D LiDAR units mounted on the head — a left lidar and a right lidar — providing full 3D point cloud coverage of the environment. These are used for mapping, navigation, and RGBD fusion with the head cameras.

Each lidar communicates over Ethernet. The NUC holds a single network profile with two IP addresses to communicate with both lidars and the Jetson simultaneously.

To view the combined point cloud in real time, use the CLI command:

```bash
stretch_lidar_show
```

### Emulated RGBD from Head Cameras

The head cameras can be fused with the head Hesai lidars to produce RGBD (color + depth) point clouds. To visualize this:

```bash
stretch_rgbd_show
```

### Speaker and Microphone

The robot has a speaker and noise-cancelling microphone mounted at the bottom of the head, allowing Stretch to communicate from across a room. To test audio output:

```bash
stretch_audio_test
```

### Line Sensor Array

Stretch 4 includes an array of SAS (single-axis sensors)  floor-facing  line sensor array on the base. This array continuously scans the floor in front of the robot and uses an on-robot model to classify the surface as floor or obstacle, enabling low-latency hazard detection independent of the lidar.

The line sensor runs in a dedicated background worker process at approximately 30 Hz, and its output is used by the omnibase to automatically limit velocity when an obstacle is detected in the direction of travel. To visualize the line sensors:

```bash
stretch_line_sensor_viz_3d
```

#### LED Eyes

The robot head also has two LED eye displays. These support a set of built-in animations including idle glow, blinking, directional gaze, rainbow spin, alert, and happy states:

```bash
stretch_eye_animations
```

## Developer I/O

Stretch 4 contains additional ports connected to the onboard NUC that can be used for accessories:

* **Trunk:** 1× USB-A 3.0 ports, 2x USB-A 2.0 ports, 1× Ethernet port, 1× HDMI port.
* **Head (top):** 1× USB-A 3.0 port, 1x USB-C Port
* **End-of-arm:** 1× USB-A 2.0 port
* **Wrist:** Quick-connect mechanism for tool attachment.

There are also threaded mounting points on the head to add additional sensors.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.hello-robot.com/stretch4_docs/working-with-stretch/getting-started/robot-overview.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
