VnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
VnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam
VnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
  1. Trang chủ
  2. Blog
  3. CoorDex: Train Unitree G1 Vừa Đi Vừa Gắp Đồ Dexterous
wholebody-vlaunitree-g1dexterous-manipulationlocomotionlatent-priorwhole-body-controlisaac-labsim2realreinforcement-learning

CoorDex: Train Unitree G1 Vừa Đi Vừa Gắp Đồ Dexterous

CoorDex dùng body và hand latent priors để dạy Unitree G1 thực hiện walk-grasp-carry liên tục không dừng, với code open-source từ UNC Chapel Hill.

Nguyễn Anh Tuấn17 tháng 8, 202616 phút đọc
CoorDex: Train Unitree G1 Vừa Đi Vừa Gắp Đồ Dexterous

CoorDex: Hướng Dẫn Train Unitree G1 Vừa Đi Vừa Gắp Đồ Dexterous bằng Body và Hand Latent Priors

Có một vấn đề cơ bản mà các nhà nghiên cứu robot gặp phải suốt nhiều năm: robot humanoid giỏi đi bộ hoặc giỏi gắp đồ, nhưng hiếm khi làm được cả hai cùng một lúc. Hầu hết hệ thống đều theo mô hình "dừng lại rồi thao tác" — robot đi đến gần mục tiêu, dừng hẳn, thực hiện thao tác, rồi mới đi tiếp. Đây là nút thắt lớn trong ứng dụng thực tế.

CoorDex (arXiv 2606.23680) từ UNC Chapel Hill và UC Berkeley giải quyết vấn đề này theo một hướng tiếp cận thú vị: thay vì học trực tiếp trong không gian khớp 29 chiều thân người cộng thêm 20 ngón tay, framework này nén điều khiển thân người và tay dexterous vào các latent space nhỏ gọn, rồi học cách phối hợp chúng thông qua một residual policy chung.

Kết quả: Unitree G1 có thể vừa bước đi, vừa với tay gắp chai nước đang di chuyển, vừa mang đi — liên tục không dừng. Đây là lần đầu tiên điều này được chứng minh trên phần cứng thực với tay dexterous 7-DoF trong điều kiện liên tục loco-manipulation.

Tại Sao Bài Toán Này Khó Đến Vậy?

Hãy tưởng tượng bạn đang đi bộ và muốn nhặt một vật từ mặt bàn. Não bạn phối hợp một cách cực kỳ phức tạp: chân giữ thăng bằng và tạo bước đi, hông điều chỉnh trọng tâm, vai và cánh tay tiếp cận vật, ngón tay căn chỉnh chính xác để nắm đúng. Tất cả diễn ra đồng thời và liên tục.

Với robot, thách thức nhân lên gấp bội:

  1. Không gian hành động cực lớn — Unitree G1 có 29 khớp thân người có actuator, cộng thêm 12-20 khớp ngón tay. Tổng cộng 41-49 chiều hành động. Học RL trực tiếp trong không gian này cực kỳ khó hội tụ vì không gian khám phá quá rộng.

  2. Thang thời gian khác nhau — Locomotion cần điều chỉnh theo chu kỳ bước khoảng 0.5-1 giây, trong khi manipulation ngón tay cần phản hồi nhanh hơn nhiều để xử lý lực tiếp xúc.

  3. Phụ thuộc cơ học chéo — Mỗi bước chân tạo ra nhiễu động lên toàn thân, ảnh hưởng trực tiếp đến vị trí cổ tay và ngón tay. Kiểm soát ngón tay trong khi đang bước phải bù lại dao động này theo thời gian thực.

  4. Reward thưa thớt — Khi nào thì coi là "gắp thành công trong khi đi bộ"? Nếu robot đứng lại để gắp thì không tính. Reward design cho bài toán liên tục này rất không tầm thường.

Các cách tiếp cận trước đó — học trực tiếp toàn bộ khớp bằng PPO, hoặc tách rời locomotion và manipulation thành hai module riêng — đều thất bại hoàn toàn trong ablation study của paper này.

Kiến Trúc CoorDex: Ba Giai Đoạn Độc Lập

