yahboom
HomeTutorialsProduct
Solution
Blog
Online Store
About Us
EN/中文
Store
ROSMASTER A1 PRO📖
00.Configuration and Operation Guide
  • 0. Unboxing and Review
  • 1.Assembly Videos
  • 2.User Manual
  • 3.Enter Docker (For Raspberry Pi)
  • 4.A1Pro Front Wheel Servo Calibration
  • 5.USB Camera Calibration
  • 6.Depth Camera Calibration
  • 7.FAQ
  • 8.Desktop Configuration Center and Remote Control Guide
01.Chassis Control Course
  • 1.Robot Information Publishing
  • 2.Robot Handle Control
  • 3.Robot Keyboard Control
  • 4.Linear Velocity Calibration
  • 5.Angular Velocity Calibration
  • 6.Robot URDF Model
  • 7.Robot EKF State Estimation
02.Lidar Course
  • 1.Lidar Introduction and Use
  • 2.Lidar Obstacle Avoidance
  • 3.Lidar Following
  • 4.Lidar Patrol
  • 5.GMapping-SLAM Mapping
  • 6.Cartographer-SLAM Mapping
  • 7.Slam-Toolbox Mapping
  • 8.Lifelong Mode Mapping
  • 9.Navigation2 Single Point Navigation
  • 10.Navigation2 Multi Point Navigation
  • 11.Cartographer Relocalization Navigation
  • 12.Slam-Toolbox Localization Navigation
  • 13.Synchronous Mapping And Navigation
  • 14.Aruco Visual Relocalization Navigation
  • 15.Mobile App Mapping And Navigation
  • 16.AprilTag Transport
  • 17.Color Block Transport
03.USB Camera-Depth Camera Course
  • 1.USB Camera Introduction
  • 2.USB Camera Intrinsic Calibration
  • 3.Nuwa-HP60C Camera Introduction (Depth Camera Only)
  • 4.Depth Camera Distance Measurement (Depth Camera Only)
  • 5.Depth Pseudo Color Image (Depth Camera Only)
  • 6.Block Volume Calculation (Depth Camera Only)
  • 7.Edge Detection (Depth Camera Only)
  • 8.RTAB-Map SLAM Mapping (Depth Camera Only)
  • 9.RTAB-Map Navigation (Depth Camera Only)
04.Robotic Arm and 3D Space Gripping Course
  • 0.Robotic Arm Basic Usage
  • 1.Robotic Arm Kinematics
  • 2.Robotic Arm Chassis Coordination Control
  • 3.AprilTag ID Sorting
  • 4.AprilTag Height Anomaly Sorting
  • 5.AprilTag Tracking and Grasping
  • 6.Color Block Sorting
  • 7.Color Block Height Anomaly Sorting
  • 8.Color Block Tracking and Grasping
  • 9.Wood Block Shape Sorting
  • 10.KCF Tracking and Grasping Objects
  • 11.Mediapipe Gesture ID Sorting AprilTag
  • 12.Mediapipe Gesture Height Sorting AprilTag
  • 13.Desktop Tracking and Grasping AprilTag
  • 14.3D Spatial Tracking AprilTag
  • 15.Line Following Obstacle Clearing
  • 16.Transformer Model Tracking Algorithm
05.Road Network Planning and Navigation
  • 1.Introduction To Road Network Planning
  • 2.Road Network Annotation
  • 3.Planning And Navigation Between Waypoints
  • 4.Road Network Navigation In Any Pose
  • 5.Path Re-planning
06.OpenClaw Basic Course
  • 1.Introduction to OpenClaw
  • 2.OpenClaw Core Concepts
  • 3.OpenClaw API-KEY Configuration
  • 4.OpenClaw Switch Models
  • 5.OpenClaw System Prompt Words
  • 6.OpenClaw Common CLI Commands
