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

2.OpenClaw Arm Tracking And Grasping

OpenClaw Robotic Arm Tracking And Grasping

OpenClaw Robotic Arm Tracking And Grasping1. Course ContentCourse OverviewLearning Objectives2. Preparation3. Robotic Arm Grasping Target Item Case PracticeStep 1: Issue Grasping CommandStep 2: Visual Initial Screening and Bounding Box VerificationStep 3: Hand-Eye Tracking and Chassis Autonomous ApproachStep 4: Grasping Point Estimation and Debug Image GenerationStep 5: Execute Grasping and Automatic Retreat4. Core Source Code Analysis4.1 pick() — Mobile Grasping Total Scheduling Function4.2 _get_grasp_point() — Dual-Center Adaptive Spatial Positioning Algorithm5. Parameter DebuggingKey Parameter Function Quick Reference Tablegrasp_offset Offset Fine-Tuning Rules (Right-Hand Coordinate System)Coordinate Axis and Physical Direction Memory Mnemonic:Practical Debugging Case Exercise:

1. Course Content

Course Overview

In the field of embodied intelligence, Mobile Manipulation is one of the most classic and practical functions. It requires the robot to have both "legs (mobile chassis)" for displacement and "hands (multi-degree-of-freedom robotic arm)" for precise operation.

If we observe a human reaching for a cup on a table that is far away, the entire process is very natural:

  1. Look at the target: The eyes first lock onto the cup (visual detection and locking).

  2. Approach the target: If the cup is too far for the arm to reach, our feet will actively move forward a couple of steps to the most comfortable grasping distance (chassis coarse alignment).

  3. Reach precisely: The brain calculates how much each joint of the arm should bend, and the palm extends steadily toward the cup (spatial pose estimation and inverse kinematics IK solving).

  4. Grasp securely and step back: After gripping the cup, the body steps back slightly to avoid the arm hitting other items on the table when turning around (automatic safe retreat after grasping).

  • This case uses 4 * 4 * 4 cm matching cubes

Learning Objectives

  1. Master the complete process of commanding the robot to grasp specified objects through OpenClaw dialogue (WebChat or voice).

  2. Understand the "hand-eye coordination" closed-loop control principle of mobile chassis and robotic arm.

  3. Master the tuning methods for key parameters (grasp_offset grasp 3D offset, grasp_distance grasp distance threshold, auto_back_dist safe retreat distance).

  4. Be able to independently diagnose grasping deviation causes through generated verification images (visual bounding box deviation vs depth ranging deviation).


2. Preparation

  • Start core nodes such as odometry, TF transformation, robotic arm assistance, camera node, and MCP service:

ros2 launch dofbot_pro_bringup mcp_service.launch.py
  • If you need voice broadcast replies, you can use the command with launch_openclaw_bridge parameter to start the program:

xxxxxxxxxx
ros2 launch dofbot_pro_bringup mcp_service.launch.py   launch_openclaw_bridge:=true 

image-20260904094627705

  • If you need voice dialogue interaction, you can run the following command (choose one between WebChat web interface and voice wake-up interaction):

xxxxxxxxxx
ros2 run ackermann_mcp asr_detect

image-20260904101250184

After shouting the wake-up word "Hi, yahboom", the indicator light turns on and you can speak the content you want to dialogue:

image-20260904101324762


3. Robotic Arm Grasping Target Item Case Practice

Tip
Instructions can be expressed naturally according to your actual needs. The following are case demonstrations, choose any interaction method. Here we use the web-based WebChat as an example.

Important

  • This tutorial demonstrates grasping a standard 4x4x4 cm wooden cube. This algorithm can also grasp common objects of similar sizes.

  • Since the servo uses angle control, if the gripper grasps too loose or too tight, fine-tuning can be done through the gripper angle in the parameters.

Step 1: Issue Grasping Command

Enter the command in the WebChat interface:

"Grasp the yellow block in front of you"

image-20260904101729606

Step 2: Visual Initial Screening and Bounding Box Verification

After OpenClaw receives the intent, it first calls GetBbox to obtain the outer bounding box coordinates (x1, y1, x2, y2) of the yellow block in the image. The system automatically generates a detection verification image for you to check if the LLM accurately circled the cube. The verification image is saved to:

xxxxxxxxxx
~/MODELS/multi_brains_file/verify_image.png
# If it's the USB camera version, the generated image filename will have a -usb suffix:
# ~/MODELS/multi_brains_file/verify_image-usb.png

image-20260904101652088

Step 3: Hand-Eye Tracking and Chassis Autonomous Approach

  • After confirming the target bounding box, the robot automatically enters tracking mode, and the robotic arm rotates to center the cube.

  • The chassis autonomously moves forward or adjusts lateral position based on the measured target distance, ensuring the yellow block smoothly enters the robotic arm's most comfortable grasping workspace.

Step 4: Grasping Point Estimation and Debug Image Generation

