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

6. Mediapipe Human Pose Follow

Mediapipe Human Pose Follow (PTZ)

1. Experiment Objective

PTZ pan-tilt + car body collaborative human pose following — MediaPipe Pose detects 33 landmarks, uses the mean center of all landmarks as the tracking target, keeps the tilt axis fixed (fixed_pitch_deg=-10°), and coordinates horizontal PD + body movement.

2. Experiment Principle

1. Key Terms

TermDescription
Visual FollowingPan-tilt tracking + coordinated body movement
MediaPipe Pose33-landmark whole-body pose estimation; the landmark mean center is used as the tracking target
Fixed tilt angle (fixed_pitch_deg)The tilt axis does not participate in PD tracking and is fixed at a specified angle (default -10°), because a human's vertical movement range is limited
Error sharing / angular-rate feedforward / distance followThe core mechanisms of the three-layer coordinated control

2. Technical Architecture

Node chain:

State estimation layer → pose_follow_ptz_node → /cmd_ptz_angle (pan-tilt angle) + /cmd_vel (body velocity)

Three-layer coordinated control:

  • PTZ PD control (20 Hz): the human center x pixel error → PD (pd_kp=3.0, pd_kd=1.5, the highest gains — human movement is large) → feedforward compensation → /cmd_ptz_angle.x. The tilt direction is fixed and not tracked; fixed_pitch_deg (-10°) is always output, avoiding tilt jitter caused by changes in human height.
  • Body angular-velocity PD control (10 Hz): pan-tilt horizontal angle × body_share (0.5) → error shared with the body → PD (angular_kp=0.8, angular_kd=0.05) → limiting ±0.12 rad/s.
  • Distance-follow PD control (10 Hz): deviation between the human bbox height and target_pose_size_px (320 px) → PD (distance_kp=0.008, distance_kd=0.003) → limiting ±0.20 m/s.

Lost-frame tolerance: no person for ≥5 consecutive frames → freeze the body.

3. Core Topics Quick Reference

Firmware Uplink (ESP32 → ROS2):

Topic NameTypeQoSDescription
/camera/image_rawsensor_msgs/ImageKEEP_LAST 1, BEST_EFFORT, VOLATILERaw image input from the ESP32 camera

Firmware Downlink (ROS2 → ESP32 via micro_ros_agent):

Topic NameTypeQoSDescription
/cmd_ptz_anglegeometry_msgs/Vector3Default (KEEP_LAST 10)PTZ pan-tilt angle command (x: horizontal, y: tilt)
/cmd_velgeometry_msgs/TwistDefault (KEEP_LAST 10)Body velocity command (linear.x: forward/back, angular.z: rotation)

ROS2 Internal (published by the state estimation layer):

Topic NameTypeQoSDescription
/diagnosticsdiagnostic_msgs/DiagnosticArrayDefaultSummary of each node's running status

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)

ros2 launch microros_v2_bringup car_base.launch.py

image-20260728161615714

3. Start Human Pose Follow (Terminal 2)

Open a new terminal and run:

xxxxxxxxxx
ros2 launch microros_v2_ptz_visual_control_pkg pose_follow_ptz.launch.py

image-20260728194953818

After the node starts, the initial PTZ angle is published automatically, and the Space key toggles the idle/tracking state. At this point the pan-tilt is powered on but not yet in tracking mode.

4. Operation Instructions

Interaction:

KeyFunction
Spaceidle ↔ tracking toggle
i / IForce idle
q / Q / ESCExit the program

Workflow:

  1. After the program starts, it is in the idle state by default; MediaPipe pose detection is already running but outputs no control commands
  2. Press Space to enter the tracking state; the pan-tilt tracks the human center horizontally, and the body turns + follows distance in coordination
  3. Press i to return to idle, press q to exit

Safety and Edge Cases:

  • No person ≥5 frames → freeze the body (lost_frame_threshold=5)
  • Tilt fixed at fixed_pitch_deg (-10°), not involved in PD tracking
  • Pan-tilt limiting: horizontal [-90°, 90°], tilt [-90°, 20°]
  • Velocity limiting: angular velocity ±0.12 rad/s, linear velocity ±0.20 m/s

5. How to Stop

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

4. Experiment Observations

  • idle: Pose detection runs but outputs no control; the frame shows the human landmarks and the center marker
  • tracking + human present: The pan-tilt tracks the human center horizontally (purple dot), and the body turns quickly (angular_kp=0.8) + follows distance
  • Tilt not tracked: always points at fixed_pitch_deg (-10°); changes in the person's height do not affect the pan-tilt
  • Human moves left/right: high-gain PD (3.0/1.5) responds to the pan-tilt quickly, and the high body angular-velocity gain (0.8) turns in coordination
  • Human moves forward/back: distance following based on the bbox size, up to 0.20 m/s
  • No person ≥5 frames: the body freezes and the frame shows the lost count

