Stretch3 Funmap Error

Hello hello robot team,

I just started using the Stretch 3 robot. I was able to run the ROS2 lidar mapping and navigation demo without issue. When I attempted the Funmap demo, I received error messages and was not able to perform the initial scan. I have include the console output below with the associated errors:

hello-robot@stretch-se3-3170:~/stretch_visual_servoing$ ros2 launch stretch_funmap mapping.launch.py
[INFO] [launch]: All log files can be found below /home/hello-robot/.ros/log/2026-02-06-15-19-53-500291-stretch-se3-3170-14343
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [launch.user]: D435i launched in high resolution
[INFO] [realsense2_camera_node-1]: process started with pid [14360]
[INFO] [stretch_driver-5]: process started with pid [14368]
[INFO] [d435i_accel_correction-2]: process started with pid [14362]
[INFO] [joint_state_publisher-3]: process started with pid [14364]
[INFO] [robot_state_publisher-4]: process started with pid [14366]
[INFO] [funmap-6]: process started with pid [14370]
[INFO] [rviz2-7]: process started with pid [14372]
[d435i_accel_correction-2] [INFO] [1770419994.247511841] [d435i_accel_correction_node]: d435i_accel_correction_node started
[rviz2-7] [INFO] [1770419994.360728880] [rviz2]: Stereo is NOT SUPPORTED
[rviz2-7] [INFO] [1770419994.360819816] [rviz2]: OpenGl version: 4.6 (GLSL 4.6)
[realsense2_camera_node-1] [INFO] [1770419994.399008276] [camera]: RealSense ROS v4.55.1
[realsense2_camera_node-1] [INFO] [1770419994.400116144] [camera]: Built with LibRealSense v2.56.5
[realsense2_camera_node-1] [INFO] [1770419994.400151849] [camera]: Running with LibRealSense v2.56.5
[rviz2-7] [INFO] [1770419994.414676436] [rviz2]: Stereo is NOT SUPPORTED
[realsense2_camera_node-1] [INFO] [1770419994.435646372] [camera]: Device with serial number 244222076452 was found.
[realsense2_camera_node-1]
[realsense2_camera_node-1] [INFO] [1770419994.435754700] [camera]: Device with physical ID /sys/devices/pci0000:00/0000:00:0d.0/usb2/2-1/2-1:1.0/video4linux/video0 was found.
[realsense2_camera_node-1] [INFO] [1770419994.435761342] [camera]: Device with name Intel RealSense D435I was found.
[realsense2_camera_node-1] [INFO] [1770419994.435898144] [camera]: Device with port number 2-1 was found.
[realsense2_camera_node-1] [INFO] [1770419994.435907874] [camera]: Device USB type: 3.2
[realsense2_camera_node-1] [INFO] [1770419994.435913335] [camera]: Resetting device…
[stretch_driver-5] [INFO] [1770419995.032761105] [stretch_driver]: For use with S T R E T C H ™ RESEARCH EDITION from Hello Robot Inc.
[stretch_driver-5] [INFO] [1770419995.033030354] [stretch_driver]: stretch_driver started
[funmap-6] Traceback (most recent call last):
[funmap-6] File “/home/hello-robot/ament_ws/install/stretch_funmap/lib/stretch_funmap/funmap”, line 33, in
[funmap-6] sys.exit(load_entry_point(‘stretch-funmap==0.0.0’, ‘console_scripts’, ‘funmap’)())
[funmap-6] File “/home/hello-robot/ament_ws/install/stretch_funmap/lib/stretch_funmap/funmap”, line 25, in importlib_load_entry_point
[funmap-6] return next(matches).load()
[funmap-6] File “/usr/lib/python3.10/importlib/metadata/init.py”, line 171, in load
[funmap-6] module = import_module(match.group(‘module’))
[funmap-6] File “/usr/lib/python3.10/importlib/init.py”, line 126, in import_module
[funmap-6] return _bootstrap._gcd_import(name[level:], package, level)
[funmap-6] File “”, line 1050, in _gcd_import
[funmap-6] File “”, line 1027, in _find_and_load
[funmap-6] File “”, line 1006, in _find_and_load_unlocked
[funmap-6] File “”, line 688, in _load_unlocked
[funmap-6] File “”, line 883, in exec_module
[funmap-6] File “”, line 241, in _call_with_frames_removed
[funmap-6] File “/home/hello-robot/ament_ws/install/stretch_funmap/lib/python3.10/site-packages/stretch_funmap/funmap.py”, line 35, in
[funmap-6] from . import mapping as ma
[funmap-6] File “/home/hello-robot/ament_ws/install/stretch_funmap/lib/python3.10/site-packages/stretch_funmap/mapping.py”, line 18, in
[funmap-6] from . import ros_max_height_image as rm
[funmap-6] File “/home/hello-robot/ament_ws/install/stretch_funmap/lib/python3.10/site-packages/stretch_funmap/ros_max_height_image.py”, line 17, in
[funmap-6] from . import navigation_planning as na
[funmap-6] File “/home/hello-robot/ament_ws/install/stretch_funmap/lib/python3.10/site-packages/stretch_funmap/navigation_planning.py”, line 9, in
[funmap-6] from . import cython_min_cost_path as cm
[funmap-6] ImportError: cannot import name ‘cython_min_cost_path’ from ‘stretch_funmap’ (/home/hello-robot/ament_ws/install/stretch_funmap/lib/python3.10/site-packages/stretch_funmap/init.py)
[ERROR] [funmap-6]: process has died [pid 14370, exit code 1, cmd ‘/home/hello-robot/ament_ws/install/stretch_funmap/lib/stretch_funmap/funmap --ros-args --params-file /tmp/launch_params_kt831l49 -r /move_base_simple/goal:=/goal_pose’].
[stretch_driver-5] Key mapped to End-Of-Arm Tool: eoa_wrist_dw3_tool_sg3
[stretch_driver-5] [INFO] [1770419996.762972344] [stretch_driver]: broadcast_odom_tf = True
[stretch_driver-5] [INFO] [1770419996.800112897] [stretch_driver]: rate = 30.0 Hz
[stretch_driver-5] [INFO] [1770419996.801063906] [stretch_driver]: twist timeout = 0.5 s
[stretch_driver-5] [INFO] [1770419996.801873858] [stretch_driver]: base_frame_id = base_link
[stretch_driver-5] [INFO] [1770419996.803357382] [stretch_driver]: odom_frame_id = odom
[stretch_driver-5] [INFO] [1770419996.851556766] [stretch_driver]: Changed to mode = position
[realsense2_camera_node-1] [INFO] [1770420000.465801093] [camera]: Device with serial number 244222076452 was found.
[realsense2_camera_node-1]
[realsense2_camera_node-1] [INFO] [1770420000.465881237] [camera]: Device with physical ID /sys/devices/pci0000:00/0000:00:0d.0/usb2/2-1/2-1:1.0/video4linux/video0 was found.
[realsense2_camera_node-1] [INFO] [1770420000.465900550] [camera]: Device with name Intel RealSense D435I was found.
[realsense2_camera_node-1] [INFO] [1770420000.466161021] [camera]: Device with port number 2-1 was found.
[realsense2_camera_node-1] [INFO] [1770420000.466181921] [camera]: Device USB type: 3.2
[realsense2_camera_node-1] [INFO] [1770420000.466271784] [camera]: getParameters…
[realsense2_camera_node-1] [INFO] [1770420000.798151676] [camera]: JSON file is loaded! (/home/hello-robot/ament_ws/install/stretch_core/share/stretch_core/config/HighAccuracyPreset.json)
[realsense2_camera_node-1] [INFO] [1770420000.798244449] [camera]: Device Name: Intel RealSense D435I
[realsense2_camera_node-1] [INFO] [1770420000.798267376] [camera]: Device Serial No: 244222076452
[realsense2_camera_node-1] [INFO] [1770420000.798279231] [camera]: Device physical port: /sys/devices/pci0000:00/0000:00:0d.0/usb2/2-1/2-1:1.0/video4linux/video0
[realsense2_camera_node-1] [INFO] [1770420000.798291526] [camera]: Device FW version: 5.17.0.10
[realsense2_camera_node-1] [INFO] [1770420000.798301646] [camera]: Device Product ID: 0x0B3A
[realsense2_camera_node-1] [INFO] [1770420000.798310813] [camera]: Sync Mode: On
[realsense2_camera_node-1] [WARN] [1770420000.939383523] [camera]: re-enable the stream for the change to take effect.
[realsense2_camera_node-1] [WARN] [1770420000.940219087] [camera]: re-enable the stream for the change to take effect.
[realsense2_camera_node-1] [WARN] [1770420000.950242484] [camera]: re-enable the stream for the change to take effect.
[realsense2_camera_node-1] [ERROR] [1770420000.950955481] [camera]: Given value, 63 is invalid. Set ROS param back to: 100
[realsense2_camera_node-1] [INFO] [1770420000.955369921] [camera]: Stopping Sensor: Depth Module
[realsense2_camera_node-1] [INFO] [1770420000.955444055] [camera]: Stopping Sensor: RGB Camera
[realsense2_camera_node-1] [INFO] [1770420000.955465653] [camera]: Stopping Sensor: Motion Module
[realsense2_camera_node-1] [INFO] [1770420000.964145875] [camera]: Starting Sensor: Depth Module
[realsense2_camera_node-1] [INFO] [1770420000.966492552] [camera]: Open profile: stream_type: Depth(0), Format: Z16, Width: 1280, Height: 720, FPS: 15
[realsense2_camera_node-1] [INFO] [1770420000.970024214] [camera]: Starting Sensor: RGB Camera
[realsense2_camera_node-1] [INFO] [1770420000.973512326] [camera]: Open profile: stream_type: Color(0), Format: RGB8, Width: 1280, Height: 720, FPS: 15
[realsense2_camera_node-1] [INFO] [1770420000.991423613] [camera]: Starting Sensor: Motion Module
[realsense2_camera_node-1] [INFO] [1770420000.993087032] [camera]: Open profile: stream_type: Accel(0)Format: MOTION_XYZ32F, FPS: 100
[realsense2_camera_node-1] [INFO] [1770420000.993135397] [camera]: Open profile: stream_type: Gyro(0)Format: MOTION_XYZ32F, FPS: 200
[realsense2_camera_node-1] [INFO] [1770420000.995607279] [camera]: RealSense Node Is Up!
[realsense2_camera_node-1] [WARN] [1770420001.964557769] [camera]: XXX Hardware Notification:Motion Module failure,1.77042e+12,Error,Hardware Error
[realsense2_camera_node-1] [WARN] [1770420001.964626917] [camera]: Hardware Notification:Motion Module failure,1.77042e+12,Error,Hardware Error
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[realsense2_camera_node-1] [INFO] [1770420010.461366932] [rclcpp]: signal_handler(signum=2)
[realsense2_camera_node-1] [INFO] [1770420010.461907655] [camera]: Stop Sensor: Depth Module
[realsense2_camera_node-1] [INFO] [1770420010.461956973] [camera]: Close Sensor.
[rviz2-7] [INFO] [1770420010.461368714] [rclcpp]: signal_handler(signum=2)
[d435i_accel_correction-2] interrupt received, so shutting down
[realsense2_camera_node-1] [INFO] [1770420010.464632963] [camera]: Close Sensor - Done.
[realsense2_camera_node-1] [INFO] [1770420010.464681858] [camera]: Stop Sensor: RGB Camera
[realsense2_camera_node-1] [INFO] [1770420010.464692494] [camera]: Close Sensor.
[realsense2_camera_node-1] [INFO] [1770420010.467595546] [camera]: Close Sensor - Done.
[realsense2_camera_node-1] [INFO] [1770420010.467636828] [camera]: Stop Sensor: Motion Module
[realsense2_camera_node-1] [INFO] [1770420010.468119464] [camera]: Close Sensor.
[stretch_driver-5] Caught signal 2
[INFO] [robot_state_publisher-4]: process has finished cleanly [pid 14366]
[INFO] [d435i_accel_correction-2]: process has finished cleanly [pid 14362]
[INFO] [joint_state_publisher-3]: process has finished cleanly [pid 14364]
[INFO] [rviz2-7]: process has finished cleanly [pid 14372]
[realsense2_camera_node-1] [INFO] [1770420011.445874478] [camera]: Close Sensor - Done.
[INFO] [realsense2_camera_node-1]: process has finished cleanly [pid 14360]
[INFO] [stretch_driver-5]: process has finished cleanly [pid 14368]