After chassis adjustment is complete, the program triggers the grasping point calculation algorithm to precisely calculate the 3D coordinate point of the object in the robot's coordinate system. The system automatically draws grasping point auxiliary lines in the image and saves it. The image save path is:

xxxxxxxxxx
~/MODELS/multi_brains_file/grasp_point_image.png
# If it's the USB camera version, the generated image will have a -usb suffix, for example:
# ~/MODELS/multi_brains_file/grasp_point_image-usb.png

image-20260904101808289

Image annotation description:

  • Red crosshairs: The actual center point detected by camera point cloud (Actual Center).

  • Blue diamond point: The center point estimated by the algorithm combined with geometric priors (Estimate Center).

  • The line connecting them intuitively reflects the depth compensation amount, greatly improving grasping success rate under complex lighting.

Step 5: Execute Grasping and Automatic Retreat

The robotic arm uses inverse kinematics calculation to extend the gripper steadily toward the yellow block, closes the gripper to clamp the object, then the car chassis automatically backs up a safe distance (auto_back_dist), and the entire grasping action is successfully completed!


4. Core Source Code Analysis

  • Source code file path:

xxxxxxxxxx
~/yahboomcar_ros2_ws/dofbot_pro_ws/src/ackermann_mcp/ackermann_mcp/action_controller.py

In the ActionController control class, the grasping function is mainly completed by the high-level scheduling function pick() and the 3D spatial positioning function _get_grasp_point() working closely together.

4.1 pick() — Mobile Grasping Total Scheduling Function

When OpenClaw understands the grasping intent and obtains the detection box coordinates, it directly calls this function:

xxxxxxxxxx
def pick(self, x1:int, y1:int, x2:int, y2:int) -> list[bool, str]:
    """Main process for grasping specified target object"""
    # Step 1: Start visual target tracking service (lock onto target cube)
    result = self.start_track_client.call(
        StartTrack.Request(x1=x1, y1=y1, x2=x2, y2=y2))
    if not result.success:
        return [False, "Failed to start tracking"]
    
    # Step 2: Adjust chassis and robotic arm posture so target enters comfortable grasping range
    if not self._adjust_grasp_pose():
        return [False, "Failed to adjust grasp pose"]
    
    # Step 3: Precisely calculate 3D spatial grasping point coordinates of target object
    result = self._get_grasp_point()
    if not result[0]:
        return [False, "Failed to get grasp point"]
    
    # Step 4: Inverse kinematics (IK) calculation and execute robotic arm descent, grasping, and clamping actions
    self._grasp(grasp_x=result[1], grasp_y=result[2], grasp_z=result[3],
                grasp_pitch=self.grasp_offset[3])
    
    # Step 5: After grasping is complete, chassis automatically backs away to prevent collision with obstacles
    self.move_by_odom(direction='backward', distance=self.auto_back_dist)
    return [True, "Pick succeeded"]

4.2 _get_grasp_point() — Dual-Center Adaptive Spatial Positioning Algorithm

In actual engineering environments, plastic/acrylic/metal cube surfaces easily cause reflections, or RGB-D depth camera point clouds may have "depth holes (missing)" due to ambient lighting changes. To solve this industry pain point, the system innovatively adopts a dual-center geometric compensation mechanism:

xxxxxxxxxx
def _get_grasp_point(self) -> list:
    """Get 3D spatial coordinates of grasping point (with anti-lighting and depth missing compensation)"""
    # 1. Ensure target center point calculation service is available
    if not self.box_center_client.wait_for_service(timeout_sec=8.0):
        return [False, "get grasp point service not available"]
    
    # 2. Capture current frame and request underlying vision service to extract grasping point
    self.SeeWhat()
    response = self.box_center_client.call(GetBoxCenter.Request())
    if not response.success:
        return [False, response.message]
    
    # 3. Draw grasping point verification image for user and developer debugging
    image = cv2.imread(self.image_path)
    ax, ay = int(response.actual_center[0]), int(response.actual_center[1])
    ex, ey = int(response.estimate_center[0]), int(response.estimate_center[1])
    # Draw actual center (red) and estimated center (blue) connection markers on image
    cv2.imwrite(self.grasp_point_path, image)
    
    # 4. Core strategy: Prioritize using geometric estimated pose, with millimeter-level compensation based on pixel deviation
    if response.estimate_pose is not None:
        offset_x = (ax - ex) / 1000.0  # Convert pixel deviation to meters proportionally
        offset_y = (ay - ey) / 1000.0
        if abs(offset_x) < 0.02: offset_x = 0.0  # Filter out tiny vibrations less than 2cm
        if abs(offset_y) < 0.02: offset_y = 0.0
        # Map horizontal and vertical pixel compensation to robot's 3D coordinate system
        grasp_x = response.actual_pose.position.x + offset_y
        grasp_y = response.actual_pose.position.y + offset_x
        grasp_z = response.actual_pose.position.z
        return [True, grasp_x, grasp_y, grasp_z]
    
    # 5. Fallback mechanism: If no geometric estimation, directly use actual measured pose
    return [True, response.actual_pose.x, response.actual_pose.y, response.actual_pose.z]