Kiến trúc pipeline CoorDex — Body Prior, Hand Prior, và Coordinated Residual Policy
Kiến trúc pipeline CoorDex — Body Prior, Hand Prior, và Coordinated Residual Policy
Toàn bộ pipeline CoorDex: (1) Train motion-tracking teachers với privileged critic, (2) Distill thành latent priors qua VAE, (3) Học coordinated residual policy bằng PPO — nguồn: arXiv 2606.23680

CoorDex xây dựng qua 3 giai đoạn tuần tự, mỗi giai đoạn giải quyết một mức độ phức tạp khác nhau:

Giai Đoạn 1: Privileged Motion-Tracking Teachers

Body Teacher học locomotion và reaching từ reference motions:

  • Input: proprioception của thân (joint positions/velocities, base angular velocity, 5-frame history) + reference goals
  • Output: 29 target joint positions không bao gồm ngón tay
  • Training: RL với reward theo dõi reference motion + domain randomization như ma sát và perturbation trọng tâm COM
  • Điểm đặc biệt: sử dụng privileged critic — critic thấy thêm reference motion errors mà actor không thấy, giúp value function chính xác hơn trong khi policy vẫn robust

Hand Teacher học dexterous grasping trong môi trường floating-hand tách biệt:

  • Dataset: ManipTrans-style retargeted hand-object motions được tạo từ MANO keypoints người thật
  • Trick quan trọng: Wrist-stabilized configuration — wrist pose được viết trực tiếp vào simulator từ reference data, hand teacher chỉ cần học điều khiển ngón tay
  • Lý do của trick này: Nếu hand teacher phải học cả wrist motion, 12-dimensional latent space sẽ bị "tốn chỗ" cho 6D wrist kinematics thay vì tập trung vào finger dexterity — đây là insight thiết kế quan trọng của paper

Khuyến nghị công cụ

Stack train/deploy cho VLA

Train trên cloud/workstation, deploy bản tối ưu xuống Jetson hoặc robot computer.

Cloud GPU for VLA / policy training Dùng cho imitation learning, diffusion policy, RL và fine-tuning model robotics. Xem cloud GPU → NVIDIA Jetson Orin NX / Orin Nano Máy deploy edge cho perception, logging và inference đã tối ưu. Xem Jetson → Hugging Face / robotics dataset hosting Lưu dataset, checkpoint và model card để workflow LeRobot/VLA dễ chia sẻ hơn. Xem platform →

Giai Đoạn 2: VAE Latent Prior Distillation

Mỗi teacher được chưng cất thành một proprioception-conditioned latent prior thông qua Variational Autoencoder:

Encoder:  full_observation + reference_goals → phân phối latent q(z|obs, goal)
Prior:    proprioception_only → phân phối latent p(z|proprio)  ← dùng lúc deploy
Decoder:  proprioception + z → joint actions  ← FROZEN sau khi train xong
  • Body latent space: 16 chiều → decode ra 29 body joint targets
  • Hand latent space: 12 chiều → decode ra 12 finger targets (Dex3-1 real) hoặc 20 targets (WUJI sim)

Tại sao VAE thay vì behavioral cloning đơn thuần? VAE tạo ra smooth, structured latent space — các điểm gần nhau trong latent space tương ứng với hành động gần nhau trong joint space. Điều này cực kỳ quan trọng vì residual policy ở giai đoạn 3 sẽ học cách dịch chuyển trong latent space một cách có ý nghĩa.

Tổng số chiều hành động sau khi qua latent interface: 16 (body) + 12 (hand) = 28 chiều, thay vì 41-49 chiều trong joint space gốc. Nhưng quan trọng hơn là cấu trúc của không gian này.

Giai Đoạn 3: Coordinated Latent Residual Policy (PPO)

Đây là "bộ não phối hợp" — một policy học cách điều chỉnh nhỏ (chứ không phải thay thế) cả hai prior cùng lúc thông qua một shared context:

