yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
ROSMASTER M3 PRO📖
0.Configuration and Operation Guide
  • 1. Quick start handle to control the car
  • 2. Log in to the car and view the code
  • 3. Robotic Arm Calibration
  • 4. Enter the Docker (Jetson-Nano and Raspberry Pi 5 users, see here)
  • 5. Assembly video
  • 6. Modify the firmware parameters of the car control board
  • 7. Frequently Asked Questions and Precautions
  • 8. Precautions for DIY Robotic Arm
1.Chassis Control Course
  • 1.ROS control
  • 2.Handle control
  • 3.Keyboard control
  • 4.Angular velocity calibration
  • 5.Line velocity calibration
  • 6.Line patrol automatic driving
  • 7.Patrol
2.Lidar Course
  • 1.Lidar introduction and use
  • 2.Dual Lidar fusion
  • 3.Lidar obstacle avoidance
  • 4.Lidar tracking
  • 5.Lidar guard
  • 6.Gmapping-SLAM mapping
  • 7.Cartographer-SLAM mapping
  • 8.slam_toolbox mapping
  • 9.Navigation2 single-point navigation avoid
  • 10.Navigation2 multi-point navigation avoid
  • 11.Repositioning navigation
  • 12.RTAB-Map mapping
  • 13.RTAB-Map navigation
  • 14.APP mapping navigation
  • 15.Machine code handling
  • 16.Color block transport
  • 17.Navigation via Pose-Constrained Visual Relocalizationnew
3.Depth Camera Course
  • 1.Dabai_DCW2 camera introduction
  • 2.Depth pseudo-color image
  • 3.Depth camera distance measurement
  • 4.Wood block volume measurement
  • 5.Mediapipe gesture recognition
  • 6.Edge detection
  • 7.YOLOv8 object detection
  • 8.Deep learning object tracking
  • 9. Transformer Model Tracking Algorithmnew
4.Robotic Arm and 3D Space Gripping Course
  • 1.Robotic arm solution
  • 2.Robotic arm chassis linkage control
  • 3.Machine code ID sorting
  • 4.Sorting height abnormality machine code
  • 5.Tracking and gripping machine code
  • 6.Color block color sorting
  • 7.Sorting height abnormality color block
  • 8.Tracking and gripping color block
  • 9.Wood block shape sorting
  • 10.KCF tracking and gripping objects
  • 11.Medipipe gesture ID sorting machine code
  • 12.Mediapipe gesture height sorting machine code
  • 13.Desktop tracking and gripping machine code
  • 14.3D tracking machine code
  • 15.Line patrol and obstacle removal
5.Road network planning and navigationnew
  • 1. Introduction To Road Network Planning
  • 2. Build A Pose Map
  • 3. Road Network Annotation
  • 4. Planning And Navigation Between Waypoints
  • 5. Road Network Navigation In Any Pose
  • 6. Path Re-planning
6.OpenClaw Basic Coursenew
  • 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
7.OpenClaw Interaction Methodnew
  • 1. OpenClaw Webchat Interaction
  • 2. OpenClaw Tui Interaction
  • 3. OpenClaw Voice Dialogue Interaction
  • 4. OpenClaw WhatsApp Interaction
8.OpenClaw Developmentnew
  • 1. OpenClaw connects to the MCP interface of the robot
  • 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 timed tasks
  • 10. OpenClaw multi-agent intelligent agent
  • 11. OpenClaw active interaction
  • 12. OpenClaw vector memory
9.OpenClaw Embodied intelligent applicationnew
  • 1. OpenClaw target tracking
  • 2. OpenClaw robotic arm tracking and grasping
  • 3. OpenClaw robotic arm fixed-point placement
  • 4. OpenClaw garbage sorting
  • 5. OpenClaw slam mapping and navigation
  • 6. OpenClaw navigation transfer
  • 7. OpenClaw machine code clip
  • 8. OpenClaw color line patrol
  • 9. OpenClaw visual distance measurement
10.OpenClaw scenario sandboxnew
  • 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
  • 01.Register a model service provider account
  • 02. Configuring API-KEY
  • 03. Introduction to Dify
  • 04. Basic Dify Features
  • 05. AI Large Model Development - chatbot
  • 06. Deploy the RAG knowledge base
  • 07. RAG knowledge base + chatbot
  • 08. AI agent workflow
  • 09. Custom wake-up response
  • 10. Core module testing tools
