Aung Kaung Myat

Robot Learning · Sim-to-Real · Physical AI

Robotics Software Engineerロボティクスソフトウェアエンジニア

Real robots at work. In the projects here: learned perception and control, trained in simulation, measured against classical baselines, with the limits stated.

業務では実機ロボットを担当。ここに載せたプロジェクトでは、シミュレーションで学習した認識・制御を古典的なbaselineと比較して計測し、結果の限界まで明記しています。

  • ROS2
  • C++
  • Python
  • PyTorch
Aung Kaung Myat
01

About概要

Robotics Software Engineer: ROS2, C++ and LiDAR perception on real mobile robots at work. The projects here are personal: learned perception and control trained in simulation, measured against a classical baseline, exported to run on device.

ロボティクスソフトウェアエンジニア。業務では実機の移動ロボットでROS2・C++・LiDAR認識を担当しています。ここに載せたプロジェクトは個人開発で、シミュレーションで学習した認識・制御を古典的なbaselineと比較して計測し、デバイス上で動く形でexportしています。

How I work進め方
  • 01Classical baseline first, so the learned result has something to beat
  • 02One evaluation protocol, fixed before training: 100 episodes × 5 seeds
  • 03Test on physics the policy never saw, not on the training randomisation
  • 04Negative results published as negative
  • 05Export (ONNX / INT8 / C++) and measure the latency
  • 01まず古典的なbaselineを作り、学習結果が超えるべき基準を置く
  • 02評価プロトコルは学習前に固定(100 episodes × 5 seeds)
  • 03学習時のrandomisationではなく、policyが見ていない物理モデルで検証
  • 04悪い結果は悪い結果のまま公開
  • 05ONNX / INT8 / C++へexportし、latencyまで計測
Current Focus現在の注力領域
Robot learning on CPU: biped balance, arm manipulation by RL, imitation and language, an INT8 detector · Sim-to-real: domain randomisation, held-out physics, ONNX export · A bit-identical C++ simulation backend
CPUでのrobot learning:二足ロボットのバランス制御、RL・imitation learning・言語指示によるアーム操作、INT8検出器 · Sim-to-real:domain randomisation、held-out physics、ONNX export · Pythonとビット単位で一致するC++シミュレーションbackend
Career Goal目指す役割
Physical AI Engineer — shipping learned behaviour onto real machines: sim-to-real, legged locomotion, robust perception.
Physical AI Engineer — 学習した挙動を実機に載せて動かす。sim-to-real、脚式ロボットの歩行、頑健な認識。
02

Technical Stack技術スタック

Core

  • ROS2 (Humble)
  • C++17
  • Python
  • Linux
  • Docker
  • CMake

Robot Learning

  • PPO
  • Imitation learning
  • Language-conditioned policies
  • Domain randomisation
  • System identification
  • Sim-to-real transfer

ML / DL

  • PyTorch
  • CNN
  • Object detection
  • INT8 quantisation
  • ONNX Runtime

Perception

  • LiDAR
  • IMU
  • Sensor fusion
  • OpenCV
  • PCL

Navigation & Manipulation

  • Nav2
  • SLAM
  • MoveIt2
  • OMPL

Simulation

  • MuJoCo
  • Gazebo
  • RViz
03

Projectsプロジェクト

Walkthroughs全プロジェクト解説
01

Microduck Balance and Push Recovery

  • Python
  • MuJoCo
  • PyTorch
  • ONNX
  • Balance policy for a 25 cm, 14-servo open-source biped, PPO in CPU MuJoCo; the observation is only what the robot's sensors report
  • Reward rebuilt after three of four penalties measured under 0.25% of the return; a KL stop fixed a runaway step size
  • 全高25 cm・14サーボのオープンソース二足ロボットのバランスpolicy。CPU版MuJoCoでPPO学習。observationは実機センサーが出す値のみ
  • 4つのpenaltyのうち3つがreturnの0.25%未満と計測されたためrewardを再設計。暴走したstep sizeはKL stopで修正

344.8 ± 2.9 vs PD 175.8 ± 0.2 of 500 after 50M steps; upright 73% vs 47% of the time(500点満点、50M steps)。直立時間 73% vs 47% · 100 episodes × 5 seeds

Domain randomisation, tested on two held-out physics models, made it worse: the policy learned to brace in a crouch (upright 28% vs 47%). Getting up after a fall is still unshown.

Domain randomisationは2つのheld-out物理モデルで検証した結果、悪化(しゃがんで踏ん張る挙動を学習、直立 28% vs 47%)。転倒後の起き上がりは未達成。

02

Threaded C++ MuJoCo Backend, Bit-Identical

  • C++17
  • MuJoCo
  • pybind11
  • CMake
  • Project 01's environment in C++17, N envs on T threads of one process, drop-in for the same PPO loop
  • 6,275 of 6,275 observations bit-identical to Python; CI under ASan, UBSan and TSan
  • プロジェクト01の環境をC++17で再実装。1プロセス内のTスレッドでN環境を並列実行し、同じPPOループにそのまま差し替え可能
  • 6,275個のobservationすべてがPythonとビット単位で一致。CIはASan・UBSan・TSan付きで実行

1.9–2.0× the Python vector env at 8 workersPython vector env比(8 workers) (12,327 vs 6,385 env-steps/s) · 50M-step PPO 3.1 h vs 3.8–4.4 h

Three training seeds per backend: 339.4 ± 2.3 vs 348.1 ± 8.1 of 500 on the Python env, no backend difference in return or survival. Faster to train, not better.

backendごとに3 seeds学習し、Python環境での評価は339.4 ± 2.3 vs 348.1 ± 8.1(500点満点)。returnにも生存率にも差はなし。速くなるだけで、賢くはならない。

03

SO-ARM100 Manipulation with RL, Imitation and Language

  • Python
  • MuJoCo
  • PyTorch
  • LeRobot
  • One MuJoCo bench (four tasks, scripted IK expert, six held-out physics settings) feeds three policy repos: curriculum PPO, imitation (BC, DAgger, ACT) and a language-conditioned policy
  • Language tested on held-out paraphrases and unseen task–colour pairs, SmolVLA-base as reference
  • 1つのMuJoCoベンチ(4タスク、scripted IK expert、6種のheld-out physics)の上に3つのpolicyリポジトリ:curriculum PPO、imitation learning(BC・DAgger・ACT)、language-conditioned policy
  • 言語指示はheld-outの言い換え文と未学習のタスク×色の組み合わせで検証。参照はSmolVLA-base

ACT 0.77 lift from the camera (expert 0.93) vs BC 0.05, DAgger 0.14カメラ入力でのlift成功率(expert 0.93)vs BC 0.05、DAgger 0.14 · DR fine-tune halves the held-out dropDR fine-tuneでheld-out低下が半減 0.120 → 0.056

RL result is one training seed. The language policy is measured and weak: 0.11 on seen pairs, 0.03 on unseen, encoder ablation inside noise.

RLの結果は学習1 seedのみ。language policyは計測済みだが弱い:既知ペア 0.11、未知ペア 0.03、encoder ablationはノイズ範囲内。

04

Tabletop Clutter Detector, INT8 on One Thread

  • Python
  • PyTorch
  • MuJoCo
  • ONNX Runtime
  • Anchor-free detector for 3–6 overlapping objects, labels from the renderer's segmentation buffer
  • COCO mAP implemented from scratch; classical pipeline as the baseline
  • 重なり合う3〜6個の物体を検出するanchor-free検出器。ラベルはレンダラーのsegmentation bufferから生成
  • COCO mAPはライブラリを使わず自前で実装。baselineは古典的な画像処理パイプライン

mAP@[.5:.95] 0.911 vs classical 0.532 · INT8 1.38 ms on one thread(1スレッド) at mAP 0.910, 2.6× fp32, under classical 2.13 ms古典手法の2.13 msを下回る

Pruning cost 0.065 mAP for little latency, so INT8 alone ships. Rendered data only; no real-camera test.

PruningはmAPを0.065落とす割にlatencyがほぼ変わらず不採用。INT8のみ採用。データはレンダリング画像のみで、実カメラでの検証は未実施。