07.OpenClaw Interaction Method
  • 1.OpenClaw Webchat Interaction
  • 2.OpenClaw Tui Interaction
  • 3.OpenClaw Voice Dialogue Interaction
  • 4.OpenClaw WhatsApp Interaction
08.OpenClaw Development
  • 1.OpenClaw Connecting to Robot MCP Service
  • 2.Robot CLI Command Tool
  • 3.robot-control plugin tool
  • 4.reply-bridge plugin tool
  • 5.OpenClaw Multimodal Vision
  • 6.OpenClaw Chassis Control
  • 7.OpenClaw Robotic Arm Control
  • 8.OpenClaw Skills Development
  • 9.OpenClaw Scheduled Tasks
  • 10.OpenClaw Multi-Agent Intelligent Agent
  • 11.OpenClaw Active Interaction
  • 12.OpenClaw Vector Memory
09.OpenClaw Embodied Intelligent Application
  • 1.OpenClaw Target Tracking
  • 2.OpenClaw Arm Tracking And Grasping
  • 3.OpenClaw Arm Fixed-point Placement
  • 4.OpenClaw Waste Sorting
  • 5.OpenClaw SLAM Mapping And Navigation
  • 6.OpenClaw Navigation Transport
  • 7.OpenClaw AprilTag Grasping
  • 8.OpenClaw Color Line Patrol
  • 9.OpenClaw Visual Distance Measurement
10.OpenClaw Scenario Sandbox
  • 1.Map Description and Prop Placement
  • 2.Build Sand Table Map
  • 3.Visual Relocation Markers
  • 4.Map Mapping Markers
  • 5.OpenClaw Scenario Sandbox Comprehensive Case
11.AI Model Basics
  • 1.AI Large Model Types and Principles
  • 2.RAG Retrieval Enhancement and Model Training Samples
  • 3.Embodied Intelligent Robot System Architecture
  • 4.Embodied Intelligent Functions Core Source Code
12.AI Model Development
  • 1.Register a Model Service Provider Aaccount
  • 2.Configuring API-KEY
  • 3.Introduction to Dify
  • 4.Basic Dify Features
  • 5.AI Large Model Development - chatbot
  • 6.Deploy the RAG Knowledge Base
  • 7.RAG Knowledge Base + chatbot
  • 8.AI Agent Workflow
  • 9.Custom Wake-up Response
13.AI Model - Text Version
  • 1.Semantic Understand and Command Follow
  • 2.Multimodal Visual Understand
  • 3.Multimodal Visual Understand + Robotic Arm Gripping
  • 4.Multimodal Visual Understand+SLAM Navigation
  • 5.Robotic Arm Gripping+Multimodal Visual Understand+SLAM Navigation
  • 6.Intention Estimation
14.AI Model - Voice Version
  • 1.Semantic Understand and Command Follow
  • 2.Multimodal Visual Understand
  • 3. Multimodal Large Model+Robotic Arm Gripping
  • 4.Multimodal Visual Understand+SLAM Navigation
  • 5.Robotic Arm Gripping+Multimodal Visual Understand+SLAM Navigation
  • 6.Intention Estimation
15.Mediapipe Visual Course
  • 1.Hand Detection
  • 2.Posture Detection
  • 3.Overall Detection
  • 4.Facial Landmark Detection
  • 5.Face Detection
  • 6.Face Special Effects
  • 7.3D Object Recognition
  • 8.Brush
  • 9.Finger Control
  • 10.Palm Target Positioning
  • 11.Fingertip Trajectory Recognition
  • 12.Fingertip Gesture Control Cobotic Arm
  • 13.Gesture Grabbing and Releasing Objects
  • 14.Finger Control Robotic Arm
  • 15.Medipipe Gesture Control Robotic arm Cction Group
16.MoveIt2 Simulation Course
  • 1.MovelT2 Configuration
  • 2.MovelT2 Simulation-Reality Linkage
  • 3.Random Movement
  • 4.Forward Kinematics Design
  • 5.Inverse Kinematics Design
  • 6.Cartesian Path
  • 7.Scene Design
  • 8.Trajectory Planning
  • 9.Collision Detection
  • 10.3D Perception Obstacle‑Avoidance