13.AI Large Model (Text Version)
  • 1.Semantic understand instruction following
  • 2.Multimodal visual understand
  • 3.Multimodal visual understand+robotic arm grab
  • 4.Multimodal visual understand+SLAM navigation
  • 5.Robotic arm grab+Multimodal visual understand+SLAM navigation
  • 6.Intention estimation
14.AI Large Model(Voice Version)
  • 1.Semantic understand instruction following
  • 2.Multimodal visual understand
  • 3.Multimodal visual understand+robotic arm grab
  • 4.Multimodal visual understand+SLAM navigation
  • 5.Robotic arm grab+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 robotic arm
  • 13.Gesture grabbing and releasing objects
  • 14.Finger control robotic arm
  • 15.Medipipe gesture control robotic arm action 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.Trajectory planning
  • 8.Collision detection
  • 9.Scene design
17.Multi-vehicle Course
  • 1.Multi-vehicle chassis control
  • 2.Multi-vehicle robotic arm control
  • 3.Multi-vehicle navigation
  • 4.Multi-vehicle formation
18.Control Board Course
  • 1.Development environment setup
  • 2.Control board STM32 basic routine
  • 3.Control board micro_ros basic routine
19.Docker Course
  • 1、Docker overview and docker installation
  • 2、Common commands for docker image containers
  • 3、Docker images deeply understand and publish images
  • 4、Docker hardware interaction and data processing
  • 5、Enter the bot's docker container
  • 6、Robot development environment construction in Docker
20.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
21.Main Control Course
Jetson Nano B01
  • 1. Introduction to the Jetson Nano B01 SUB Board
  • 2. Burn the system image
  • 3. Re-read the memory card or USB drive that has been burned
  • 4. Startup system
  • 5. Jetson Nano B01 System and Desktop Introduction
  • 6. Memory card or USB flash drive expansion
  • 7. Network Configuration
  • 8. SSH remote login & file transfer
  • 9. VNC Remote Login
  • 10. Jetson Nano B01 system backup
  • 11. Jetson Nano Swap space increased
  • 12. Installation and use of Jtop
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
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
Download
  • Mapping_APP(iOS_Android)
  • Robot_Image_System_File
  • Code-Firmware
  • Instruction_Manual
  • VM_File
  • Software_Tools
  • Firmware_DriverFile
  • 3D_Model_File
  • ROS2_Basic_VM
  • Other_Annex
Download ZIP

Welcome to ROSMASTER M3 PRO repository

2. OpenClaw robotic arm tracking and grasping

OpenClaw Robotic Arm Tracking And Grasping

OpenClaw Robotic Arm Tracking And Grasping1. Course ContentLearning Objectives2. Preparation3. Robotic Arm Grasping Target Object Case4. Source Code Analysis① pick() — Grasp Object② _get_grasp_point() — Get Grasp Point Coordinates (Internal Method)5. Parameter Debugging6. FAQ6.1 How to Adjust When the Grasp Position Is Inaccurate and Deviates from the Ideal Grasp Point?6.2 How to Adjust grasp_offset6.3 How to Replace and Test the Vision Model If Positioning Is Inaccurate?

1. Course Content

Learning Objectives

  • Learn to adjust key parameters such as grasp_offset and place_offset to optimize grasping accuracy and stability
  • Develop the ability to analyze the causes of grasping deviations, and diagnose and resolve visual recognition and depth loss issues

2. Preparation

  • Start the MicroROS chassis agent (skip if already started)
sh start_agent.sh

image-20260430182603457

  • Start odometry, tf, robotic arm assistant, camera node and other nodes
xxxxxxxxxx
ros2 launch m3pro_bringup car_base.launch.py
  • Start the MCP service
xxxxxxxxxx
ros2 launch m3pro_bringup mcp_service.launch.py

image-20260430182448153

  • If you need voice reply, you need to additionally start openclaw_bridge, otherwise you can skip
xxxxxxxxxx
ros2 run multi_brains_pre openclaw_bridge

3. Robotic Arm Grasping Target Object Case

[!TIP]

  • You can write commands according to your own needs. The following is a case demonstration. Choose any interaction method. Here we use the web page WebChat as an example.

[!IMPORTANT]

  • The block demonstrated here for grasping is a 4x4x4cm wooden block. Tracking and grasping can pick up any target object. Since the servo has no torque feedback, the grasping closure angle of the gripper needs to be specified through parameters. If the gripper grasps too loosely or too tightly, fine-tuning can be done through parameters.
  • Grasp the orange block in front of you

image-20260429175210006

  • OpenClaw calls GetBbox to obtain the outer bounding box of the target. This interface automatically generates a verification image to verify whether the Dify vision model has selected the correct area. Image path:
xxxxxxxxxx
$HOME/M3Pro_ws/multi_brains_file/verify_image.png

image-20260429191449125

 

  • The figure below shows the tracking process of the grasping target. The robot chassis will first adjust the chassis position to ensure the target is within the grasping range of the robotic arm.

image-20260429175705463

  • After the chassis adjustment is completed, the grasping point will be obtained as shown below. The program will automatically draw the image of the grasping point for debugging and verifying whether the grasping point is accurate. The image path is:
xxxxxxxxxx
$HOME/M3Pro_ws/multi_brains_file/grasp_point_image.png

image-20260429190123543

  • Object grasping process
xxxxxxxxxx
                                                        ┌─────────────┐
                                                        │  Observe    │
                                                        │ Environment │
                                                        └──────┬──────┘
                                                               │
                                                               ▼
                                                        ┌─────────────┐
                                                        │ Get Target  │
                                                        │ Bounding Box│
                                                        └──────┬──────┘
                                                               │
                                                               ▼
                                                        ┌─────────────┐
                                                        │ Track Target│
                                                        └──────┬──────┘
                                                               │
                                                               ▼
                                                        ┌─────────────┐
                                                        │ Adjust      │
                                                        │ Chassis     │
                                                        │ Position    │
                                                        └──────┬──────┘
                                                               │
                                                               ▼
                                                        ┌─────────────┐
                                                        │ Grasp Target│
                                                        └──────┬──────┘
                                                               │
                                                               ▼
                                                        ┌─────────────┐
                                                        │ Check If    │
                                                        │ Target      │
                                                        │ Is Grasped  │
                                                        └─────────────┘
  • Target grasping skills

    • OpenClaw controls the robot to grasp the target object by first reading the robotic arm grasping skills, following the SOP workflow.
    • Robotic arm grasping skill reference: [08-OpenClaw Skills Development]

[!IMPORTANT]

  • In [03-OpenClaw Development][02-OpenClaw Robotic Arm Tracking And Grasping], OpenClaw will first track the target before grasping it.

4. Source Code Analysis

  • Source code path:
xxxxxxxxxx
$HOME/M3Pro_ws/src/multi_brains_pre/multi_brains_pre/action_controller.py

The core functional functions of the grasping program are all defined in the ActionController class. After being registered through the MCP Tool interface, they can be called by OpenClaw. The following is an explanation of each key function's source code.

① pick() — Grasp Object

xxxxxxxxxx
def pick(self, x1:int, y1:int, x2:int, y2:int) -> list[bool, str]:
    """Pick up item"""
    # Step 1: Start target tracking
    result = self.start_track_client.call(
        StartTrack.Request(x1=x1, y1=y1, x2=x2, y2=y2))
    
    # Step 2: Adjust grasping pose
    if not self._adjust_grasp_pose():
        return [False, "Failed to adjust grasp pose"]
    
    # Step 3: Get grasp point
    result = self._get_grasp_point()
    
    # Step 4: Execute grasp
    self._grasp(grasp_x=result[1], grasp_y=result[2], grasp_z=result[3],
                grasp_pitch=self.grasp_offset[3])
    
    # Step 5: Auto backward
    self.move_by_odom(direction='backward', distance=self.auto_back_dist)
    return [True, ""]

Process description:

  1. Start tracking: Based on the target bounding box (x1, y1, x2, y2) detected by vision, call the /start_track service to start Smart Tracker target tracking.
  2. _adjust_grasp_pose(): An internal loop that executes the "align camera → measure object 3D pose → move chassis" process until the target is within grasping range.
  3. _get_grasp_point(): Call /get_box_center to get the pixel coordinates of the grasp point, then combine with the 3D pose service to convert to spatial coordinates. See below for detailed source code and explanation.
  4. _grasp() (internal method): Solve the 6 joint angles through inverse kinematics (IK), publish to the arm6_joints topic to drive the robotic arm, then close the gripper.
  5. Auto backward: After grasping is complete, move backward by the auto_back_dist distance to avoid collisions and entering costmap obstacle areas.

② _get_grasp_point() — Get Grasp Point Coordinates (Internal Method)

