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

5.Angular Velocity Calibration

🔄 Angular Velocity Calibration

1. Course Introduction

Verify the rotation angle calculation accuracy of the A1 Pro chassis wheel odometry (computed from the chassis MCU encoder and front wheel steering mechanism), and perform precise calibration of the angular velocity scale correction factor.

🎯 Course Objectives

  1. Understand the angular velocity calibration principle and calculation formulas based on the Ackermann steering chassis

  2. Master the calibration operation process using the calibrate_angular_A1P node combined with ground angle markers

  3. Master the persistence method for writing the optimal angular velocity correction factor to the low-level driver parameter configuration file a1_driver.yaml

Important

The vehicle has been calibrated at the factory with baseline values. No re-calibration is needed for first-time use. You only need to refer to this tutorial for recalibration when long-term operation wear occurs, different tires are replaced, or when fixed proportional cumulative errors are detected in the robot's rotation at specific angles.

Warning

The A1 Pro uses an Ackermann front wheel servo steering structure and does not support in-place rotation. The calibration program will steer the wheels while moving forward at a given speed (default 0.15 m/s) to draw a circular path and accumulate rotation angles. Please be sure to select a flat and open area of at least 2.5m × 2.5m for calibration.


2. Preparation

2.1 Start the Chassis Comprehensive Driver

Open a terminal and run the following command to start all A1 Pro chassis drivers and the EKF fusion localization node:

ros2 launch yahboomcar_bringup yahboomcar_bringup_A1_launch.py

image-20260828174758027

2.2 Prepare Ground Initial Markers

  • Use tape to lay out a crosshair or a clear reference direction line on open ground;

  • Place the robot on the marked line with the vehicle's longitudinal center axis strictly parallel to the reference line, and record the initial heading direction.


3. Calibration Process

3.1 Start the Angular Velocity Calibration Program

Run the calibration test node in a new terminal:

xxxxxxxxxx
ros2 run yahboomcar_bringup calibrate_angular_A1P

image-20260828174851199

The calibration node will listen to the real-time rotation quaternion from odom -> base_footprint in the TF tree and convert it to yaw angle.

3.2 Trigger Rotation Test

In another terminal, trigger the test via ROS 2 dynamic parameters:

xxxxxxxxxx
ros2 param set /calibrate_angular start_test True

image-20260828174928726

The default test target angle is 360° (one full circle). The robot will turn counterclockwise in a circular path while moving forward with a preset angular velocity (default 1.0 rad/s). When the odometry accumulated rotation angle reaches 360°, the robot will automatically decelerate and stop.

3.3 Compare with Actual Physical Angle on Ground

After the robot comes to a complete stop, observe the angle between the robot's current physical heading and the initial reference direction line on the ground:

  • Ideal state: The vehicle has rotated exactly one full circle (360°), and the heading direction is perfectly parallel and aligned with the ground reference line;

  • Under-rotated (actual rotation < 360°): The heading stopped before reaching the target position;

  • Over-rotated (actual rotation > 360°): The vehicle stopped after rotating past the reference line.

3.4 Calculate and Dynamically Adjust the Correction Factor

The calibration program and chassis driver accumulate rotation angle by integrating angular velocity. The angle increment is multiplied by the correction factor (i.e., determined rotation angle = raw angular displacement × correction factor):

  • Writing a factor greater than 1.0: Angular velocity feedback is amplified, and the odometry considers the vehicle to be rotating faster, reaching 360° earlier and stopping earlier (the actual physical rotation angle of the robot becomes smaller);

  • Writing a factor less than 1.0: Angular velocity feedback is reduced, and the odometry considers the vehicle to be rotating slower, delaying the stop (the actual physical rotation angle of the robot becomes larger).

Therefore, based on the actual physical rotation angle on the ground and the expected target angle (360°), the new correction factor calculation formula is:

xxxxxxxxxx
New Correction Factor = Current Factor × (Actual Physical Rotation Angle / Target Rotation Angle)

Parameter Adjustment Examples and Calculations:

  • Scenario 1: Over-rotated (actual rotation angle > 360°) Target rotation set to 360.0°, current factor is 1.0, robot rotated past the reference line and stopped at 370.0° (over-rotated by 10°):

    xxxxxxxxxx
    New Factor = 1.0 × (370.0 / 360.0) ≈ 1.0278 (increase the factor)

    After increasing the factor from 1.0 to 1.0278, the odometry accumulation becomes faster, the robot will brake and stop earlier, and the actual rotation angle will decrease accordingly, stopping precisely on the 360° reference line.

  • Scenario 2: Under-rotated (actual rotation angle < 360°) Target rotation set to 360.0°, current factor is 1.0, robot stopped early at 350.0° before reaching the target (still 10° short):

    xxxxxxxxxx
    New Factor = 1.0 × (350.0 / 360.0) ≈ 0.9722 (decrease the factor)

    After decreasing the factor from 1.0 to 0.9722, the odometry accumulation becomes slower, and the robot needs to rotate a bit more to reach 360°, thus compensating for the angle and precisely aligning with the reference line.

Dynamically set the new factor via command line (example of increasing to 1.0278):

xxxxxxxxxx
ros2 param set /calibrate_angular odom_angular_scale_correction 1.0278

image-20260828175012516

Tip

Core rule:

  • If the actual physical rotation angle on the ground is greater than 360° (over-rotated) increase the correction factor;

  • If the actual physical rotation angle on the ground is less than 360° (under-rotated) decrease the correction factor.