17.Multi-vehicle Course
  • 1.Multi-vehicle Control
  • 2.Multi-vehicle Navigation
  • 3.Multi-vehicle Formation
18.YOLO26 Development
  • 1.CLI Use
  • 2.Object Detection
  • 3.Instance Segmentation
  • 4.Pose Estimation
  • 5.Image Classification
  • 6.Oriented Object Detection
  • 7.YOLOv26 + DeepSORT Tracking
  • 8.Monocular Depth Estimation
19.Control Board STM32 Driver Course
  • 0.Notes (Must Read)
  • 1.About Expansion Board
  • 2.STM32 Development Environment
  • 3.Button Control
  • 4.FreeRTOS Application
  • 5.Serial Communication
  • 6.SBUS Model Aircraft Remote Control
  • 7.CAN Bus Communication
  • 8.RGB Colorful Light Bar
  • 9.Timer Interrupt to Control PWM Servo
  • 10.Control Serial Port Servos
  • 11.Nine-axis Attitude Sensor to Obtain Data
  • 12.Control Motor
  • 13.Timer Captures the Encoder Data
  • 14.1 Kinematic Analysis of Mecanum Wheel
  • 14.2 Kinematic Analysis of Ackerman
  • 14.3 Kinematic Analysis of 4WD
  • 15.PID Control Robot Movement
20.Docker Course
  • 1.Docker Introduction and Installation
  • 2.Docker Basic Commands
  • 3.Docker Submission and Multi-Terminal Access
  • 4. Docker Startup Script
  • 5.Docker-Vscode Environment Construction
21.Image Processing Basics Course
  • 1. Introduction to Open Source CV
  • 2. Image reading and display
  • 3. Image writing
  • 4. Image quality
  • 5. Pixel Operation
  • 6. Image zoom
  • 7. Image cutting
  • 8. Image translation
  • 9. Image Mirroring
  • 10. Affine Transformation
  • 11. Image Rotation
  • 12. Perspective Transformation
  • 13. Grayscale processing
  • 14. Image Binarization
  • 15. Edge Detection
  • 16. Line drawing
  • 17. Rectangle and circle drawing
  • 18. Drawing text and pictures
22.Linux System Course
  • 1.Introduction to Linux system
  • 2.Ubuntu file system
  • 3.Ubuntu common commands
  • 4.Ubuntu common editors
  • 5.Ubuntu software operation commands
  • 6.Virtual machine installation
  • 7.SSH remote control
  • 8.VNC remote control
  • 9.Transfer files remotely
  • 10.Driver library and communication
  • 11.Static IP and hotspot mode
  • 12.Bind device ID
  • 13.Capacity expansion and resource allocation
  • 14.Update system software sources
  • 15.Set root user password
  • 16.sudo free password
  • 17.Connect to WiFi network
  • 18.View system version
  • 19.Customized service management
  • 20.Back up system image
23.ROS2 Basic Course
  • 1.Introduction to ROS2
  • 2.ROS2 install Humble
  • 3.ROS2 development environment
  • 4.ROS2 workspace
  • 5.ROS2 function package
  • 6.ROS2 node
  • 7.ROS2 topic communication
  • 8.ROS2 service communication
  • 9.ROS2 action communication
  • 10.ROS2 custom interface message
  • 11.ROS2 parameter service case
  • 12.ROS2 meta-function package
  • 13.ROS2 distributed communication
  • 14.ROS2 DDS
  • 15.ROS2 time related API
  • 16.ROS2 common command tools
  • 17.ROS2 rviz2 use
  • 18.ROS2 rqt toolbox
  • 19.ROS2 Launch startup file configuration
  • 20.ROS2 recording and playback tool
  • 21.ROS2 URDF model
  • 22.ROS2 Gazebo simulation platform
  • 23.ROS2 TF2 coordinate transformation
