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

17.Color Block Transport

🎨 Visual Color Recognition and Composite Transport (Color Transport)

1. Course Content

  • Master the high-level composite transport full process integrating Nav2 autonomous navigation, mouse ROI dynamic box selection and HSV space adaptive extraction, robotic arm real joint angle synchronization and forward kinematics solving, Ackermann chassis dedicated smooth approach control, and six-degree-of-freedom robotic arm spatial inverse kinematics grasping.

  • Master the dynamic mouse box selection adaptive recognition mechanism for arbitrary color materials under complex lighting conditions and the gripper servo 5 adaptive parallel offset angle alignment algorithm.

  • Master the full closed-loop control process from starting point autonomous cruising to operation area, target color block box selection recognition, Ackermann chassis smooth approach alignment, spatial inverse kinematics grasping, autonomous navigation to unloading point placement, and autonomous return to origin.

  • USB camera version only supports gripping 4 * 4 * 4 wooden blocks


2. System Architecture and Workflow

This system consists of four major modules: chassis navigation, robotic arm real state synchronization and kinematics inverse solving, HSV dynamic color picking visual solving, and Ackermann smooth approach control:

  1. Navigate to Grasping Operation Area: The robot drives to the target color block area through Nav2 autonomous obstacle avoidance; after arrival, the buzzer beeps as a readiness prompt;

  2. Dynamic ROI Box Selection Color Picking and Pose Synchronization: Press the c key in the OpenCV image window, directly box-select the target color block area with the mouse. The system automatically calculates HSV thresholds, and calls the service to obtain the robotic arm's current real joint angles, solving the real end-effector pose through forward kinematics (FK);

  3. Ackermann Chassis Dedicated Smooth Approach: Using pinhole imaging depth inverse solving and first-order low-pass filtering, through the specially designed Ackermann chassis linear and angular velocity coordinated controller, smoothly adjusts chassis heading and distance, approaching to the optimal grasping distance (~205mm);

  4. Spatial Inverse Kinematics Grasping: After alignment and after 3 consecutive stable frames, the system automatically calculates servo 5 adaptive parallel offset angle and publishes the 3D spatial coordinates; the grasp_transport node executes robotic arm inverse kinematics grasping and vertically lifts and retracts to driving posture;

  5. Autonomous Transport, Unloading, and Return: Specify the unloading point in RViz; after the robot autonomously navigates and arrives at the destination, the robotic arm lowers the gripper to place the color block; subsequently, automatically plans a route back to the starting origin.


3. Preparation and Running

This case requires opening 7 terminals in sequence to start each functional node:

3.1 Start Chassis and Lidar

Run in Terminal 1 (start A1 Pro chassis driver and lidar driver):

ros2 launch yahboomcar_nav laser_bringup_launch.py

image-20260901181202306

3.2 Start Robotic Arm and Camera Driver

Run in Terminal 2 (start DOFBOT Pro six-degree-of-freedom robotic arm underlying driver, forward/inverse kinematics solving service, and camera):

xxxxxxxxxx
ros2 launch dofbot_pro_driver camera_arm.launch.py

image-20260901181218715

3.3 Start RViz Navigation Visualization

Run in Terminal 3 (it is recommended to open RViz on the virtual machine if the VM and robot are on the same LAN):

xxxxxxxxxx
ros2 launch yahboomcar_nav display_nav_launch.py

image-20260901181232393

3.4 Start Nav2 Autonomous Navigation Stack

Run in Terminal 4 (start TEB local planner and global path planner):

xxxxxxxxxx
ros2 launch yahboomcar_nav navigation_teb_launch.py

image-20260901181245657

Important
Initial Pose Alignment: Click the 2D Pose Estimate tool in the top toolbar of RViz2, click at the actual robot position on the map and drag the green arrow along the actual chassis heading direction and release, making the laser point cloud completely attach to the black obstacles on the map (this position will be automatically recorded by the system as the return origin).


3.5 Start Robotic Arm Grasping Execution Node

Run in Terminal 5 (load spatial inverse kinematics and grasping/unloading action sequence):

​x
# Depth camera version (Nuwa)
ros2 run dofbot_pro_driver grasp_transport

# Or USB camera version
ros2 run dofbot_pro_usb grasp_transport

image-20260901181300716

3.6 Start Navigation Status Listener and Scheduling Node

Run in Terminal 6 (monitor arrival status, origin recording, and one-key return control):

xxxxxxxxxx
ros2 run yahboomcar_nav get_nav2_status_V2

image-20260901185121945

3.7 Start Color Recognition and Transport Master Control Node

Run in Terminal 7 (dynamic ROI box selection color picking, pose synchronization, Ackermann approach, and 3D spatial solving):

xxxxxxxxxx
# Depth camera version (Nuwa)
ros2 run dofbot_pro_driver color_transport

# Or USB camera version
ros2 run dofbot_pro_usb color_transport

image-20260901181429456


4. Operation Flow and Dynamic ROI Box Selection Interaction Description

  1. Initial Origin Calibration: Complete initial pose alignment in RViz using 2D Pose Estimate, and get_nav2_status_V2 will automatically record this point as the return baseline origin;

  2. Dynamic Mouse Box Selection Target Color (ROI Sampling): Place the target color block below the robotic arm camera field of view, and operate in the activated frame image window popup by OpenCV:

    • Press keyboard key c / C: Reset current working state and activate ROI sampling mode; terminal outputs Drag a box around the target color in the image window;

    • Mouse left button drag box selection: In the image window, hold the left mouse button and box-select the color area of the target color block, then release;

    • Adaptive Recognition and Automatic Approach: The system automatically extracts HSV upper and lower limits of that area and switches to tracking state, while automatically triggering robotic arm actual pose synchronization and Ackermann chassis smooth approach;

  3. Ackermann Chassis Approach and Adaptive Grasping:

    • The chassis autonomously fine-tunes body and yaw angle based on color block center and depth error, smoothly moving to the target grasping distance (~205mm);

    • After 3 consecutive stable frames of distance measurement, the system automatically calculates servo 5 adaptive offset angle through compute_joint5, making the gripper opening direction parallel to the color block placement edge;

    • The robotic arm calls spatial inverse kinematics to descend and grasp the wooden block and vertically lifts and retracts to driving posture;

  4. Autonomous Navigation Transport and Unloading:

    • After grasping the specified target, the robot autonomously navigates to the destination;

    • After arriving at the destination, the robotic arm automatically lowers the gripper to place the color block;

    • After unloading is complete, the robot automatically returns to the initial starting origin.

Note

When you need to end the program, press Ctrl+C in each terminal window to stop the program.


5. Core Source Code and Key Implementation Mechanism Analysis

5.1 Dynamic HSV Color Picking and Robotic Arm Pose Truth Synchronization (color_transport.py)

Source Code Path:

xxxxxxxxxx
$HOME/yahboomcar_ros2_ws/dofbot_pro_ws/src/dofbot_pro_usb/dofbot_pro_usb/color_transport.py

1. Mouse ROI Dynamic Color Picking and State Machine Flow

Abandoning hard-coded HSV files that are easily affected by lighting interference, pure dynamic real-time sampling is adopted:

xxxxxxxxxx
def process(self, rgb_img, key):
    # Press c key to activate new ROI sampling mode
    if key in (ord('c'), ord('C')):
        self.Reset()
        self.sampling_active = True
        self.Track_state = 'init'

    # Mouse drag box selection and HSV automatic calculation
    if self.Track_state == 'init':
        cv2.setMouseCallback(self.windows_name, self.onMouse, 0)
        if self.select_flags and len(self.Roi_init) == 4:
            cv2.rectangle(rgb_img, (self.Roi_init[0], self.Roi_init[1]), (self.Roi_init[2], self.Roi_init[3]), (0, 255, 0), 2)
    elif self.Track_state == 'roi_ready':
        rgb_img, self.hsv_range = self.color.Roi_hsv(rgb_img, self.Roi_init)
        self.sampling_active = False
        self.Track_state = 'track'
        self._begin_approach() # Start pose synchronization and approach process

    # Color contour and minimum external rotating rectangle extraction
    if self.Track_state == 'track' and len(self.hsv_range) != 0:
        (rgb_img, binary, center, self.max_box, self.corners) = detect_color_rectangle(rgb_img, self.hsv_range)
        self.cx, self.cy = center

    return rgb_img, binary

2. Robotic Arm Physical Truth Synchronization and Hand-Eye Transformation Solving

Before chassis approach, obtain the actual physical feedback angles of each robotic arm servo through service, and call the forward kinematics service to solve the end-effector's actual spatial pose, completely eliminating startup deviation:

xxxxxxxxxx
def _begin_approach(self):
    # 1. Asynchronously request robotic arm's current real joint angles
    future = self.actual_arm_client.call_async(ArmPosition.Request())
    future.add_done_callback(self._on_actual_joints_response)

def _on_actual_joints_response(self, future):
    response = future.result()
    actual_joints = [float(v) for v in response.result_joints]

    # 2. Call forward kinematics (FK) to solve end-effector real spatial pose
    request = ArmKinemarics.Request()
    request.cur_joint1, request.cur_joint2, request.cur_joint3, request.cur_joint4, request.cur_joint5 = actual_joints[:5]
    request.kin_name = 'fk'
    fk_future = self.client.call_async(request)
    fk_future.add_done_callback(self._on_approach_fk_response)

def _on_approach_fk_response(self, future):
    response = future.result()
    # Save real end-effector pose, as subsequent hand-eye calibration conversion reference
    self.CurEndPos = [response.x, response.y, response.z, response.roll, response.pitch, response.yaw]
    self.approach_pose_ready = True

5.2 Ackermann Chassis Dedicated Smooth Approach Control

Specially designed approach algorithm for Ackermann vehicles (front-wheel angle strongly coupled with forward linear velocity, cannot spin in place):

xxxxxxxxxx
def move_robot(self, current_dist, target_forward, target_lateral):
    """Ackermann chassis smooth approach control"""
    # 1. Distance error PID calculates linear velocity
    distance_error = current_dist - TARGET_DIST_MM
    linear_x = self.linearx_pid.compute(current_dist, TARGET_DIST_MM)
    if distance_error > 0.0:
        linear_x = min(APPROACH_MAX_LINEAR, max(APPROACH_MIN_LINEAR, linear_x)) # [0.025, 0.08] m/s
    else:
        linear_x = max(-APPROACH_MAX_REVERSE, min(-APPROACH_MIN_LINEAR, linear_x)) # Limit reverse

    # 2. Heading deviation ratio control angular velocity (Kp = 0.8)
    heading_error = math.atan2(target_lateral, max(target_forward, 1e-3))
    angular_z = max(-APPROACH_MAX_ANGULAR, min(APPROACH_MAX_ANGULAR, APPROACH_HEADING_KP * heading_error))

    # 3. Large turn angle deceleration collaboration (ensure front-wheel turning arc smooth convergence)
    heading_scale = max(0.35, math.cos(min(abs(heading_error), math.pi / 2.0)))
    linear_x *= heading_scale
    self.pubVel(linear_x, 0.0, angular_z)
  • First-order Low-pass Distance Filtering: self.filtered_dist_mm = 0.35 * raw_dist + 0.65 * self.filtered_dist_mm, effectively eliminating monocular distance single-frame jumping;

  • Stable Window Criterion: When within tolerance range ($| \text{dist_error} | \le 10.0\text{ mm}$) and consecutively maintained for APPROACH_STABLE_FRAMES = 3 frames, stop and trigger robotic arm grasping.


5.3 Monocular Depth Inverse Solving and Servo 5 Adaptive Offset Angle

xxxxxxxxxx
def compute_depth_from_contour(self, box, fx, fy):
    p0, p1, p2, p3 = box.astype(np.float32)
    width_px = 0.5 * (np.linalg.norm(p1 - p0) + np.linalg.norm(p2 - p3))
    height_px = 0.5 * (np.linalg.norm(p2 - p1) + np.linalg.norm(p3 - p0))

    # Pinhole imaging model inverse solving depth Z
    z_from_w = fx * self.object_size / width_px
    z_from_h = fy * self.object_size / height_px
    depth_raw = 0.5 * (z_from_w + z_from_h)
    return float(depth_raw * self.depth_scale + self.depth_bias)

# Calculate servo 5 adaptive offset angle (make gripper opening parallel to color block edge)
vx = int(self.corners[0][0][0]) - int(self.corners[1][0][0])
vy = int(self.corners[0][0][1]) - int(self.corners[1][0][1])
target_joint5 = compute_joint5(vx, vy)

5.4 Robotic Arm Spatial Inverse Kinematics Grasping and Action Execution (grasp_transport.py)

Source Code Path:

xxxxxxxxxx
$HOME/yahboomcar_ros2_ws/dofbot_pro_ws/src/dofbot_pro_usb/dofbot_pro_usb/grasp_transport.py
  • Inverse Kinematics Solving: Receives spatial coordinates (x, y, z) and servo 5 angle from color_transport, calls get_kinemarics inverse solving service to calculate the 6 joint target pulses;

  • Step-by-Step Safe Grasping and Unloading Actions:

    1. Open gripper, robotic arm moves to safe transition point above the color block;

    2. Vertically smoothly descends to the wooden block grasping height, closes gripper to clamp the color block;

    3. Vertically lifts and retracts to safe driving posture, publishes /grasp_done signal;

    4. After arriving at target unloading area, lowers gripper to smoothly place the material, then triggers the robot to automatically return to the origin.


6. Core Parameter Description

Parameter ModuleParameter NameCurrent Config ValueCore Function and Physical Meaning
Material Specificationobject_size0.04Standard physical side length of the color wooden block to be grasped (meters, i.e., 4cm)
Approach DistanceTARGET_DIST_MM205.0Robotic arm optimal grasping longitudinal benchmark working distance (millimeters)
Approach ToleranceDIST_THRESHOLD_MM10.0Allowable dead zone tolerance for chassis approach arrival (millimeters)
Approach Linear VelocityAPPROACH_MIN/MAX_LINEAR0.025 / 0.08Ackermann chassis forward fine-tuning linear velocity range (m/s)
Approach Reverse Speed LimitAPPROACH_MAX_REVERSE0.04Maximum allowable reverse fine-tuning linear velocity for chassis (m/s)
Heading Angle ControlAPPROACH_HEADING_KP0.8Approach yaw angle ratio adjustment gain
Approach Angular VelocityAPPROACH_MAX_ANGULAR0.25Ackermann chassis turning maximum angular velocity (rad/s)
Distance FilteringAPPROACH_FILTER_ALPHA0.35Distance first-order low-pass filter coefficient (suppress monocular distance jitter)
Stable Frame CountAPPROACH_STABLE_FRAMES3Consecutive stable frame threshold required for arrival judgement
Offset Calibrationx/y/z_offsetDynamically loadedSpatial micro-adjustment compensation of gripper and material grasping geometric center (YAML configuration)
AprilTag Transport
USB Camera Introduction

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