3.5 Multiple Verifications and Convergence

Move the robot back to the starting point and align with the reference line. Run ros2 param set /calibrate_angular start_test True again. Observe whether the robot's heading precisely aligns with the initial reference line when it stops with the new factor applied. Repeat until the visual physical angle error is within 2°.


4. Persist the Correction Factor to Driver Configuration

After calibration, to ensure the low-level driver automatically applies the settings on every boot or launch, write the optimal calibrated factor to the driver_node parameter configuration file:

Parameter file path:

xxxxxxxxxx
$HOME/yahboomcar_ros2_ws/yahboomcar_ws/src/yahboomcar_bringup/param/a1_driver.yaml

Open a1_driver.yaml, find the odom_angular_scale_z configuration item and modify it to the final calibrated value (e.g., 1.0278):

xxxxxxxxxx
driver_node:
  ros__parameters:
    # ...
    # Chassis angular velocity odometry scale correction factor (new calibrated value)
    odom_linear_scale_x: 1.0
    odom_angular_scale_z: 1.0278
    # ...

image-20260828175032244

Note

After modifying a1_driver.yaml, it is recommended to recompile the package to synchronize the configuration file in the installation path:

xxxxxxxxxx
cd ~/yahboomcar_ros2_ws/yahboomcar_ws
colcon build --packages-select yahboomcar_bringup
source install/setup.bash

5. Using rqt_reconfigure for GUI Parameter Tuning

In addition to the command line, you can also use rqt_reconfigure provided by ROS 2 for visual real-time parameter tuning and test triggering:

xxxxxxxxxx
ros2 run rqt_reconfigure rqt_reconfigure

image-20260828175258605

Important

How to handle when no nodes are displayed in the interface: If /calibrate_angular node is not shown in the left panel after opening rqt_reconfigure, this is due to timing issues between node startup and tool loading where it was not automatically refreshed. Simply click the Refresh button (Refresh 🔄) in the upper left corner of the rqt interface to rescan and display /calibrate_angular.

5.1 Calibration Node Parameter Description

The /calibrate_angular node panel contains the following key parameters:

Parameter NameDefault ValuePhysical Meaning and Description
start_testFalseTest trigger switch (check to start test, automatically unchecks when rotation is complete)
odom_angular_scale_correction1.0Angular velocity scale correction factor for real-time testing within the calibration node (>1.0 stops earlier with smaller rotation angle, <1.0 stops later with larger rotation angle)
test_angle360.0Target test rotation angle (degrees)
speed1.0Test rotation angular velocity (rad/s)
linear_speed0.15Ackermann chassis forward linear velocity during turning (m/s)
direction1Rotation direction: 1 counterclockwise (left turn), -1 clockwise (right turn)
tolerance0.02Stop angle tolerance (rad, approximately 1.15°)
num_tests1Number of consecutive test rounds (when set to multiple, automatically alternates between forward and reverse rotation)
rate50.0TF query and control main loop frequency (Hz)
base_framebase_footprintRobot chassis projection base coordinate frame name
odom_frameodomOdometry global reference coordinate frame name

6. Core Source Code and Algorithm Principle Analysis

Source code path:

xxxxxxxxxx
$HOME/yahboomcar_ros2_ws/yahboomcar_ws/src/yahboomcar_bringup/yahboomcar_bringup/calibrate_angular_A1P.py

6.1 Angle Integration and Closed-Loop Control Logic

xxxxxxxxxx
def on_timer(self):
    if self.is_testing:
        current_angle = self.get_odom_angle() # Get current yaw angle from TF
        if current_angle is None:
            return
        
        # 1. Normalize angle increment and accumulate with correction factor
        delta = self.normalize_angle(current_angle - self.last_angle)
        self.turn_angle += delta * odom_scale
        self.last_angle = current_angle
        
        target = test_angle * self.direction
        error = target - self.turn_angle
        
        # 2. Ackermann chassis linear velocity + angular velocity coordinated control
        if abs(error) > tolerance:
            move_cmd = Twist()
            move_cmd.linear.x = abs(linear_speed)       # Maintain forward linear velocity
            move_cmd.angular.z = copysign(speed, error) # Steering angular velocity
            self.cmd_vel_pub.publish(move_cmd)
        else:
            # 3. Target rotation angle reached, publish stop
            self.cmd_vel_pub.publish(Twist())
            self.is_testing = False

6.2 Source Code and Driver Activation Mechanism Analysis

  • Why increasing the correction factor actually results in smaller rotation: In the calibration program, the accumulated rotation angle condition is turn_angle = sum(delta) * odom_scale. When the robot stops, the actual rotation angle of the odometry is target / odom_scale. Therefore, when odom_scale > 1.0 (increased factor), the denominator becomes larger for the actual required rotation angle, and the vehicle only needs to rotate a smaller angle for the program to determine the target is reached and stop; conversely, when odom_scale < 1.0 (decreased factor), the vehicle must rotate a larger angle to reach the target.

  • Low-level driver activation mechanism: In Ackman_driver_A1P.py, the driver node scales the angular velocity feedback with angular_z * odom_angular_scale_z in real time, and participates in the trapezoidal dead-reckoning _integrate_and_publish_odom. After persisting the angular velocity calibration factor to a1_driver.yaml, it can significantly improve the heading accumulation drift issue during Nav2 path tracking and rotation obstacle avoidance.

Linear Velocity Calibration
Robot URDF Model

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/中文