Hi @gregory_sin,

Thank you for sharing the detailed logs, that was very helpful.

We’ve actually seen this issue, you should be able to resolve this by following these steps:

Step 1: Update your ROS 2 workspace

Please make sure your ROS 2 workspace is fully up to date by following the instructions here:

Step 2: Rebuild and relaunch FUNMAP

Once the workspace update is complete, please run the following commands from a terminal:

cd ~/ament_ws
colcon build
source install/setup.bash
ros2 launch stretch_funmap mapping.launch.py

At this point, FUNMAP should launch without the Cython import error.

At this point, FUNMAP should launch without the Cython import error. If the issue persists, please let us know and share the relevant output/logs so we can continue troubleshooting.

Best regards,
Jason

Hi @gregory_sin,

I just wanted to follow up and see if you were able to try the steps I shared previously to update and rebuild the workspace, and how it went on your end.

Let me know if FUNMAP is launching correctly now, or if you’re still seeing the Cython import error, happy to help further.

Best,
Jason

Hello @Jason_Koubi,

Thanks for the quick reply. I just tried to update the ROS 2 workspace and it failed to update. It didn’t give any clear issue as to why. Here is the terminal log:

###########################################
CREATING HUMBLE AMENT WORKSPACE at /home/hello-robot/ament_ws
###########################################
Ensuring correct version of ROS is sourced…
You are about to delete and replace the existing ament workspace. If you have any personal data in the workspace, please create a back up before proceeding.
Do you want to continue? Press (y/n for yes/no): y
Continuing to create a new ament workspace.
Downgrade to numpy 1.26.4…
Updating rosdep indices…
Deleting /home/hello-robot/ament_ws if it already exists…
Creating the workspace directory…
Cloning the workspace’s packages…
Fetch ROS packages’ dependencies (this might take a while)…
Refreshing apt indices…

#############################################
FAILURE. UPDATING ROS WORKSPACE DID NOT COMPLETE.
Look at the troubleshooting guide for solutions to common issues: Updating your ROS Workspace - Stretch Docs
or contact Hello Robot support
#############################################

Hi @gregory_sin,

Could you please send us an email at support@hello-robot.com so we can continue debugging this more efficiently from there?

When you do, it would be very helpful if you could also include the install log file:

~/stretch_user/log/stretch_create_ament_workspace.<timestamp>_log.txt

That log should give us more insight into what happened during the workspace install.

Thanks, and we’ll take it from there.

Best,
Jason