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. OpenClaw Natural Interaction + Basic Control

OpenClaw Natural Interaction + Basic Control

OpenClaw Natural Interaction + Basic Control1. Course ContentCourse Overview2. Preparation3. Case Demonstration3.1 Start OpenClaw Interaction3.2 Chassis Movement Control3.3 Chassis In-place Rotation4. Source Code Analysis4.1 move_by_odom()4.2 _odomLinearMove 4.3 _odomRotate 5. Parameter Debugging

1. Course Content

Course Overview

  • Use OpenClaw conversation to implement the basic functions of robot motion control

2. Preparation

xxxxxxxxxx
ros2 launch microros_v2_bringup openclaw_service.launch.py

image-20260724111048244

 

3. Case Demonstration

3.1 Start OpenClaw Interaction

[!TIP]

  • Use any interaction method to have a conversation with OpenClaw. Here we demonstrate using Web Chat
  • You can write the conversation statements according to your own needs. The following is a case demonstration

3.2 Chassis Movement Control

  • Move forward 0.2 m, then translate 0.2 m to the right

image-20260430152927178

3.3 Chassis In-place Rotation

  • Rotate 35 degrees to the right, rotate 40 degrees counterclockwise

image-20260430155400453

4. Source Code Analysis

  • Source Code Path
xxxxxxxxxx
$HOME/microros_ws/src/multi_brains_pre/multi_brains_pre/action_controller.py
xxxxxxxxxx
$HOME/microros_ws/src/microros_v2_bringup/microros_v2_bringup/base_driver.py

4.1 move_by_odom()

Code Description:

move_by_odom() is the chassis movement control entry function encapsulated in action_controller.py. It is responsible for sending a movement goal to the ROS2 Action server and waiting for the execution result.

  1. Function signature: Accepts three parameters — distance (movement distance, meters), angle (rotation angle, degrees), direction (movement direction) — and returns a [bool, str] list representing the execution result and message
  2. Wait for server: Uses wait_for_server() to wait for the MoveByOdom Action server to be ready; returns failure if it times out after 10 seconds
  3. Construct and send goal: Creates a MoveByOdom.Goal() message, fills in the distance, angle, and direction fields, and calls send_goal_async() to send asynchronously
  4. Wait for execution result: First waits for goal confirmation (send_goal_future), then waits for execution completion (result_future), polling at 0.5s intervals
  5. Return result: Determines success or failure based on result.success and returns the corresponding result message
​x
    def move_by_odom(self, distance: float = 0.0, angle: float = 0.0, direction: str = 'forward') -> list[bool, str]:
        ''' Move the chassis by requesting the MoveByOdom action service.
        Supports: forward, backward, turn_left, turn_right.'''
        if not self.move_by_odom_client.wait_for_server(timeout_sec=10.0):
            return [False, "MoveByOdom action server not available"]
        goal = MoveByOdom.Goal()
        goal.distance = float(distance)
        goal.angle = float(angle)
        goal.direction = direction
        send_goal_future = self.move_by_odom_client.send_goal_async(goal)
        while rclpy.ok() and not send_goal_future.done():
            time.sleep(0.5)
​
        if not send_goal_future.done():
            return [False, "Failed to send MoveByOdom goal"]
​
        goal_handle = send_goal_future.result()
        result_future = goal_handle.get_result_async()
        while rclpy.ok() and not result_future.done():
            time.sleep(0.5)
​
        if not result_future.done():
            return [False, "MoveByOdom failed to get result"]
​
        result = result_future.result().result
        if result.success:
            self.get_logger().info(f"MoveByOdom succeeded: {result.message}")
            return [True, result.message]
        else:
            self.get_logger().warn(f"MoveByOdom failed: {result.message}")
            return [False, result.message]

 

4.2 _odomLinearMove

Code Description:

_odomLinearMove() is the linear movement control implementation based on odometry feedback in base_driver.py. It runs as the callback function of the MoveByOdom Action server.

  1. Parameter parsing: Gets the target distance (distance) and direction (direction: forward/backward) from goal_handle.request

  2. Speed planning (Ramp-down): Uses a staged deceleration strategy, gradually reducing the speed when approaching the target to avoid overshoot:

    • Distance > RAMP_THRESHOLD (0.3m): drive at the maximum linear speed odom_linear_speed
    • CLOSE_THRESHOLD (0.1m) < distance ≤ RAMP_THRESHOLD: linear interpolation deceleration
    • Distance ≤ CLOSE_THRESHOLD: creep at the minimum speed min_linear_speed
  3. Odometry feedback: Each loop calculates the moved distance moved = |odom_x - start_x| and reports it in real time via publish_feedback()

  4. Completion check: When moved >= distance - odom_position_tolerance, the target is considered reached, and goal_handle.succeed() is called to return a success result

  5. Exception handling: Supports timeout detection (odom_timeout) and cancel requests (is_cancel_requested), returning the corresponding failure result on exception

  6. Velocity publishing: Determines the sign of the velocity according to direction, and calls _publishCmdVel(vx, 0.0) to publish the linear velocity command (vy=0, differential drive does not support lateral movement)