5. Program Analysis

Source code paths:

  • Launch file: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/launch/pose_follow_ptz.launch.py
  • Node file: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/microros_v2_ptz_visual_control_pkg/pose_follow_ptz_node.py

1. Core Node Analysis

PoseFollowPtzNode inherits from rclpy.node.Node and internally contains three timer loops: image processing (15 Hz), PTZ control (20 Hz), body control (10 Hz), plus key polling (20 Hz).

Node initialization — __init__:

​x
# Source file: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/microros_v2_ptz_visual_control_pkg/pose_follow_ptz_node.py
​
class PoseFollowPtzNode(Node):
​
    def __init__(self) -> None:
        super().__init__(DEFAULT_NODE_NAME)
        self._image_lock = threading.Lock()
        self._pose_lock = threading.Lock()
​
        self._latest_frame: Optional[np.ndarray] = None
        self._latest_seq = 0
        self._processed_seq = 0
​
        self._state = STATE_IDLE
        self._shutdown = False
​
        self._has_pose = False
        self._has_target = False
        self._lost_frames = 0
        self._target_x: Optional[float] = None
        self._target_y: Optional[float] = None
        self._target_size_px: Optional[float] = None
​
        self._h_deg = 0.0
        self._p_deg = 0.0
​
        self._prev_err_x = 0.0
        self._prev_err_y = 0.0
        self._prev_ctrl_t = 0.0
        self._last_sx = 0.0
        self._last_sy = 0.0
​
        self._prev_s1 = 0.0
        self._prev_s1_eff = 0.0
        self._prev_body_t = 0.0
        self._last_body_az = 0.0
​
        self._prev_size_err = 0.0
        self._prev_linear_t = 0.0
​
        self._measured_fps = 0.0
        self._fps_count = 0
        self._fps_last_t = time.perf_counter()
        self._win_ready = False
        self._last_print_t = 0.0
​
        self._declare_params()
        self._load_params()
​
        self._h_deg = float(self._init_h_deg)
        self._p_deg = clamp(float(self._fixed_pitch_deg), self._p_min, self._p_max)
​
        self._pose_det = PoseDetector(
            detectionCon=float(self._pose_conf),
            trackCon=float(self._pose_track_conf),
        )
​
        video_qos = QoSProfile(
            history=QoSHistoryPolicy.KEEP_LAST,
            depth=1,
            reliability=QoSReliabilityPolicy.BEST_EFFORT,
            durability=QoSDurabilityPolicy.VOLATILE,
        )
        self._img_sub = self.create_subscription(
            Image, self._img_topic, self._on_image, video_qos
        )
        self._ptz_pub = self.create_publisher(Vector3, self._ptz_topic, 10)
        self._cmd_pub = self.create_publisher(Twist, self._cmd_topic, 10)
​
        self._img_timer = self.create_timer(
            1.0 / max(float(self._img_rate), MINIMUM_TIMER_RATE_HZ), self._process_image
        )
        self._ptz_timer = self.create_timer(
            1.0 / max(float(self._ptz_rate), MINIMUM_TIMER_RATE_HZ), self._ptz_tick
        )
        self._body_timer = None
        self._rebuild_body_timer(False)
​
        self._key_timer = None
        if self._show_win:
            self._ensure_win()
            self._key_timer = self.create_timer(0.05, self._poll_keys)
​
        self._init_ptz_timer = None
        self._init_ptz_remain = 0
        if self._pub_init_ptz:
            self._start_init_ptz()
​
        self._param_cb = self.add_on_set_parameters_callback(self._on_param_update)
​
        self.get_logger().info(
            f"Pose follow PTZ+body started. SPACE=toggle, i=idle, q=quit. "
            f"ptz={self._ptz_rate:.0f}Hz img={self._img_rate:.0f}Hz body={self._body_rate:.0f}Hz"
        )

PTZ control core — _ptz_tick (fixed-pitch implementation):

xxxxxxxxxx
# Source file: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/microros_v2_ptz_visual_control_pkg/pose_follow_ptz_node.py
​
    def _ptz_tick(self) -> None:
        if self._state != STATE_TRACKING:
            return
​
        with self._pose_lock:
            tx = self._target_x
            ty = self._target_y
            has_target = self._has_target
​
        if not has_target or tx is None or ty is None:
            self._reset_ptz_pd()
            return
​
        icx = float(self._proc_w) * 0.5
        icy = float(self._proc_h) * 0.5
        pex = float(tx - icx)
        pey = float(ty - icy)
