yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
MicroROS V2 Robot Car📖
01.Introduction
  • 0.Unboxing Video
  • 1. Readme Learning Route
  • 2. Must Read Before Use
  • 3. Introduction to MicroROS V2 Control Board
  • 4. Introduction to LiDAR
  • 5. Introduction to ESP32 Camera Module
  • 6. FAQ
  • 7. About Charging
02.Assembly course
  • Assembly Video
03.Preparation
  • 1. Quickly Start
  • 2. Write Firmware
  • 3. Install VM and Start System
  • 4. Configure VM and Connect Robot
  • 5. Connect to MicroROS Agent
04.Quick start control course
  • 1. VM Keyboard Remote Control
  • 2. VM Handle Remote Control
  • 3. USB Handle Control
05.Robot control course
  • 1. Robot Information Release
  • 2. Robot Keyboard Control
  • 3. Robot Handle Control
  • 4. Robot State Estimation
  • 5. Linear Speed Calibration
  • 6. Angular Velocity Calibration
  • 7. Robot URDF Model
06.Lidar course
  • 1. Precautions for LiDAR Mapping and Navigation
  • 2. Lidar Avoid
  • 3. Lidar Following
  • 4. Lidar Guard
  • 5. Lidar Patrol
  • 6. Gmapping Mapping
  • 7. Cartographer Mapping
  • 8. Cartographer Quickly Repositioning Navigation
  • 9. Slam Toolx Mapping
  • 10. Navigation2 Single Point Navigation
  • 11. Navigation2 Multi Point Navigation
  • 12. Ros Robot App Mapping And Navigation
07.Road network planning
  • 1. Introduction to Road Network Planning and Quick Start
  • 2. Build a Pose Map
  • 3. Road Network Annotation
  • 4. Planning and Navigation Between Road Networks
  • 5. Road Network Navigation in Any Pose
  • 6. Path Replanning
08.Vision basic course
OpenCV Image Processing
  • 1. Introduction to OpenCV Source CV
  • 2. Open Source CV Geometric Transformation
  • 3. Open Source CV Image Processing and Drawing Text Line Segments
  • 4. Open Source CV Image Beautification
09.Visual General Course (For Standard&Superior version)
4. Yolov11&26 Visual Recognition
  • 1. YOLO Environment Setup
  • 2. CLI Usage
  • 3. Object Detection
  • 4. Instance Segmentation
  • 5. Pose Estimation
  • 6. Image Classification
  • 7. Oriented Bounding Boxes Object Detection
  • 8. Model Prediction
1. ESP32 Visual Recognition Module Configuration
  • 1. Serial Port Configuration WiFi Instructions
  • 2. Use ESP32 Camera Module in Robot Car
  • 3. Servo PTZ Calibration
2. OpenCV Visual Recognition
  • 1. Human Pose Estimation
  • 2. Object Detection
  • 3. AR Vision
  • 4. QR Code
  • 5. Color Recognition
  • 6. Facial Recognition
  • 7. AprilTag Machine Code Recognition
3. Mediapipe Visual Recognition
  • 1. Hand Detection
  • 2. Pose Detection
  • 3. Holistic Detection
  • 4. Facial Detection
  • 5. Facial Recognition
  • 6. Facial Special Effects
  • 7. 3D Object Recognition
  • 8. Brush
  • 9. Gesture Recognition
  • 10. Palm Target Localization
  • 11. Fingertip Trajectory Recognition
10.Visual Advanced Course (Just for Standard version)
1. Visual Control
  • 1. QR Code Recognition Control Action
  • 2. AprilTag Control Car Action Group
  • 3. Gesture Control Car Action Group
  • 4. Visual Line Tracking
2. Visual Tracking
  • 1. Color Tracking
  • 2. Facial Tracking
  • 3. QR Code Tracking
  • 4. Object Recognition And Tracking
  • 5. Mediapipe Palm Tracking
  • 6. Mediapipe Gesture Tracking
  • 7. Mediapipe Human Pose Tracking
  • 8. KCF Object Tracking
  • 9. AprilTag Machine Code Tracking