xxxxxxxxxx
    def _odomLinearMove(self, goal_handle):
        goal = goal_handle.request
        distance = goal.distance
        direction = goal.direction
​
        linear_speed = abs(self.odom_linear_speed)
        start_x = self.odom_x
​
        CLOSE_THRESHOLD = 0.1
        RAMP_THRESHOLD = 0.3
        MIN_SPEED = self.min_linear_speed
​
        start_time = time.time()
        while rclpy.ok():
            # Timeout check
            if time.time() - start_time > self.odom_timeout:
                self.get_logger().warn(f"Linear movement timeout ({self.odom_timeout}s)")
                goal_handle.abort()
                result = MoveByOdom.Result()
                result.success = False
                result.message = f"Movement timeout after {self.odom_timeout}s"
                return result
​
            # Cancel check
            if goal_handle.is_cancel_requested:
                self.get_logger().info("Linear movement cancelled")
                goal_handle.canceled()
                result = MoveByOdom.Result()
                result.success = False
                result.message = "Movement cancelled"
                return result
​
            moved = abs(self.odom_x - start_x)
​
            # Publish feedback
            feedback = MoveByOdom.Feedback()
            feedback.moved_distance = float(moved)
            feedback.rotated_angle = 0.0
            goal_handle.publish_feedback(feedback)
​
            # Check if target distance reached
            if moved >= abs(distance) - self.odom_position_tolerance:
                self.get_logger().info(f"Linear movement complete! Moved {moved:.3f}m")
                goal_handle.succeed()
                result = MoveByOdom.Result()
                result.success = True
                result.message = f"Moved {direction} {moved:.3f}m"
                return result
​
            # Ramp-down: gradual deceleration when approaching target
            distance_to_go = abs(distance) - moved
            if distance_to_go < CLOSE_THRESHOLD:
                ramp_speed = MIN_SPEED
            elif distance_to_go < RAMP_THRESHOLD:
                ramp_speed = MIN_SPEED + (linear_speed - MIN_SPEED) * (
                    (distance_to_go - CLOSE_THRESHOLD) / (RAMP_THRESHOLD - CLOSE_THRESHOLD))
            else:
                ramp_speed = linear_speed
​
            # Map direction to velocity (vy=0 for differential drive)
            if direction == 'forward':
                vx = ramp_speed
            else:  # backward
                vx = -ramp_speed
​
            self._publishCmdVel(vx, 0.0)
            time.sleep(0.1)
​
        # Guard: should not reach here
        goal_handle.abort()
        result = MoveByOdom.Result()
        result.success = False
        result.message = "Unexpected exit from linear control loop"
        return result
​

 

4.3 _odomRotate

Code Description:

_odomRotate() is the in-place rotation control implementation based on odometry feedback in base_driver.py, also running as the callback function of the MoveByOdom Action server.

  1. Direction parsing: Determines the rotation direction sign sign based on direction (turn_left/turn_right) (turn left = +1, turn right = -1); aborts and exits on an unknown direction

  2. Angle conversion: Converts the target angle from degrees to radians target_angle_rad and obtains the current maximum angular speed odom_angular_speed

  3. Staged deceleration strategy: Similar to linear movement, uses a three-stage deceleration:

    • Remaining angle > RAMP_THRESHOLD (0.3rad ≈ 17°): rotate at full speed
    • CLOSE_THRESHOLD (0.1rad ≈ 5.7°) < remaining angle ≤ RAMP_THRESHOLD: linear interpolation deceleration
    • Remaining angle ≤ CLOSE_THRESHOLD: creep at min_angular_speed
  4. Odometry feedback: Each loop calculates the rotated angle rotated = odom_th - start_th and reports it in real time via feedback

  5. Completion check: When |rotated| >= target_angle_rad - odom_angle_tolerance, the target angle is considered reached

  6. Velocity publishing: Calls _publishCmdVel(0.0, angular_cmd) to publish the angular velocity command (vx=0, pure rotation without translation)

xxxxxxxxxx
    def _odomRotate(self, goal_handle):
        goal = goal_handle.request
        angle_deg = goal.angle
        direction = goal.direction
​
        if direction == 'turn_left':
            sign = 1.0
        elif direction == 'turn_right':
            sign = -1.0
        else:
            self.get_logger().error(f"Unknown rotation direction: {direction}")
            goal_handle.abort()
            result = MoveByOdom.Result()
            result.success = False
            result.message = f"Unknown rotation direction: {direction}"
            return result
