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.Robot CLI Command Tool

Robot CLI Command Tool

1. Course Content

Course Overview

  • This section covers the usage of the Robot CLI (Command Line Interface) command tool. Through the command line interface, users can directly control the robot's Ackermann chassis, 6-DOF robotic arm, vision algorithms, and navigation mapping in the terminal without launching a large graphical interface or relying on AI large models.

  • The CLI command tool directly encapsulates all MCP Tool interfaces of the ackermann_mcp server. It is not only an efficient tool for development, debugging, and unit testing, but also serves as the standard underlying interface directly called by upper-layer applications like OpenClaw.

Learning Objectives

  1. Understand the architectural positioning and application scenarios of the Robot CLI command tool

  2. Master the parameter formats of common CLI commands and control methods for Ackermann chassis/robotic arm

  3. Master the operation process for independently verifying the robot's core functions via command line

Important

This section is designed for the A1Pro Ackermann Robot with 6-DOF Robotic Arm, fully supporting chassis Ackermann kinematics control and robotic arm multi-joint/vision-based grasping control.


2. Prerequisites

Before running any CLI commands, ensure that the robot's backend MCP service is already started:

ros2 launch dofbot_pro_bringup mcp_service.launch.py

image-20260903210437987

The service listens for client connections on http://localhost:8000/mcp by default.


3. CLI Tool Introduction

The Robot CLI control tool is a client program developed based on the Python cyclopts modern command-line framework. The executable is located at: dofbot_pro_ws/src/ackermann_mcp/cli/robot_control

The CLI tool internally connects to the local FastMCP server via fastmcp.Client asynchronously, transparently encapsulating user commands entered in the terminal into MCP JSON-RPC requests and echoing the execution results.

image-20260429154300672


4. CLI Command Control Communication Architecture

image-20261014153216947


5. CLI Command List and Usage Guide

5.1 Command Format Specification

CLI commands follow a standard hierarchical subcommand invocation syntax:

xxxxxxxxxx
robot_control call-tool <command-name> --param1 <value1> --param2 <value2> ...
  • robot_control: Main program name

  • call-tool: Tool invocation subcommand group

  • <command-name>: The specific tool name registered with the MCP server (note the capitalization, e.g., Move, ControlSixArmJoint, SeeWhat)

  • --param <value>: The specific parameter key-value pair

Tip

You can always enter the following command in the terminal to list all tools registered with the current server and their parameter signatures:

xxxxxxxxxx
robot_control list-tools

image-20260903212037788

5.2 Core CLI Commands Summary Table

CategoryTool Name (Command)Common ParametersFunction Description
Chassis MovementMove--distance, --directionMove the specified distance in meters in the specified direction (forward, backward, left, right)
Chassis MovementMoveWithSpeed--linear-x, --angular-z, --durationTravel for the specified duration at the given linear and angular velocities
    
Chassis MovementAdjustChassisFitArmRange--x, --y, --zAutomatically fine-tune the chassis pose so that the spatial target coordinates fall within the optimal grasping reachable range of the robotic arm
Arm ControlInitArmPoseNoneReset the 6-DOF robotic arm to the factory default inspection pose
Arm ControlControlSixArmJoint--arm-joint-1 ~ --arm-joint-6, --runtimeSimultaneously control joints 1-6 to specified angles (0-180 degrees)
Arm ControlControlSingleArmJoint--arm-joint-id, --angle, --runtimeIndividually adjust the specified servo angle (1-6)
Arm ControlGetCurrentArmJointAnglesNoneRead the actual angle values of all 6 joints
Arm ControlGetEndEffectorPoseNoneRead the 6DoF spatial pose of the robotic arm end effector (X, Y, Z, Euler angles)
Smart GraspingGraspArUcoTarget--target-idPerform Ackermann adaptive approach and closed-loop grasping for AprilTag blocks in view
Smart GraspingPick--x1, --y1, --x2, --y2Perform dive-and-grasp based on image target bounding box pixel coordinates
Smart GraspingPlace--place-x, --place-y, --place-zPrecisely place the gripped object to the specified 3D position in the world coordinate system
Smart GraspingGraspWaste / PlaceWaste--waste-nameGrasp/place the specified type of waste object
Vision & PerceptionSeeWhatNoneCapture a frame of the current camera view and save it for display
Vision & PerceptionAdjustCameraView--pitch, --yawAdjust the camera mounting pose (pitch and yaw)
Vision & PerceptionGetBbox--queryInput natural language description to detect and return the target bounding box pixel coordinates
Vision & PerceptionGetPlacePoint--queryInput placement description to detect and return a suitable 3D spatial coordinate point for placement
Vision & PerceptionGetTargetDist--queryBased on the natural language description of object features, calculate the actual 3D physical distance from the target to the robot vehicle (meters)
Vision & PerceptionGetAprilTagIDsNoneDetect and list all visible AprilTag IDs in the current field of view
Vision & PerceptionGetWasteRecognitionResultsNoneGet the waste classification results identified by the YOLO deep learning model in the current field of view
Vision & PerceptionTargetTrack--x1-or-cmd, --y1, --x2, --y2Start/cancel (cancel) target visual servo tracking
Line Following NavigationFollowLine--colorTravel along the colored track on the ground (red, green, blue, yellow)
Line Following NavigationNavigation--locationAutonomously navigate to the target point symbol in the map mapping table
Line Following NavigationRecordMapLocation--name, --symbolRecord the robot's current parking pose and bind it to a map symbol
Line Following NavigationGetMapMappingNoneQuery all recorded locations and symbol mapping dictionary
System InteractionTTS--textControl the onboard speaker to perform text-to-speech synthesis and broadcast

