8. Frequently Asked Questions
Insufficient Power Supply:
Ensure that each camera is connected to a separate hub.
Use a powered hub to provide sufficient power to each camera.
High Resolution:
Try lowering the resolution to resolve data stream issues.
Increase usbfs_memory_mb Value:
Increase the
usbfs_memory_mbvalue to 128MB (this is a reference value and can be adjusted based on your system’s needs). By running the following command: if the node crashes unexpectedly, it will generate a crash log in the current run directory:~/.ros/Log/camera_crash_stack_trace_xx.log. In addition, regardless of whether the camera node crashes, OrbbecSDK will always generate a log file:~/.ros/Log/OrbbecSDK.log.txt, which contains detailed records of SDK operations.
Please send these log files to the support team or submit them in a GitHub issue for further assistance.
8.1. No Data Stream from Multiple Cameras
Insufficient Power Supply:
Ensure that each camera is connected to a separate hub.
Use a powered hub to provide sufficient power to each camera.
High Resolution:
Try lowering the resolution to resolve data stream issues.
Increase usbfs_memory_mb Value:
Increase the
usbfs_memory_mbvalue to 128MB (this is a reference value and can be adjusted based on your system’s needs) by running the following command:
echo 128 | sudo tee /sys/module/usbcore/parameters/usbfs_memory_mb
To make this change permanent, check this link.
8.2. Compilation Failure Due to OpenCV Version Issues
In some cases, you may have multiple versions of OpenCV on your host, which can lead to compilation failures. You can resolve this by specifying the OpenCV version. Find the CMakeLists.txt file in the cmake folder and locate the following code:
find_package(OpenCV REQUIRED)
Either add OpenCV_dir or specify the version before it:
find_package(OpenCV 4.2.0 REQUIRED)
Or:
set(OpenCV_DIR "/path_to_your_opencv_dir")
find_package(OpenCV REQUIRED)
8.3. How to Collect and Save Logs
8.3.1. SDK Logs
Set the launch parameter
log_leveltodebug. After running, the SDK will generate log files under~/.ros/Log/<camera_name>/. If you want a more recognizable file name for this test, you can set the parameterlog_file_name.The actual path corresponding to
log_file_nameis usually~/.ros/Log/<camera_name>/<log_file_name>.If the node crashes unexpectedly, the crash stack trace file is also saved under the corresponding camera directory.
If firmware logs are required, set
log_leveltodebugand setenable_heartbeattotrue.In multi-camera setups, SDK logs are stored in separate directories by
camera_name, for example~/.ros/Log/ob_camera_01/camera_01.logand~/.ros/Log/ob_camera_02/camera_02.log.SDK logs are appended to the same file: multiple launches will continue writing into the same file.
Recommendation: before packaging logs to send to technical support, delete old log files, then reproduce the issue and collect new logs. This keeps the logs cleaner and makes troubleshooting more accurate.
8.3.2. ROS Logs
If you do not want too much terminal output, change
output="screen"tooutput="log"in the launch file, then check the corresponding ROS1 logs under~/.ros/log/<run_id>/.roslaunch-*.logrecords the fullroslaunchstartup flow and node launch information, and usually includes all cameras.master.logis the ROS master log.rosout.logaggregates output from all nodes. In multi-camera setups, logs from multiple cameras are mixed in the same file, so distinguish them by namespace or node name, for example/ob_camera_01/cameraand/ob_camera_02/camera.When submitting an issue, it is recommended to provide both the SDK logs under
~/.ros/Log/and the ROS1 logs under~/.ros/log/<run_id>/for the same time period.
8.4. Why Are There So Many Launch Files?
Different cameras have varying default resolutions and image formats.
To simplify usage, each camera has its own launch file.
8.5. How to Launch a Specific Camera When Multiple Cameras Are Connected
While the launch file did not explicitly specify which device to use. In that case, the driver will connect to the default device.
You can check the serial number of your device by running:
rosrun orbbec_camera list_devices_node
Then launch with the serial number explicitly set, for example:
roslaunch orbbec_camera femto_bolt.launch serial_number:=CL8H741005J
8.6. Why Is It Necessary to Add Delays When Starting Multiple Cameras or Switching Streams?
Multi-camera systems place high demands on USB bandwidth and device initialization timing. If multiple camera streams are started or switched simultaneously, it may cause temporary bandwidth congestion, leading to device initialization failures, stream startup errors, or frame drops. To ensure system stability, the following practices are recommended:
Multi-camera startup phase
When starting multiple cameras, it is recommended to introduce an appropriate delay between each camera startup (e.g., 2 seconds) to avoid instantaneous bandwidth overload or low-level device initialization conflicts.
Stream enable/disable and mode switching phase
When invoking stream control services (such as
set_streams_enable,toggle_depth, andtoggle_color), avoid triggering multiple service calls at the same time. Instead, introduce a reasonable interval between operations (e.g., 20 ms) to ensure reliable stream state transitions.
Following these timing control guidelines can significantly improve the stability of multi-camera systems during startup and runtime, reducing errors and unexpected behavior.
8.7. The image does not reach the preset frame rate
First you need to confirm whether the image does not reach the preset frame rate. There are several ways to view framerate in ROS1, such as:
rostopic hzrqtCustom tools (such as the
benchmarktool provided by this ROS package)
It should be noted that different tools have different statistical methods and QoS configurations, so the frame rate results obtained may be different. When you find that the frame rate is lower than expected, please prioritize whether the error is caused by the frame rate statistics tool itself.
If you confirm that the image frame rate does not reach the preset value, you can try the following troubleshooting steps:
Reduce the resolution or frame rate to determine whether the frame rate is reduced due to USB/network bandwidth limitations;
Confirm whether the camera firmware version and ROS package version are the latest. Older versions may have performance or compatibility issues.
If the above methods still cannot solve the problem, please contact our company FAE, or submit an issue in GitHub Issue for further support.