​
        target_angle_rad = math.radians(abs(angle_deg))
        angular_speed = abs(self.odom_angular_speed)
​
        # Ramp-down thresholds (radians)
        CLOSE_THRESHOLD = 0.1   # ~5.73°
        RAMP_THRESHOLD = 0.3    # ~17.19°
        MIN_SPEED = self.min_angular_speed
​
        start_th = self.odom_th
​
        start_time = time.time()
        while rclpy.ok():
            # Timeout check
            if time.time() - start_time > self.odom_timeout:
                self.get_logger().warn(f"Rotation timeout ({self.odom_timeout}s)")
                goal_handle.abort()
                result = MoveByOdom.Result()
                result.success = False
                result.message = f"Rotation timeout after {self.odom_timeout}s"
                return result
​
            # Cancel check
            if goal_handle.is_cancel_requested:
                self.get_logger().info("Rotation cancelled")
                goal_handle.canceled()
                result = MoveByOdom.Result()
                result.success = False
                result.message = "Rotation cancelled"
                return result
​
            # Compute angle rotated so far from /odom pose
            rotated = self.odom_th - start_th
​
            # Publish feedback
            feedback = MoveByOdom.Feedback()
            feedback.moved_distance = 0.0
            feedback.rotated_angle = float(math.degrees(abs(rotated)))
            goal_handle.publish_feedback(feedback)
​
            # Check if target angle reached
            if abs(rotated) >= target_angle_rad - self.odom_angle_tolerance:
                rotated_deg = math.degrees(abs(rotated))
                self.get_logger().info(f"Rotation complete! Rotated {rotated_deg:.1f}°")
                goal_handle.succeed()
                result = MoveByOdom.Result()
                result.success = True
                result.message = f"Rotated {direction} {abs(angle_deg):.1f}°"
                return result
​
            # Ramp-down: gradual deceleration when approaching target
            angle_to_go = target_angle_rad - abs(rotated)
            if angle_to_go < CLOSE_THRESHOLD:
                ramp_angular = MIN_SPEED
            elif angle_to_go < RAMP_THRESHOLD:
                ramp_angular = MIN_SPEED + (angular_speed - MIN_SPEED) * (
                    (angle_to_go - CLOSE_THRESHOLD) / (RAMP_THRESHOLD - CLOSE_THRESHOLD))
            else:
                ramp_angular = angular_speed
​
            angular_cmd = sign * ramp_angular
            self._publishCmdVel(0.0, angular_cmd)
            time.sleep(0.1)
​
        # Guard: should not reach here
        goal_handle.abort()
        result = MoveByOdom.Result()
        result.success = False
        result.message = "Unexpected exit from rotation control loop"
        return result

 

5. Parameter Debugging

  • Parameter file path
xxxxxxxxxx
$HOME/microros_ws/src/microros_v2_bringup/config/common.yaml

The following describes the parameters related to chassis odometry control in common.yaml:

ParameterDefaultDescription
odom_linear_speed0.1Maximum linear speed (m/s), the target speed for linear movement
odom_angular_speed0.5Maximum angular speed (rad/s), the target angular speed for in-place rotation
odom_position_tolerance0.02Linear movement position tolerance (m); considered complete when the difference between the actual and target distance is less than this value
odom_angle_tolerance0.05Rotation angle tolerance (rad); considered complete when the difference between the actual and target angle is less than this value
odom_timeout30.0Action timeout (s); aborts and returns failure if not completed within this time
min_linear_speed0.03Minimum linear speed (m/s), the creep speed when approaching the target, preventing stagnation caused by too low a speed
min_angular_speed0.2Minimum angular speed (rad/s), the creep angular speed when approaching the target angle

[!TIP]

  • If the robot's movement distance deviates significantly, you can appropriately increase odom_position_tolerance
  • If the robot rotates imprecisely or overshoots, adjust odom_angle_tolerance or reduce odom_angular_speed
  • If the robot moves too slowly, increase odom_linear_speed; conversely, decrease it if oscillation occurs
base_driver:
  ros__parameters:
    odom_linear_speed: 0.15          # Max linear speed (m/s)
    odom_angular_speed: 0.5         # Max angular speed (rad/s)
    odom_position_tolerance: 0.02   # Linear movement position tolerance (m)
    odom_angle_tolerance: 0.05       # Rotation angle tolerance (rad)
    odom_timeout: 30.0              # Action timeout (s)
    min_linear_speed: 0.03          # Unified min linear speed (m/s)
    min_angular_speed: 0.2          # Unified min angular speed (rad/s)
Openclaw Vector Memory
OpenClaw Natural Interaction + Slam Navigation

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