Input:  [proprioception, task_state, object_geometry,
         contact_features, μ^b,p (body prior mean), μ^h,p (hand prior mean)]
                         ↓
        Shared Coordination Trunk (MLP [512, 256])
                         ↓
            ┌────────────────────────┐
            ↓                        ↓
       Body Residual Head        Hand Residual Head
           (Δz^b)                    (Δz^h)
            ↓                        ↓
  z̃^b = μ^b,p + Δz^b      z̃^h = μ^h,p + Δz^h
            ↓                        ↓
      Body Decoder             Hand Decoder (FROZEN)
            ↓                        ↓
      Body joint targets       Finger joint targets

Công thức cốt lõi: z̃ = μ_prior + Δz_residual

Khi residual Δz nhỏ, prior hoạt động như được train từ đầu — locomotion pattern tự nhiên được giữ nguyên. Policy chỉ đẩy residual lớn khi cần thiết, ví dụ khi phải tinh chỉnh vị trí cổ tay để tiếp cận vật, hoặc điều chỉnh lực ngón tay khi tiếp xúc.

Điều này giống như bạn là pianist chuyên nghiệp: kỹ thuật cơ bản đã nằm trong muscle memory (latent prior), bạn chỉ cần tập trung vào những điều chỉnh nhỏ cho bài cụ thể (residual).

Hardware và Môi Trường Simulation

Unitree G1:

  • Chiều cao: khoảng 127 cm, nặng khoảng 35 kg
  • 29 khớp thân người có actuator
  • Tay thực tế: Dex3-1 (7-DoF từ Inspire Robots)
  • Tay trong simulation: WUJI (20-DoF, 5 ngón với 4 khớp mỗi ngón)
  • Tổng latent dimensions: 16 body + 12 hand = 28

Isaac Lab (GPU-accelerated physics simulation):

  • 4.096 môi trường song song chạy trên RTX 4090
  • Tốc độ: 1 giây simulation tương đương khoảng 27 phút kinh nghiệm thực tế
  • Physics engine: NVIDIA PhysX 5

Ba task được train và kiểm thử:

Task Mô tả Thách thức chính
WalkGrab Đi tới, gắp chai nước trong khi đang bước Tiếp cận động học và giữ thăng bằng đồng thời
OpenFridge Mở cửa tủ lạnh trong khi bước lùi Lực kéo cộng với giữ thăng bằng khi đi lùi
WalkPickTurn Nhặt hộp, quay 180°, giữ vật trong tay Thay đổi hướng trong khi không đánh rơi vật

Cài Đặt: Từng Bước Chi Tiết

Yêu Cầu Phần Cứng Tối Thiểu

GPU: NVIDIA RTX 4090 (24 GB VRAM) — tối thiểu để train
     NVIDIA A100 80 GB — khuyến nghị để train nhanh hơn
RAM: 32 GB trở lên
Hệ điều hành: Ubuntu 20.04 hoặc 22.04
CUDA: 12.x

Cài Đặt Isaac Lab và Môi Trường

# Bước 1: Clone repo CoorDex
git clone https://github.com/Skevinci/CoorDex
cd CoorDex

# Bước 2: Cài NVIDIA Isaac Sim (theo hướng dẫn chính thức)
# Xem: https://isaac-sim.github.io/IsaacLab/
# Yêu cầu: NVIDIA Isaac Sim 4.x hoặc mới hơn

# Bước 3: Tạo conda environment
conda create -n coordex python=3.10
conda activate coordex

# Bước 4: Cài Python dependencies
pip install -r requirements.txt

# Bước 5: Cài Isaac Lab extensions
python -m pip install -e source/extensions/omni.isaac.lab
python -m pip install -e source/extensions/omni.isaac.lab_tasks

# Bước 6: Kiểm tra cài đặt
python scripts/check_env.py

Cấu Trúc Thư Mục Repo

CoorDex/
├── envs/                    # Isaac Lab task environments
│   ├── walk_grab.py         # WalkGrab environment definition
│   ├── open_fridge.py       # OpenFridge environment definition
│   └── walk_pick_turn.py    # WalkPickTurn environment definition
├── models/                  # Model architectures
│   ├── body_prior/          # VAE body prior
│   ├── hand_prior/          # VAE hand prior
│   └── coord_policy/        # Coordination residual policy
├── scripts/                 # Training và evaluation scripts
│   ├── train_body_teacher.py
│   ├── train_hand_teacher.py
│   ├── distill_prior.py
│   ├── train_coord_policy.py
│   └── deploy_real.py       # Real robot deployment
├── configs/                 # YAML hyperparameter configs
└── data/                    # Motion capture và retargeted data
    └── mano_retargeted/     # ManipTrans-processed hand motions