​
        cx = abs(pex) < self._db_x
        cy = abs(pey) < self._db_y
        if cx:
            pex = 0.0
        if cy:
            pey = 0.0
​
        n = time.perf_counter()
        dt = n - self._prev_ctrl_t if self._prev_ctrl_t > 0.0 else 1.0 / max(float(self._ptz_rate), MINIMUM_TIMER_RATE_HZ)
        dt = max(dt, 1e-3)
​
        nex = pex / icx
        ney = pey / icy
        dx = (nex - self._prev_err_x) / dt
        dy = (ney - self._prev_err_y) / dt
​
        ff = self._body_ff_gain * self._last_body_az
        rx = clamp((self._kp * nex + self._kd * dx - ff) * self._max_step, -self._max_step, self._max_step)
        ry = 0.0  # pitch is fixed: no PD control output
​
        a = self._step_alpha
        sx = (1.0 - a) * self._last_sx + a * rx
        sy = (1.0 - a) * self._last_sy + a * ry
        if cx:
            sx = 0.0
            nex = 0.0
        if cy:
            sy = 0.0
            ney = 0.0
​
        self._prev_err_x = nex
        self._prev_err_y = ney
        self._prev_ctrl_t = n
        self._last_sx = sx
        self._last_sy = sy
​
        if self._rev_h:
            sx = -sx
        dh = clamp(self._h_deg + sx, self._h_min, self._h_max)
        dp = clamp(self._fixed_pitch_deg, self._p_min, self._p_max)
​
        sa = self._ptz_alpha
        self._h_deg = clamp((1.0 - sa) * self._h_deg + sa * dh, self._h_min, self._h_max)
        self._p_deg = dp
​
        self._pub_ptz()
        self._log_ctrl(pex, pey)

The fixed-pitch key lines: ry = 0.0 and dp = clamp(self._fixed_pitch_deg, self._p_min, self._p_max) — the tilt direction performs no PD error computation and always outputs the fixed_pitch_deg angle.

2. Key Parameters

Parameter definition files:

  • Launch file: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/launch/pose_follow_ptz.launch.py
  • Node file: ~/microros_ws/src/microros_v2_ptz_visual_control_pkg/microros_v2_ptz_visual_control_pkg/pose_follow_ptz_node.py

Pan-tilt PTZ control parameters:

ParameterTypeDefault ValueDescription
pd_kpfloat3.0Pan-tilt horizontal PD proportional gain (highest, human movement is large)
pd_kdfloat1.5Pan-tilt horizontal PD derivative gain
ptz_control_ratefloat20.0 HzPan-tilt control rate
fixed_pitch_degfloat-10.0°Fixed tilt angle (not involved in PD tracking)
deadband_xfloat20.0 pxHorizontal deadband (no response near the center)
max_ptz_stepfloat1.2°Maximum single step angle
ptz_step_smooth_alphafloat0.35Step smoothing coefficient
ptz_smooth_alphafloat0.85Angle output smoothing coefficient

Body control parameters:

ParameterTypeDefault ValueDescription
body_control_ratefloat10.0 HzBody control rate
angular_kpfloat0.8Body angular-velocity P gain (high, for fast turning)
angular_kdfloat0.05Body angular-velocity D gain
body_sharefloat0.5Ratio of the pan-tilt error allocated to the body
body_ff_gainfloat1.3Angular-rate feedforward gain
max_angular_zfloat0.12 rad/sMaximum angular velocity

Distance-follow parameters:

ParameterTypeDefault ValueDescription
enable_distance_followbooltrueWhether to enable distance following
target_pose_size_pxfloat320.0 pxDistance-follow target human bbox height
distance_kpfloat0.008Distance PD proportional gain
distance_kdfloat0.003Distance PD derivative gain
max_linear_xfloat0.20 m/sMaximum linear velocity
distance_tolerance_pose_size_pxfloat10.0 pxDistance deadband

Pose detection parameters:

ParameterTypeDefault ValueDescription
pose_detection_confidencefloat0.5MediaPipe pose detection confidence threshold
pose_tracking_confidencefloat0.5MediaPipe pose tracking confidence threshold
lost_frame_thresholdint5Consecutive lost-frame tolerance count

6. Frequently Asked Questions

ProblemCauseSolution
No vertical trackingThe tilt axis is fixed by designAdjust the fixed tilt angle via fixed_pitch_deg
Obvious lagPose 33 landmarks + three-layer control delayReduce the processing_width/processing_height resolution
The body turns too fastangular_kp=0.8 is a high gainReduce angular_kp (e.g., 0.4)
Distance following is not responsivedistance_kp=0.008 is a low gainIncrease distance_kp appropriately
Mediapipe Gesture Follow
AprilTag Machine Code Follow

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