24.Main Control Course
Jetson Orin Nano_NX
  • 1.Jetson Orin board introduction
  • 2.Restore the factory image system
  • 3.Backup SSD system
  • 4.SSD expansion
  • 5.Network configuration
  • 6.SSH remote login
  • 7.VNC remote control
  • 8.Remote file transfer
  • 9.Jtop tool
  • 10.Exchange space expansion
Raspberry Pi
  • 1. Introduction to Raspberry PI 5
  • 2. Raspberry PI system installation and backup
  • 3. Powering the Raspberry PI 5
  • 4. Startup of Raspberry PI 5
  • 5. Update and upgrade operating system
  • 6. Introduction to raspi-config tool
  • 7. config.txt file description
  • 8. Network Configuration
  • 9. remote access
  • 10. Transfer files remotely
  • 11. Set display resolution and rotation
  • 12. Set screen to sleep
  • 13. Play audio and video
  • 14. Using USB camera
  • 15. Using MIPI camera
  • 16. Get real-time temperature of Raspberry Pi
RDKX5
  • 1.Introduction to RDK X5 board
  • 2.Write system file
  • 3.Hardware interface description
  • 4.Install case and other accessories
  • 5.Network configuration
  • 6.Remote login
  • 7.Update system
  • 8.srpi-config user guide
  • 9.config. txt configuration file
  • 10.Self-startup setting
  • 11.RDK exclusive command usage
  • 12.Linux command usage
  • 13.GPIO readwrite operation
  • 14.Image classification algorithm
  • 15.Use USB camera
  • 16.Use MIPI camera
  • 17.Binocular camera depth algorithm
  • 18. Controlling RGB Cooling Fans
Download
  • SystemFile
  • Code
  • 3D_Model_File
  • Software_Tools
  • Hardware_Info
  • Introduction_Manual
  • Script_File
  • Dify AI Agent
Download ZIP

Welcome to ROSMASTER A1 PRO repository

17.Binocular camera depth algorithm

Binocular camera depth algorithm

Binocular camera depth algorithm1. Use of the stereo depth estimation algorithm1.1. Start with the RDK X5 official stereo cameraFunction installation and updateStart the binocular model launch file, which includes the algorithm and the startup of the binocular camera nodeExpected results1.2. Offline local image re-injection1.3. In addition, you can start the node through the component method2. Interface descriptionSubscribe to topicPost a topicParameter3. Notes

The stereo depth estimation algorithm is a StereoNet model trained on the SceneFlow dataset using the horizon [OpenExplorer]

The algorithm input is the stereo image data, which are the left and right views. The algorithm output is the depth of the left view.

This example uses the mipi stereo camera as the image data input source, uses the BPU for algorithm reasoning, publishes a topic message containing the left image of the stereo image and the perception result, and renders the algorithm result on the PC rviz2.

1. Use of the stereo depth estimation algorithm

1.1. Start with the RDK X5 official stereo camera

  • Connect the power supply
  • Connect the binocular mipi camera to the RDK X5, and note that the blue side is facing the HDMI port. Do not connect the wires in reverse, which will cause the left and right images to be swapped and the binocular algorithm to run incorrectly.

image-20250226122109739

  • Connect the development board and the display via an HDMI cable
  • Log in to RDK X5 via MobaXterm or other ssh tools (please log in as the root user. Root login username: root password: root)

Function installation and update

  • Before running the binocular depth algorithm, you need to ensure that the tros-humble-mipi-cam function package is above version 2.3.6 and the tros-humble-hobot-stereonet function package is above version 2.3.3. The command to query the function package version is as follows:
apt list | grep tros-humble-mipi-cam

image-20250226152536640

xxxxxxxxxx
apt list | grep tros-humble-hobot-stereonet

