Stretch 2 workspace update fail due to realsense apt

Hello,

I am currently failing to run stretch_web_teleop (running cd ~/ament_ws/src/stretch_web_teleop/ then ./launch_interface.sh, and as a possible fix I saw at ( Web_teleop demo got stucked in loading page - #2 by hello-vinitha ) I have tried running stretch_new_robot_install.sh -u (after switching to main and pulling), however it fails with the following message:

#############################################
STARTING NEW ROBOT INSTALL
#############################################

###########################################
INSTALLATION OF SYSTEM WIDE PACKAGES
###########################################
Apt update & upgrade (this might take a while)
Install zip & unzip
Install Curl
Install ca-certificates
Install gnupg
Install Git
Install rpl
Install ipython3
Install pip3
Install Emacs packages
Install nettools
Install wget
Install vim
Install pyserial
Install Port Audio
Install lm-sensors & nvme-cli
Install cheese for camera testing
Install SSH Server
Install Chromium
Install htop
Install Ubuntu Sounds
Install BleachBit
Install APT HTTPS
Install Network Security Services libraries
Install uv

###########################################
INSTALLATION OF ROS 2 HUMBLE
###########################################
Setting up keys
Apt update
Install ROS 2 Humble (this might take a while)
Install ROS 2 Dev Tools
Install colcon
Install rosdep
Configure rosdep
Install vcstool

###########################################
INSTALLATION OF ADDITIONAL ROS HUMBLE PKGS
###########################################
Install packages to work with URDFs
Install joint state GUI package
Install IMU visualization plugin for RViz and IMU filter
Install robot localization package for use with IMU and wheel odometry
Install teleop packages

###########################################
INSTALLATION OF INTEL D435i
###########################################
Register the librealsense APT server’s public key
Add the librealsense APT server to the list of APT repositories
Remove old records in case of upgrading
Apt update
W: GPG error: jammy InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY FB0B24895113F120
E: The repository jammy InRelease’ is not signed.

#############################################
FAILURE. INSTALLATION DID NOT COMPLETE.
Look at the troubleshooting guide for solutions to common issues:
or contact Hello Robot support and include /home/hello-robot/stretch_user/log/stretch_install_202604171753/stretch_robot_install_logs.zip
#############################################

I seem to be able to fix that specific issue by adding the new (non-intel?) source to apt and reinstalling librealsense2=2.55.1*: librealsense/doc/distribution_linux.md at master · realsenseai/librealsense · GitHub , but am unsure how to proceed with making sure my packages are up-to-date, and how to make the web teleop work. For more context, here was the output of ros2 launch stretch_web_teleop web_interface.launch.py before trying to update my workspace and after reinstalling the realsense library I mentioned:

[INFO] [launch]: All log files can be found below /home/hello-robot/.ros/log/2026-04-17-17-49-41-328401-weirdstretch-6297
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [realsense2_camera_node-1]: process started with pid [6310]
[INFO] [stretch_driver-8]: process started with pid [6324]
[INFO] [d435i_accel_correction-2]: process started with pid [6312]
[INFO] [image_publisher_node-3]: process started with pid [6314]
[INFO] [image_publisher_node-4]: process started with pid [6316]
[INFO] [tf2_web_republisher-5]: process started with pid [6318]
[INFO] [joint_state_publisher-6]: process started with pid [6320]
[INFO] [robot_state_publisher-7]: process started with pid [6322]
[INFO] [rosbridge_websocket-9]: process started with pid [6326]
[INFO] [rosapi_node-10]: process started with pid [6328]
[INFO] [configure_video_streams.py-11]: process started with pid [6330]
[INFO] [configure_video_streams.py-12]: process started with pid [6333]
[INFO] [configure_video_streams.py-13]: process started with pid [6336]
[INFO] [Empty “{}”-14]: process started with pid [6341]
[INFO] [Bool true-15]: process started with pid [6348]
[INFO] [move_to_pregrasp.py-16]: process started with pid [6351]
[INFO] [text_to_speech.py-17]: process started with pid [6354]
[realsense2_camera_node-1] [INFO] [1776473383.406299193] [camera]: RealSense ROS v4.55.1
[realsense2_camera_node-1] [INFO] [1776473383.406768157] [camera]: Built with LibRealSense v2.55.1
[realsense2_camera_node-1] [INFO] [1776473383.406944660] [camera]: Running with LibRealSense v2.55.1
[realsense2_camera_node-1] [INFO] [1776473383.478958278] [camera]: Device with serial number 153222071854 was found.
[realsense2_camera_node-1]
[realsense2_camera_node-1] [INFO] [1776473383.479026128] [camera]: Device with physical ID /sys/devices/pci0000:00/0000:00:1c.4/0000:02:00.0/0000:03:02.0/0000:3a:00.0/usb4/4-1/4-1:1.0/video4linux/video0 was found.
[realsense2_camera_node-1] [INFO] [1776473383.479048396] [camera]: Device with name Intel RealSense D435I was found.
[realsense2_camera_node-1] [INFO] [1776473383.479362031] [camera]: Device with port number 4-1 was found.
[realsense2_camera_node-1] [INFO] [1776473383.479397420] [camera]: Device USB type: 3.2
[realsense2_camera_node-1] [INFO] [1776473383.479415589] [camera]: Resetting device…
[image_publisher_node-3] [INFO] [1776473383.534470227] [navigation_camera_node]: param_change_callback
[image_publisher_node-3] [INFO] [1776473383.539702611] [navigation_camera_node]: Reset filename as ‘/home/hello-robot/ament_ws/install/stretch_web_teleop/share/stretch_web_teleop/nodes/blank_image.png’
[image_publisher_node-3] [INFO] [1776473383.539726989] [navigation_camera_node]: File name for publishing image is : /home/hello-robot/ament_ws/install/stretch_web_teleop/share/stretch_web_teleop/nodes/blank_image.png
[image_publisher_node-3] [INFO] [1776473383.591751664] [navigation_camera_node]: Flip horizontal image is : false
[image_publisher_node-3] [INFO] [1776473383.591811646] [navigation_camera_node]: Flip flip_vertical image is : false
[image_publisher_node-4] [INFO] [1776473383.942835528] [gripper_camera_node]: param_change_callback
[image_publisher_node-4] [INFO] [1776473383.943066018] [gripper_camera_node]: Reset filename as ‘/home/hello-robot/ament_ws/install/stretch_web_teleop/share/stretch_web_teleop/nodes/blank_image.png’
[image_publisher_node-4] [INFO] [1776473383.943092386] [gripper_camera_node]: File name for publishing image is : /home/hello-robot/ament_ws/install/stretch_web_teleop/share/stretch_web_teleop/nodes/blank_image.png
[image_publisher_node-4] [INFO] [1776473383.993650019] [gripper_camera_node]: Flip horizontal image is : false
[image_publisher_node-4] [INFO] [1776473383.993701233] [gripper_camera_node]: Flip flip_vertical image is : false
[rosbridge_websocket-9] [INFO] [1776473384.420408615] [rosbridge_websocket]: Rosbridge WebSocket server started on port 9090
[d435i_accel_correction-2] [INFO] [1776473384.450841768] [d435i_accel_correction_node]: d435i_accel_correction_node started
[text_to_speech.py-17] [INFO] [1776473384.872944938] [text_to_speech]: Created!
[text_to_speech.py-17] [INFO] [1776473384.875290271] [text_to_speech]: Running!
[move_to_pregrasp.py-16] [INFO] [1776473385.832037743] [move_to_pregrasp]: Created!
[move_to_pregrasp.py-16] [INFO] [1776473385.847500240] [move_to_pregrasp]: Waiting for the get joint states service…
[Bool true-15] Setting parameter failed: (‘Invalid access to undeclared parameter(s)’, )
[stretch_driver-8] [INFO] [1776473386.136830704] [stretch_driver]: For use with S T R E T C H ™ RESEARCH EDITION from Hello Robot Inc.
[stretch_driver-8] [INFO] [1776473386.137302438] [stretch_driver]: stretch_driver started
[INFO] [Bool true-15]: process has finished cleanly [pid 6348]
[stretch_driver-8] Key mapped to End-Of-Arm Tool: tool_stretch_dex_wrist
[stretch_driver-8] [INFO] [1776473387.916802480] [stretch_driver]: broadcast_odom_tf = True
[stretch_driver-8] [INFO] [1776473387.957316734] [stretch_driver]: rate = 30.0 Hz
[stretch_driver-8] [INFO] [1776473387.958673020] [stretch_driver]: twist timeout = 0.5 s
[stretch_driver-8] [INFO] [1776473387.960109963] [stretch_driver]: base_frame_id = base_link
[stretch_driver-8] [INFO] [1776473387.961340193] [stretch_driver]: odom_frame_id = odom
[stretch_driver-8] [INFO] [1776473388.038419008] [stretch_driver]: Changed to mode = position
[move_to_pregrasp.py-16] [INFO] [1776473388.104284734] [move_to_pregrasp]: Received the joint limits.
[move_to_pregrasp.py-16] [ERROR] [1776473388.104829454] [move_to_pregrasp]: Failed to get velocity limits for joint name: Joint.WRIST_EXTENSION
[realsense2_camera_node-1] [INFO] [1776473389.514831692] [camera]: Device with serial number 153222071854 was found.
[realsense2_camera_node-1]
[realsense2_camera_node-1] [INFO] [1776473389.514879767] [camera]: Device with physical ID /sys/devices/pci0000:00/0000:00:1c.4/0000:02:00.0/0000:03:02.0/0000:3a:00.0/usb4/4-1/4-1:1.0/video4linux/video0 was found.
[realsense2_camera_node-1] [INFO] [1776473389.514900158] [camera]: Device with name Intel RealSense D435I was found.
[realsense2_camera_node-1] [INFO] [1776473389.515048802] [camera]: Device with port number 4-1 was found.
[realsense2_camera_node-1] [INFO] [1776473389.515072406] [camera]: Device USB type: 3.2
[realsense2_camera_node-1] [INFO] [1776473389.515112415] [camera]: getParameters…
[realsense2_camera_node-1] [INFO] [1776473389.876052536] [camera]: JSON file is loaded! (/home/hello-robot/ament_ws/install/stretch_core/share/stretch_core/config/HighAccuracyPreset.json)
[realsense2_camera_node-1] [INFO] [1776473389.876119866] [camera]: Device Name: Intel RealSense D435I
[realsense2_camera_node-1] [INFO] [1776473389.876140283] [camera]: Device Serial No: 153222071854
[realsense2_camera_node-1] [INFO] [1776473389.876156376] [camera]: Device physical port: /sys/devices/pci0000:00/0000:00:1c.4/0000:02:00.0/0000:03:02.0/0000:3a:00.0/usb4/4-1/4-1:1.0/video4linux/video0
[realsense2_camera_node-1] [INFO] [1776473389.876173255] [camera]: Device FW version: 5.14.0
[realsense2_camera_node-1] [INFO] [1776473389.876187880] [camera]: Device Product ID: 0x0B3A
[realsense2_camera_node-1] [INFO] [1776473389.876201680] [camera]: Sync Mode: On
[realsense2_camera_node-1] [WARN] [1776473390.017139016] [camera]: re-enable the stream for the change to take effect.
[realsense2_camera_node-1] [WARN] [1776473390.018226138] [camera]: re-enable the stream for the change to take effect.
[realsense2_camera_node-1] [WARN] [1776473390.025107492] [camera]: re-enable the stream for the change to take effect.
[realsense2_camera_node-1] [ERROR] [1776473390.025958261] [camera]: Given value, 63 is invalid. Set ROS param back to: 100
[realsense2_camera_node-1] [INFO] [1776473390.034927793] [camera]: Stopping Sensor: Depth Module
[realsense2_camera_node-1] [INFO] [1776473390.035331146] [camera]: Stopping Sensor: RGB Camera
[realsense2_camera_node-1] [INFO] [1776473390.035375765] [camera]: Stopping Sensor: Motion Module
[realsense2_camera_node-1] [INFO] [1776473390.054835188] [camera]: Starting Sensor: Depth Module
[realsense2_camera_node-1] [INFO] [1776473390.066651894] [camera]: Open profile: stream_type: Depth(0), Format: Z16, Width: 424, Height: 240, FPS: 15
[realsense2_camera_node-1] [INFO] [1776473390.077300516] [camera]: Starting Sensor: RGB Camera
[realsense2_camera_node-1] [INFO] [1776473390.078721046] [camera]: Open profile: stream_type: Color(0), Format: RGB8, Width: 424, Height: 240, FPS: 15
[realsense2_camera_node-1] [INFO] [1776473390.102414469] [camera]: Starting Sensor: Motion Module
[realsense2_camera_node-1] [INFO] [1776473390.104025159] [camera]: Open profile: stream_type: Accel(0)Format: MOTION_XYZ32F, FPS: 100
[realsense2_camera_node-1] [INFO] [1776473390.104064049] [camera]: Open profile: stream_type: Gyro(0)Format: MOTION_XYZ32F, FPS: 200
[realsense2_camera_node-1] [INFO] [1776473390.106878468] [camera]: RealSense Node Is Up!
[realsense2_camera_node-1] [WARN] [1776473391.057941928] [camera]: XXX Hardware Notification:Motion Module failure,1.77647e+12,Error,Hardware Error
[realsense2_camera_node-1] [WARN] [1776473391.057998907] [camera]: Hardware Notification:Motion Module failure,1.77647e+12,Error,Hardware Error

^C[realsense2_camera_node-1] [INFO] [1776473412.202613070] [rclcpp]: signal_handler(signum=2)
[realsense2_camera_node-1] [INFO] [1776473412.203267555] [camera]: Stop Sensor: Depth Module
[realsense2_camera_node-1] [INFO] [1776473412.203292317] [camera]: Close Sensor.
[realsense2_camera_node-1] [INFO] [1776473412.205014223] [camera]: Close Sensor - Done.
[realsense2_camera_node-1] [INFO] [1776473412.205043386] [camera]: Stop Sensor: RGB Camera
[realsense2_camera_node-1] [INFO] [1776473412.205055354] [camera]: Close Sensor.
[image_publisher_node-3] [INFO] [1776473412.201488506] [rclcpp]: signal_handler(signum=2)
[image_publisher_node-4] [INFO] [1776473412.201485511] [rclcpp]: signal_handler(signum=2)
[tf2_web_republisher-5] Traceback (most recent call last):
[tf2_web_republisher-5] File “/home/hello-robot/ament_ws/install/tf2_web_republisher_py/lib/tf2_web_republisher_py/tf2_web_republisher”, line 33, in
[tf2_web_republisher-5] sys.exit(load_entry_point(‘tf2-web-republisher-py’, ‘console_scripts’, ‘tf2_web_republisher’)())
[tf2_web_republisher-5] File “/home/hello-robot/ament_ws/build/tf2_web_republisher_py/tf2_web_republisher_py/tf2_web_republisher_py.py”, line 241, in main
[tf2_web_republisher-5] rclpy.spin(tf_republisher_node) #, executor)
[tf2_web_republisher-5] File “/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/init.py”, line 222, in spin
[tf2_web_republisher-5] executor.spin_once()
[tf2_web_republisher-5] File “/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py”, line 739, in spin_once
[tf2_web_republisher-5] self._spin_once_impl(timeout_sec)
[tf2_web_republisher-5] File “/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py”, line 728, in _spin_once_impl
[tf2_web_republisher-5] handler, entity, node = self.wait_for_ready_callbacks(timeout_sec=timeout_sec)
[tf2_web_republisher-5] File “/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py”, line 711, in wait_for_ready_callbacks
[tf2_web_republisher-5] return next(self._cb_iter)
[tf2_web_republisher-5] File “/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py”, line 608, in _wait_for_ready_callbacks
[tf2_web_republisher-5] wait_set.wait(timeout_nsec)
[tf2_web_republisher-5] KeyboardInterrupt
[d435i_accel_correction-2] interrupt received, so shutting down
[move_to_pregrasp.py-16] Traceback (most recent call last):
[move_to_pregrasp.py-16] File “/home/hello-robot/ament_ws/install/stretch_web_teleop/lib/stretch_web_teleop/move_to_pregrasp.py”, line 1025, in
[move_to_pregrasp.py-16] main(sys.argv[1:])
[move_to_pregrasp.py-16] File “/home/hello-robot/ament_ws/install/stretch_web_teleop/lib/stretch_web_teleop/move_to_pregrasp.py”, line 1018, in main
[move_to_pregrasp.py-16] spin_thread.join()
[move_to_pregrasp.py-16] File “/usr/lib/python3.10/threading.py”, line 1096, in join
[move_to_pregrasp.py-16] self._wait_for_tstate_lock()
[move_to_pregrasp.py-16] File “/usr/lib/python3.10/threading.py”, line 1116, in _wait_for_tstate_lock
[move_to_pregrasp.py-16] if lock.acquire(block, timeout):
[move_to_pregrasp.py-16] KeyboardInterrupt
[stretch_driver-8] Caught signal 2
[realsense2_camera_node-1] [INFO] [1776473412.210665039] [camera]: Close Sensor - Done.
[realsense2_camera_node-1] [INFO] [1776473412.210693893] [camera]: Stop Sensor: Motion Module
[realsense2_camera_node-1] [INFO] [1776473412.214595978] [camera]: Close Sensor.
[configure_video_streams.py-12] [‘/home/hello-robot/ament_ws/install/stretch_web_teleop/lib/stretch_web_teleop/configure_video_streams.py’, ‘/home/hello-robot/ament_ws/install/stretch_web_teleop/share/stretch_web_teleop/config/configure_video_streams_params.yaml’, ‘False’, ‘False’, ‘True’, ‘False’, ‘–ros-args’, ‘-r’, ‘__node:=configure_video_streams_realsense’, ‘–params-file’, ‘/tmp/launch_params_po_6ldvq’]
[configure_video_streams.py-12] Publishing reconfigured video stream
[rosbridge_websocket-9] registered capabilities (classes):
[rosbridge_websocket-9] - <class ‘rosbridge_library.capabilities.call_service.CallService’>
[rosbridge_websocket-9] - <class ‘rosbridge_library.capabilities.advertise.Advertise’>
[rosbridge_websocket-9] - <class ‘rosbridge_library.capabilities.publish.Publish’>
[rosbridge_websocket-9] - <class ‘rosbridge_library.capabilities.subscribe.Subscribe’>
[rosbridge_websocket-9] - <class ‘rosbridge_library.capabilities.defragmentation.Defragment’>
[rosbridge_websocket-9] - <class ‘rosbridge_library.capabilities.advertise_service.AdvertiseService’>
[rosbridge_websocket-9] - <class ‘rosbridge_library.capabilities.service_response.ServiceResponse’>
[rosbridge_websocket-9] - <class ‘rosbridge_library.capabilities.unadvertise_service.UnadvertiseService’>
[rosbridge_websocket-9] - <class ‘rosbridge_library.capabilities.action_client.ActionClientRequests’>
[rosbridge_websocket-9] Exiting due to SIGINT
[configure_video_streams.py-11] [‘/home/hello-robot/ament_ws/install/stretch_web_teleop/lib/stretch_web_teleop/configure_video_streams.py’, ‘/home/hello-robot/ament_ws/install/stretch_web_teleop/share/stretch_web_teleop/config/configure_video_streams_params.yaml’, ‘False’, ‘True’, ‘False’, ‘False’, ‘–ros-args’, ‘-r’, ‘__node:=configure_video_streams_overhead’, ‘–params-file’, ‘/tmp/launch_params_bsoytx4m’]
[configure_video_streams.py-11] Publishing reconfigured video stream
[configure_video_streams.py-13] [‘/home/hello-robot/ament_ws/install/stretch_web_teleop/lib/stretch_web_teleop/configure_video_streams.py’, ‘/home/hello-robot/ament_ws/install/stretch_web_teleop/share/stretch_web_teleop/config/configure_video_streams_params.yaml’, ‘False’, ‘False’, ‘False’, ‘True’, ‘–ros-args’, ‘-r’, ‘__node:=configure_video_streams_gripper’, ‘–params-file’, ‘/tmp/launch_params_km6si3re’]
[configure_video_streams.py-13] Publishing reconfigured video stream
[text_to_speech.py-17] Traceback (most recent call last):
[text_to_speech.py-17] File “/home/hello-robot/ament_ws/install/stretch_web_teleop/lib/stretch_web_teleop/text_to_speech.py”, line 181, in
[text_to_speech.py-17] main()
[text_to_speech.py-17] File “/home/hello-robot/ament_ws/install/stretch_web_teleop/lib/stretch_web_teleop/text_to_speech.py”, line 177, in main
[text_to_speech.py-17] rclpy.shutdown()
[text_to_speech.py-17] File “/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/init.py”, line 126, in shutdown
[text_to_speech.py-17] _shutdown(context=context)
[text_to_speech.py-17] File “/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/utilities.py”, line 58, in shutdown
[text_to_speech.py-17] return context.shutdown()
[text_to_speech.py-17] File “/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/context.py”, line 102, in shutdown
[text_to_speech.py-17] self.__context.shutdown()
[text_to_speech.py-17] rclpy._rclpy_pybind11.RCLError: failed to shutdown: rcl_shutdown already called on the given context, at ./src/rcl/init.c:241
[ERROR] [tf2_web_republisher-5]: process has died [pid 6318, exit code -2, cmd ‘/home/hello-robot/ament_ws/install/tf2_web_republisher_py/lib/tf2_web_republisher_py/tf2_web_republisher --ros-args -r __node:=tf2_web_republisher_node’].
[INFO] [robot_state_publisher-7]: process has finished cleanly [pid 6322]
[INFO] [image_publisher_node-3]: process has finished cleanly [pid 6314]
[INFO] [image_publisher_node-4]: process has finished cleanly [pid 6316]
[ERROR] [move_to_pregrasp.py-16]: process has died [pid 6351, exit code -2, cmd ‘/home/hello-robot/ament_ws/install/stretch_web_teleop/lib/stretch_web_teleop/move_to_pregrasp.py /home/hello-robot/ament_ws/install/stretch_web_teleop/share/stretch_web_teleop/config/configure_video_streams_params.yaml --ros-args’].
[configure_video_streams.py-12] Traceback (most recent call last):
[configure_video_streams.py-12] File “/home/hello-robot/ament_ws/install/stretch_web_teleop/lib/stretch_web_teleop/configure_video_streams.py”, line 1110, in
[configure_video_streams.py-12] rclpy.shutdown()
[configure_video_streams.py-12] File “/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/init.py”, line 126, in shutdown
[configure_video_streams.py-12] _shutdown(context=context)
[configure_video_streams.py-12] File “/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/utilities.py”, line 58, in shutdown
[configure_video_streams.py-12] return context.shutdown()
[configure_video_streams.py-12] File “/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/context.py”, line 102, in shutdown
[configure_video_streams.py-12] self.__context.shutdown()
[configure_video_streams.py-12] rclpy._rclpy_pybind11.RCLError: failed to shutdown: rcl_shutdown already called on the given context, at ./src/rcl/init.c:241
[ERROR] [Empty “{}”-14]: process has died [pid 6341, exit code -2, cmd ‘/opt/ros/humble/bin/ros2 service call /reinitialize_global_localization std_srvs/srv/Empty “{}”’].
[INFO] [joint_state_publisher-6]: process has finished cleanly [pid 6320]
[INFO] [rosbridge_websocket-9]: process has finished cleanly [pid 6326]
[INFO] [rosapi_node-10]: process has finished cleanly [pid 6328]
[INFO] [d435i_accel_correction-2]: process has finished cleanly [pid 6312]
[INFO] [configure_video_streams.py-11]: process has finished cleanly [pid 6330]
[INFO] [configure_video_streams.py-13]: process has finished cleanly [pid 6336]
[ERROR] [text_to_speech.py-17]: process has died [pid 6354, exit code 1, cmd ‘/home/hello-robot/ament_ws/install/stretch_web_teleop/lib/stretch_web_teleop/text_to_speech.py gtts --ros-args’].
[realsense2_camera_node-1] [INFO] [1776473412.542464462] [camera]: Close Sensor - Done.
[ERROR] [configure_video_streams.py-12]: process has died [pid 6333, exit code 1, cmd ‘/home/hello-robot/ament_ws/install/stretch_web_teleop/lib/stretch_web_teleop/configure_video_streams.py /home/hello-robot/ament_ws/install/stretch_web_teleop/share/stretch_web_teleop/config/configure_video_streams_params.yaml False False True False --ros-args -r __node:=configure_video_streams_realsense --params-file /tmp/launch_params_po_6ldvq’].
[INFO] [realsense2_camera_node-1]: process has finished cleanly [pid 6310]
[INFO] [stretch_driver-8]: process has finished cleanly [pid 6324]

Thanks so much!

Hi @Egg_Cag,

Let’s first focus on resolving the new install issue. Once that’s working, we can switch back to the web teleop.

From what we’ve seen, the issue appears to be related to the RealSense installation . We’ve identified a fix but haven’t pushed it to the main branch yet. In the meantime, we can test it directly.

Could you please do the following:

cd ~/repos/stretch_install
git fetch
git checkout fix/stretch-install-20.04

Then rerun:

./stretch_new_robot_install.sh -u

Let me know how that goes, and we’ll take it from there.

For reference, the fix is based on this PR.

Thanks!
Jason


It didn’t help at all since that branch also installs it from intel.com, but I changed stretch_install_system.sh in factory/22.04 to include the new apt source, and now it works. With that, the stretch_web_teleop now mostly works, except I don’t have camera input available. There doesn’t seem to be an error in my output now and stretch_camera_streams_check.py runs without any issues, so I’m not sure how to debug this.

Thank you so much for your help!

Here’s the stretch_install_system.sh (i’m a new user so cannot include it as an attachment):

#!/bin/bash
set -e

REDIRECT_LOGDIR=“$HOME/stretch_user/log”
if getopts “:l:” opt && [[ $opt == “l” && -d $OPTARG ]]; then
REDIRECT_LOGDIR=$OPTARG
fi
REDIRECT_LOGFILE=“$REDIRECT_LOGDIR/stretch_install_system.date '+%Y%m%d%H%M'_redirected.txt”

function install {
sudo apt-get install -y --allow-downgrades “$@” >> $REDIRECT_LOGFILE
}

echo “###########################################”
echo “INSTALLATION OF SYSTEM WIDE PACKAGES”
echo “###########################################”
echo “Apt update & upgrade (this might take a while)”
sudo apt-add-repository universe -y >> $REDIRECT_LOGFILE
sudo apt-get --yes update >> $REDIRECT_LOGFILE
sudo apt-get --yes upgrade &>> $REDIRECT_LOGFILE
echo “Install zip & unzip”
install zip unzip
echo “Install Curl”
install curl
echo “Install ca-certificates”
install ca-certificates
echo “Install gnupg”
install gnupg
echo “Install Git”
install git
echo “Install rpl”
install rpl
echo “Install ipython3”
install ipython3
echo “Install pip3”
install python3-pip
echo “Install Emacs packages”
install emacs yaml-mode
echo “Install nettools”
install net-tools
echo “Install wget”
install wget
echo “Install vim”
install vim
echo “Install pyserial”
install python3-serial
echo “Install Port Audio”
install portaudio19-dev
echo “Install lm-sensors & nvme-cli”
install lm-sensors
install nvme-cli
echo “Install cheese for camera testing”
install cheese
echo “Install SSH Server”
install ssh
echo “Install Chromium”
install chromium-browser
echo “Install htop”
install htop
echo “Install Ubuntu Sounds”
install ubuntu-sounds
echo “Install BleachBit”
install bleachbit
echo “Install APT HTTPS”
install apt-transport-https
echo “Install Network Security Services libraries”
install libnss3-tools
echo “Install uv”
curl -LsSf https://astral.sh/uv/install.sh | sh &>> $REDIRECT_LOGFILE
echo “”

Ubuntu-Install-Debians — ROS 2 Documentation: Humble documentation

echo “###########################################”
echo “INSTALLATION OF ROS 2 HUMBLE”
echo “###########################################”
echo “Setting up keys”
sudo rm -f /usr/share/keyrings/ros-archive-keyring.gpg
sudo rm -f /etc/apt/sources.list.d/ros2.list
export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F “tag_name” | awk -F" ‘{print $4}’)
curl -L -o /tmp/ros2-apt-source.deb “https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb” &>> $REDIRECT_LOGFILE
sudo dpkg -i /tmp/ros2-apt-source.deb >> $REDIRECT_LOGFILE

echo “Apt update”
sudo apt-get --yes update >> $REDIRECT_LOGFILE
echo “Install ROS 2 Humble (this might take a while)”
install ros-humble-desktop-full

ROS Developer Tools - Now in Binary Form! - ROS General - Open Robotics Discourse

echo “Install ROS 2 Dev Tools”
install ros-dev-tools
echo “Install colcon”
install python3-colcon-common-extensions
install python3-colcon-clean
echo “Install rosdep”
install python3-rosdep
echo “Configure rosdep”
if [ -f “/etc/ros/rosdep/sources.list.d/20-default.list” ]; then
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
fi
sudo rosdep init >> $REDIRECT_LOGFILE
echo “Install vcstool”
install python3-vcstool
echo “”

echo “###########################################”
echo “INSTALLATION OF ADDITIONAL ROS HUMBLE PKGS”
echo “###########################################”
echo “Install packages to work with URDFs”
install liburdfdom-tools meshlab
install ros-humble-urdfdom-py
echo “Install joint state GUI package”
install ros-humble-joint-state-publisher-gui
echo “Install IMU visualization plugin for RViz and IMU filter”
install ros-humble-rviz-imu-plugin ros-humble-imu-filter-madgwick
echo “Install robot localization package for use with IMU and wheel odometry”
install ros-humble-robot-localization
echo “Install teleop packages”
install ros-humble-teleop-twist-keyboard
echo “”

echo “###########################################”
echo “INSTALLATION OF INTEL D435i”
echo “###########################################”
echo “Register the librealsense APT server’s public key”
function register_librealsense_apt_server {
curl -sSf https://librealsense.realsenseai.com/Debian/librealsenseai.asc | gpg --dearmor | sudo tee /etc/apt/keyrings/librealsenseai.gpg > /dev/null
}
register_librealsense_apt_server &>> $REDIRECT_LOGFILE
echo “Add the librealsense APT server to the list of APT repositories”
function add_librealsense_apt_server {
echo “deb [signed-by=/etc/apt/keyrings/librealsenseai.gpg] https://librealsense.realsenseai.com/Debian/apt-repo lsb_release -cs main” | sudo tee /etc/apt/sources.list.d/librealsense.list
}
add_librealsense_apt_server &>> $REDIRECT_LOGFILE
echo “Remove old records in case of upgrading”
sudo rm -f /etc/apt/sources.list.d/realsense-public.list
echo “Apt update”
sudo apt-get --yes update >> $REDIRECT_LOGFILE
echo “Install librealsense2 packages”
install librealsense2=2.55.1* librealsense2-udev-rules librealsense2-utils=2.55.1* librealsense2-dev=2.55.1* librealsense2-dbg=2.55.1* librealsense2-gl=2.55.1*
echo “”

echo “###########################################”
echo “INSTALLATION OF WEB INTERFACE”
echo “###########################################”
echo “Register the nodesource APT server’s public key”
function register_nodesource_apt_server {
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --batch --yes --dearmor -o /etc/apt/keyrings/nodesource.gpg
}
register_nodesource_apt_server &>> $REDIRECT_LOGFILE
echo “Add the nodesource APT server to the list of APT respositories”
function add_nodesource_apt_server {
NODE_MAJOR=21
echo “deb [signed-by=/etc/apt/keyrings/nodesource.gpg, arch=amd64] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main” | sudo tee /etc/apt/sources.list.d/nodesource.list
}
add_nodesource_apt_server &>> $REDIRECT_LOGFILE
echo “Apt update”
sudo apt-get --yes update >> $REDIRECT_LOGFILE
echo “Install NodeJS”
install nodejs
echo “Install PyPCL and PyKDL”
install python3-pcl python3-pykdl screen
echo “Install PM2”
sudo npm install -g pm2 &>> $REDIRECT_LOGFILE
echo “”

echo “###########################################”
echo “INSTALLATION OF REMOTE DESKTOP”
echo “###########################################”
echo “Install Sunshine Remote Desktop Server”
wget https://github.com/LizardByte/Sunshine/releases/download/v0.21.0/sunshine-ubuntu-22.04-amd64.deb -O /tmp/sunshine.deb &>> $REDIRECT_LOGFILE
install /tmp/sunshine.deb
echo “Add Sunshine uinput udev rule”
function add_sunshine_uinput_rule {
echo ‘KERNEL==“uinput”, SUBSYSTEM==“misc”, OPTIONS+=“static_node=uinput”, TAG+=“uaccess”’ | sudo tee /etc/udev/rules.d/85-sunshine.rules
}
add_sunshine_uinput_rule &>> $REDIRECT_LOGFILE
echo “Setup Sunshine apps”
sudo cp ./sunshine_apps.json /usr/share/sunshine/apps.json
echo “Setup Sunshine systemd unit”
mkdir -p ~/.config/systemd/user/
cp ./sunshine.service ~/.config/systemd/user/sunshine.service

That’s great news that you were able to get the installation working.

Before we dive into the camera issue, could you please share your robot’s serial number?

Now, focusing on the camera issue in stretch_web_teleop, could you share a bit more detail on what you’re observing?

  • Is everything else in web teleop working as expected aside from the camera streams?
  • What do you see for the camera feeds (e.g., black screen, frozen image, etc.)?
  • Are both camera streams affected, or just one?
  • Do you see any relevant logs or errors when running web teleop?

With a bit more detail, we can narrow this down quickly.

Thanks!
Best,
Jason

Hello! Thanks for the quick reply - the serial number of this robot is stretch-re2-2038, and I’m running into the same issue in another robot (stretch-re2-2049). Everything else in web teleop works as intended, the camera feed is a black screen. Since this is a stretch 2, we don’t have a wrist camera, so I’m only seeing one black screen (which I believe is as intended). Here is the console output from the browser when running ./launch_interface.py and connecting from a workstation.

console-export-2026-4-21_9-23-49.log (4.6 KB)

I’m not seeing any other relevant errors when running web_teleop, but will also attach more log files later as I’m trying to observe the output of web_interface.launch.py right now.

Also, here are the results of “stretch_system_check.py -v” for more context:

Model = Stretch 2
Tool = DexWrist 2 w/ Gripper
Batch = nina
Serial Number = stretch-re2-2038

-— Checking Hardware ----
[Pass] Comms are ready
hello-wacc present
hello-motor-left-wheel present
hello-pimu present
hello-lrf present
hello-dynamixel-head present
hello-dynamixel-wrist present
hello-motor-arm present
hello-motor-right-wheel present
hello-motor-lift present
hello-respeaker present
stretch_gripper pinged
wrist_pitch pinged
wrist_roll pinged
wrist_yaw pinged
head_pan pinged
head_tilt pinged
hello-motor-lift pinged
hello-motor-arm pinged
hello-motor-left-wheel pinged
hello-motor-right-wheel pinged
[Pass] Actuators are ready
D435i USB speed OK (5000 Mbps, SN=153222071854, sysfs=4-1, product=Intel(R) RealSense™ Depth Camera 435i)
[Pass] Sensors are ready
[Pass] Battery voltage is 13.6 V

-— Checking Software ----
[Pass] Ubuntu 22.04 is ready
[Pass] All APT pkgs are setup correctly
[Pass] Firmware is up-to-date
hello-pimu = v0.8.3p6
hello-wacc = v0.5.1p3
hello-motor-arm = v0.7.6p5
hello-motor-lift = v0.7.6p5
hello-motor-left-wheel = v0.7.6p5
hello-motor-right-wheel = v0.7.6p5
[Pass] Python pkgs are up-to-date
hello-robot-stretch-body = 0.7.31
hello-robot-stretch-body-tools = 0.7.16
hello-robot-stretch-tool-share = 0.3.4
hello-robot-stretch-factory = 0.5.7
hello-robot-stretch-diagnostics = 0.0.14
hello-robot-stretch-urdf = 0.1.2
[Pass] ROS2 Humble is ready
Workspace at ~/ament_ws/src/stretch_ros2

Thanks for the detailed update, this is very helpful.

Good to see that the robot is passing system checks and that everything else in web teleop is working as expected.

For Stretch 2, web teleop uses the wide-angle navigation camera (not the D435i). Could you confirm which camera is being used on your system? Do you have another camera other than the Realsense D435i?

Best,
Jason

Is this the navigation camera? If so, how can I connect it to the gimbal d435 sits in?
This is from the other robot, the one I have been mentioning so far doesn’t have it.

Alternatively, where in stretch_web_teleop can I change to enable viewing the rotated d435 image instead?

Hi @Egg_Cag,

Thanks for sharing all the details, that’s really helpful.

In your specific case, since you only have the D435i camera, everything should still work correctly in web teleop. So let’s focus on why you’re seeing a black screen.

Could you check whether the camera stream is working properly in ROS 2?

In Terminal 1, run:

ros2 launch stretch_core d435i_low_resolution.launch.py

Then in Terminal 2, run:

ros2 topic echo /camera/color/image_raw

If you see output in Terminal 2, that means the D435i camera is working correctly at the ROS level.

Could you please confirm whether you see output there?
If not, could you share the output logs from Terminal 1 so we can take a closer look?

Best,
Jason