xxxxxxxxxx
def _get_grasp_point(self) -> list:
    """获取抓取点的3D空间坐标"""
    # Step 1: Ensure box_center service is available
    if not self.box_center_client.wait_for_service(timeout_sec=8.0):
        return [False, "get grasp point service not available"]
    
    # Step 2: Capture the current frame, get grasp point detection result
    self.SeeWhat()
    response = self.box_center_client.call(GetBoxCenter.Request())
    if not response.success:
        return [False, response.message]
    
    # Step 3: Draw grasp point verification image (for 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 red crosshair (actual) and blue diamond (estimate), connect the two points
    cv2.imwrite(self.grasp_point_path, image)
    
    # Step 4: Prefer estimate_pose, calculate pixel offset compensation to 3D coordinates
    if response.estimate_pose is not None:
        offset_x = (ax - ex) / 1000  # pixel offset → meters
        offset_y = (ay - ey) / 1000
        if offset_x < 0.02: offset_x = 0
        if offset_y < 0.02: offset_y = 0
        grasp_x = response.actual_pose.position.x + offset_y  # image vertical direction
        grasp_y = response.actual_pose.position.y + offset_x  # image horizontal direction
        grasp_z = response.actual_pose.position.z
        return [True, grasp_x, grasp_y, grasp_z]
    
    # Step 5: Fallback to actual_pose
    return [True, response.actual_pose.x, response.actual_pose.y, response.actual_pose.z]

Code explanation:

  • Based on engineering experience, a grasp center estimation algorithm is proposed. When most of the depth data of the target object is missing due to environmental lighting, it can still estimate the 3D coordinates of the grasping target center. Due to space limitations, the theory is not derived; only the program source code is explained.
  1. Dual-center mechanism: The returned result includes actual_center (actual detection center) and estimate_center (algorithm estimated center). The pixel offset between the two is used to compensate for the error in 3D spatial coordinates.
  2. Verification image: Automatically draws a red crosshair (actual) and a blue diamond (estimate) onto grasp_point_image.png for debugging whether the grasp point is accurate.
  3. Priority strategy: estimate_pose takes precedence over actual_pose because it combines visual detection and grasp center point estimation algorithm, resulting in higher accuracy.
  4. Offset compensation: (ax-ex)/1000 approximately converts the pixel coordinate difference into an offset in meters, compensating the grasp coordinates. Here, only the pixel unit is proportionally scaled to the actual unit.

5. Parameter Debugging

  • Parameter file path:
xxxxxxxxxx
$HOME/M3Pro_ws/src/m3pro_bringup/config/common.yaml

The following is the correspondence table between parameters and code:

ParameterCode Usage LocationFunction Description
GraspKeepPose_grasp() → self.GraspKeepPoseJoint angle posture maintained by the robotic arm after grasping
InitArmPoseInitArmPose() → self.init_arm_poseTarget joint angles for restoring the robotic arm to its initial posture
grasp_distance_adjust_grasp_pose() → self.grasp_distance[0]Desired distance between chassis and target during grasping (x direction), used to determine if chassis movement is needed
grasp_offset_grasp() → self.grasp_offset[0]/[1]/[2]/[3]Grasp position offset [x, y, z, grasp angle], used for fine-tuning grasp coordinates
auto_back_distpick(), place() → self.auto_back_distAuto backward distance after grasp/place completion to avoid collisions and entering costmap forbidden zones
target_circleGetPlacePoint() / _get_pick_target_pose() → self.target_circleCircular area sampling radius (pixels) used for calculating 3D pose when obtaining target point coordinates
xxxxxxxxxx
mcp_service:
  ros__parameters:
    #action_controller——Arm
    GraspKeepPose: [90,125,3,0,90,140]         #Robotic arm grasp keep posture, 140 is gripper opening angle, 0-180, larger value means tighter grip
    grasp_distance: [0.265, 0.0, 0.0]          # [x, y, yaw]
    place_distance: [0.39, 0.0,0.45, 0.25]     #Place position and tolerance detection
    grasp_offset: [0.015,0.015,-0.03,2.0]      # Grasp offset x,y,z,grasp angle
    place_offset: [-0.01,0.00,0.05,1.3]        #Place position offset
    auto_back_dist: 0.13                       # Auto backward distance, unit: meters, automatically moves backward a distance after grasping and placing to avoid collisions and entering costmap forbidden zones
    #odom 
    tf_tolerance : 0.5               # TF transform tolerance, unit: seconds
    linear_speed_factor: 0.5         # Linear speed factor
    angular_speed_factor: 0.1        # Angular speed factor
    odom_linear_speed: 0.08
    odom_angular_speed: 0.5
    odom_position_tolerance: 0.005
    odom_angle_tolerance:  0.05
    odom_timeout: 30.0
    target_circle : 10                        # Circular area radius when obtaining target point coordinates, unit: pixels
    #auto back
    enable_auto_back: True          # Whether to enable auto backward function

