# Telepresence and web\_interface using Stretch RE2

**URL:** <https://forum.hello-robot.com/t/telepresence-and-web-interface-using-stretch-re2/697>\
**Category:** Ask\
**Created:** [May 4, 2023, 12:03am UTC](https://forum.hello-robot.com/t/telepresence-and-web-interface-using-stretch-re2/697 "2023-05-04T00:03:16Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rafael\_MM](https://avatars.discourse-cdn.com/v4/letter/r/a698b9/32.png) [@Rafael\_MM](https://forum.hello-robot.com/u/Rafael_MM)\
**Post date:** [May 4, 2023, 12:03am UTC](https://forum.hello-robot.com/t/telepresence-and-web-interface-using-stretch-re2/697/1 "2023-05-04T00:03:16Z")

</div>

Hello community,

I am currently trying to use the Teleop kit and the stretch\_fisheye\_web\_interface.

The current problem that I am running into is that those installation instructions are for RE1 and run melodic while I have a RE2 running noetic.

I tried going into the web\_interface\_installation\_sh file and updating all the installation lines that would install melodic to noetic, but I am still running into problems (mainly missing files)  
I also tried using these instructions

> **[GitHub - hello-robot/stretch\_fisheye\_web\_interface: This is a version of the...](https://github.com/hello-robot/stretch_fisheye_web_interface)**
>
> This is a version of the web interface for the Stretch RE1 that uses cameras with very wide-angle lens attached to the robot's head and gripper. - GitHub - hello-robot/stretch\_fisheye\_web\_inter...

as well as these instructions

> **[GitHub - hcrlab/stretch\_web\_interface: Prototype web interface that enables...](https://github.com/hcrlab/stretch_web_interface)**
>
> Prototype web interface that enables remote teleoperation of the Stretch RE1 mobile manipulator from Hello Robot Inc. - GitHub - hcrlab/stretch\_web\_interface: Prototype web interface that enables r...

to no success.

recent errors:

RLException: while processing /home/hello-robot/catkin\_ws/src/stretch\_ros/stretch\_core/launch/imu\_filter.launch:  
Invalid roslaunch XML syntax: [Errno 2] No such file or directory: ‘/home/hello-robot/catkin\_ws/src/stretch\_ros/stretch\_core/launch/imu\_filter.launch’  
The traceback for the exception was written to the log file

bash: ./launch/gripper\_camera.launch: No such file or directory  
[ERROR] [1683158228.037435552]: Cannot identify ‘/dev/hello-navigation-camera’: 2, No such file or directory  
[gripper\_camera-2] process has died [pid 14768, exit code 1, cmd /opt/ros/noetic/lib/usb\_cam/usb\_cam\_node /usb\_cam/image\_raw:=/gripper\_camera/image\_raw \_\_name:=gripper\_camera \_\_log:=/home/hello-robot/.ros/log/35279706-ea0e-11ed-a5d9-6b132f8583dd/gripper\_camera-2.log].  
log file: /home/hello-robot/.ros/log/35279706-ea0e-11ed-a5d9-6b132f8583dd/gripper\_camera-2\*.log  
[navigation\_camera-4] process has died [pid 14770, exit code 1, cmd /opt/ros/noetic/lib/usb\_cam/usb\_cam\_node /usb\_cam/image\_raw:=/navigation\_camera/image\_raw \_\_name:=navigation\_camera \_\_log:=/home/hello-robot/.ros/log/35279706-ea0e-11ed-a5d9-6b132f8583dd/navigation\_camera-4.log].  
log file: /home/hello-robot/.ros/log/35279706-ea0e-11ed-a5d9-6b132f8583dd/navigation\_camera-4\*.log

---

<div class="post-metadata">

**Author:** ![bshah](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.hello-robot.com/bshah/32/55_2.png) [@bshah](https://forum.hello-robot.com/u/bshah)\
**Post date:** [May 5, 2023, 7:31am UTC](https://forum.hello-robot.com/t/telepresence-and-web-interface-using-stretch-re2/697/2 "2023-05-05T07:31:55Z")

</div>

Hi @Rafael_MM, I’ll let others chime in on the [hcrlab/stretch\_web\_interface](https://github.com/hcrlab/stretch_web_interface) and [hello-robot/stretch\_fisheye\_web\_interface](https://github.com/hello-robot/stretch_fisheye_web_interface) repos since I’m not very familiar with them. But I think I may know what’s causing the errors you’ve appended at the bottom of your post. The `Cannot identify '/dev/hello-navigation-camera'` error likely results from an incorrect UDEV rule(s) for the teleop cameras, which prevents the usb\_cam ROS node from connecting to one or both of the cameras. Let’s start by running `ll /dev/hello*` to see which UDEV rules have triggered. Ideally, we would see an entry for both /dev/hello-navigation-camera and /dev/hello-gripper-camera.

---

<div class="post-metadata">

**Author:** ![vinitha](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.hello-robot.com/vinitha/32/459_2.png) [@vinitha](https://forum.hello-robot.com/u/vinitha)\
**Post date:** [May 5, 2023, 4:17pm UTC](https://forum.hello-robot.com/t/telepresence-and-web-interface-using-stretch-re2/697/3 "2023-05-05T16:17:30Z")

</div>

Hi @Rafael_MM! Sorry about the difficulty setting up the interface. We need to update the README.

First lets get everything installed for the `stretch_web_interface`:

- Create a workspace with the [hcrlab fork of stretch\_ros](https://github.com/hcrlab/stretch_ros) (on noetic-devel) and [stretch\_web\_interface](https://github.com/hcrlab/stretch_web_interface)
- Run `rosdep install --from-paths . --ignore-src -y -r` from the workspace `src` directory to get all the package dependencies
- Run `web_interface_installation.sh` to get extra dependencies (you are correct in updating the packages to noetic)
- Run `npm install` in the `stretch_web_interface` directory
- Browser features like the camera and microphone access require that the page be running in an SSL context, so we need certificates in order to serve the interface and enable SSL for the rosburdge websocket (see the launch files). We are going to use `mkcert` to manage a set of certificates accross the development machines and Stretch. Download the `mkcert` pre-built binaries and install `mkcert`:

```auto
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
chmod +x mkcert-v*-linux-amd64
sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert
sudo apt-get install libnss3-tools
roscd stretch_web_interface/certificates && CAROOT=`pwd` mkcert --install

```

- To make your own certificates for your robot run (this example uses our robot slinky): `mkcert slinky.hcrlab.cs.washington.edu slinky.local slinky.dev localhost 127.0.0.1 0.0.0.0 ::1`
- Then copy the `Certificate Authority` that `mkcert` created (`rootCA-key.pem` and `rootCA.pem` ) on the robot to `~/.local/share/mkcert`

Next we want to get the fisheye cameras working. Binit is correct that they cannot be identified because the udev rules are likely incorrect.

- Run `sudo dmesg | grep usb` to get information about currently plugged in devices. If you unplug and replug one of the fisheye cameras before running the command its information will be displayed at the bottom. You should see something like `New USB device found, idVendor=1d6c, idProduct=0103, bcdDevice= 0.10`.
- Update the `idVendor` and `idProduct` in `/etc/udev/rules.d/88-hello-navigation-camera.rules` and `/etc/udev/rules.d/89-hello-gripper-camera.rules`
- Unplug and replug both cameras after updating the udev rules and reload the udev rules: `sudo udevadm control --reload-rules`
- Run `ll /dev/hello*` and check for both `/dev/hello-navigation-camera` and `/dev/hello-gripper-camera`
- If you don’t see them then try unplugging/replugging the cameras a couple times and/or restarting the robot
- You might need to swap the kernels: `KERNELS=="1-1.3.*" changed to KERNELS=="1-1.2.*"` and `KERNELS=="1-1.2.*" changed to KERNELS=="1-1.3.*"`
- Every time you change the udev rules you will have to reload the rules and unplug and replug the cameras to see if the symlinks appear

If you can see the symlinks you can try running the interface. Run the following commands on the robot in separate terminals:

```auto
roslaunch stretch_web_interface web_interface.launch
./start_web_server_and_robot_browser.sh

```

Enter your robot’s hostname or IP address on **google chrome** and you should see the interface.

Hope this helps, please let me know if you run into any issues!

---

<div class="post-metadata">

**Author:** ![Rafael\_MM](https://avatars.discourse-cdn.com/v4/letter/r/a698b9/32.png) [@Rafael\_MM](https://forum.hello-robot.com/u/Rafael_MM)\
**Post date:** [May 8, 2023, 11:45pm UTC](https://forum.hello-robot.com/t/telepresence-and-web-interface-using-stretch-re2/697/4 "2023-05-08T23:45:00Z")

</div>

Hey Vinitha,

I have a problem with setting up the Kernels. The Kernel name that was on my device was set to “Video\*” for both gripper and navigation, I tried using 1-1.2. and 1-1.3, but the cameras don’t get set up as dev/hello…

I was able to find the IdVender and IdProduct and that has been switch, but I am still unable to get the cameras to be display

---

<div class="post-metadata">

**Author:** ![vinitha](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.hello-robot.com/vinitha/32/459_2.png) [@vinitha](https://forum.hello-robot.com/u/vinitha)\
**Post date:** [May 9, 2023, 12:22am UTC](https://forum.hello-robot.com/t/telepresence-and-web-interface-using-stretch-re2/697/5 "2023-05-09T00:22:24Z")

</div>

You want to keep `KERNEL=video*` and add `KERNELS`

---

<div class="post-metadata">

**Author:** ![Rafael\_MM](https://avatars.discourse-cdn.com/v4/letter/r/a698b9/32.png) [@Rafael\_MM](https://forum.hello-robot.com/u/Rafael_MM)\
**Post date:** [May 10, 2023, 1:00am UTC](https://forum.hello-robot.com/t/telepresence-and-web-interface-using-stretch-re2/697/6 "2023-05-10T01:00:34Z")

</div>

Still can’t get it to appear (I added some pictures just to make sure I am doing this correctly) as `/dev/hello-navigation-camera` and `/dev/hello-gripper-camera , and I have tried it with both `/etc/udev/rules.d/88-hello-navigation-camera.rules`and`/etc/udev/rules.d/89-hello-gripper-camera.rules`

Troubleshooting:  
I first disconnected (one at a time) both fish-eye cameras to verified what USB device they were.

- here is the USB # for the navigation camera  
 ![disconnect_navigation_camera](https://canada1.discourse-cdn.com/flex030/uploads/hello_robot2/original/1X/f2455f56e88efef8fed470e15937ae13b7498eab.png)
- here is the USB # for the gripper camera  
 ![disconnect_gripper_camera](https://canada1.discourse-cdn.com/flex030/uploads/hello_robot2/original/1X/65f13c6a223a8925c847f99b166132708b9bf545.png)

After that I reconnected each camera and type `sudo dmesg | grep` to get the information of each device once they were connected

- navigation camera  

- gripper camera  

- Finally I edited `/etc/udev/rules.d/88-hello-navigation-camera.rules` and `/etc/udev/rules.d/89-hello-gripper-camera.rules` with their corresponding information. I did try both Kernels on both rule files just to see if one might work. As shown below  

One thing I did notice was that the serial numbers were different so I did try changing them so they matched, but was not able to get the cameras working by doing so.

---

<div class="post-metadata">

**Author:** ![vinitha](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.hello-robot.com/vinitha/32/459_2.png) [@vinitha](https://forum.hello-robot.com/u/vinitha)\
**Post date:** [May 13, 2023, 12:57am UTC](https://forum.hello-robot.com/t/telepresence-and-web-interface-using-stretch-re2/697/7 "2023-05-13T00:57:23Z")

</div>

It’s supposed to be `KERNEL==video*` (not `Video*`). From you screenshots it looks like the kernels for the navigation camera is `1-2.1.1` and `1-4.1.3.1` for the gripper camera. Add `KERNELS==1-2.1*` to the navigation camera udev rules and `KERNELS==1-4.1*` to the gripper camera udev rules.

Some more helpful information: [udev - ArchWiki](https://wiki.archlinux.org/title/udev)

Hope this helps!

---

<div class="post-metadata">

**Author:** ![Rafael\_MM](https://avatars.discourse-cdn.com/v4/letter/r/a698b9/32.png) [@Rafael\_MM](https://forum.hello-robot.com/u/Rafael_MM)\
**Post date:** [May 16, 2023, 1:07am UTC](https://forum.hello-robot.com/t/telepresence-and-web-interface-using-stretch-re2/697/8 "2023-05-16T01:07:00Z")

</div>

Hey @vinitha,

Thanks for the help after changing those suggested things as well as matching the serial# I was able to get Stretch to register both gripper and navigation cameras.

I am now running into a different problem. When I execute

```auto
roslaunch stretch_web_interface web_interface.launch

```

I get this error

```auto
FileNotFoundError: [Errno 2] No such file or directory: '/home/hello-robot/catkin_ws/src/stretch_ros/stretch_description/urdf/stretch.urdf'

```

Which after looking into the files it does seem like stretch.urdf is missing from the repo.  
[update: I was able to reinstall my urdf files by reassigning them]

new error now

```auto
RLException: while processing /home/hello-robot/catkin_ws/src/stretch_ros/stretch_core/launch/imu_filter.launch:
Invalid roslaunch XML syntax: [Errno 2] No such file or directory: '/home/hello-robot/catkin_ws/src/stretch_ros/stretch_core/launch/imu_filter.launch'
The traceback for the exception was written to the log file

```

This files DOES seem to be missing since other repos do include it.  
[update: after making a launch file of imu\_filter.launch i am now getting

```auto
base_local_planner_params.yaml

```

that is missing. It seems like a couple of files are missing from this repo [GitHub - hcrlab/stretch\_ros: ROS-related code for the Stretch RE1 mobile manipulator from Hello Robot Inc.](https://github.com/hcrlab/stretch_ros)  
compare to the hello-robot repo [GitHub - hello-robot/stretch\_ros: ROS-related code for the Stretch RE1 mobile manipulator from Hello Robot Inc.](https://github.com/hello-robot/stretch_ros)  
]

* * *

I am able to run

```auto
roscd stretch_web_interface/bash_scripts/
./start_web_server_and_robot_browser.sh 

```

which gives me this after connecting to the web interface using username: 01 Password: xXTgfdH8

```auto
successful connection to socket.io
data.user =
{
  _id: -,(removed for sharing purposes) 
  username: 'o1',
  name: 'operator 1',
  role: 'operator',
  approved: true,
  date: 2017-10-17T22:30:43.733Z,
  __v: 0
}
connection authorized!
new socket.io connection
socket.handshake = 
{
  headers: {
    host: '-', (removed for sharing purposes) 
    connection: 'keep-alive',
    'sec-ch-ua': '"Chromium";v="113", "Not-A.Brand";v="24"',
    accept: '*/*',
    'sec-ch-ua-mobile': '?0',
    'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36',
    'sec-ch-ua-platform': '"Linux"',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-mode': 'cors',
    'sec-fetch-dest': 'empty',
    referer: 'https://-/operator/', (removed for sharing purposes) 
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'en-US,en;q=0.9',
    cookie: 'connect.sid=-
  },(removed for sharing purposes) 
  time: 'Mon May 15 2023 17:56:05 GMT-0700 (Pacific Daylight Time)',
  address: '::-'(removed for sharing purposes) ,
  xdomain: false,
  secure: true,
  issued: 1684198565583,
  url: '/socket.io/?EIO=4&transport=polling&t=OWY3gR1',
  query: [Object: null prototype] {
    EIO: '4',
    transport: 'polling',
    t: 'OWY3gR1'
  },
  auth: {}
}
AN OPERATOR HAS CONNECTED
available_robots =
Set(0) {}
operator has requested the available robots
available_robots = Set(0) {}

```

Which allows me to access the interface, but tells me that there is no robot connected.

---

<div class="post-metadata">

**Author:** ![vinitha](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.hello-robot.com/vinitha/32/459_2.png) [@vinitha](https://forum.hello-robot.com/u/vinitha)\
**Post date:** [May 19, 2023, 12:52am UTC](https://forum.hello-robot.com/t/telepresence-and-web-interface-using-stretch-re2/697/9 "2023-05-19T00:52:36Z")

</div>

Hi @Rafael_MM

Sorry for the late response! Could you try using hello robot’s `stretch_ros` in the `dev/noetic` branch. To get `stretch.urdf` run `./xacro_to_urdf.sh` in the `stretch_description` folder.

The reason the there’s no available robots after running `./start_web_server_and_robot_browser.sh` is because you haven’t been able to successfully launch `web_interface.launch`. Hopefully this fixes the error and you should see `r1` in the list of available robots.

---

<div class="post-metadata">

**Author:** ![Hung-Te\_Wu](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.hello-robot.com/hung-te_wu/32/524_2.png) [@Hung-Te\_Wu](https://forum.hello-robot.com/u/Hung-Te_Wu)\
**Post date:** [October 4, 2023, 6:24pm UTC](https://forum.hello-robot.com/t/telepresence-and-web-interface-using-stretch-re2/697/10 "2023-10-04T18:24:43Z")

</div>

Hi Rafael,

I also got FileNotFoundError for stretch.urdf. I was wondering how did you reassign them.

---

<div class="post-metadata">

**Author:** ![Hung-Te\_Wu](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.hello-robot.com/hung-te_wu/32/524_2.png) [@Hung-Te\_Wu](https://forum.hello-robot.com/u/Hung-Te_Wu)\
**Post date:** [October 4, 2023, 6:49pm UTC](https://forum.hello-robot.com/t/telepresence-and-web-interface-using-stretch-re2/697/11 "2023-10-04T18:49:39Z")

</div>

Problem resolved. I copied the file from another user account to mine.