5. Parameter Debugging

  • Core parameter configuration file path:

xxxxxxxxxx
~/yahboomcar_ros2_ws/dofbot_pro_ws/src/dofbot_pro_bringup/config/common.yaml
  • Core parameters related to grasping function:

xxxxxxxxxx
mcp_service:
  ros__parameters:
    # Robotic arm and grasping related parameters
    GraspKeepPose: [90, 125, 3, 0, 90, 140]       # Joint angle posture maintained after grasping (final 140 is gripper closure, larger value means tighter grip)
    grasp_distance: [0.265, 0.0, 0.0]        # Desired chassis and target relative distance during grasping [x, y, yaw]
    place_distance: [0.39, 0.0, 0.45, 0.25]   # Placement position and reachable workspace range upper limit
    grasp_offset: [0.015, 0.015, -0.03, 2.0]  # Grasping space fine-tuning offset [x, y, z, grasping pitch angle]
    usb_grasp_offset: [0.00316, -0.00433, 0.0, 1.3963] # USB camera Grasp IK offset [x,y,z,pitch]
    place_offset: [-0.01, 0.00, 0.05, 1.3]   # Placement space fine-tuning offset
    auto_back_dist: 0.13                     # Automatic retreat distance after grasping/placement, unit: meters
    
    # Odometry and motion control parameters
    odom_linear_speed: 0.08                  # Smooth moving linear speed when approaching target (m/s)
    odom_angular_speed: 0.5                  # Steering micro-adjustment angular speed (rad/s)
    target_circle: 10                        # Pixel sampling radius when sampling 3D space points
    enable_auto_back: True                   # Whether to enable automatic retreat after grasping

Key Parameter Function Quick Reference Table

Parameter NameCorresponding Code LocationPopular Function Description
GraspKeepPosePosture reset in _grasp()Posture when robotic arm retracts and locks after gripping object, prevents sagging and hitting ground
grasp_distance[0]Distance judgment in _adjust_grasp_pose()Expected X-axis front-rear base distance from robot chassis to cube (default approximately 0.265 meters)
grasp_offsetCoordinate superposition fine-tuning in _grasp()[x, y, z, pitch] offset compensation, used to correct calibration or assembly errors
auto_back_distGrasping finishing action in pick()Backing distance after successful grasping (default 0.13 meters = 13 cm)
enable_auto_backGlobal retreat master switchIf False, car stops in place without retreating after grasping

grasp_offset Offset Fine-Tuning Rules (Right-Hand Coordinate System)

The robot's 3D spatial calculation strictly follows the robot's right-hand coordinate system:

image-20260904102751245

Coordinate Axis and Physical Direction Memory Mnemonic:

  • X-axis (front-rear direction, thumb points to front of car):

    • If gripper always slips in front of the cube (extends too far) → Decrease X offset (or set to negative).

    • If gripper closes before reaching position (not extended enough) → Increase X offset.

  • Y-axis (left-right direction, index finger points to left side of car body):

    • If gripper always deviates to the right → Need to compensate left, increase Y offset (add positive value).

    • If gripper always deviates to the left → Need to compensate right, decrease Y offset (add negative value).

  • Z-axis (up-down height direction, middle finger points above):

    • If gripper extends down too low causing forceful impact with desktop → Increase Z offset (lift up).

    • If gripper always passes over the cube's top and misses → Decrease Z offset (press down, e.g., -0.03 means pressing down 3 cm).

  • Grasping angle (4th parameter):

    • Controls end effector gripper pitch angle, default 2.0 radians approximately corresponds to downward 115° descent posture, generally keep default.

Practical Debugging Case Exercise:

xxxxxxxxxx
Problem phenomenon: Every time grasping the  yellow block, the gripper always misses by about 1cm on the right side of the cube.
Cause analysis: According to the right-hand coordinate system, the left side of the car body is the positive Y direction, and the right side is the negative direction. Being off by 1cm to the right means the current calculated point deviates toward the negative direction, need to add 0.01m compensation to the left (positive direction).
Adjustment operation: Change the second item of grasp_offset in common.yaml from 0.015 to 0.025.
Restart verification: Run ros2 launch dofbot_pro_bringup mcp_service.launch.py to retest.

Important

  • enable_auto_back (automatic retreat function) is to prevent the car from being too close to the operation table edge when combined with navigation maps, which the lidar would treat as an obstacle blocking navigation. The retreat behavior in subsequent courses' garbage sorting, machine code grasping, and fixed-point placement are all controlled by this parameter.

OpenClaw Target Tracking
OpenClaw Arm Fixed-point Placement

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