Training Pipeline: Từng Bước Thực Hành

Bước 1: Train Body Teacher

python scripts/train_body_teacher.py \
  --robot unitree_g1 \
  --num_envs 4096 \
  --max_iterations 5000 \
  --log_dir logs/body_teacher

Body teacher dùng privileged critic: critic nhận thêm thông tin về sai số theo dõi reference motion, nhưng actor (policy) không thấy thông tin này. Điều này cho phép critic học value function chính xác hơn trong khi policy vẫn phải hoạt động robust tại deployment chỉ với proprioception.

Domain randomization được áp dụng trong quá trình train:

  • Hệ số ma sát sàn: ±30% so với nominal
  • Perturbation lực ngoài ngẫu nhiên lên torso
  • Noise trên quan sát joint angles: ±0.01 rad

Bước 2: Train Hand Teacher (Wrist-Stabilized)

python scripts/train_hand_teacher.py \
  --mode wrist_stabilized \
  --dataset data/mano_retargeted/ \
  --num_envs 4096 \
  --max_iterations 3000 \
  --log_dir logs/hand_teacher

Config quan trọng nhất: wrist_pose_override: True. Simulator sẽ đọc wrist pose từ reference trajectory data và set trực tiếp vào simulation state. Hand teacher chỉ cần học điều khiển ngón tay, không cần lo wrist positioning.

Reward function của hand teacher:

  • MANO keypoint tracking loss (tập trung fingertip nặng hơn)
  • Velocity tracking cho ngón tay
  • Power penalty để giảm tiêu thụ năng lượng
  • Action rate penalty để giữ smooth motion

Bước 3: Distill Latent Priors qua VAE

# Distill body prior
python scripts/distill_prior.py \
  --type body \
  --teacher_ckpt logs/body_teacher/best.pt \
  --latent_dim 16 \
  --output models/body_prior/ \
  --epochs 200

# Distill hand prior
python scripts/distill_prior.py \
  --type hand \
  --teacher_ckpt logs/hand_teacher/best.pt \
  --latent_dim 12 \
  --output models/hand_prior/ \
  --epochs 200

VAE training dùng loss kết hợp ba thành phần:

L_total = L_reconstruction + λ_KL × KL(q||p) + λ_smooth × temporal_smoothness

Trong đó:
  L_reconstruction = MSE giữa predicted actions và teacher actions
  KL(q||p)         = KL divergence giữa encoder và prior distributions
  temporal_smooth  = ||z_t - z_{t-1}||² trung bình theo thời gian

temporal_smoothness term quan trọng: nếu thiếu, latent trajectory sẽ nhảy lộn xộn qua các frames, gây jitter ở joint output.

Bước 4: Train Coordinated Residual Policy

python scripts/train_coord_policy.py \
  --task walk_grab \
  --body_prior models/body_prior/ \
  --hand_prior models/hand_prior/ \
  --num_envs 4096 \
  --rollout_steps 24 \
  --num_minibatches 4 \
  --learning_rate 1e-3 \
  --gamma 0.99 \
  --gae_lambda 0.95 \
  --kl_target 0.01 \
  --log_dir logs/coord_policy/walk_grab/

Hyperparameters PPO quan trọng:

  • 4 minibatches × 98.304 samples = ~393K transitions mỗi gradient update
  • Adaptive learning rate: điều chỉnh dựa trên KL target 0.01
  • Actor/Critic MLP: [1024, 512, 256] với activation ELU
  • Coordination trunk: [512, 256] shared → [256, 128] mỗi head riêng
  • Discount factor γ = 0.99, GAE λ = 0.95

Trong quá trình training residual policy, cả body decoder và hand decoder đều bị đóng băng (frozen). Chỉ coordination trunk và hai residual heads được update gradient. Điều này giữ nguyên các motion patterns đã học từ giai đoạn trước.

Kết Quả: Số Liệu Cụ Thể