image-20250226152601895

  • If the version does not meet the requirements, you need to update it. Run the following command in the terminal of the RDK system to update it.
xxxxxxxxxx
apt update
xxxxxxxxxx
apt upgrade
  • Note: In some old image versions, there may be a tros-humble-stereonet-model function package. You need to uninstall it before you can update the function package. Run the following command in the terminal of the RDK system:

Confirm that the system has the tros-humble-stereonet-model function package

xxxxxxxxxx
apt list | grep tros-humble-hobot-stereonet-model

Uninstall

xxxxxxxxxx
sudo apt-get remove tros-humble-stereonet-model

If the uninstallation fails, execute the forced deletion command (optional)

xxxxxxxxxx
sudo dpkg --remove --force-all tros-humble-stereonet-model

Installing New packages

xxxxxxxxxx
sudo apt install -y tros-humble-hobot-stereonet
  • Confirm whether the camera connection is normal. Connect to RDK X5 via SSH and execute the following command. If the output is as shown in the figure, it means that the camera connection is normal.
xxxxxxxxxx
i2cdetect -r -y 4
i2cdetect -r -y 6

image-20250226122759977

  • Start the binocular algorithm, connect to RDK X5 via ssh, and execute the following command:

Configure tros.b humble environment

xxxxxxxxxx
source /opt/tros/humble/setup.bash

Start the stereo model launch file, which includes the algorithm and the startup of the stereo camera node.

xxxxxxxxxx
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.launch.py \
need_rectify:=False mipi_image_width:=640 mipi_image_height:=352 mipi_lpwm_enable:=True \
height_min:=-10.0 height_max:=10.0 pc_max_depth:=5.0
  • If the user wants to save the depth estimation results, you can add the following parameters to achieve it, save_image_all turns on the save switch, save_freq controls the save frequency, and the image will be saved in the stereonet_images directory:

# Configure tros.b humble environment

xxxxxxxxxx
source /opt/tros/humble/setup.bash

Start the binocular model launch file, which includes the algorithm and the startup of the binocular camera node

xxxxxxxxxx
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.launch.py \
need_rectify:=False mipi_image_width:=640 mipi_image_height:=352 mipi_lpwm_enable:=True \
height_min:=-10.0 height_max:=10.0 pc_max_depth:=5.0 \
save_image_all:=True save_freq:=4

Expected results

  • To view the depth map via the web page, enter http://ip:8000 in the browser (the RDK X5 IP in the picture is 192.168.2.52):

image-20250226141842362

  • To view point clouds through rviz, users need to have a certain ROS2 foundation, configure PC and RDK X5 to the same network segment, be able to ping each other, and subscribe to related topics published by the binocular model node before they can display point clouds in rviz. Note that the following configurations need to be made in rviz.

image-20250226142246799

1.2. Offline local image re-injection

  • If you want to use local images to evaluate the algorithm effect, you can use the following command to specify the algorithm operation mode, image data address and camera internal parameters, and ensure that the image data is dedistorted and aligned with the epipolar line. The image format is shown in the figure below. The first left-eye image is named left000000.png, the second left-eye image is named left000001.png, and so on. The corresponding first right-eye image is named right000000.png, the second right-eye image is named right000001.png, and so on. The algorithm traverses the images in sequence until all images are calculated:

  • The algorithm runs offline as follows. Connect to RDK X5 via ssh and execute the following command. The offline running results will be saved in the stereonet_images directory:

Configure tros.b humble environment

xxxxxxxxxx
source /opt/tros/humble/setup.bash

Start the stereo model launch file. Pay attention to the camera parameter settings. You need to manually enter the corrected parameters.

x
ros2 launch hobot_stereonet stereonet_model_web_visual.launch.py \
need_rectify:=False use_local_image:=True local_image_path:=Offline Data Directory \
stereonet_model_file_path:=/opt/tros/humble/share/hobot_stereonet/config/x5baseplus_alldata_woIsaac.bin postprocess:=v2 \
camera_fx:=505.044342 camera_fy:=505.044342 camera_cx:=605.167053 camera_cy:=378.247009 base_line:=0.069046 \
height_min:=-10.0 height_max:=10.0 pc_max_depth:=5.0 save_image_all:=True

