> For the complete documentation index, see [llms.txt](https://docs.dobb-e.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dobb-e.com/software/running-the-robot-server.md).

# Running the Robot Controller

You will need to run the controller code on the robot so that our policy can communicate with the robot, get the observations, and execute the actions. This step walks you through that.

Code to start the camera stream publisher and robot controller. The code is useful for [Record3d](https://record3d.app)-based camera streaming, but can be adapted for other use cases.

## Getting Started

1. Clone repository onto your Hello Robot Stretch:

   ```bash
   git clone https://github.com/notmahi/dobb-e.git
   cd dobb-e/robot-server
   ```
2. Install required packages **on your root pip env** (where `hello_robot` package is installed):

   ```bash
   pip install -r requirements.txt
   ```

## Running

1. If you just turned on the robot, perform joint calibration on your Stretch by running the following in terminal:

   ```bash
   stretch_robot_home.py
   ```

   this only needs to be run once every time the robot is booted up.
2. In a separate terminal window, Run `roscore` on your Stretch within the conda/mamba environment `home_robot` on your Stretch

   ```bash
   mamba activate home_robot
   roscore
   ```
3. [Attach and set up iPhone on robot](/hardware/attach-camera-to-robot.md).
4. Change current working directory to this repository’s root folder (`cd ../robot-server`).
5. Run in terminal (not within the `conda` environment, but in the root pip environment):

   ```bash
   python3 start_server.py
   ```