Ablation study CoorDex — keyframe sequences so sánh các phương pháp trên WalkGrab
Ablation study CoorDex — keyframe sequences so sánh các phương pháp trên WalkGrab
Ablation study: Chỉ CoorDex với coordinated latent residual mới gắp được vật. Direct PPO, Body Prior + Hand Joint Space, và Monolithic Latent đều fail hoàn toàn — nguồn: arXiv 2606.23680

Task Success Rates (Simulation + Real World)

Task Success Rate Metric phụ
WalkGrab 55% Reach: 100%, Grasp: 55%, Fall: 0%
OpenFridge 66% Góc mở cửa trung bình: 57.76°/60°
WalkPickTurn 89% Giữ vật khi hoàn thành quay 180°

Ablation Study: Tại Sao Cấu Trúc Latent Quan Trọng

Phương pháp WalkGrab Success Action Rate
All Joint Space — PPO trực tiếp 0% —
Body Prior + Hand Joint Space 0% —
Monolithic Latent Residual (gộp) 0% 0.40
CoorDex — Coordinated Latent 55% 0.22

Kết quả ablation tiết lộ điều mấu chốt: không phải latent space nói chung mà là cấu trúc phối hợp riêng biệt — separate body head và hand head — mới tạo ra sự khác biệt. Monolithic latent gộp body và hand vào 1 latent duy nhất cũng thất bại hoàn toàn. Hơn nữa, CoorDex có action rate thấp hơn (0.22 so với 0.40), tức là motion smoother và ít jitter hơn.

Demo Thực Tế trên Unitree G1

CoorDex demo WalkGrab thực tế trên Unitree G1 với tay Dex3-1
CoorDex demo WalkGrab thực tế trên Unitree G1 với tay Dex3-1
CoorDex thực hiện WalkGrab trên Unitree G1 thực: vừa bước đi liên tục vừa với tay tiếp cận và gắp chai nước — nguồn: arXiv 2606.23680

Inference và Deploy trên Unitree G1 Thực

Chạy Real Robot Deployment

# Kết nối với Unitree G1 qua network (thường 192.168.123.x)
# Đảm bảo robot đã vào low-level control mode

python scripts/deploy_real.py \
  --task walk_grab \
  --policy logs/coord_policy/walk_grab/best.pt \
  --body_prior models/body_prior/ \
  --hand_prior models/hand_prior/ \
  --hand dex3_1

Xử Lý Sim-to-Real Gap

Một điểm thú vị của CoorDex: train với tay WUJI 20-DoF trong simulation nhưng deploy với tay Dex3-1 7-DoF thực tế. Framework xử lý gap về morphology này bằng cách:

  • Hand decoder được retrain cho Dex3-1 morphology với 7-DoF
  • Body prior và coordination trunk giữ nguyên — không cần fine-tune
  • Chỉ hand prior fine-tune lại để output khớp với 7-DoF

Domain randomization trong training bao phủ:

  • Hệ số ma sát: ±30%
  • Lực nhiễu ngoài ngẫu nhiên lên torso
  • Độ trễ actuator: 10-30 ms
  • Độ trễ quan sát: 0-20 ms

So Sánh Với Các Hướng Tiếp Cận Khác

Hướng tiếp cận Ưu điểm Nhược điểm
Direct PPO (joint space) Đơn giản, ít hyperparameter Không học được coordination phức tạp, action space quá lớn
Hierarchical (walk + grasp tách riêng) Mô-đun hóa, dễ debug Phải dừng lại để chuyển mode, hand-off phức tạp
VLA end-to-end Flexible, có thể generalize Latency cao do LLM inference, cần nhiều data đa dạng
CoorDex Liên tục không dừng, dexterous thực sự Chưa generalize sang object mới dễ dàng

CoorDex gần về tinh thần với ω-0 (WAM) ở chỗ cả hai đều dùng latent predictive structure để phối hợp locomotion và manipulation. Điểm khác biệt: CoorDex tập trung vào dexterous hand với tay ngón tay thực sự, trong khi ω-0 thiên về whole-body coordination ở cấp độ cao hơn.

