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

1. QR Code Recognition Control Action

QR Code Recognition Control Action (PTZ)

1. Experiment Objective

The camera (pan-tilt) scans QR codes and recognizes encoded commands (forward/back/left/right/turnleft/turnright/stop) to control the chassis to perform the corresponding actions. The PTZ initializes to a forward-facing angle and does not participate in tracking.

2. Experiment Principle

1. Key Terms

TermDescription
Visual ControlThe camera captures an image → the target content is recognized → mapped to chassis control commands, forming a "perceive → decide → execute" loop
QR Command Mapping7 normalized commands (forward/back/left/right/turnleft/turnright/stop) → predefined linear velocity + angular velocity combinations
pyzbar / OpenCV QRDual-backend detection: pyzbar is based on the zbar library (node default), OpenCV uses the built-in QRCodeDetector (launch default)
Joy OverrideSubscribes to the /JoyState topic; when the joystick is active, the node automatically stops publishing /cmd_vel and yields control
Command Hold Timeout (hold_timeout)After the QR code is lost, the last valid command continues to be executed for qr_command_hold_timeout_sec, then the car stops
PTZ InitializationPublishes the initial pan-tilt angle 20 times at 0.2 s intervals at startup (horizontal 0°, pitch -45°), ensuring the camera faces straight ahead
QoSbest_effort (image + cmd_vel), reliable (JoyState/beep)
TF Coordinate Frameodom → base_footprint → base_link

2. Technical Architecture

The node uses a dual-timer architecture (image processing at 30 Hz + chassis control at 20 Hz). It shares the same node source code as the No-PTZ version, with the only differences being the added pan-tilt initialization and /cmd_ptz_angle publishing:

/camera/image_raw (BEST_EFFORT)
  → qr_control_ptz_node
    ├── Image processing timer: image conversion → flip/rotate → pyzbar/OpenCV QR detection → state update
    ├── Chassis control timer: QR command mapping → /cmd_vel (BEST_EFFORT) → firmware execution
    └── Pan-tilt initialization: publishes the initial angle 20 times at startup → /cmd_ptz_angle
/JoyState (Bool) → joy override → zero velocity + buzzer off
/beep (UInt16) ← buzzer feedback for unknown commands

3. Core Topics Quick Reference

Firmware Uplink

TopicMessage TypeQoSDescription
/camera/image_rawsensor_msgs/Imagebest_effortRaw image frame from the ESP32 camera

Firmware Downlink

TopicMessage TypeQoSFieldRangeDirection
/cmd_velgeometry_msgs/Twistbest_effort + keep_last(1)linear.x-0.30~0.30 m/s+= forward, −= backward
   angular.z-1.50~1.50 rad/s+= turn left, −= turn right
/cmd_ptz_anglemicroros_v2_msgs/PtzAnglereliablehorizontal_deg-90~90°Pan-tilt horizontal angle
   pitch_deg-90~0°Pan-tilt pitch angle

ROS2 Internal Topics

TopicMessage TypeQoSSourceDescription
/JoyStatestd_msgs/BoolreliableJoystick nodetrue when the joystick is active; the node stops the car automatically

3. Experiment Steps

1. Hardware Preparation

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

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

xxxxxxxxxx
ros2 launch microros_v2_bringup car_base.launch.py

image-20260728161615714

3. Start QR Code Control (Terminal 2)

xxxxxxxxxx
ros2 launch microros_v2_ptz_visual_control_pkg qr_control_ptz.launch.py

image-20260728184859401

4. Operation Instructions

KeyFunctionDescription
SpaceControl switchEnable/pause QR control; publishes zero velocity when paused
i / IRecognition modeOnly recognize and display, without decoding to control the chassis
r / RReset stateClear the current QR code cache and stop control
q / Q / ESCExitStop the car + os._exit(0)

QR Command Mapping:

Normalized CommandLinear Velocity (m/s)Angular Velocity (rad/s)Behavior
forward0.300Move forward
back-0.300Move backward
left01.00Turn left in place
right0-1.00Turn right in place
turnleft0.301.50Move forward + turn left
turnright0.30-1.50Move forward + turn right
stop00Stop

5. How to Stop

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