6. Demonstration Examples

Example 1: Chassis Translation Movement

Make the robot move forward 0.5 meters:

xxxxxxxxxx
robot_control call-tool Move --distance 0.5 --direction forward

Make the robot reverse 0.3 meters:

xxxxxxxxxx
robot_control call-tool Move --distance 0.3 --direction backward

image-20260903212251693

Example 2: Robotic Arm Pose Reset and Multi-Joint Control

Reset the robotic arm to the inspection pose with one key:

xxxxxxxxxx
robot_control call-tool InitArmPose

Simultaneously control all 6 joints to working position (base 90 degrees, gripper closed):

xxxxxxxxxx
robot_control call-tool ControlSixArmJoint --arm-joint-1 90 --arm-joint-2 130 --arm-joint-3 20 --arm-joint-4 20 --arm-joint-5 90 --arm-joint-6 0 --runtime 1500

Individually open the gripper (joint 6 opens to 180 degrees):

xxxxxxxxxx
robot_control call-tool ControlSingleArmJoint --arm-joint-id 6 --angle 180 --runtime 1000

Example 3: Environment Capture and AprilTag Label Scanning

Get the current camera first-person view and save it:

xxxxxxxxxx
robot_control call-tool SeeWhat

image-20260903212337955

Detect the AprilTag label numbers present in the current field of view:

xxxxxxxxxx
robot_control call-tool GetAprilTagIDs

Automatically track and grasp the No. 2 AprilTag block on the desk:

xxxxxxxxxx
robot_control call-tool GraspArUcoTarget --target-id 2

Example 4: Natural Language Target Ranging (GetTargetDist) and Visual Positioning

Input natural language description to calculate the real-time spatial physical distance from a specific object in front to the robot vehicle (meters):

xxxxxxxxxx
robot_control call-tool GetTargetDist --query "red block"

Combine with the vision perception model to return the 2D pixel bounding box (bbox) of the object:

xxxxxxxxxx
robot_control call-tool GetBbox --query "red block"

7. Source Code Analysis (robot_control)

Source Code Path: dofbot_pro_ws/src/ackermann_mcp/cli/robot_control

The CLI tool is built on cyclopts and implements interaction with the MCP server through a lightweight asynchronous client:

7.1 Core Service Communication Implementation

xxxxxxxxxx
# robot_control core communication logic
import cyclopts
from fastmcp import Client
from rich.console import Console

# Specify MCP server listening address
CLIENT_SPEC = 'http://localhost:8000/mcp'

app = cyclopts.App(name="ackermann-robot", help="CLI for Ackermann MCP server")
call_tool_app = cyclopts.App(name="call-tool", help="Call a tool on the server")
app.command(call_tool_app)
console = Console()

async def _call_tool(tool_name: str, arguments: dict) -> None:
    # Filter out None-valued empty parameters
    filtered = {
        k: v for k, v in arguments.items()
        if v is not None and (not isinstance(v, list) or len(v) > 0)
    }
    # Establish session connection with FastMCP server and invoke specified tool
    async with Client(CLIENT_SPEC) as client:
        result = await client.call_tool(tool_name, filtered, raise_on_error=False)
        _print_tool_result(result)

7.2 Tool Command Decorator Wrapper

Each subcommand uses type annotations to strictly define the input format. For example, the robotic arm grasping AprilTag block and target ranging tool:

xxxxxxxxxx
# GraspArUcoTarget command wrapper
@call_tool_app.command(name='GraspArUcoTarget')
async def GraspArUcoTarget(
    *,
    target_id: Annotated[int, cyclopts.Parameter(help="ID of the AprilTag to grasp")],
) -> None:
    '''Grasp objects marked with AprilTags using Ackermann-compatible approach motion'''
    await _call_tool('GraspArUcoTarget', {'target_id': target_id})

# GetTargetDist natural language spatial ranging command wrapper
@call_tool_app.command(name='GetTargetDist')
async def GetTargetDist(
    *,
    query: Annotated[str, cyclopts.Parameter(help="Description of the target object's position and visual characteristics in the current view")],
) -> None:
    '''Obtain the distance from the target to the robot vehicle based on object descriptions'''
    await _call_tool('GetTargetDist', {'query': query})

Through this declarative design, the CLI provides both a self-documenting --help system and ensures that the command format sent to the underlying ROS 2 is completely consistent with the format used by large model invocations. The GetTargetDist receives the user's semantic description and links with the server-side vision multimodal localization algorithm and depth camera point cloud to directly calculate the actual spatial straight-line physical distance between the specified natural object and the robot.

OpenClaw Connecting to Robot MCP Service
robot-control plugin tool

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