The meanings of the parameters are as follows:

NameParameter ValueDescription
use_local_imageDefault FalseWhether to enable image reload mode
local_image_path-The directory where the image is reloaded
camera_fx-Camera internal parameters
camera_fy-Camera internal parameters
camera_cx-Camera internal parameters
camera_cy-Camera internal parameters
base_line-Baseline distance
  • After the algorithm runs successfully, you can also display the real-time rendering data through the web page and rviz, refer to the above

1.3. In addition, you can start the node through the component method

Configure tros.b humble environment.

xxxxxxxxxx
source /opt/tros/humble/setup.bash

Terminal 1 starts the binocular model launch file

xxxxxxxxxx
ros2 launch hobot_stereonet stereonet_model_component.launch.py \
stereo_image_topic:=/image_combine_raw stereo_combine_mode:=1 need_rectify:=True \
height_min:=0.1 height_max:=1.0 KMean:=10 stdv:=0.01 leaf_size:=0.05

Terminal 2 starts the mipi binocular camera launch file

xxxxxxxxxx
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py \
mipi_image_width:=1280 mipi_image_height:=640

2. Interface description

Subscribe to topic

NameMessage TypeExplanation
/image_combine_rawsensor_msgs::msg::ImageThe topic of left and right eye spliced images published by the binocular camera node is used for model reasoning depth

Post a topic

NameMessage TypeExplanation
/StereoNetNode/stereonet_pointcloud2sensor_msgs::msg::PointCloud2Published Point Cloud Depth Topics
/StereoNetNode/stereonet_depthsensor_msgs::msg::Image=The published depth image, the pixel value is the depth, the unit is millimeter
/StereoNetNode/stereonet_visualsensor_msgs::msg::ImageA relatively intuitive visual rendering image published

Parameter

NameParameter ValueExplanation
stereo_image_topicDefault/image_combine_rawSubscribe to the topic name of the binocular image message
need_rectifyDefaultTrueWhether to perform baseline alignment and dedistortion on the stereo data. The camera internal and external parameters are specified in the config/stereo.yaml file.
stereo_combine_modeDefault1The left and right images are often spliced together on one image before being published. 1 means top-bottom splicing, 0 means left-right splicing, indicating how the binocular algorithm splits the image
height_minDefault-0.2Filter out points whose height in the vertical direction of the camera is less than height_min, in meters
height_maxDefault999.9Filter out points whose height in the vertical direction of the camera is greater than height_max, in meters
KMeanDefault10When filtering sparse outliers, count the number of neighboring points of each point and the distance between each point and the 10 nearest points around it.
stdvDefault0.01When filtering sparse outliers, the threshold for judging whether it is an outlier is set to 0.01.
leaf_sizeDefault0.05Set the unit density of the point cloud, indicating that there is only one point in a 3D sphere with a radius of 0.05 meters

3. Notes

  1. The input size of the model is width: 1280, height 640, and the image resolution released by the camera should be 1280x640
  2. If the format of the image released by the binocular camera is NV12, the stitching method of the binocular image must be up and down stitching
  3. The downward direction of the camera cable is the positive direction of the camera
Use MIPI camera
Controlling RGB Cooling Fans

COMPANY

  • About us
  • Team Style
  • Blog

LEARNING & EXPLORATION

  • Tutorials
  • Edge AI hardware
  • Educational robots
  • Embedded intelligent hardware

WHERE TO BUY

  • Yahboom Online Store
  • Amazon
  • Alibaba
  • AliExpress
  • Mercado

TECHNOLOGY SUPPORT

  • Email: support@yahboom.com

BE A DISTRIBUTOR

  • Email: sales@yahboom.com
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文