4. Experiment Observations

  • No QR code + control enabled: The frame shows "QR: None", cmd_vel is zero velocity, state lost
  • QR code = forward: The car drives straight ahead at 0.30 m/s
  • QR code = turnleft: The car moves forward at 0.30 m/s + turns left at 1.50 rad/s
  • QR code lost for > 1.5 s: The car stops automatically, state lost
  • Unknown QR code: With unknown_command_stop=true, the car stops + optional buzzer
  • Joystick active: The car stops immediately and resumes after release
  • Multiple codes: Selects the largest code using the largest strategy

5. Program Analysis

Source code paths:

  • Launch: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/launch/qr_control_ptz.launch.py
  • Node: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/microros_v2_ptz_visual_control_pkg/qr_control_ptz_node.py

1. Core Node Analysis

qr_control_ptz_node shares the QR detection and control logic with the No-PTZ version. PTZ-specific features:

  • Pan-tilt initialization: Publishes the initial pan-tilt angle 20 times at 0.2 s intervals at startup (initial_horizontal_deg=0°, initial_pitch_deg=-45°), ensuring the servo reaches the target position
  • /cmd_ptz_angle publisher: Publishes the pan-tilt angle command (horizontal + pitch)
  • On-screen overlay: Includes the initial pan-tilt angle information

Constructor — pan-tilt publisher and initialization:

​x
# Source file: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/microros_v2_ptz_visual_control_pkg/qr_control_ptz_node.py
​
def __init__(self) -> None:
    super().__init__(DEFAULT_NODE_NAME)
    # ...(image/QR state initialization same as No-PTZ version)...
​
    # PTZ-specific: pan-tilt angle publisher
    self.cmd_ptz_angle_publisher = self.create_publisher(
        PtzAngle, "/cmd_ptz_angle", 10
    )
    # Pan-tilt initialization parameters
    self.declare_parameter("initial_horizontal_deg", 0.0)
    self.declare_parameter("initial_pitch_deg", -45.0)
    self.declare_parameter("initial_publish_count", 20)
​
    # Publish the initial pan-tilt angle after startup (20 times, 0.2 s interval)
    self._publish_initial_ptz_angle()

2. Key Parameters

Parameter definition files:

  • Launch: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/launch/qr_control_ptz.launch.py
  • Node: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/microros_v2_ptz_visual_control_pkg/qr_control_ptz_node.py
ParameterTypeDefault ValueDescription
forward_linear_speedfloat0.30 m/sLinear speed for the forward command
back_linear_speedfloat-0.30 m/sLinear speed for the back command
rotate_angular_speedfloat1.00 rad/sAngular speed for left/right rotation
turn_linear_speedfloat0.30 m/sLinear speed for the turn commands
turn_angular_speedfloat1.50 rad/sAngular speed for the turn commands
qr_detector_backendstropencvDetection backend: pyzbar / opencv / auto
qr_command_hold_timeout_secfloat1.5 sCommand hold time after the code is lost
control_rate_hzfloat20.0 HzChassis control frequency
image_processing_rate_hzfloat30.0 HzImage processing frequency
auto_start_controlboolfalseStart control automatically after launch
stop_when_qr_lostbooltrueStop the car after the code-lost timeout
enable_joy_overridebooltrueJoystick override switch
initial_horizontal_degfloat0.0°Initial pan-tilt horizontal angle
initial_pitch_degfloat-45.0°Initial pan-tilt pitch angle

3. Node Description

NodePackageDescription
qr_control_ptz_nodemicroros_v2_ptz_visual_control_pkgPTZ QR code recognition + control, dual timers + pan-tilt initialization

6. Frequently Asked Questions

ProblemCauseSolution
QR code not recognizedInsufficient light or blurred QR codeEnsure the QR code is clear and the lighting is even
Scanned but no actionauto_start_control=falsePress the Space key to enable control
Car runs wildly after losing the codeqr_command_hold_timeout_sec too largeReduce the hold timeout (e.g., 0.5 s)
pyzbar unavailableMissing libzbar0Install sudo apt install libzbar0 or use the opencv backend
Abnormal pan-tilt angleServo not initialized correctlyCheck the PTZ power supply and servo connection

QR codes:

image-20260811102858086

image-20260811102910898

image-20260811102921877

image-20260811102929731

image-20260811102936291

image-20260811103146848

turnleft

image-20260811103318821

turnright

Object Follow
AprilTag Control Car Action Group

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
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文