[!IMPORTANT]

  • The auto backward function after grasping (enable_auto_back) is designed to avoid colliding with map edges when combined with navigation. If you need to disable auto backward, set enable_auto_back to False in the parameter file. The auto backward function in subsequent courses (garbage grasping, machine code grasping, placing) is all controlled by this parameter and will not be repeated in later lessons.

6. FAQ

6.1 How to Adjust When the Grasp Position Is Inaccurate and Deviates from the Ideal Grasp Point?

Check in order:

  • Is the Dify model's bounding box selection of the target object accurate?

    • If inaccurate, replace the vision model in Dify.
  • Is the grasp point obtained before grasping accurate?

    • If the grasp point deviates too far from the object center, it means the depth camera is heavily affected by ambient lighting and the target object has no depth data at all. The grasp center estimation algorithm cannot estimate the 3D position of the target grasp point. Change the ambient lighting.
  • If the grasp point is accurate (e.g., the grasp point is at the center of the grasped object in the image below) but there is a slight offset during grasping, it may be caused by mechanical error of the robotic arm. Refer to Section 5.2 Grasp Parameter Analysis and adjust grasp_offset. The offset follows the robot's right-hand coordinate system. Increase or decrease the grasp offset appropriately.

image-20260429192005662

6.2 How to Adjust grasp_offset

Parameter description of grasp_offset:

The grasp_offset parameter format is [x offset, y offset, z offset, grasp angle], with a default value of [0.015, 0.015, -0.03, 2.0].

Adjustment principles:

  1. X-axis offset (forward/backward direction)

    • Positive value: grasp point forward (away from the robot body)
    • Negative value: grasp point backward (toward the robot body)
  2. Y-axis offset (left/right direction)

    • Positive value: grasp point to the left (left side in the robot's forward direction)
    • Negative value: grasp point to the right (right side in the robot's forward direction)
  3. Z-axis offset (up/down direction)

    • Positive value: grasp point upward
    • Negative value: grasp point downward
    • Adjustment scenario: used when grasping too high or too low, often to compensate for the height difference between the gripper and the object surface
  4. Grasp angle (gripper rotation angle)

    • Unit: radian (rad)
    • Adjustment scenario: adjust when needing to grasp the object from a specific angle; not recommended to change

Adjustment steps:

  1. Perform a grasping operation and record the deviation direction between the actual grasp position and the ideal position.
  2. Determine the direction and sign to adjust based on the right-hand coordinate system principle.
  3. Modify the corresponding offset parameter in common.yaml. The change takes effect immediately after saving.
  4. Restart the MCP service to apply the parameters: ros2 launch m3pro_bringup mcp_service.launch.py

Example scenario:

xxxxxxxxxx
Scenario: When grasping the orange block, the robotic arm always deviates about 1cm to the right
Analysis: Deviation to the right in the Y-axis direction, needs compensation in the positive direction (left)
Adjustment: Change the y value of grasp_offset from 0.015 to 0.025
Verification: Re-test grasping and observe if it improves
  • Right-hand coordinate system

image-20260429192249040

  • Chassis coordinate system direction

image-20260429192455630

6.3 How to Replace and Test the Vision Model If Positioning Is Inaccurate?

  • Enter the robot's IP in the browser to access the Dify management page

    • Username: yahboom@163.com
    • Password: yahboom123
  • Find the Robot Vision application

image-20260603121616710

  • Bounding Box Detection and Placement Positioning are the visual positioning models:
  • Bounding Box Detection is used for bounding box positioning based on natural language descriptions, used in visual grasping and tracking tasks to locate the initial bounding box of the target in the image.

image-20260603121631448

  • Example: Red block on the table

    • The green box below is the visualization result of the object's bounding box coordinates given by the vision model based on the natural language description.

image-20260603121831433

  • Placement Positioning is used for target point positioning based on natural language descriptions, commonly used in robotic arm placement tasks to find the target position to place.

  • Example: Between the red block and the blue block

    • The green box below is the visualization result of the target point given by the vision model based on the natural language description.

image-20260603122223563

  • You can use the CLI tool in the terminal to test whether the current model selected in Dify has accurate visual positioning. verify_image is the path to the visual verification image.

image-20260603122645729

  • If the visual positioning of the currently used model is inaccurate, you can replace the vision model.

image-20260603122930584

  • Click the corresponding card — scroll down and select an available vision model from the model list (vision models will have a VISION tag) — finally click Publish to save the changes.

image-20260603140539851

[!TIP]

  • Recommended vision models: QwenVL-Max series, Kimi-k2.5 series, etc.
OpenClaw target tracking
OpenClaw robotic 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/中文