3. Visual Following
  • 1. Color Follow
  • 2. Face Follow
  • 3. QR Code Follow
  • 4. Mediapipe Palm Follow
  • 5. Mediapipe Gesture Follow
  • 6. Mediapipe Human Posture Follow
  • 7. AprilTag Machine Code Follow
  • 8. Object Follow
11.Visual Advanced Course (Just for Superior version)
1. Visual Control
  • 1. QR Code Recognition Control Action
  • 2. AprilTag Control Car Action Group
  • 3. Gesture Control Car Action Group
  • 4. Visual Line Tracking
2. Visual Tracking
  • 1. Color Tracking
  • 2. Facial Tracking
  • 3. QR Code Tracking
  • 4. YOLO Object Recognition and Tracking
  • 5. Mediapipe Palm Tracking
  • 6. Mediapipe Gesture Tracking
  • 7. Mediapipe Human Pose Tracking
  • 8. KCF Object Tracking
  • 9. AprilTag Machine Code Tracking
3. Visual Follow
  • 1. Color Follow
  • 2. Face Follow
  • 3. QR Code Follow
  • 4. Mediapipe Palm Follow
  • 5. Mediapipe Gesture Follow
  • 6. Mediapipe Human Pose Follow
  • 7. AprilTag Machine Code Follow
  • 8. Object Follow
12.AI Large Model Basic and Applications Course
1. AI Large Model Preparation
  • 1.AI Large Model Preparation
2. AI Large Model Basic Course
  • 1. AI Large Model Types and Principles
  • 2. RAG Retrieval Augmented and Training Samples
  • 3. Embodied Intelligent System Architecture
  • 4. Embodied Intelligence Core Source Code
3. AI Large Model Development
  • 1. Register Model Service Account
  • 2. Configure API KEY
  • 3. Dify Introduction
  • 4. Dify Basic Features
  • 5. RAG Knowledge Base Deployment
  • 6. AI Application Development Chatbot
  • 7. RAG Knowledge Base and Chatbot
  • 8. AI Agent Workflow
4. AI Large Model (Text Version)
  • 1. Semantic Understanding and Instruction Following
  • 2. Multimodal Visual Understanding
  • 3. Multimodal Visual Understanding + Basic Control
  • 4. Multimodal Visual Understanding + Object Following
  • 5. Multimodal Visual Understanding + Visual Line Following
  • 6. Multimodal Visual Understanding + SLAM Navigation
  • 7. Multimodal Visual Understanding + SLAM Navigation + Visual Line Following
  • 8. Multimodal Visual Understanding + SLAM Navigation + Object Following
  • 9. Intent Inference + Multimodal Visual Understanding + SLAM Navigation
13.Openclaw Basics Course
  • 1. Openclaw Introduction
  • 2. Openclaw Core Concepts
  • 3. Openclaw Api-Key Configuration
  • 4. Openclaw Switching Models
  • 5. Openclaw System Prompt
  • 6. Openclaw Common CLI Command
14. Openclaw Interaction Course
  • 1. Openclaw Webchat Interaction
  • 2. Openclaw Tui Interaction
  • 3. Openclaw Whatsapp Interaction
15.Openclaw Development Course
  • 1. Openclaw Robot Mcp Service Integration
  • 2. Robot CLI Command Tools
  • 3. Robot-Control Plugin Tools
  • 4. Openclaw Skills Development
  • 5. Openclaw Scheduled Tasks
  • 6. Openclaw Multi Agent System
  • 7. Openclaw Proactive Interaction
  • 8. Openclaw Vector Memory
16.Openclaw Embodied Intelligence Course
  • 1. OpenClaw Natural Interaction + Basic Control
  • 2. OpenClaw Natural Interaction + Slam Navigation
  • 3. OpenClaw Natural Interaction + Multimodal Visual Understand
  • 4. OpenClaw Natural Interaction + Multimodal Visual Understand + Slam Navigation + Visual Follow
  • 5. OpenClaw Natural Interaction + Multimodal Visual Understand + Slam Navigation + Visual Track
17.Multi-machine Course
  • 1. Multi Machine Handle Control
  • 2. Multi Machine Keyboard Control
  • 3. Multi Machine Navigation
18.MicroROS-V2 Control Board Development Environment
  • 1. Set Up the ESP32-IDF Development Environment
  • 2. ESP32-IDF Configuration Tool
  • 3. ESP Flash Tool Flashing Firmware
  • 4. Install ESP32 Microros Components
  • 5. Install And Start Microros Agent
19.MicroROS-V2 Control Board ESP32 Basic Course
  • 1. Led Light Up
  • 2. Button Function
  • 3. Drive Buzzer
  • 4. Oled
  • 5. Usb Host Function
  • 6. Serial Communication
  • 7. Battery Voltage Detection
  • 8. Drive Pwm Servo
  • 9. Drive Motors
  • 10. Read Motor Encoder Data
  • 11. Pid Motor Speed Control
  • 12. Robot Kinematics Analysis Theory
  • 13. Read Imu Data
  • 14. Read Lidar Data
  • 15. Flash Data Storage
  • 16. Custom Partition Table
  • 17. Bluetooth Communication
  • 18. Wifi Connection
  • 19. ESP32 Visual Recognition Module
20.MicroROS-V2 Control Board Micro_ros Basic Course
  • 1. Publish Topics
  • 2. Subscribe To Topics
  • 3. Multi Topic Subscription And Publishing
  • 4. Subscribe To Buzzer Topic
  • 5. Subscribe To Pwm Servo Topic
  • 6. Subscribe To Speed Control Topic
  • 7. Publish Odometry Topic
  • 8. Publish Imu Data Topic
  • 9. Publish Lidar Data Topic
21. 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
22.Docker Course
  • 1.Docker overview and docker installation
  • 2.Common commands for docker image containers
  • 3.Docker images deeply understand and publish images
23.ROS 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
Download
  • Mapping_APP(iOS_Android)
  • Code
  • Software_Tools
  • VM_System_File
  • 3D_Model_File
  • ESP32_Firmware
  • Dify LLM Base
  • Instruction_Manual
  • VMware
Download ZIP

Welcome to MicroROS V2 Robot Car repository

4. Visual Line Tracking

Visual Line Tracking (PTZ)

1. Experiment Objective

The camera detects the line on the ground (HSV color segmentation), PID controls the chassis angular velocity to drive along the line, and the LiDAR stops the car when an obstacle is detected ahead. The PTZ tilts down (pitch=-90°) toward the ground.

2. Experiment Principle

1. Key Terms

TermDescription
Line TrackingThe camera detects the ground line and computes the yaw error relative to the image center; a PID closed loop controls the angular velocity
HSV Color SegmentationBinarizes the HSV color space with cv.inRange to extract lines of a specific color, with hue wraparound support
Tracking ROIProcesses only the lower half of the image (line_roi_top_ratio=0.55), excluding the distant background
Discrete PID ControllerP+I+D independent gains with integral limiting; the pixel error is scaled by line_error_divisor
LiDAR Obstacle StopObstacle points ahead in /scan exceed the threshold → stop immediately + optional buzzer
Line-Lost Auto ExitAfter the line-lost timeout, automatically calls rclpy.shutdown() to exit the node
PTZ Tilt-DownThe pan-tilt sets pitch=-90° toward the ground, more flexible than a fixed mount
QoSbest_effort (image + LiDAR + cmd_vel), sensor_data (LiDAR)
TF Coordinate Frameodom → base_footprint → base_link

2. Technical Architecture

Dual timers (image at 30 Hz + control at 20 Hz) + LiDAR callback + PTZ tilt-down:

/camera/image_raw (BEST_EFFORT)
  → follow_line_ptz_node
    ├── Image processing (30 Hz): image conversion → flip → ROI HSV binarization → morphology → largest contour → EMA filtering
    ├── Chassis control (20 Hz): pixel error → scaling → discrete PID → angular velocity limiting → /cmd_vel (BEST_EFFORT)
    └── PTZ: tilts down to -90° at startup → /cmd_ptz_angle
/scan (sensor_data) → obstacle avoidance callback: valid point count → stop + buzzer above threshold

Key PTZ vs. No-PTZ differences: The pan-tilt can tilt down -90° toward the ground, so there is no need to manually adjust the camera mounting angle. Line tracking performs better than the fixed-mount version.

3. Core Topics Quick Reference

Firmware Uplink

TopicMessage TypeQoSDescription
/camera/image_rawsensor_msgs/Imagebest_effortImage from the ESP32 camera
/scansensor_msgs/LaserScansensor_dataLiDAR scan data

Firmware Downlink

TopicMessage TypeQoSFieldRangeDirection
/cmd_velgeometry_msgs/Twistbest_effort + keep_last(1)linear.x0.15 m/s (constant)+= forward
   angular.z-1.20~1.20 rad/s+= turn left, −= turn right
/cmd_ptz_anglemicroros_v2_msgs/PtzAnglereliablepitch_deg-90°Tilted down toward the ground

3. Experiment Steps

1. Hardware Preparation

HardwareRequirement
PTZ version✅
No-PTZ version❌
Required peripheralsESP32 camera (pan-tilt) + PTZ servo + T-mini Plus LiDAR

2. Start Agent + Camera + Joint Model (Terminal 1)

xxxxxxxxxx
ros2 launch microros_v2_bringup car_base.launch.py

image-20260728161615714

3. Start Visual Line Tracking (Terminal 2)

xxxxxxxxxx
ros2 launch microros_v2_ptz_visual_control_pkg follow_line_ptz.launch.py

After startup, the pan-tilt tilts down to -90° and line tracking starts automatically (auto_start_tracking:=true).

image-20260722180246831

4. Operation Instructions

KeyFunction
Spacetracking/paused
i / IRecognition only (no control)
r / RReset
Mouse dragHSV sampling (box-select the line to auto-update the threshold)
q / Q / ESCExit

5. How to Stop

Press Ctrl+C to stop Terminal 2 → Terminal 1 in order.

4. Experiment Observations

  • Automatic line tracking after startup: The pan-tilt tilts down -90° toward the ground, driving along the line at 0.15 m/s
  • Line centered: Drives straight within the 40 px deadband, with the PID outputting zero angular velocity
  • Line shifted left: Turns right to correct (positive angular velocity); shifted right → turns left
  • Obstacle ahead: Stops + buzzer within 0.35 m, resumes after the obstacle is removed
  • Line lost > 1.5 s: Stops and exits automatically
  • Joystick override: Stops + resets the PID, resumes after release

5. Program Analysis

Source code paths:

  • Launch: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/launch/follow_line_ptz.launch.py
  • Node: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/microros_v2_ptz_visual_control_pkg/follow_line_ptz_node.py

1. Core Node Analysis

follow_line_ptz_node integrates PTZ control on top of the No-PTZ version. Core features:

  • Discrete PID controller (DiscretePidController): Independent P/I/D terms + integral limiting, with the pid_scale (1000) normalized gain (actual P=0.022, D=0.005)
  • HSV hue wraparound: When Hmin > Hmax (e.g., red H[160,10]), merges two masks in segments
  • EMA filtering: target_smooth_alpha (0.55) exponential moving average to smooth the detected center
  • Mouse sampling: Box-select the ROI → 5th~95th percentile HSV → auto-update the threshold
  • PTZ tilt-down: The pan-tilt tilts down to initial_pitch_deg (-90°) at startup, facing the camera toward the ground

Chassis control timer — PID line tracking + obstacle avoidance priority:

​x
# Source file: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/microros_v2_ptz_visual_control_pkg/follow_line_ptz_node.py
​
def publish_chassis_control_command(self) -> None:
    if not self.is_node_running:
        return
    # Joystick override takes priority
    if self.joy_is_active:
        self.publish_zero_twist()
        return
    # Obstacle avoidance takes priority over the tracking PID
    if self.enable_obstacle_stop and self.obstacle_is_active:
        self.publish_zero_twist()
        self.publish_beep(True)
        return
​
    if self.tracking_state != TRACKING_STATE_TRACKING:
        return
​
    # Pixel error → PID angular velocity
    line_center_x = self.filtered_line_center[0]
    pixel_error_x = line_center_x - self.image_width * 0.5
​
    twist_command = Twist()
    twist_command.linear.x = float(self.line_linear_speed)  # constant 0.15 m/s
​
    if abs(pixel_error_x) <= self.line_center_deadband_pixel:
        angular_command = 0.0  # drive straight within the deadband
    else:
        pid_input = pixel_error_x / self.line_error_divisor  # scaling
        pid_output = self.line_pid_controller.update(pid_input, 0.0)
        angular_command = -pid_output  # reverse_angular_direction
        angular_command = np.clip(angular_command, -self.max_angular_speed, self.max_angular_speed)
​
    twist_command.angular.z = angular_command
    self.cmd_vel_publisher.publish(twist_command)

2. Key Parameters

Parameter definition files:

  • Launch: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/launch/follow_line_ptz.launch.py
  • Node: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/microros_v2_ptz_visual_control_pkg/follow_line_ptz_node.py
ParameterTypeDefault ValueDescription
line_linear_speedfloat0.15 m/sConstant linear speed for line tracking
max_angular_speedfloat1.2 rad/sMaximum angular velocity limit
line_pid_kp / line_pid_kdfloat22.0 / 5.0PID gains (scaled by pid_scale=1000)
pid_scalefloat1000.0PID gain normalization divisor
line_error_divisorfloat16.0Pixel error scaling divisor
line_center_deadband_pixelfloat40.0 pxDeadband
line_roi_top_ratiofloat0.55ROI top ratio
target_smooth_alphafloat0.55EMA filtering coefficient
line_lost_timeout_secfloat1.5 sLine-lost timeout
enable_obstacle_stopbooltrueLiDAR obstacle avoidance switch
obstacle_response_distancefloat0.35 mObstacle response distance
auto_start_trackingbooltrueStart line tracking automatically
lost_line_stopbooltrueStop after the line-lost timeout without exiting the node
initial_pitch_degfloat-90.0°Pan-tilt tilt-down angle (facing the ground)

3. Node Description

NodePackageDescription
follow_line_ptz_nodemicroros_v2_ptz_visual_control_pkgPTZ visual line tracking + obstacle avoidance, dual timers + PID + pan-tilt tilt-down

6. Frequently Asked Questions

ProblemCauseSolution
Line tracking sways left/rightPID gains too largeReduce line_pid_kp / line_pid_kd
Line not detectedHSV threshold mismatchBox-select the line with the mouse to re-sample
Obstacle avoidance too sensitiveobstacle_response_distance too largeReduce the response distance
Stops suddenly during trackinglost_line_stop=true or HSV/LiDAR input lostCheck the input; set to false as needed after confirmation
Abnormal pan-tilt angleServo not initialized correctlyCheck the PTZ power supply and servo connection
Easily leaves the line while trackingUnstable Wi-Fi causes frame stutter, so the control parameters cannot prevent deviation however they are tunedUse a clean, stable 2.4G Wi-Fi network and re-tune the control parameters
Gesture Control Car Action Group
Color Tracking

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