So với ASAP — cũng train trên Unitree G1 — CoorDex giải quyết bài toán khó hơn vì phải phối hợp locomotion và manipulation đồng thời thay vì chỉ tối ưu sim-to-real transfer.

Hạn Chế Hiện Tại và Hướng Phát Triển

Những gì CoorDex chưa làm được:

  1. Object diversity thấp: Hiện tại train trên vật cụ thể như chai nước, hộp. Muốn gắp vật mới phải retrain hoặc fine-tune. Kết hợp với vision foundation model có thể mở rộng khả năng này.

  2. 55% WalkGrab chưa đủ ổn định: Paper phân tích rõ: lỗi chủ yếu xảy ra tại phase tiếp xúc đầu tiên khi robot vừa bước vừa với tay đồng thời. Thêm force sensing như FM-VLA có thể cải thiện giai đoạn này.

  3. Chỉ một tay: Extension sang bimanual manipulation sẽ cần body prior mạnh hơn để giữ thăng bằng khi cả hai tay đều thao tác.

  4. Không có semantic understanding: Robot không "hiểu" nó đang gắp gì. Kết hợp với VLA policy ở cấp cao hơn có thể bổ sung khả năng này.

Tại Sao CoorDex Là Bước Tiến Quan Trọng?

Latent prior coordination là một thay đổi paradigm trong thiết kế controller cho humanoid robot:

  • Trước đây: Học trực tiếp trong joint space 40+ chiều, hoặc tách locomotion và manipulation thành hai module riêng
  • CoorDex: Nén kiến thức vào latent space có cấu trúc → phối hợp qua residual nhỏ → bảo toàn motion patterns tự nhiên

Hãy nghĩ theo cách này: khi bạn học chơi bóng rổ, bạn không phải suy nghĩ về từng cơ bắp khi dribbling. Muscle memory (latent prior) xử lý phần đó. Bạn chỉ cần tập trung vào quyết định cao cấp hơn: di chuyển sang trái, né cầu thủ đối phương, đồng thời keep the ball. CoorDex làm điều tương tự cho robot.

Với code open-source tại github.com/Skevinci/CoorDex, đây là baseline quan trọng cho ai muốn nghiên cứu continuous dexterous loco-manipulation trên humanoid platform thực tế.

Bài Viết Liên Quan

  • ω-0: Latent Predictive World Action Model cho Humanoid Loco-Manipulation
  • ASAP: Train Unitree G1 với Delta Action Sim-to-Real Transfer
  • FM-VLA: Force-Based Memory cho Contact-Rich Manipulation
NT

Nguyễn Anh Tuấn

Robotics & AI Engineer. Building VnRobo — sharing knowledge about robot learning, VLA models, and automation.

Khám phá VnRobo

Fleet MonitoringROS 2 IntegrationAMR Solutions

Bài viết liên quan

Nghiên cứu
LeVERB: Điều khiển toàn thân humanoid bằng ngôn ngữ-thị giác tiềm ẩn
wholebody-vlahumanoidvla
wholebody-vla

LeVERB: Điều khiển toàn thân humanoid bằng ngôn ngữ-thị giác tiềm ẩn

LeVERB (UC Berkeley) — framework phân cấp đầu tiên cho điều khiển toàn thân humanoid bằng latent VLA, zero-shot sim-to-real trên Unitree G1, đạt 58.5% thành công.

24/6/202613 phút đọc
NT
Tutorial
VIRAL: RGB sim2real cho G1 loco-manip
viralgr00t-visualsim2realunitree-g1Phần 4
wholebody-vla

VIRAL: RGB sim2real cho G1 loco-manip

Dựng VIRAL với Isaac Sim 5.1: PPO teacher, RGB DAgger student, Hydra fields, export ONNX và so sánh EgoHumanoid.

11/6/202616 phút đọc
NT
Tutorial
Whole-body VLA
gr00tvisual-sim2realunitree-g1
wholebody-vla

Chạy GR00T-VisualSim2Real cho G1

Hướng dẫn train VIRAL và DoorMan cho Unitree G1 trong Isaac Lab: cài đặt, teacher-student, DAgger, GRPO, inference và sim-to-real.

7/6/202615 phút đọc
NT
VnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam