å ¬åŒã® OpenArm v2 Cell ãæšæºã«ãããGenesis World ã®ãã¡ã€ã³ãã¥ãŒãã³ã°äžèŠã®æäœãšãŒãžã§ã³ãã§ãã å¥ã®URDFãéžã¶ãšããã®ãããããšæºã䜿ãç¬ç«ããã·ãŒã³ãçæããŸãã æ¥æ¬èªã»è±èªã»æ··åšããæç€ºããç©äœãšå·Šå³ã®æãåºå¥ããäœæ¥åã«å€æããŸããWeb ã¯æç€ºå ¥åãšèšæž¬çµæã®è¡šç€ºã å®éã®ã·ãã¥ã¬ãŒã·ã§ã³ã¯ç¬ç«ãã Genesis ãã€ãã£ããã¥ãŒã¢ãŒãæ åœããŸãã
峿ãBlue Cubeãåã£ãŠå·Šæã«æž¡ããåŸã«çœ®ããŠã
ãã®å·Šæã«ããRED CUBEãæŽãã§å³æããããåã£ãŠå³æã®ãšããã«çœ®ã
ãã®æç€ºã¯ãéãå³ã§åã â å·Šã«æž¡ã â å·ŠåŽã«çœ®ã â èµ€ãå·Šã§åã â å³ã«æž¡ã â å³åŽã«çœ®ããã«åè§£ãããŸãã å·Šå³ã®æãåããã¥ãŒããæ¥è§Šã§ä¿æããåãæã®ææã確èªããŠããæž¡ãæãéããçŽæ¥ã®åãæž¡ãã§ãã
çŸåšã®æ§æã¯ãèšèªè§£é â åä»ãã®äœæ¥ããã°ã©ã â å®è£ æžã¿ã¹ãã«ãžã®å±é â IKã»çµè·¯èšç» â Genesisã®ã¢ãŒã¿ãŒå¶åŸ¡ â 宿ž¬ã«ããæåŠå€å®ã§ãã LLMã®éã¿ã¯å€æŽããŸãããç©äœæ å ±ã¯GenesisããååŸããéåžžã®èšèªã¢ãã«åŒã³åºãã«ã¯ç»åãæž¡ããŠããŸããã 察å¿ããæäœãèšãæãã»çµã¿åãããŠå®è¡ã§ããŸãããæªç¥ã®åäœã®å¶åŸ¡ã³ãŒããèªåçæããæ§æã«ã¯ãŸã ãªã£ãŠããŸããã ãã®READMEã¯ãçŸåšã®ã³ãŒãã«ããåŠçãšãæªå®è£ ã»æªæ€èšŒã®éšåãåããŠèª¬æããŸãã
- èµ·å
- ã¢ãŒããã¯ãã£ãŒãšåŠçã®æµã
- ROBOTéžæãšURDFã®è¿œå
- é 眮ã®ã©ã³ãã åãšåçŸ
- å®è¡é床
- æç€ºã®äŸ
- æãäžããšã¯ã€ã³
- æ€èšŒã®åå®è¡ã»å®è¡æžã¿ã®çµæ
- 察å¿ç¯å²ãšæªå®è£ ã®éšå
Python 3.12 ãŸã㯠3.13 ãš uv ã䜿çšããŸãããããžã§ã¯ãã®ã«ãŒãã§å®è¡ããŠãã ããã
uv sync
./run_genesis_gui.shhttp://127.0.0.1:8000/simple ãéããŠæç€ºãéããŸãã
/ ã§ãåãå
¥åç»é¢ã衚瀺ããŸããGenesis ã®ãŠã£ã³ããŠã§å®éã®åäœã確èªã§ããŸãã
ããŒã«ã«ã® Ollama ã« qwen3-vl:4b ãã€ã³ã¹ããŒã«æžã¿ã§ããã°ãã©ã³ãã£ãŒãèªåéžæããŸãã
æ¢åã® AI_AND_API_KEYãAI_AND_BASE_URLãAI_AND_MODEL ããã¹ãŠèšå®ãããŠããã°ãOpenAI äºæã®ãããã€ããŒã䜿ããŸãã
èšå®ã¯ .env ã«çœ®ããGit ã«è¿œå ããªãã§ãã ãããã¢ãã«ãååŠç¿ããããéã¿ã倿ŽãããããåŠçã¯ãããŸããã
ãã®çµè·¯ã§ã¯Qwen3-VLãèšèªè§£éã«å©çšããç©äœäœçœ®ã»å¢çã»æ¥è§Šã¯Genesisããèªã¿åããŸãã
ç»åããç©äœã®äœçœ®ãæšå®ãããšããæ€èšŒã§ã¯ãããŸããã
# ããŒã«ã«ã¢ãã«ãæç€ºããŠèµ·åããå Žå
OPENARM_LOCAL_PLANNER=1 OPENARM_OLLAMA_MODEL=qwen3-vl:4b ./run_genesis_gui.sh
# Ollamaã䜿ããªãå ŽåïŒå€éšãããã€ããŒã®èšå®ããªããã°å®åæã®ã¿ïŒ
OPENARM_LOCAL_PLANNER=0 ./run_genesis_gui.shã¢ãã«ãå©çšã§ããªãå Žå㯠deterministic_fallback ãšè¡šç€ºããŸããçè§£ã§ããªãæç€ºããåæãªèµ€ãã¥ãŒãã®ç§»åã«çœ®ãæããããšã¯ãããŸããã
ã€ã³ããŒãããã Qwen3-VL ã® Ollama ãã³ãã¬ãŒãã {{ .Prompt }} ã ãã®å Žåã¯ãã¢ãã«ã®ã¢ãŒããã¯ãã£ã確èªããŠãã
äŒè©±ã®åºåããšéæšè«ã®åºåéå§åœ¢åŒãè£ããŸããã»ãã®ã¢ãã«ã®ãã³ãã¬ãŒãããOllama ã«ä¿åãããã¢ãã«èªäœã¯å€æŽããŸããã
flowchart TD
UI["Web /simple: æç€ºã»ROBOTéžæã»åæåã»åæ¢"]
Broker["FastAPI: ãã¥ãŒã»é²æã»çµæã®ä»²ä»"]
UI --> Broker
subgraph Native["run_genesis_gui.py: å¯äžã®Genesisææããã»ã¹"]
Language["AgentPlanner: LLM / æç€ºããå®åæãã©ãŒã«ããã¯"]
Program["TaskProgram: åä»ãã®æå³å"]
Compiler["compile_program: ç©äœåç
§ã»æã®å æã»èœåãæ€èšŒ"]
Executor["TaskExecutor: ã¹ãã«ãé ã«å®è¡"]
Skills["Pythonã¹ãã«: ææã»åãæž¡ãã»é
眮ãªã©"]
Motion["IKã»çµè·¯èšç»ã»è»éã®æéé
å"]
Genesis["Genesis: ã¢ãŒã¿ãŒå¶åŸ¡ã»æ¥è§Šã»åäœã»æµäœ"]
Observe["world_state: å®éã®äœçœ®ã»å§¿å¢ã»æ¥è§Šã»ä¿æ"]
Verify["æåå€å®: 远åŸã»ç¬ç«ä¿æã»è§£æŸã»æ¯æã»éæ¢"]
Language --> Program --> Compiler --> Executor --> Skills --> Motion
Motion -->|"äœçœ®ã»é床ã»åã®å¶éå
ã§æä»€"| Genesis
Genesis --> Observe
Observe --> Language
Observe --> Compiler
Observe --> Executor
Observe --> Verify
Executor --> Verify
end
Broker -->|"ææè
ãã³ãã³ããååŸ"| Language
Verify -->|"å®è¡çµæãšèšæž¬å€"| Broker
Broker -->|"çŸåšã®ç¶æ
ã»è§£éã»å€±æçç±"| UI
Model["å
¬åŒMJCF / éžæããURDFã»è¡çªã¡ãã·ã¥"] --> Motion
./run_genesis_gui.sh ã¯FastAPIã®ä»²ä»ãµãŒããŒãšããã€ãã£ããã¥ãŒã¢ãŒãèµ·åããŸãã
ãµãŒããŒã¯Genesisã®äžçãäœãããPOST /api/tasks ãªã©ããåããã³ãã³ãããã¥ãŒãžå
¥ããŸãã
ãã€ãã£ãåŽãã³ãã³ããåãåºããå¯äžã®äžçãåãããŠç¶æ
ãšçµæãè¿ããŸãã
ãããããã·ãŒã³ã®åãæ¿ãããã®ææè
ãåŠçããåã®äžçãéããŠããæ¬¡ãäœããŸãã
ææè
ã¯ããã»ã¹éããã¯ãšãµãŒããŒãžã®ç»é²ã§ç®¡çããŸãã
åæã«å¥ã®ãã¥ãŒã¢ãŒãç©çæ€èšŒãèµ·åããå¥ã
ã®ç¶æ
ããçŸåšã®äžçããšããæ§æã¯èš±ããŸããã
GET /api/genesis/next ã¯ãã¥ãŒãæ¶è²»ããå
éšAPIãªã®ã§ãç¶æ
確èªã«ã¯ GET /api/sceneã
GET /api/executionsãGET /api/tasks/{task_id} ã䜿ã£ãŠãã ããã
èšèªè§£éã ããã¯ãŒã«ãŒã¹ã¬ããã«æž¡ããŸããGenesisã®åç §ã»æäœãã¢ãŒã¿ãŒæä»€ãmacOSã®æç»ã¯ã¡ã€ã³ã¹ã¬ããã§è¡ããŸãã èšèªã¢ãã«ãåŸ ã€éãæç»ãšåæ¢èŠæ±ã®ç¢ºèªãç¶ãã忢åŸã«å±ããã¢ãã«åçãåäœãžæµããŸããã éåžžã®èµ·åçµè·¯ã¯run_genesis_gui.pyã§ãã ExecutionEngine ãšããéåæã©ãããŒãæ®ã£ãŠããŸããã éåžžã®FastAPIãµãŒããŒã¯ãããçæãããã·ãã¥ã¬ãŒã·ã§ã³ãææããŸããã
build_world_state ããGenesisã«ç»é²ããããšã³ãã£ãã£ããçŸåšã®ç¶æ ãçµã¿ç«ãŠãŸãã
idã¯red_cubeãblue_cubeãã¯ã€ã³çšã·ãŒã³ã®wine_bottleãwine_glassãªã©ãã·ãŒã³æ§ç¯æã®æ¢ç¥ã®ååã§ãã- äœçœ®ã»å§¿å¢ã»é床ã»è¡çªå¢çã»æ¥è§Šã¯ããã®æç¹ã®Genesisã®ç©äœããååŸããŸããåæåº§æšãèšèªã¢ãã«ã«èŠããããŠåããæ¹åŒã§ã¯ãããŸããã
- è²ã¯çŸåš
red_cubeãªã©ã®ååãããçš®é¡ã¯æ¢ç¥ã®IDããäžããŸããç»åã®ç»çŽ ãåé¡ããŠããããã§ã¯ãããŸããã - æãäœãæã£ãŠãããã¯ãåç©äœã«å¯Ÿããæã®æ¥è§Šãš
pinch_establishedããæ±ããŸããã¢ãã«ã®ãæã£ãŠããã¯ãããšããåçãæ¡çšããŸããã - ãäžã«ãããã¯æ¯æé¢ä¿ãè¡çªAABBã宿¥è§Šããå€å®ããŸããå·Šå³ã»è¿ãã»ãŸãŒã³ãšã®é¢ä¿ãçŸåšã®åº§æšããäœããŸãã
- å©çšã§ããè
ã»é¢ç¯ã»ã°ãªãããŒã»ã¹ãã«ã
capabilitiesãšããããæ å ±ãžå ¥ããéžæããããããã«ãªãæ©èœãèšç»ããé€ããŸãã
座æšã®åäœã¯mãäžç座æšã® +Y ãå·Šã-Y ãå³ã+X ãåæ¹ã§ãã
ãå·ŠåŽã®ãã¥ãŒããã®è§£æ±ºã«ãçŸåšã®äœçœ®ã䜿ããŸããã©ã³ãã é
眮åŸã«ã¯ããã®é
眮ã芳枬ããŠããèšç»ããŸãã
æã®æå®ããªãå Žåã¯çŸåšã®ä¿æè
ã䜿ããæªææãªãé
眮æã®IKæ€æ»ã§ç¢ºèªããæãåªå
ããŸãã
ãã® admitted_grasp_arm ã¯ç©äœãé
çœ®æ€æ»ã®åº§æšãã5mmæªæºã®éã ãå
¬éããç§»ååŸã«ã¯äœ¿ããŸããã
ãã®æ
å ±ããªããã°ãæ€åºãããã°ãªãããŒã»å©çšã§ããè
ã»ç©äœã®å·Šå³äœçœ®ããéžã³ãŸãã
çžå¯Ÿé
çœ®ã§æãçç¥ããå Žåã«ã¯ãåç
§ç©ã®åŽã®æãéžã³ãå¿
èŠãªãåãæž¡ããè£ãåŠçããããŸãã
éåžžã®å®è¡ã«ã¯ãç»åããæªç¥ã®ç©äœãæ€åºã»è¿œè·¡ããVLMã®èŠ³æž¬ç³»ã¯æ¥ç¶ãããŠããŸããã
qwen3-vl:4b ãšããã¢ãã«åã§ããéã£ãŠããã®ã¯æç€ºãšç¶æ
ã®ããã¹ãJSONã§ãã
å€èŠã®è²ã ããå€ããŠIDãå€ããªããã°ãçŸåšã®ã³ãŒãã¯IDã«ç±æ¥ããè²ãšããŠæ±ããŸãã
ç»é²ãããŠããªãç©äœã®çºèŠãRGB/depthããã®å§¿å¢æšå®ãé®èœåŸã®åèå¥ã¯å¥éå®è£
ãå¿
èŠã§ãã
URDFã»EEã¡ãã·ã¥ããæãå·¥å
·äœçœ®ãæšå®ãã幟äœè§£æãããã®ç»åèªèãšã¯å¥ã®åŠçã§ãã
ãã®ãããçŸåšã®ã©ã³ãã é
眮詊éšã¯äœçœ®å€åã«å¯Ÿããèšç»ãšç©çå®è¡ã®æ€èšŒã§ãã«ã¡ã©ããã®èªèç²ŸåºŠãæž¬ã詊éšã§ã¯ãããŸããã
AgentPlanner ã®æ åœã¯ãèªç¶æãåä»ãã®æå³åãžç¿»èš³ããããšã§ãã ãã©ã®ç©äœããã©ã¡ãã®æã§ãã©ããžãã©ã®é åºã§æäœãããããæ±ºããŸãã ã¢ãã«ãžé¢ç¯è§ãä»»æã®PythonãçŽæ¥çæãããåŠçã¯ãããŸããã
ãããã€ããŒã¯æ¬¡ã®åªå é äœã§æ±ºãŸããŸãã
AI_AND_API_KEYã»AI_AND_BASE_URLã»AI_AND_MODELããã¹ãŠæå¹ãªããå€éšã®OpenAIäºæãšã³ããã€ã³ããèšç»ã®providerã¯ai&ã§ããOPENARM_LOCAL_PLANNER=1ãªãããŒã«ã«Ollamaãã¢ãã«ã¯OPENARM_OLLAMA_MODELãæ¢å®ã¯qwen3-vl:4bãproviderã¯local_ollamaã§ãã- ã¢ãã«ãèšå®ããŠããªãå ŽåããŸãã¯ã¢ãã«åçãæ¡çšã§ããå
šæãå®åæã§è§£éã§ããå Žåã¯ãæç€ºãã
deterministic_fallbackã§ãã
ãã ããéåžžã©ã³ãã£ãŒã¯ OPENARM_FAST_LANGUAGE=1 ã«ããŸãã
language_fallback.py ã®ææ³ã§å
šæãè§£éãã
çŸåšã®ç©äœãšæãžçµã³ä»ããããæç€ºã¯ãã¢ãã«ãžã®åãåãããçã㊠deterministic_fallback ãšããŠè¿ããŸãã
ãã®å Žåãplan.model 㯠null ã§ãããOllamaãèµ·åããŠãããããšãšããã®æç€ºã®è§£éã«Ollamaã䜿ã£ããããšã¯åãã§ã¯ãããŸããã
æ¡çšããçµè·¯ã¯Webã®è§£é衚瀺ãšå®è¡çµæã® plan.providerãplan.modelãplan.provider_error ã§ç¢ºèªã§ããŸãã
# å
šæãå®åæã§è§£éã§ããè€æ°å·¥çšããã¢ãã«ã§ç¢ºèªããçµè·¯ãéžã¶
OPENARM_FAST_LANGUAGE=0 OPENARM_LOCAL_PLANNER=1 ./run_genesis_gui.shOPENARM_FAST_LANGUAGE=0 ã§ãã察å¿ããåäžã®çŽæ¥æäœã¯ã¢ãã«ãçãå ŽåããããŸãã
å®åæã§è§£éã§ããªãèšãæãã«ã¯ãèšå®ããã¢ãã«ã䜿ããŸãã
ã¢ãã«ã«ãå®åæã«ãè§£éã§ããªããã°ãå
šæãå®è¡å¯èœãªèšç»ã«ã§ããªãã£ãçç±ãè¿ããŸãã
ã¢ãã«ãžã®å ¥åã«ã¯ãæç€ºãçŸåšã®ç©äœãšå·Šå³ã®æã空éé¢ä¿ãåç §å±¥æŽãããããã®èœåãåºåJSONã¹ããŒããå ¥ããŸãã ãèµ€ãåãããããèµ€ã®äžã«ããªã©ã®ä¿ææ¡ä»¶ã»åç §ç©ã¯ãã¢ãã«çæãšç¬ç«ãã references.pyã»spatial_language.py ã®åŠçã§ãç §åããŸãã å®åæã§å šæãè§£éã§ããŠããå Žåã¯ããã®æç€ºã®ç©äœã»æã»é åºã»è¡ãå ãã¢ãã«ãåæã«å€ããèšç»ãæ¡çšããŸããã ç¡å¹ãªåçã«ã¯æ€èšŒçç±ãæž¡ããŠ1åä¿®æ£ãæ±ããŸããã¢ãã«åãåããã¯æå€§2åã§ãã ããã§ãè§£ããªããã°ãå šæãè§£éã§ããå®åæãžæ»ããããšã©ãŒã«ããŸãã
ããŒã«ã«Ollama㯠http://127.0.0.1:11434 ã䜿ããJSONã¹ããŒãã«ããåºåå¶çŽãš temperature=0 ãæå®ããŸãã
é垞㯠/api/chatãthink=false ã§ãã/api/show ã§ qwen3vl ãã€ãã³ãã¬ãŒãã {{ .Prompt }} ã ãã ãšç¢ºèªããå Žåã«éãã
äŒè©±åºåããšéããthinkingéå§éšãä»ãã /api/generate ã® raw=true ã䜿ããŸãã
ãã®è£æ£ã¯å
¥å圢åŒã®èª¿æŽã§ãéã¿ã®åŠç¿ãOllamaã®ã¢ãã«ä¿åå
容ã®å€æŽã¯ããŸããã
TaskProgram / TaskAction ã¯LLMãšå¶åŸ¡åŠçã®éã®å
±é圢åŒã§ãã
çŸåšã®æäœã¯æ¬¡ã®11çš®é¡ã§ããéžæããããããã® capabilities.skills ã«ãã£ãŠãå®éã«äœ¿ããç¯å²ã¯çããªããŸãã
pick: æŽãã§ä¿æãããhandover: æå®ããæž¡ãæããåãæãžæž¡ããplace: æºã®é åã»ãŸãŒã³ã»å¥ã®ãã¥ãŒããšã®çžå¯Ÿäœçœ®ãžçœ®ããapproach: ç©äœãžæ¥è¿ãããmove: æå ãæå®æ¹åãž1ã30cmåããã察象ç©ãæå®ããå Žåã¯å ã«ååŸãããopenã»closeã»home: æãéãã»éãããè ãåæå§¿å¢ãžæ»ããthrow: ãã¥ãŒããäžåãã«æãããæå®ã§ããèªç±äžæéã¯1ã10cmãpour: ããã«ããã°ã©ã¹ãž5ã35mL泚ããããã«ãå ã®å Žæãžç«ãŠãŠæ»ããjoint: ã€ã³ããŒãããæ¢ç¥ã®å転é¢ç¯ããURDFç¯å²å ã®æå®è§åºŠãžåããã
ç©äœéã®é
眮é¢ä¿ã¯ onã»left_ofã»right_ofã»front_ofã»behindã»near ã§ãã
1æç€ºã¯æå€§24ã®æå³ãå±éåŸã¯æå€§144ã¹ãã«ã§ããã¹ããŒãã«ãªãåŒæ°ãä»»æã®ã³ãŒãã¯åãä»ããŸããã
äŸãã°æ¬¡ã®æç€ºãéããŸãã
峿ã§éããã¥ãŒããåã£ãŠå·Šæã«æž¡ããŠå·ŠåŽã®èµ€ããã¥ãŒãã®äžã«ä¹ããŠ
äž¡æã空ã§2ã€ã®ãã¥ãŒããããå Žåãæå³ã¯æ¬¡ã®3ã€ã«ãªããŸãã以äžã¯äž»èŠãªåŒæ°ã ãã®è¡šç€ºã§ãã
{
"actions": [
{"op": "pick", "object": "blue_cube", "arm": "right"},
{"op": "handover", "object": "blue_cube", "arm": "right", "receiver": "left"},
{"op": "place", "object": "blue_cube", "arm": "left", "target": "red_cube", "relation": "on"}
]
}compile_program ããããæ¬¡ã®7ã¹ãã«ãžå±éããæåŸã«ãéãèµ€ã®äžã§è§£æŸã»æ¯æãããŠããããšããç®æšæ¡ä»¶ãä»ããŸãã
1. approach_object right / blue_cube
2. grasp_object right / blue_cube
3. lift_object right / blue_cube
4. handover_object right / blue_cube -> left
5. move_to_object left / blue_cube -> red_cube / on
6. release_object left / blue_cube
7. retreat left
ãã®æã®èµ€ã¯æ¯æããç©äœãªã®ã§ãèµ€ãæŽãå·¥çšã¯ãããŸããã
ãå·ŠåŽã®èµ€ããã¥ãŒãã®äžãã®è¡ãå
㯠red_cube / on ã§ãæºã® left_side ãžçœ®ãæããŸããã
ã³ã³ãã€ã©ãŒã¯èŠ³æž¬ããä¿æç¶æ
ããå§ããå
šæå³ã®é åºã«æ²¿ã£ãŠæã®å æãä»®èšç®ããŸãã
å¥ã®æãæã€ç©äœãåããªãåãæž¡ããžå€æããæªååŸã®ç©äœã眮ããªãååŸåäœãè£ããŸãã
ãããããheld:leftãå·Šå³äœçœ®ã®åç
§ããã®æ®µéã§å
·äœçãªIDã«è§£æ±ºããŸãã
åãæãå¥ã®ç©äœãæã€ã1ã€ã®æã«2åãæããããæªç¥ã®ç©äœãæäœãããå¿
èŠãªã°ãªãããŒããªãã
æå®ç¯å²ãè¶
ããããšãã£ãèšç»ã¯åããåã«æåŠããŸãã
ããã§äœãã®ã¯ãæ¢åã®æäœèŠåã«ããå®è¡æé ãšç®æšæ¡ä»¶ã§ãã ä»»æã®ç®çããæªç¥ã®éå ·ã»åäœãæ¢çŽ¢ããæ±çšã®è¡ååæããåŠç¿ããworld modelã«ããå°æ¥äºæž¬ã¯å®è£ ããŠããŸããã ãã®åææ¡ä»¶ã®æ€æ»ã«éã£ãããšã ãã§ã¯ãIKå°éã»è¡çªåé¿ã»å®éã®ææã®æç«ãŸã§ã¯èšŒæãããŸããã
ã¿ã¹ã¯ãã©ã³ããŒã®åŸã«ãç©çåäœãæç«ãããããã®èšç®ããããŸãã
- ç®æšå§¿å¢ãäœãã çŸåšã®ç©äœäœçœ®ãæã®å·¥å ·äœçœ®ãå®éã®ææãªãã»ãããåç §ç©ã®è¡çªå¢çãããæ¥è¿ã»ä¿æã»çœ®ãå Žæã®äœçœ®ãšåããæ±ããŸãã
- IKãè§£ãã OpenArmã¯å ¬åŒã¢ãã«ã®ç§æèšç®ããŒã¿ãã€ã³ããŒãæ©ã¯URDFã®FKã»Jacobian ã䜿ããŸããé¢ç¯å¶éãå®ããäœçœ®ãšå¿ èŠãªå§¿å¢ã®èª€å·®ãæ€æ»ããŸãã
- è¡çªã®ãªãçµè·¯ãæ¢ãã ã€ã³ããŒãæ©ã®collision_planner.py ã¯ãè å士ã»é£æ¥ãªã³ã¯ã»æºãæ€æ»ããçŽç·çµè·¯ãå¡ããå Žåã¯RRT-connectã§è¿åãæ¢ããŸããééäžã®è ãšæã鿬ããç©äœãè§£æŸåŸã®ç©ºã®æã®éé¿ããããããã®åäœã«å¿ããŠæ€æ»ããŸãã
- è»éã«æéãå²ãåœãŠãã motion.py ãšãã€ã³ããŒãæ©ã® path_timing.py ãé¢ç¯ã»æå ã®é床ãšå é床ãèæ ®ããŸããéäžç¹ããšã«åæ¢ããããè£éããäœçœ®ã»éåºŠã®æä»€ãã¢ãŒã¿ãŒãžæž¡ããŸãã
- å®éã«å°éãããæž¬ãã Genesisã§ç©çãé²ããå®éã®æå
äœçœ®ã»å§¿å¢ã»æ¥è§Šã»ç©äœã®è¿œåŸãèªã¿ãŸããIKè§£ããã£ãŠãç©ççã«å±ããªããã°
MOTION_BLOCKEDãªã©ã§å€±æããŸãã
è¡çªç
§äŒã«ã¯MuJoCoã®ã¢ãã«ã»éååŠã»åœ¢ç¶é¢æ°ã䜿ããŸãããããã§ mj_step ãåã第äºã®ç©çäžçã¯ãããŸããã
åè£å§¿å¢ãGenesisãžæžããŠæ»ã詊è¡ãè¡ããŸãããããã«ãããèšç®äžã®åè£ãç»é¢ã«åçãããããšãé²ããŸãã
ä¿æç©ãå«ãçµè·¯æ€æ»çšã®äºæž¬åœ¢ç¶ã¯ç§æã¢ãã«å
ã®ãã®ã§ãGenesisã®ç©äœãæã«åºå®ããåŠçã§ã¯ãããŸããã
å®éã®åäœãšæåŠã®æ£ã¯Genesisã§ãã
ãããããå®è¡ããã¹ãã«ã¯ãGitã§ç®¡çããPythonã®åŠçã§ãã 1ã€ã®æ±ºãŸã£ãæç« ã«1ã€ã®ã¹ã¯ãªãããçšæããæ¹åŒã§ã¯ãªããåãæäœãç©äœã»è ã»é 眮ã®åŒæ°ã§åå©çšããŸãã
- models/schemas.py: å®è¡å¯èœãªã¹ãã«åãš
PlanStepã®åŒæ°ãçŸåš15çš®é¡ã§ãã - skills/robot_skills.py: å ±éã®å®è¡æ¯ãåããšãå ¬åŒOpenArmã®æ¥è¿ã»ææã»æã¡äžãã»éæ¬ã»åãæž¡ãã»è§£æŸãªã©ã
- skills/spatial_placement.py: åç §ç©ã«å¯Ÿããé 眮äœçœ®ã®èšç®ãšãç©ã¿éãã»çžå¯Ÿé çœ®ã®æ€èšŒã
- skills/dynamic_skills.pyã»skills/pouring.py: æãäžããšã¯ã€ã³æ³šãã®ç©çå¶åŸ¡ã
- robots/executor.py: ã€ã³ããŒãæ©ã®å·¥å ·ã»æã»é¢ç¯æ§æã«åãããã³ã³ãããŒã©ãŒãã¹ãã«ãå®è¡åšã
- robots/handover.pyã»robots/placement.py: ã€ã³ããŒãæ©ã®åãæž¡ãåè£ãééã»é¢è±ã»ç¢ºèªãªãããä¿æç©ãå«ãé 眮çµè·¯ã
æ°ããæç« ã§ãããã®æäœçŸ€ã«åè§£ã§ããã°ããã®æç« å°çšã®ã¹ãã«ã远å ããå¿
èŠã¯ãããŸããã
äžæ¹ããæŠãããªã©ã«å¿
èŠãªæ¥è§ŠåãåŸåŸ©è»éã®å¶åŸ¡ããªããã°ãLLMãåèªãçè§£ããŠãå®è¡ã§ããŸããã
æ¡åŒµããå Žåã¯ãæå³ã»åŒæ°ã®è¡šçŸãèœåã®å
¬éãå®è¡åŠçãåææ¡ä»¶ã芳枬ã«ããæåå€å®ãæããå¿
èŠããããŸãã
SKILL.md ã眮ããšæ°ããããããåäœãèªåã§èªã¿èŸŒãä»çµã¿ã¯ãããŸããã
Codexã®éçºäœæ¥çšã¹ãã«ãšããã®ããããã®å®è¡ã¹ãã«ã¯å¥ã§ãã
ç¹ã«ãç©ãã 2åãäž¡æ¹åã£ãŠæž¡ããã¯æªå®è£
ã§ããçŸåšã¯åã¢ã¯ã·ã§ã³ã® object ã1ã€ãä¿æç¶æ
ã1ã€ã®æã«ã€ã1ã€ã®IDã§ãã
æ¯æé¢ä¿ãèªèã§ããããšãšããã®éåããŸãšããŠæŽã¿ã»éã³ã»æž¡ãã»æ€èšŒã§ããããšã¯å¥ã§ãã
è€æ°ç©äœã®ææè¡šçŸã»æ¥è§Šæ¡ä»¶ã»è·éãšçµè·¯ã»åãæž¡ãã»äºåŸæ€èšŒã远å ããå¿
èŠããããŸãã
TaskExecutor ã¯éå§æã«å®æž¬ç¶æ
ã§èšç»ãåæ€èšŒããã¹ãã«ãé çªã«å®è¡ããŸãã
åã¹ãã«ã®ååŸã§ç¶æ
ãèªã¿ãaction_index ãšãšãã«èšé²ããŸãã
OpenArmã® TaskExecutor ãšã€ã³ããŒãæ©ã® ImportedRobotExecutor ã¯ãã®å®è¡ã«ãŒããå
±æãã
å·¥å
·ãæãªã©ã«äŸåããéšåã ããéžæããå®è£
ã«çœ®ãæããŸãã
æåã¯LLMã®èªå·±ç³åã§ã¯ãªããã¹ãã«ã®å®æž¬å€ãš goal_verification.py ã®ç®æšå€å®ã§æ±ºãŸããŸãã
- ææ: äž¡åŽã®å¿ èŠãªææ¥è§Šãšãæã¡äžãæã®ç©äœã®è¿œåŸã確èªããŸããã€ã³ããŒãæ©ã§ã¯ãæ«ç«¯ãããã»å¯Ÿåããæ³ç·ã»æ¥è§Šåã»å ã®ã¡ãã·ã¥ãšã®è·é¢ã»è²«ééã調ã¹ã30mmã®ç¢ºèªãªãããš300msã®ç¬ç«ä¿æãèŠæ±ããŸãã
- åãæž¡ã: æž¡ãæãä¿æãããŸãŸåãæãæ¥è¿ããŠå®æ¥è§Šãäœããæž¡ãæãéããŠé¢è±ããŸãããã®åŸã«åãæã ãã§æã¡äžããä»ã®æ¯æãåããä¿æã§ããããšã枬ããŸãã
- æºã®é åãžã®é 眮: æ°Žå¹³40mm以å ã»åçŽ50mm以å ãæããã®è§£æŸãé床20mm/sæªæºã100ç©çã¹ãããã§ç§»å2mmæªæºãèŠæ±ããŸããOpenArmã®ãã¥ãŒãã§ã¯100ã¹ãããã¯100msã§ãã宿ž¬ã®èª€å·®ãå¥ã«è¡šç€ºããŸãã
- ç©ã¿éã: æ¯æããç©äœãšã®æ¥è§Šãæ¯æé¢ã®éãªã65%以äžãäžå¿ã®æ°Žå¹³ãã12mm以å ãæ¯æé¢ã®éé4mmæªæºãé¢ãäžã«ããå§¿å¢ãè§£æŸãšéæ¢ã確èªããŸããæºé åãžã®é 眮ãšåã40mm蚱容å€ã§ã¯å€å®ããŸããã
- æäœå¯Ÿè±¡ä»¥å€: æåã®äœçœ®ããã®å€äœ6mmæªæºãæçµå€å®ã§ç¢ºèªããŸããäŸã®ç©ã¿éãã§ã¯ãåå°ã®èµ€ãåãããŠããªãããšã察象ã§ãã
- æãäžãã»æ³šã: èªç±é£è¡ã®è»è·¡ãç²åããæ±ããéã»ããŒãã»ç©ºäžåãããã«ã®çœ®ãæ»ããªã©ããã®åäœåºæã®èšæž¬ã䜿ããŸãã
å šã¹ãã«ãå®äºããŠããªãèšç»ã¯ãå¶ç¶ã®æçµåº§æšãè¿ããŠãæåã«ããŸããã éåžžã®å®è¡ã§ç©äœã®åº§æšãæžãæããŠè¿œåŸãä¿æãäœãåŠçã¯ãªããç©äœã®äœçœ®æå®ã¯åæé 眮ã»ãªã»ããã«éå®ããŸãã
å埩ã¯éå®çã§ããæºäžã®æ¥è¿ã»ææã GRASP_FAILED ãŸã㯠IK_FAILURE ã«ãªãã
ãã®ç©äœãä¿æããŠãããäž¡æãšã®æ¥è§Šããªãå Žåã«ããã®å€±æã¹ãã«ãã1åã ã忥è¿ã§ããŸãã
鿬äžã®èœäžãéäžãŸã§é²ãã åãæž¡ãã¯ãçŸåšã®ç©çç¶æ
ãšçç±ãæ®ããŠæ¢ãŸããŸãã
ã·ãŒã³ãéäžã§åæåããŠå®äºæžã¿ã®å·¥çšãããçŽãåŠçã¯ãããŸããã
å®è¡å€±æåŸã«LLMãžåèŠ³æž¬ãæž¡ããŠä»»æã®å埩èšç»ãäœããããæ±çšã®åèšç»ã«ãŒããçŸåšã¯ãããŸããã
倱æã®æ®µéã¯ãçµæã®èšç»ã»ã¹ãã«ã»å®æž¬å€ããåºå¥ã§ããŸãã
INSTRUCTION_NOT_UNDERSTOOD/UNSUPPORTED_TASK: æå šäœã察å¿ããæäœãžçµã³ä»ããããªãããŸãã¯ã¢ãã«ãæªå¯Ÿå¿ãšè¿ããæ®µéãROBOT_CAPABILITY: æå®ããããã®æãæäœèœåãäžè¶³ããŠããæ®µéãRANDOMIZATION_UNREACHABLE: ã©ã³ãã é 眮ã§IKã»å¹Ÿäœæ€æ»ãéãåè£ãèŠã€ããããªãã£ã段éãIK_FAILURE/COLLISION_PATH: ç®æšå§¿å¢ãè¡çªãé¿ããçµè·¯ãäœããªãã£ã段éãMOTION_BLOCKED/GRASP_FAILED: ã¢ãŒã¿ãŒãåããã宿ž¬ãå°éæ¡ä»¶ã»ç©çææã®æ¡ä»¶ãæºãããªãã£ã段éãGOAL_NOT_SATISFIED: å·¥çšåŸã®ç¶æ ããé çœ®ã»æ¯æã»è§£æŸãªã©ã®æçµæ¡ä»¶ãæºãããªã段éã
èšèªè§£éãæ£ããããšãIKãè§£ããããšãç©çåäœãæåããããšã¯ããããå¥ã«ç¢ºèªããŸãã
ä¿åããæ å ±ã«ã¯å¥ã ã®åœ¹å²ããããŸãã
- åç
§å±¥æŽ:
TaskExecutor.discourseã«çŽåã®ç©äœã»æã»çœ®ãå Žæãæã¡ã次ã®ããããããããã解決ããŸããæåããå·¥çšããæŽæ°ããåæåã§æ¶ããŸããä¿æã®èšŒæ ã«ã¯äœ¿ããŸããã - æåããåãæž¡ãåè£: robots/skill_recipes.py ããã€ã³ããŒãæ©ã®
outputs/robots/<robot-id>/handover_skills.jsonã«å¹Ÿäœãã©ã¡ãŒã¿ãŒãä¿åããŸãã - ã¿ã¹ã¯ã®é²æã»çµæ: éåžžã®ãã€ãã£ãçµè·¯ã§ã¯FastAPIã®
app.state.executionsã«ãããŸãããµãŒããŒåèµ·åã§æ¶ããã¡ã¢ãªãŒäžã®èšé²ã§ããæ€èšŒã¹ã¯ãªããã¯å¿ èŠãªèšæž¬ãå¥éoutputs/*.jsonãªã©ãžåºåããŸãã - Neo4j / ããŒã«ã«å±¥æŽã¹ãã¢: memory/graph_memory.py ã«
MemoryStoreã®ä¿åã»æ€çŽ¢åŠçãããããµãŒããŒã¯æ¥ç¶ç¶æ ãšå±¥æŽã®APIãæã¡ãŸãããã ããéåžžã®ãã€ãã£ãçµè·¯ã§ã¯ãã®å±¥æŽãååŸããŠèšç»ãžå ¥ããŠããŸããã
handover_skills.json ãä¿åããã®ã¯ãåãæž¡ãäœçœ®ãç©äœã«å¯Ÿããæã®å§¿å¢ãåãæã®ææäœçœ®ãIKã®åæåè£ãªã©ã§ãã
ç¬ç«ãã確èªãªãããš300msä¿æã®ç©çæ€èšŒãæç«ããåè£ã ããèšé²ããŸãã
ã¢ãŒã¿ãŒè»éã®é²ç»ã§ã¯ãªããæ¬¡åãçŸåšã®é¢ç¯ã»ç©äœã®å§¿å¢ããçµè·¯ãééãæž¡ãæã®é¢è±ãåãæã®ãªãããåèšç®ã»åæ€æ»ããŸãã
圢ç¶ã»ã¢ãŒã¿ãŒã»å¶åŸ¡æ¹éã®ããã·ã¥ãå€ããã°ç¡å¹ã«ããåè£ãéããªããã°éåžžã®æ¢çŽ¢ãžæ»ããŸãã
ãã¡ã€ã«ããªããŠãæåã®æ¢çŽ¢ã¯å¯èœã§ããæ°ããåäœã³ãŒããç²åŸããããšãæå³ããŸããã
ãã®ãã¡ã€ã«ãšçæãããã¡ã€ã«ã¯æ©æ¢°åºæã®ããGit管çå€ã§ããPythonã®ã¹ãã«æ¬äœã¯Gitã«å«ããŸãã
ãã€ãã£ãåŽã¯çŸåš planner.plan(instruction, state, []) ãšåŒã³ãéå»çµéšã®ãªã¹ãã¯ç©ºã§ãã
/api/genesis/result ã MemoryStore.save_execution ãžèªåä¿åããçµè·¯ã§ã¯ãããŸããã
ãããã£ãŠãNeo4jãæ¥ç¶æžã¿ãšè¡šç€ºãããŠãããã¹ãŠã®ã¿ã¹ã¯ãèªååŠç¿ã»çµéšæ€çŽ¢ã§æ¹åããããã§ã¯ãããŸããã
çŸåšã®FTãªãã®é©å¿ã¯ãæšè«æã®èšèªè§£éãšæ€èšŒã幟äœãã©ã¡ãŒã¿ãŒã®èªåçæãæ€èšŒæžã¿åè£ã®åå©çšã«ãããã®ã§ãã
å®éã®å ¥å£ãã远ãå Žåã¯ã次ã®é ã§ç¢ºèªã§ããŸãã
- run_genesis_gui.sh â run_genesis_gui.py: èµ·åãæææš©ãã³ãã³ãååŸãã·ãŒã³åãæ¿ããèšç»ãšå®è¡ã
- main.py â simple.html: Web/APIã®ãã¥ãŒã»ç¶æ ã»çµæã»ROBOTéžæã
- world_state.py: Genesisããã®ç©äœã»æã»èœåã»é¢ä¿ã®ååŸã
- agent_planner.py â task_program.py: ã¢ãã«åŒã³åºããæå³åãåç §è§£æ±ºãšã¹ãã«å±éã
- task_executor.py â robot_skills.py / robots/executor.py: å®è¡ã»æ¥è§Šã»ææã»åãæž¡ãã»é 眮ã
- motion.pyã»collision_planner.pyã»path_timing.py: IKãè¡çªåé¿ãè»é远åŸã
- environment.py / generic_environment.py â goal_verification.py: Genesisãšã®æ¥ç¶ãšå®æž¬ã®æåå€å®ã
- registry.pyã»gripper_discovery.pyã»spawn.py: URDFç»é²ãæã®å¹Ÿäœè§£æããã¥ãŒã寞æ³ãšå°éå¯èœãªåæäœçœ®ã
è±èªã§ã®è£è¶³ãšåäœããšã®è©³çŽ°ã¯ docs/ARCHITECTURE.md ã«ãããŸãã
Webã® ROBOT ã§éžæããŠãåãæ¿ããããæŒããŸããååã®æšæºã¯OpenArm v2ã§ãåãæ¿ãã«æåããéžæã¯æ¬¡åèµ·åã«ãä¿åããŸãã OpenArm以å€ã§ã¯Cellãèªã¿èŸŒãŸããå°é¢ã»æºã»éžæããURDFã»IKã§å±ãå Žæã®ãã¥ãŒããæ§æããŸãã å®è¡äžã®åãæ¿ãã¯åãä»ããããã€ãã£ãææããã»ã¹ãåã®äžçãéããŠããæ¬¡ãäœããŸãã
ãURDFãã©ã«ããŒããããããã远å ãã«ãäŸãã°æ¬¡ãå ¥åããŸãã
/Users/syun/open_pj/scorpion_ver_parts/for_sim
ãã©ã«ããŒå
ã® genesis/*.urdf ãåªå
ããŸããåè£ãè€æ°ããå Žåã¯URDFãã¡ã€ã«ãæå®ããŠãã ããã
å
ã®URDFã»ã¡ãã·ã¥ã¯å€æŽãããoutputs/robots/<robot-id>/ ã«æ¬¡ãçæããŸãããã®ãã©ã«ããŒã¯æ©æ¢°åºæã®çµ¶å¯Ÿãã¹ãå«ãããGit察象å€ã§ãã
robot.urdf: å ã¡ãã·ã¥ãžã®çµ¶å¯Ÿåç §ã解決ããããŒãçšURDFãprofile.json: é¢ç¯è»žã»çš®é¡ã»ç¯å²ã»é床ã»åäžéãå·Šå³ãã§ãŒã³ãå·¥å ·ãã¬ãŒã ãåæå§¿å¢ãgripper_analysis.json: æã®å¯Ÿå圢ç¶ã»ééèµ°æ»ã»å·¥å ·äœçœ®ã»ææå§¿å¢ã»å ±éãã¥ãŒã寞æ³ãç©çæ€èšŒã¯å¥éèšé²ãscene.json: OpenArm Cellãå«ãŸãªãæºã®ã·ãŒã³ãšãIKãéã£ãç©äœã®äœçœ®ãik_seeds.json,ik_validation.json: éå ¬éã®èšç®çšFKã»JacobianãšIKè§£ã®æ€æ»ãspawn_validation.json: æºã«èœã¡çãé«ãã®ç©äœäžå¿ãš4cmã»8cmäžã®æ¥è¿äœçœ®ã«å¯ŸããIKè§£ã»èª€å·®ãè ã»æºãšã®è¡çªãæã®éé5ç¹ãç©äœã®åã¿ã«çžåœããéå£å¹ ã®ååŸã§ã®ç¢ºèªãªãããã©ã³ãã åæåãåãåºæºãéã£ãäœçœ®ã ãæ¡çšããŸããå®è¡æã«ã¯ããã«49ç¹ã®ééçµè·¯ãšå®æ¥è§Šãæ€æ»ããŸããsolve_ik.py:uv run python outputs/robots/<robot-id>/solve_ik.py left X Y Zã§IKè§£ããã¡ã€ã«åºåãå®éã®ããããã¯åãããŸããã
å®éã®ææãåãæž¡ããæåããåŸã«ã¯ãgripper_runtime.json ã«è
ããšã®ææã®ç©çèšæž¬ã
handover_skills.json ã«åå©çšããåãæž¡ãåè£ãä¿åããŸãã幟äœè§£æã ãã§ç©çæ€èšŒæžã¿ã«ã¯ããŸããã
grasp_calibrated ã¯çŸåšã®èšå®ããã·ã¥ã«äžèŽããè
ããšã®æ€èšŒèšé²ããæ±ºãŸããä»»æã®é
眮ãã¿ã¹ã¯ã®æåä¿èšŒã§ã¯ãããŸããã
æºäžã®åè£ã§IKãè§£ããªãå Žåãææå§¿å¢ãè ã»æºã«è¡çªããå Žåã¯çæããŸãããæç€ºããäœçœ®ããã®æ€æ»ãéããªãå Žåã¯ãšã©ãŒãè¿ããŸãã OpenArmã§ãå ¬åŒæå 圢ç¶ãšææå§¿å¢ã§ãç©äœäœçœ®ã»æ¥è¿äœçœ®ã»äžã®çµç±ç¹ãæ€èšŒããŠããé 眮ããŸãã IKåè£ã¯å°çšã®èšç®ããŒã¿ã§è©äŸ¡ããGenesisã®ãããããžåè£è§åºŠãæžã蟌ãã§åçããåŠçã¯ãããŸããã
ã€ã³ããŒãåŸã¯ãå³ã¢ãŒã ãäžã«1cmåãããŠããªã©ã®çžå¯Ÿç§»åããWebã§é¢ç¯ãéžãã§è§åºŠæå®ã§ããŸãã åºå®ããŒã¹ã®URDFããªãŒãšæå€§2æ¬ã®æäœãã§ãŒã³ã察象ã«ããŸãããã§ãŒã³ãè€æ°æ€åºããå Žåã¯ç°ãªãé¢ç¯ãæã€é·ã2æ¬ãéžã³ãå šåè£ãèšå®ã«æ®ããŸãã 察åããæãæ€åºã§ããå Žåãå·¥å ·äœçœ®ã¯éããæã®ééããèªåèšå®ããŸããæ€åºã§ããªãå Žåã¯æ«ç«¯ãªã³ã¯åç¹ã䜿ãé¢ç¯ã»IKæäœã®ã¿ãšãªããŸãã é£ç¶å転é¢ç¯ã®çš®é¡ã¯ä¿åããŸããIKã«ã¯ã飿¥ãªã³ã¯ã®å®éã®è¡çªåœ¢ç¶ããæ±ãããåæå§¿å¢ããã€ãªããè§åºŠç¯å²ãé©çšããŸããåè£ãšçµè·¯ã®è¡çªæ€æ»ã¯å¥éè¡ããŸãã
URDFã®åºåã«ä»®ã®ã¢ãŒã¿ãŒå€ãå
¥ã£ãŠããå Žåã¯ãå
ã®URDFãšåãå Žæã« actuators.json ã眮ããŠå®æ©ã®èšå®ãæç€ºã§ããŸããäŸãã°ã7.4Vã®é«ãã«ã¯çSTS3215-C001ã¯æ¬¡ã®èšå®ã§ãã
{"default": {"preset": "sts3215_c001_7_4v"}}FEETECH仿§æžã®æå€§ãã«ã¯19.5kgf·cmïŒ1.9123N·mïŒãç¡è² è·é床0.192ç§/60°ïŒ5.454rad/sïŒã宿 Œãã«ã¯5kgf·cmãèšé²ããŸããæ£èŠåããããŒãçšURDFã«æç€ºãããäžéãåæ ããå ã®URDFã¯æžãæããŸãããæå€§ãã«ã¯ãšç¡è² è·é床ã¯ããããã®äžéã§ã宿ž¬ãããã«ã¯ã»éåºŠç¹æ§ãæå³ããŸãããèšå®ãã¡ã€ã«ã®å€æŽããããã¡ã€ã«ãšæåèšé²ãç¡å¹åããŸãã
Scorpionã§ã¯ãæ«ç«¯ã® joint7_L / joint7_R ãå転ããæãé§åããŸããå·Šå³ããããè
7é¢ç¯ãšæ1é¢ç¯ã«èªåã§åé¢ããŸãã
Scorpionã§ã®ã¯ã€ã³æ³šãã¯æ€èšŒå¯Ÿè±¡ã«ããŠããŸãããåãæž¡ãã»çžå¯Ÿé
çœ®ã®æ€èšŒç¯å²ã¯åŸè¿°ã®å®è¡èšé²ã«èšèŒããŸãã
ã€ã³ããŒãæã«URDFã®è¡çªã¡ãã·ã¥ãšé¢ç¯ã®ééèµ°æ»ãã察åããæã»ééè§ã»ææå§¿å¢ãæ€åºããäž¡æã®éå£ã«åãå
±éãã¥ãŒã寞æ³ãçæããŸãã衚瀺ã»è¡çªã»è³ªéïŒäœç©æ¯ïŒã»çæé«ãã»ææå§¿å¢IKãåã寞æ³ã«æããŸãã幟äœè§£æã®åè£ãšç©çæ€èšŒæžã¿ãåºå¥ããå®è¡æã¯æå
ã«ããäž¡åŽã®æ¥è§Šãåããåãæ¥è§Šæ³ç·ãéãŒãã®æ¥è§Šåã衚瀺圢ç¶ãšã®äžèŽã30mmã®æã¡äžããš300msã®ä¿æã確èªããŸãã察象ç©ã®äœçœ®ãæžãæããŠä¿æããåŠçã¯ãããŸããã飿¥ãªã³ã¯ãè¡çªå¯Ÿè±¡ã§ããURDFãšåç
§ã¡ãã·ã¥ã®å
容ãå€ãããšèªåã§ãããã¡ã€ã«ãåçæãã以åã®æææåèšé²ãç¡å¹åããŸãã
gripper_analysis.json ã«æ€åºæ ¹æ ãéå£ã®èµ°æ»ããµã€ãºãæºãšã®éçãªééãåºåããŸãã察åããé§åæãå®åšããªãã¢ãã«ã¯ãèªåã¹ã±ãŒã«ã ãã§ææå¯èœã«ã¯ã§ããŸããã
ã€ã³ããŒãããããã®IKåè£ãšé¢ç¯éã®çµè·¯ã¯ãURDFããäœãç§æã®è¡çªç
§äŒã§é£æ¥ãªã³ã¯ã»æºãå«ããŠæ€æ»ããŸããçŽç·ã®é¢ç¯çµè·¯ãå¡ãããå Žåã¯RRT-connectã§è¿åãæ¢çŽ¢ããè£éåŸã®æ²ç·ãæ€æ»ããŸããè¡çªç
§äŒçšã®MuJoCoã¢ãã«ã§ç©çã¹ããããé²ããããšã¯ãããŸãããå®è¡ãšæåŠå€å®ã¯Genesisã®å®æž¬ç¶æ
ã䜿ããŸããç©äœäžå¿ãžå±ãIKã ãã§ãæãšã®æ¥è§Šãäœæ¥å
šäœã®æç«ã蚌æãããããã§ã¯ãããŸããã
åãæž¡ãã¯ãæå äœçœ®ã ãã§ãªãæ¥è¿æ¹åãæå ã§ã€ãã奥è¡ãããããã®åããšåã¿ãééäžã®å¹²æžãæž¡ãæã®è§£æŸã»é¢è±ãåãæã ãã§ã®ç¢ºèªãªãããŸã§èšç»ããŸãã鿬åŸã¯ç©äœã®äœçœ®ã»å§¿å¢ãèªã¿çŽããŠåãæã®çµè·¯ã忀æ»ããŸããåãæã¯äž¡ãããã®å®æ¥è§Šãäœããæž¡ãæãé¢ããåŸã«30mmæã¡äžããä»ã®æ¯æãåãã300msä¿æããå¿ èŠããããŸããåã£ãäœçœ®ãã€ããã å Žåã¯ç©äœã®éããšåå¿éããæŒãä»ãåãèšç®ããæå®ãããã¢ãŒã¿ãŒäžéå ã§æ¯ããŸãã
çžå¯Ÿé 眮ã§ã¯ãåãæž¡ãåŸã®å®éã®æã¡æ¹ã䜿ããŸããç©äœãå¹³ããªé¢ã§èŒããããå§¿å¢ãæ¢çŽ¢ããä¿æç©ãå«ãäºæž¬åœ¢ç¶ãæºãå¥ã®ãã¥ãŒããããããå士ã®å¹²æžãæ€æ»ããŸãããã®ä¿æç©ã¯çµè·¯æ€æ»çšã®ç§æã¢ãã«ã ãã«ãããGenesisã®ç©äœãåºå®ããåŠçã§ã¯ãããŸãããç©ºã®æã®éé¿ããç©ãã ãã¥ãŒããé¿ããçµè·¯ãæ€æ»ããŸããåæã®ãããæ¥è§Šããé¢ããå Žåã¯ããã®è²«ééãå¢ããçµè·¯ãçŠæ¢ããå®è¡äžã¯æ°ããªæ¥è§Šã2mmãè¶ ããç©äœã®ç§»åã§åæ¢ããŸãã
ç©ççãªåãæž¡ããšåãæã ãã§ã®ç¢ºèªãªããã»300msä¿æãæåãããšãhandover_skills.json ã«
åãæž¡ãäœçœ®ãç©äœã«å¯Ÿãããããã®å§¿å¢ãææäœçœ®ãšIKã®åæåè£ãä¿åããŸããæ¬¡åã¯ãã®åè£ããæ¢çŽ¢ããŸãã
ã¢ãŒã¿ãŒè»éã®é²ç»ã§ã¯ãªããçŸåšã®é¢ç¯è§ã»ç©äœå§¿å¢ããçµè·¯ãééãé¢è±ãåèšç®ã»åæ€æ»ããŸãã
ãããã圢ç¶ãã¢ãŒã¿ãŒèšå®ãå¶åŸ¡èšå®ã®å€æŽã§èšé²ãç¡å¹åããåè£ãéããªããã°éåžžã®æ¢çŽ¢ã«æ»ããŸãã
ææã®èšç»ã§ã¯ãéããæã®å·¥å ·äœçœ®ãš30mmã®ç¢ºèªãªãããå ã«æ€æ»ããããããæãéãæ¹åãž49ç¹ã®è ã»æã®çµè·¯ãèšç®ããŸãããã®éããå§¿å¢ãžå ¥ãæ¥è¿çµè·¯ãç¶ããŠèª¿ã¹ãŸããæãéããè£æ£ã§æ ¹å ã®ãªã³ã¯ãæ¥è§Šããåè£ãããã®æ®µéã§é€ããŸããæ¥è§Šãé¿ããIKè£æ£ã§ã¯æå ã®äœçœ®ã»å§¿å¢ãå¶çŽãšããŠä¿æããè£ééäžã®æ¥è§Šãšå§¿å¢èª€å·®ãæ€æ»ããŸããå®è¡æã¯å®æž¬ããæã®è§åºŠã«åãããŠè ã远åŸããã远åŸãé ããå Žåã¯ééãåŸ ãããŸããæææç«åŸã¯å ã®åäžéå ã§ã¢ãŒã¿ãŒã®æŒãä»ããç¶æããŸãã
å®å šã«éããç¶æ ã ãã§ãªããç©äœå¯žæ³ã®95ã105%ã«çžåœããéå£å¹ ã§ã確èªãªãããæ€æ»ããŸããç©äœãæãã ãšãã«ã¯æãéãåããªãããã§ããææå§¿å¢ã®ãã£ãã·ã¥ãç©äœäœçœ®ããšã«åããå¥ã®äœçœ®ã§ã®æåå§¿å¢ããã®ãŸãŸæ¡çšããŸããã
ãå·ŠåŽããå³åŽãã®æºäžç¯å²ã§ã¯ãæåŸã®éäžãŸã§éãé
眮ç¹ãå
ã«éžã³ãæ€æ»æžã¿ã®é¢ç¯çµè·¯ããã®ãŸãŸå®è¡ããŸããç©äœãåºæºã«ããäœçœ®ãè·é¢ã®æå®ã¯å€æŽããŸãããè§£æŸæã¯è
ãä¿æããŠæãéããåºå®åŽã®æããé¢ããŠçäžãžéé¿ããŸãããã®éé¿ãæå
å§¿å¢ãä¿æããçµè·¯ã§å®è¡ããç©äœã®ç§»åã2mm以å
ãæ€æ»ããŸããéé¿åŸã®æãšã®æ¥è§Šã»éæ¢ã»æºã®æ¯æã»ç®æšäœçœ®ã®èª€å·®ãæ€æ»ããŸããURDFã«ãªãGenesisæ¢å®ã®è¿œå ã¢ãŒã¿ãŒæ
£æ§ã¯ default_armature=None ã§ç¡å¹ã«ããŠããŸãã
ã€ã³ããŒãæ©ã§ã¯ã鿬åã®äžæéãšè§£æŸåŸã®éé¿é«ãããç©äœãšæã®å®æž¬å¯žæ³ããæ±ºããŸããOpenArmçšã®è¿œå 6cmäžæãåŒãç¶ããŸããã鿬ã®çµç±ç¹ãè€æ°ã®é«ãããéžã³ãçžå¯Ÿç§»åã¯é£ç¶ããæå çµè·¯ãèšç»ããŸãã
Scorpionã®å€éš for_sim ã¯ã衚瀺ã¡ãã·ã¥ã»è³ªéã»æ
£æ§ã»é¢ç¯åº§æšãä¿æãã2,029åã®åžè¡çªåœ¢ç¶ãšé£æ¥ãªã³ã¯ã®æ¥è§Šã䜿ããŸããURDF/SRDFã»MJCFã»USDã»SDFã»Genesisçšèšå®ã®å¯Ÿå¿ã¯ scripts/validate_collision_package.py ã§æ§é æ€æ»ã§ããŸããUSD/Isaac SimãšGazeboæ¬äœã§ã®åäœæ€èšŒã¯å¥ã§ããä¿®æ£åã®ããã±ãŒãžã¯å€éšãã©ã«ããŒã® old_no_use/for_sim_collision_before_20261021.zip ã«æ®ããããããã®URDFã»ã¡ãã·ã¥æ¬äœã¯Sim-Agentã®Gitã«å«ããŸããã
ç©çæ€èšŒã¯ uv run python scripts/verify_auto_gripper.py <robot-id> ã§å®è¡ããŸããæšæºã§ã¯å·Šå³Ãéåžžé
眮ã»ã©ã³ãã é
眮2åã®6ã±ãŒã¹ãå®è¡ãã--arm right --layouts 1 ã§å³ã ãã«ãçµããŸãã--seed ã§ã©ã³ãã é
眮ãåçŸã§ããŸããåäœæ€èšŒãšãã€ãã£ãå®è¡ã¯ãããã»ã¹éã®æææš©ããã¯ã§ãåæèµ·åãé²ããŸãã
Webã®ãé 眮ãå€ããŠåæåãã¯ãã·ãŒãæ¬ã空ãªãæ¯åæ°ããä¹±æ°ã·ãŒãã§æºäžã®äœçœ®ãéžã³ãŸãã OpenArmã®åºå®ã·ãŒããšå°ç¯å²ã®ããããã€ã³ããŒãããããã®éåžžäœçœ®åšèŸºÂ±3.5cmãžã®åãã倿ŽããŸããã OpenArmã¯å ¬åŒCellã®æºåœ¢ç¶ãããã€ã³ããŒãããããã¯é¢ç¯ãã§ãŒã³ã®é·ããšæºã®å¢çããåè£ç¯å²ãæ±ãã ç¯å²ãæ Œåã«åããŠååºç»ããä¹±æ°åè£ãäœããŸããååè£ã«IKãšå¹Ÿäœæ€æ»ãè¡ããŸããéåžžé 眮ãã4cm以äžé¢ãã ãã¥ãŒãéã¯10cm以äžé¢ããŸããåè£ãéããªããã°ãšã©ãŒãè¿ããåãéåžžé 眮ãžé»ã£ãŠæ»ãåŠçã¯ãããŸããã
ãè²ã®å·Šå³ãã·ã£ããã«ããONã«ãããšãèµ€ïŒå·ŠæåŽã»éïŒå³æåŽãšããæ åœãå ¥ãæ¿ããããŸãã å ã®ã峿ã§éãå·ŠæåŽã®èµ€ãžããšããæç€ºã®äœçœ®äŸåã ãã調ã¹ãå Žåã¯OFFã«ããŠãã ããã æãæå®ããªãææã¯ãç©äœãé 眮æã®äœçœ®ã«ããéãé çœ®æ€æ»ã§IKãéã£ãæãåªå ããŸãã ç©äœãç§»åãããããã®é 眮æã®ç¢ºèªæ å ±ã¯çŸåšã®å°éæ§ãšããŠäœ¿ããŸããã
䜿ã£ãã·ãŒããWebã«è¡šç€ºãããåãé
眮ãåçŸãã§ã·ãŒããšå·Šå³ã·ã£ããã«èšå®ãåå©çšã§ããŸãã
ã·ãŒãæ¬ãž0ã4294967295ã®æŽæ°ãå
¥åããæ¹æ³ããããŸããåãããããã»ã¢ãã«èšå®ã§ã®åçŸçšã§ãã
API㯠POST /api/scene/reset?randomize=true&seed=20261023&shuffle_sides=trueã
æç€ºãšåæã«å€ããå Žå㯠POST /api/tasks ã® randomizeã»seedã»shuffle_sides ãå©çšããŸãã
ä»ååºãã察象ã¯ãã¥ãŒãã®X/Yäœçœ®ãšè²ã»æ
åœè
ã®å¯Ÿå¿ã§ããåæ°ããµã€ãºãåæã®å転ã¯å€æŽããŸããã
ç¹°ãè¿ãæ€èšŒã§ã¯ãé 眮ã»IKã®åæ ŒãšãGenesisã§ã®ææã®æåãåããŠèšé²ããŸãã 倱æããææãæåæ±ãã«ã¯ãããã·ãŒããé 眮ã倱æå·¥çšãå®éã®ç©äœç¶æ ãJSONãžä¿åããŸãã
# Genesisãèµ·åããã24é
眮ã®IKã»å¹Ÿäœæ€æ»ãšååžãèšé²
uv run python scripts/verify_randomized_layouts.py --robot openarm_v2 --layouts 24 --json outputs/random-layouts.json
# 1ã€ã®Genesisã§4é
眮ãå®è¡ããåé
眮ã§1åãã€ç©çææã確èª
uv run python scripts/verify_randomized_layouts.py --robot scorpion-b01c5dce63 --physics --grasp --layouts 4 --json outputs/random-physics.json2026-10-23ã®æ€èšŒã§ã¯ãOpenArmã»Scorpionãšã24/24é
眮ã®IKã»å¹Ÿäœæ€æ»ã«åæ ŒããŸããã
éããã¥ãŒãã®äžå¿äœçœ®ã®æå€§âæå°ã¯ãå·Šå³å
¥æ¿ãå«ããŠOpenArmãXçŽ41cmã»YçŽ76cmãScorpionãXçŽ30cmã»YçŽ80cmã§ãã
åãæ
åœè
å
ã§éèšããŠããOpenArmã¯XçŽ36ã42cmã»YçŽ28ã31cmãScorpionã¯XçŽ29cmã»YçŽ21ã22cmã®èŠ³æž¬å¹
ããããŸããã
é
眮ååž ã¯ç§æã¢ãã«ã®IKã»å¹Ÿäœæ€æ»ã®çµæã§ãç©çææã®æåçã衚ãå³ã§ã¯ãããŸããã
Genesisã§ã¯åãããã4é
眮ãã¹ãŠãæºäžã§éæ¢ããåæã®ããããæ¥è§Šããªãããšã確èªããŸããã
äžæ¹ãåé
眮1åã®ææã¯ãããã2/4æåã§ãæ¥è¿äžã®ç©äœæŒãåºãã»ç§»åã®æªéã»æã¡äžãçµè·¯ã®å€±æãæ®ã£ãŠããŸãã
outputs/openarm_random_workspace_physics.jsonãoutputs/scorpion_random_workspace_physics.json ã«å€±æãå«ããŠä¿åããŠããŸãã
éåžžã®ãã€ãã£ãçµè·¯ã§ã4åã®é
çœ®å€æŽãæåããåãã·ãŒãã®åå®è¡ã§èšå®åº§æšãšä»åã®éæ¢åŸã®åº§æšãäžèŽããŸããã
outputs/native_randomization_validation.json ããã®èšé²ã§ãã
ã¢ãŒã ã®ç©ççãªç§»åæé㯠OPENARM_MOTION_SPEED ã§æå®ããŸãïŒæšæº6ïŒã
ã€ã³ããŒãããããã¯ãçµç±ç¹ã®æ°ã«å¿ããåŸ
ã¡æéã远å ãããé¢ç¯éåºŠãšæå
ã®é床ã»å é床ã«åãããŠäžæ¬ã®è»éã«æéãå²ãåœãŠãŸããæ²ããã®ãã€ãéšåã¯ãã®åºéã§æžéããå
šåºéãåãé
ãé床ã«ã¯ããŸããã以äžã®æ¢åæ¯èŒã¯å
¬åŒOpenArm v2ã®å®è¡èšé²ã§ãã
ã€ã³ããŒãçšã®æ¢å®æå
äžéã¯äžŠé²0.5m/sã»å é床3m/s²ãå転4rad/sã»å é床24rad/s²ã§ãã
URDFãŸãã¯æç€ºãããã¢ãŒã¿ãŒäžéãåæã«å®ããŸããä¿æç©ãå«ããè¡çªæ€æ»ãéãå Žåã¯é¢ç¯çµè·¯ãççž®ãã
åé·ãªæéŠã»èã®é åããæžãããŸããç©äœãµã€ãºã«å¿ããç©çå»ã¿ïŒæå€§5msã2ãµãã¹ãããïŒã䜿ãã
æå
ã®æ¥è§Šåã»ç©äœã®è¿œåŸã»ç¬ç«ä¿æã®å€å®ãæ®ããŸããæ¥è§Šç¹ãšå
ã¡ãã·ã¥ã®è·é¢å€å®ã¯ãæåã®ææã
å³ããæ¡ä»¶ã§ç¢ºèªããåŸã ãå°ããªæ°å€çãã¹ããªã·ã¹ãèš±ããæ¥è§Šåã®åªå€±ãéæŸã§è§£é€ããŸãã
è©³çŽ°ãªæ°å€ã¯çæãããã¡ã€ã«ã® control_policy ã«èšé²ããŸãã
åãã«è¡ãæ¥è¿åäœãšãæŽãã§AâBãžéã¶åäœã§ãéäžã®ç¹ããšã®åæ¢ããªãããäœçœ®ãšé床ãé£ç¶ããè»éã远åŸãããŸãã
Genesisã®äœçœ®ïŒé床PDå¶åŸ¡ã䜿ããé¢ç¯æ
£æ§ã«å¿ããæžè¡°ãèšå®ããŸããå
¬åŒã¢ãã«ã®é¢ç¯å¶éãã¢ãŒã¿ãŒã®åäžéã
æã®ã¢ãŒã¿ãŒèšå®ã¯ç¶æããŸããææã¯äž¡æã®ç©çæ¥è§Šãšæã¡äžã远åŸã§ç¢ºèªããŸãã
衚瀺ãçåã«ä¿ã£ãŠãã¢ãŒã ã®ç§»åãã®ãã®ã6åèšå®ã«ããäŸã§ãã
OPENARM_MOTION_SPEED=6 OPENARM_SIM_SPEED=1 ./run_genesis_gui.sh衚瀺ã®åçãåºå®ãã宿ž¬ïŒGenesis CPUãã·ãã¥ã¬ãŒã·ã§ã³æéïŒã§ã¯ãåãåæäœçœ®ãšç®æšã«å¯ŸããŠã
ãã¥ãŒããžã®æ¥è¿ã3.326ç§â0.600ç§ïŒ5.54åïŒãææãããã¥ãŒãã®12cm鿬ã2.902ç§â0.520ç§ïŒ5.58åïŒã§ããã
æãéããŠæã¡äžããæææ€èšŒã¯1.248ç§â0.541ç§ïŒ2.31åïŒã§ãæã®ç©çå¿çãšæ¥è§Šç¢ºèªãå«ã¿ãŸãã
èšé²ã¯ outputs/arm_motion_cubes_baseline.json ãš outputs/arm_motion_cubes_verified.json ã§ãã
倿ŽåŸã®åæäœçœ®9éãã§ããäž¡æã®æ¥è§Šã»æã¡äžãã»éæ¬ã»è§£æŸã»éæ¢ã9/9æåããŸããã
æ¶²äœå
¥ãããã«ãããã€ãã£ããã¥ãŒã¢ãŒãçåã«ããŠæ€èšŒããŸãããæ¥è¿ã¯3.324ç§â0.570ç§ïŒ5.83åïŒã
æŽãã§æã¡äžããæ€èšŒã¯1.450ç§â0.584ç§ïŒ2.48åïŒãçŽç«ãããŸãŸåãžéã¶åäœã¯1.480ç§â0.480ç§ïŒ3.08åïŒã§ããã
鿬ã«ã¯çµç¹ã§ã®æºãã®åæãšæ³šãå£ã®è£æ£1åãå«ã¿ãŸãã鿬åŸã®äœçœ®èª€å·®ã¯çŽ1.66mmãäž¡æã®æ¥è§Šãä¿ã¡ã
45mLã»3,600ç²åãä¿åããŸããã50msããšã®æ¡åãšçµç¹ã§ã®èŠ³æž¬ã§ã¯ãããŒãã»ç©ºäžåãšã0mLã§ããã
æ¯èŒå
ã¯ä»¥åã®å
šå·¥çšèšé² outputs/native_wine_surface_final.jsonãä»åã®èšé²ã¯ outputs/arm_motion_wine_verified.json ã§ãã
ããã¯åãäžããšçŽç«éæ¬ã®æ€èšŒã§ãåŸè¿°ããæ¶²äœéæ¬ã®é床ã»å é床æ¡ä»¶ãå ããåã®æ¯èŒã§ãã
uv run python scripts/verify_arm_motion.py --scene cubes --speed 1 --json outputs/arm_baseline.json
uv run python scripts/verify_arm_motion.py --scene cubes --speed 6 --baseline outputs/arm_baseline.json --json outputs/arm_fast.json
uv run python scripts/verify_arm_motion.py --scene wine --speed 6 --native --json outputs/arm_wine.jsonæ¶²äœã泚ãè§åºŠã»æµéã®å¶åŸ¡ãšãæããç¬éã®è§£æŸæå»ã¯ãæ€èšŒæžã¿ã®ç©çæéãšå¶åŸ¡å¿çã䜿ããŸãã ããã«ã®åãäžãã»çŽç«éæ¬ãšãæããåã®ç§»åã«ã¯é«éãªç§»åè»éã䜿ããŸãã èšå®å€ã¯æå®è»éã®ççž®åçã§ãããã¿ã¹ã¯å šäœã®å®æž¬åçã§ã¯ãããŸããã
æŽæ°ãããã€ãã£ãã¢ããªïŒè¡šç€ºçåã»ã¢ãŒã 6åèšå®ïŒã§ãã2åã®åãæž¡ããå«ãäŸã®æç€ºã
å
š14å·¥çšã»å詊è¡0åã§æåããå®è¡æéã¯21.64ç§ã§ãããå·Šå³ã®æãäžããèªç±é£è¡ãçŽ43.41mmïŒ41.53mmã
éçŽå é床ãçŽâ9.81m/sÂ²ã§æåããŸãããåäœéäžã®åæ¢åŸã¯é床æä»€ãè§£é€ãããªã»ããåŸã®ã·ãŒã³ã§åŸ
æ©ããŸãã
èšé²ã¯ outputs/native_arm_motion_verified.json ã§ãã
宿éã®èšç®ã»è¡šç€ºããŒã·ã³ã°ã¯å¥ã® OPENARM_SIM_SPEED ã§æå®ããŸãïŒæšæº1åïŒã
éåžžèµ·åã§ãã¢ãŒã 6åã»è¡šç€ºçåã§ããèšç®åŸ
ã¡ã®åæžã¯ç¶æããŠããŸãã
èµ·åæã« OPENARM_SIM_SPEED=4 ãŸã㯠8 ãæå®ããŠèª¿æŽã§ããŸãããã§ã«èµ·åããŠãããã¥ãŒã¢ãŒã«ã¯åèµ·ååŸã«åæ ããŸãã
OPENARM_SIM_SPEED=8 ./run_genesis_gui.shãã®å€ã¯ç»é¢ãšç©çèšç®ãé²ãã宿éã®ç®æšåçã§ããGenesisã®å»ã¿å¹ ãéåãã¢ãŒã¿ãŒã®åäžéã ææã»åãæž¡ãã»æãäžãã®ç©çæéãäžæ¬ã§çž®ããèšå®ã§ã¯ãããŸãããèšç®ã远ãã€ããªãå Žåã宿ž¬é床ã¯ç®æšåçãäžåããŸãã èšèªã¢ãã«ã®æšè«ãã·ãŒã³ååæ§ç¯ã®åŸ ã¡æéã«ããã®åçã¯æãããŸããã
å ±éã®éåè£åã¯ãGenesisããèªãã å®éã®é¢ç¯äœçœ®ãšå ¬åŒã¢ãã«ã®è³ªéã»éå¿ããèšç®ããŸãã CPUã§ããªã³ã¯ããšã®Jacobianèªã¿åºããç¹°ãè¿ãããå·Šå³ã®è£åå€ããŸãšããŠæŽæ°ããŸãã é¢ç¯å¶éãååã«èªã¿åããç§»åããšã®ç¡ç§»ååºéã®åŸ ã¡ãé€ããŸãããé¢ç¯çµè·¯ã®ã¢ãŒã¿ãŒæä»€ã¯æå€§4msééã§ããã ç©çèšç®ã¯å šã¹ããããå®è¡ããŸããæç€ºããæ³šãåäœã®æéãäž¡æã®æ¥è§Šãæã¡äžã远åŸãè§£æŸã»éæ¢ã®æ€èšŒã¯ç¶æããŠããŸãã
é床ã®å®æž¬ãšææã»é 眮ãåæã«ç¢ºèªããã«ã¯ã次ãå®è¡ããŸããååæ§ç¯ãšã«ãŒãã«ã³ã³ãã€ã«ãèšæž¬ããé€ãã å®éã®ãã€ãã£ããŠã£ã³ããŠã§å·Šå³9éãã®ææã»é çœ®ãæ€èšŒããŸãã
uv run python scripts/verify_execution_speed.py --native --all-positions --json outputs/execution_speed.jsonåãã³ãã³ãã§å€æŽåã«ä¿åããJSONãããã°ã--compare <倿Žåã®JSON>ã§åãè
ã»åæäœçœ®ã®å®æž¬åçãèšé²ã§ããŸãã
/api/scene ã® requested_realtime_factor ã¯èšå®ããç®æšå€ã§ããæž¬å®ããåçãšã¯åºå¥ããŠãã ããã
æšæºã©ã³ãã£ãŒã§ã¯ OPENARM_FAST_LANGUAGE=1 ãæå¹ã§ããå
šæãæ¢åã®ææ³ã§è§£éããçŸå Žã®ç©äœã»å·Šå³ã®æã«
çµã³ä»ããããæç€ºã¯ deterministic_fallback ãšæç€ºããŠå³åº§ã«å®è¡èšç»ãžå€æããŸãã
å
šæãè§£éã§ããªããã°ããããŸã§ã©ããOllamaãªã©ã®ã¢ãã«ã§è§£éã»æ€èšŒããŸãã
ã¢ãã«ã«ãè€æ°å·¥çšã確èªãããåŸæ¥ã®çµè·¯ã¯ OPENARM_FAST_LANGUAGE=0 ./run_genesis_gui.sh ã§éžã¹ãŸãã
ã¢ãã«ã䜿ããªãã£ãèšç»ã® model 㯠null ã§ãã
ã¢ãŒã è»éã®é«éååã«ãèšç®åŸ
ã¡ãšè¡šç€ºããŒã·ã³ã°ãæ¹åãããšãã®ãã€ãã£ãææã»é
çœ®ã®æ¯èŒã§ã¯ãå·Šã16.1ç§â3.72ç§ïŒ4.33åïŒã
å³ã15.0ç§â3.36ç§ïŒ4.46åïŒã§ãããå·Šå³9åæäœçœ®ãã¹ãŠã§ãäž¡æã®æ¥è§Šã»æã¡äžã远åŸã»è§£æŸã»éæ¢ã確èªããŸããã
èšé²ã¯ outputs/speed_before.json ãš outputs/execution_speed_verified.json ã§ãã
2åã®çŽæ¥åãæž¡ããå«ã14å·¥çšããåäœæé27.79ç§ãå詊è¡0åãé
眮誀差ã¯å·Šå³ãšãçŽ3.60mmã§æåããŸããã
ãã®å®åæã®èšç»å€æã¯çŽ0.003ç§ã§ãããå®åæã§è§£éã§ããªã take the azure one please ã¯Ollamaãžæž¡ãã
çŽ6.06ç§ã§è§£éããéããã¥ãŒããç©ççã«ææããŸãããèšé²ã¯ outputs/native_speed_fast_language.json ã§ãã
å·Šå³ã®æãäžãã¯åäœæé3.30ç§ïŒ3.55ç§ã§ãèªç±äžæã¯çŽ43.95mmïŒ41.39mmãå é床ã¯çŽâ9.81m/s²ã§ããã
ãããã®åäœæéã¯èšèªã¢ãã«ã®è§£éãå«ã¿ãŸããã
æµäœèšç®èªäœã®4ã8åé«éåã¯æªéã§ãã åãæ¶²äœã®CPU䞊ååãå¥ã®å§åè§£æ³ãç²ãè§£å床ã é£æå¯Ÿè±¡ä»¥å€ã®åœ¢ç¶ã®åŠççç¥ã蚺æããŸããããé床ãŸãã¯éæ¢æã®å®å®æ§ã®æ¡ä»¶ãæºããæ¹åã«ã¯è³ããã æšæºèšå®ã«ã¯æ¡çšããŠããŸãããçŸè¡ã®2.5mmã»32ãµãã¹ããããä¿ã£ãŠããŸãã
峿ã§éããã¥ãŒããæŽãã§
ãããå·Šæã«æž¡ããŠå·ŠåŽã«çœ®ã
éããã€ãå³ã§æŸã£ãŠã空ããŠãã»ãã®æã«ãã¹ããŠããã£ã¡ã®ç«¯ã«çœ®ããšããŠã
ãã®ããšèµ€ãæ¹ãå·Šã§ã€ãŸãã§å³ã«åãåã£ãŠããã£ãŠå³åŽã«çœ®ããšããŠ
Pick the blue cube with the right hand, then pass it to the left hand,
then place it on the left side.
èµ€ãéããŸãŒã³ã«çœ®ããŠãéãç·ã®ãŸãŒã³ã«çœ®ããŠ
å³ã¢ãŒã ãå³ã«10cmåãããŠ
ã°ãªãããŒãéããŠãã ãã
峿ã§éããã¥ãŒããåã£ãŠå·Šæã«æž¡ããŠå·ŠåŽã®èµ€ããã¥ãŒãã®äžã«ä¹ããŠ
éããã€ãå³ã§æŸã£ãŠã空ããŠãå·Šã«ãã¹ããŠããèµ€ãç®±ãåå°ã«ããŠãã®äžã«ã¡ããããšä¹ã£ããŠ
Put blue on top of red. Leave red where it is.
Put the red cube next to the blue one, on its left.
峿ã§éããã¥ãŒããäžã«æããŠ
éããã€ãå³ã®æã§ã²ããã£ãšäžã«æŸã£ãŠ
ã¯ã€ã³ãã°ã©ã¹ã«20ml泚ãã§
èµ€ã¯ã€ã³ã10mlãããã®ã°ã©ã¹ã«ãé¡ããçµãã£ããããã«ãæ»ããŠãããŠ
Pour 10 ml of wine into the glass
ãåããã ããªãä¿æããŸããã眮ãããŸã§æå®ããå Žåã¯è§£æŸãšå®å®ã確èªããŸãã æãçç¥ããå Žåã¯çŸåšã®ä¿æãé 眮æã®IK確èªãå©çšå¯èœãªã°ãªãããŒãšå®æž¬äœçœ®ããéžã³ãŸããçžå¯Ÿé 眮ã§ã¯åç §ç©ã®åŽã®æãéžã¶å ŽåããããŸãã 眮ãå Žæãçç¥ããå Žåã¯ä¿æããŠããæã®åŽã«çœ®ãããã®è§£éãç»é¢ã«è¡šç€ºããŸãã ããããã¯æç€ºå ã®çŽåã®ç©äœãç¶ãæç€ºã§ã¯çŽåã«æ±ã£ãç©äœãåç §ããŸãã ã·ãŒã³ã®åæåã§åç §å±¥æŽãåæåããŸãã
ãèµ€ã®äžãã¯èµ€ããã¥ãŒããå°ã«ããç©ã¿éãã§ãããå·ŠåŽãã®æºé åãšã¯å¥ã«ã察象=red_cube, é¢ä¿=on ãä¿æããŸãã
äžã»å·Šã»å³ã»æåã»å¥¥ã»é£ãåä»ãã®åŒæ°ãšããŠLLMã«æž¡ããåŠå®ããè§Šãããã®æ¡ä»¶ãç¬ç«ã«ç
§åããŸãã
äŸã®ç©ã¿éãæç€ºã¯ãéãå³ã§åãâå·Šãžæž¡ãâèµ€ã®äžã«éã眮ããã®3ã€ã®æå³ã«ãªããŸãã
èµ€ãå¥éåãäžãããªã©ã®äœåãªæäœãå«ãŸããã¢ãã«åçã¯æ¡çšããŸãããJSONã¹ããŒãã¯çæåœ¢åŒãšããã³ããã®äž¡æ¹ã«æž¡ããŸãã
ç©ã¿éãã®å®è¡ã§ã¯Genesisã®è¡çªAABBãã眮ãäœçœ®ãèšç®ããæåŸã«æ¯ææ¥è§Šã»é¢ã®éãªãã»é«ãã»è§£æŸã»éæ¢ã枬ããŸãã
ç»é¢ã«ã¯è§£éããå šå·¥çšãå®è¡äžã®å·¥çšããããã€ããŒãæãæã£ãŠããç©äœã倱æçç±ãæçµç¶æ ã®å€å®ã衚瀺ãããŸãã 忢ã¯ãã¥ãŒåŸ ã¡ã®æç€ºãåãé€ããå®è¡äžã¯ç©çã®åã¹ãããéã§ã確èªããŸãã æµäœèšç®äžã®é·ãã°ãªãããŒåŸ ã¡ã§ããæ¥ç¶æŽæ°ãšåæ¢ç¢ºèªãç¶ç¶ããŸããéäžã®ç©äœããªã»ããããŠæåãäœãåŠçã¯ãããŸããã
ãã¥ãŒãã®æãäžãã§ã¯ãå®éã«æã§ä¿æããè ãäžåãã«å éããŠããæãéããŸãã è§£æŸåŸã®æ¥è§Šã®ãªãäžæãæé«ç¹ãé床å€åã Genesis ããèšæž¬ããŸããæ¢å®ã®èŠæ±ã¯ãè§£æŸç¹ãã3cm以äžã®äžæãã§ãã ç©äœãžã®åéã®æžã蟌ã¿ã¯è¡ããŸããã
ã¯ã€ã³ã®æç€ºãéããšãåãå
¬åŒ OpenArm ã䜿ãã¯ã€ã³çšã·ãŒã³ãžåãæ¿ããŸãã
ããã«å
ã«ã¯45mLçžåœã®èµ€ã SPH æµäœããããå·Šæã§ããã«ãææããŠæ³šããæµããæ¢ããŠããå
ã®å Žæãžç«ãŠãŠæ»ããŸãã
åãåŽã®ã°ã©ã¹ã¯äœæ¥å°ã«åºå®ããŠããŸããã°ã©ã¹å
ã»ããã«å
ã»ç©ºäžã»ããŒããæ¶²äœãç²åããèšæž¬ããŸãã
å®äºæã«ã¯ç©ºäžåã0ã§ããããšãèŠæ±ããããŒãã¯æ¢ååãå«ãåèšã§è¡šç€ºããŸãã
0.0125mLã®1ç²åã衚瀺ããå°ããªããŒããã0.0mLãã«äžžããŸããã
æ¢å®ã¯20mLã5â35mLã®åäœä»ãæå®ãåãä»ããŸããéã®å€å®èš±å®¹å·®ã¯ max(3mL, æå®éã®25%)ã
ããŒãã®äžéã¯ãææã»éæ¬äžãå«ããŠ0.1mLã§ããç²åéé2.5mmã»3,600ç²åã§èšç®ãã宿©ã®èšé粟床ã衚ããã®ã§ã¯ãããŸããã
äœç©ã¯Genesisã®å®éã®SPHç²åäœç©ïŒééã®3ä¹ã®0.8åïŒã§æç®ããæµäœã®é£æã¯ããã«ã»ã°ã©ã¹ã»äœæ¥å°ã察象ã«ããŠããŸãã
ã·ãŒã³åãæ¿ãã¯æã空ã®å Žåã«è¡ããç©äœã®åæäœçœ®ãšåç
§å±¥æŽãåæåããŸãã
ã¯ã€ã³çšã·ãŒã³ã®æºåäžã¯ç»é¢ã«è¡šç€ºããŸããMacã§ã¯å©çšå¯èœãªãMetalãCUDAç°å¢ã§ã¯GPUã䜿ãã
GENESIS_USE_GPU=0 ã§CPUãæç€ºã§ããŸããååã¯ã«ãŒãã«ã®ã³ã³ãã€ã«ããããæµäœãå«ãåäœã¯åäœãã¥ãŒãããèšç®ã«æéãããããŸãã
ç¡æã®ããã«ã»ã°ã©ã¹ã¯ Innerscene ã® CC0 ã¢ãã«ã§ãã ãªãªãžãã« GLBãå ¥æå ãSHA-256ãåçæã¹ã¯ãªããã忢±ããŸããæ ãå€ãã衚瀺圢ç¶ãšã å åŽã空æŽã®è¡çªåœ¢ç¶ãžå å·¥ããŠããŸããåé åžã»æ¹å€ã»åçšå©çšãå¯èœãªçŽ æã䜿çšããŠããŸãã 衚瀺çšã¡ãã·ã¥ãšèšç®çšã¡ãã·ã¥ãåããéæãªå®¹åšã®é¢ãéãªã£ãŠäžè§æš¡æ§ã«ãªãåé¡ãä¿®æ£ããŠããŸãã èµ€ãæµäœã¯SPHç²åããæ»ãããªè¡šé¢ãåæ§æããŠè¡šç€ºããŸããèšç®ç¹ãçãšããŠäžŠã¹ã衚瀺ã¯äœ¿çšããŸããã éæãªå®¹åšã¯ã©ã¹ã¿ãŒæç»ã§ããå åŠçãªå±æã¯æ±ããŸããã SPHã®ç²åééã»ç²æ§ä¿æ°ã»å éšæéå»ã¿ã¯é£åããŠèšå®ããGenesisã®ç²æ§å®å®æ¡ä»¶ãè¶ ããèšå®ã¯èµ·åæã«æåŠããŸãã æµäœçšã®2msã¹ãããã¯32åå²ããŠèšç®ããŸããåºå®å®¹åšã®è©Šéšã«å ããåãããã«ãå°ã«çœ®ããç¶æ ã§ãæ¶²äœã®éæ¢ãæ€æ»ããŸãã æ³šãå£ã¯ã°ã©ã¹ã®çžãã18mmäžãžåããããã«ã®éŠãšã°ã©ã¹ã®å£ã亀差ããªãããšã幟äœåœ¢ç¶ããæ€æ»ããŸãã
泚ãå§ãã®2ã106床ã®åŸæã¯ã53åã®å§¿å¢ãéã1æ¬ã®é£ç¶è»éã«ããŠããŸãã è§åºŠããšã®åæ¢ãšæ³šãå£è£æ£ãç¹°ãè¿ãããå®éã®ææäœçœ®ããããã«ãšæéŠã®é¢ä¿ãèšç®ããŠè¿œåŸããŸãã æµãå§ããåŸã®éã®èª¿æŽãšéããåäœã¯ãç²åã芳枬ããªããå¶åŸ¡ããŸããæµäœã®èšå®ãéåã¯å€ããŠããŸããã ç§»åäžã20msééã§äž¡æã®ä¿æãšå®¹åšéã®ééãæ€æ»ããŸãã çŽç«ããæ¶²äœå ¥ãããã«ã®éæ¬ã¯ãè»éã®æå€§é床0.65m/sã»æå€§å é床4m/s²ã«åºã¥ãæçæéãå®ããŸãã çãæå®æéãäžåŸ6åã®1ã«ããŠããã«ãæ»ãããããšãé¿ããæ³šãå£ã®åŸ®ä¿®æ£ãç©çæé0.12ç§ã§è¡ããŸãã
uv run pytest -q
uv run python scripts/measure_grasp_geometry.py --check
# ãŠãŒã¶ãŒã®äŸããå®åæã³ã³ãã€ã©ãŒããå®éã®ç©çå®è¡ãŸã§æ€èšŒ
uv run python scripts/verify_language_tasks.py --case example
# åãäŸã®åæäœçœ®ã倿Ž
uv run python scripts/verify_language_tasks.py --case example --randomize
# ããŒã«ã«ã¢ãã«ã§æ¥è±ã»èšãæãã»è€æ°æç€ºãå®éã«å®è¡
uv run python scripts/verify_language_tasks.py --case all --provider local
# æãäžããšSPHæµäœã®æ³šå
¥ããåãå®è¡çµè·¯ã§èšæž¬
uv run python scripts/verify_dynamic_tasks.py --case all
uv run python scripts/verify_dynamic_tasks.py --case pour_10 --record --json outputs/wine_task_recording.json
# æµäœã ãã®éæ¢ã»æµãã»ããŒããæ€èšŒïŒããããææã®æ€èšŒãšã¯å¥ïŒ
uv run python scripts/verify_wine_fluid.py --record
uv run python scripts/verify_wine_fluid.py --free-hold-only --json outputs/wine_free_hold.json
# CC0ãªãªãžãã«ãã圢ç¶ãåçæïŒæ¢åãã¡ã€ã«ã¯SHA-256ãç
§åïŒ
uv run python scripts/prepare_wine_assets.py
# æ¢åã®ãåæäœçœ®9éãã®ææã»é
眮ãã§ãã¯
uv run python scripts/verify_pick_place_genesis.pyoutputs/language_tasks_local.jsonãoutputs/language_tasks_fallback.json ãªã©ã«ã
è§£éããäœæ¥åãååäœã®èšæž¬å€ãäž¡æã®æ¥è§Šãåãæž¡ãåŸã®æã¡äžããæçµé
眮ã®èª€å·®ãä¿åããŸãã
ãããã® JSON 㯠Git 管çå€ã§ããæ€èšŒã¹ã¯ãªããã¯ãèŠæ±ãããæ°ã®å®éã®åãæž¡ããšå
šç®æšã®ç¢ºèªãæã£ãå Žåã ãçµäºã³ãŒã0ãè¿ããŸãã
uv run pytest -q: 153ä»¶æåïŒ2026-10-23ã25.81ç§ïŒãIKã®èšç®åé¢ãèšèªè§£éã»åŠå®ã»çžå¯Ÿé 眮ãOpenArmã®ç©ççãªåãæž¡ããšç©ã¿éããURDFè§£æã»mimic Jacobianãééäžãšä¿æéå£å¹ ã§ã®ãªããå¯åŠãè¡çªãé¿ããå¯å°éé 眮ãã¢ãŒã¿ãŒèšå®ã屿çãªè»éæéé åãä¿æç©ã®è¡çªãæ¥è§Šããã®éé¿ãæ¥è§Šå±¥æŽã®è§£é€ãæååè£ã®èšå®å€æŽæã®ç¡å¹åãé 眮ã®ååžã»ã·ãŒãåçŸã»è²ãšæã®å ¥æ¿ãAPIãšæ¢ååäœã®ååž°ã確èªãåºãã©ã³ãã é 眮ã§ã®ç©çææã®çµæã¯ãäžã®ç¯ã«å¥èšããŠããŸãã- Scorpionã®å
ã®æç€ºã峿ã§éããã¥ãŒããåã£ãŠå·Šæã«æž¡ããŠå·ŠåŽã®èµ€ããã¥ãŒãã®äžã«ä¹ããŠãã¯ãéåºŠå€æŽåã®ãããã¡ã€ã«12ã§å
š7ã¹ãã«ãšæçµå€å®ãæåããå®è¡196.43ç§ã
outputs/robots/scorpion-b01c5dce63/fresh_sequence_validation.jsonãæ¯èŒå ã§ãã - åãæç€ºã»éåžžåæé 眮ããããã¡ã€ã«14ãSTS3215-C001/7.4Vã§æ°ããããã»ã¹ããå®è¡ããå š7ã¹ãã«ãšæçµå€å®ãæåãååæ¢çŽ¢ã¯88.26ç§ãæåãã幟äœåè£ã®åå©çšæã¯57.20ç§ïŒååã·ãŒã³æ§ç¯ãé€ãããã®Macã§ã®å®æéïŒãåãæž¡ãäœçœ®ãŸã§ã®å³æã®éæ¬ã¯çŽ16.99â5.06ç§ãåãæã®æ¥è¿ã¯çŽ11.44â3.84ç§ã§ãããå šåäœãäžåŸ4ã8åã«ãªã£ããšããçµæã§ã¯ãããŸããã
- åå©çšæã®åãæåç¬ã®ç¢ºèªãªãã28.46mmã300msä¿æã®15芳枬ãã¹ãŠäž¡ææ¥è§Šã»ä»ã®æ¯æãªããæçµã®äžå¿ãã3.29mmãæ¯ææ¥è§Šã»è§£æŸã»éæ¢ãããèµ€ã®ç§»å0.037mmã4,001ç©çã¹ãããäžã®20mséé1,000åã®èªå·±æ¥è§ŠèŠ³æž¬ã§æå€§è²«éæ€åº0mmãæä»€é¢ç¯é床ã®ããŒã¯ã¯5.18rad/s以å
ã§ããã
outputs/robots/scorpion-b01c5dce63/fast_sequence_validation.jsonãšwarm_sequence_validation.jsonã«ä¿åã宿ž¬ããæçµã·ãŒã³ãæ¢ç¥ã®æã®è§£éã¯æç€ºããdeterministic_fallbackã§ãLLMã®èšèªæ±åã蚌æããèšé²ã§ã¯ãããŸãããåå®è¡ã¯uv run python scripts/verify_imported_sequence.py <robot-id> --json outputs/sequence_validation.json --image outputs/sequence-final.pngã - éåžžã®
./run_genesis_gui.sh --robot scorpion-b01c5dce63 --onceã§ããåãWeb APIã®POST /api/tasksããæç€ºãéãããã€ãã£ã衚瀺ããã§å š7ã¹ãã«ã»æçµå€å®ãæåïŒå詊è¡0ãå®è¡80.22ç§ãæ§ç¯æéãé€ãïŒãåãæãªãã28.43mmãç¬ç«ä¿æ300msãäžå¿ãã3.54mmãèµ€ã®ç§»å0.081mmãoutputs/native_fast_stack_validation.jsonã«ä¿åãçµäºåŸã¯ãã¥ãŒã¢ãŒã»æ€èšŒããã»ã¹ãšææããã¯ãæ®ã£ãŠããªãããšã確èªããŸããã - ãŠãŒã¶ãŒã®ç©ã¿éãæç€ºã¯ãå®Ollamaãã3å·¥çšãšããŠè§£éããAPIâãã€ãã£ãGenesisã®å
š7ã¹ãã«ãå詊è¡0åã»10.51ç§ã§æåãéã®äžå¿ãã0.373mmãæ¯æé¢ã®éãªã99.37%ãæ¯ææ¥è§Šã»è§£æŸã»éæ¢ãããèµ€ã®ç§»å0.040mmã
outputs/robot_switch_verified.jsonã«ä¿åã - å£èªã»æ¥è±ã»åŠå®ã»ç©äœéã®äœçœ®é¢ä¿ãå«ã8äŸã®èšç»ãæåŸ
ããå
容ã«ãªããŸãããå®Ollamaã®åçæ¡çšã5äŸãæ€èšŒåŸã«æç€ºããå®åæãã©ãŒã«ããã¯ã§è£æ£ãããã®ã3äŸã§ãã
outputs/spatial_language_verified.jsonã«ä¿åãããã¯èšç»è§£éã®æ€èšŒã§ãã - ä¿®æ£åŸã®ScorpionïŒ17ãªã³ã¯ã»16DOFã»2,029è¡çªåœ¢ç¶ããããã¡ã€ã«11ïŒã§ãå·Šå³Ãéåžžé
眮ã»ã©ã³ãã é
眮2åã®6ã±ãŒã¹ãå
š36ã¹ãã«ãæåãæå
ã®äž¡åŽæ¥è§Šã»æ¥è§Šåã30mm確èªãªãããžã®28.86ã29.08mmã®è¿œåŸã300msã®ç©ºäžä¿æã鿬ãè§£æŸãéé¿åŸã®æºã®æ¯æã»éæ¢ã確èªãé
眮誀差ã¯0.51ã0.77mmãéé¿æã®æå€§ç§»åã¯0.156mmã§ããã47,815åã®ç©çã¹ããã芳枬ã§èªå·±è¡çªã®è²«éæ€åºã¯0mmã
outputs/robots/scorpion-b01c5dce63/six_case_grasp_validation.jsonã«ä¿åãå®è¡äžã®å³æã®ææããã®èšé²ã¯ææãšæºäžé çœ®ã®æ€èšŒã§ãScorpionã®åãæž¡ãæåã瀺ããã®ã§ã¯ãããŸããã - è¡çªåœ¢ç¶ä¿®æ£åã®Scorpionã®ææèšé²ã¯ãå·ŠåŽã®è¡çªã¡ãã·ã¥ã®ãããšé£æ¥ãªã³ã¯ã®è¡çªé€å€ããã£ããããçŸåšã®ã¢ãã«ã®æåèšé²ãšããŠã¯äœ¿ããŸããã
- è¡çªä¿®æ£åã®ãã€ãã£ãèªã¿èŸŒã¿èšé²ïŒScorpionã®17ãªã³ã¯ã»16DOFã»370è¡çªåœ¢ç¶ãOpenArm Cellãªãã確èªãéåžžé
眮ãšã©ã³ãã é
眮2åã§ãèœã¡çããç©äœäœçœ®ãIKãéããŸãããå·Šå³1cmäžæã®å°é誀差ã¯1.07mmïŒ1.03mmãé¢ç¯éåºŠã®æä»€ã¯å
ã®URDFäžé以å
ã§ããã
outputs/robots/scorpion-77bd0313b2/runtime_validation.jsonã«ä¿åãçŸåšã®2,029圢ç¶ã®ç©çæ€èšŒçµæãšã¯åºå¥ããŸãã - WebãšåãAPIã§Scorpionãžã®åãæ¿ãâé¢ç¯è§æå®âæå ç§»åâã©ã³ãã åæåâOpenArm埩垰ã確èªãå®éã®ãã€ãã£ãç»é¢ãWebãã¿ã³ã®ãã©ãŠã¶ãŒèªåæäœã¯æªç¢ºèªã§ãã
- çŸè¡ã®é£ç¶åŸæãšéæ¬æ¡ä»¶ã§ãOpenArmã®20mL泚å
¥âçœ®ãæ»ãâè§£æŸãŸã§æåã宿ž¬20.0875mLãããŒã0.0500mLïŒ4ç²ååïŒãå®äºæã®ç©ºäžå0mLã3,600ç²åã»45mLãä¿åããããã«ã¯å
ã®äœçœ®ãã2.46mmã§çŽç«ã»éæ¢ã
outputs/wine_smooth_verified.jsonã«ä¿åãScorpionã®ã¯ã€ã³æ³šãã¯å¯Ÿè±¡å€ã§ãã - é£ç¶åŸæã¯53å§¿å¢ã»å®æž¬3.68ç§ã20mséé170ç¹ã®èšé²ã§è§åºŠã¯çŽ0.19â105.66床ã«é²ã¿ãæå€§ã®éæ»ãã¯çŽ0.031床ã§ããããã®åºéã®å®¹åšéã®ééã¯èŠ³æž¬æå°6.87mmãå šåäœçµç¹ã§ã®æå°ã¯3.62mmãå ã®äœçœ®ãžã®æ»ãç§»åã¯0.578ç§ã§ããã
- éåºŠå€æŽåã®ã¯ã€ã³åºæºèšé²ïŒåã2.5mmã»32ãµãã¹ãããïŒ: ãã€ãã£ãçµè·¯ã§20mLãæç€ºãã宿ž¬19.4875mLãããŒã0mLãå®äºæã®ç©ºäžå0mLã3,600ç²åã»45mLã®ä¿åãäž¡æã®æ¥è§Šãæã¡äžããè§£æŸãå ã®äœçœ®ã§ã®çŽç«ã»éæ¢ã確èªãããã«ã®æ»ã誀差ã¯çŽ1.44mmã
- ããã«ãšã°ã©ã¹ã®ååäœçµç¹ã§æž¬ã£ãééã¯æå°çŽ3.35mmãåºå®å®¹åšå士ã®è²«éã«äŸåããçµæã¯é€å€ããŠããŸãã
- å®äºåŸããã«1.31ç§ã®ã·ãã¥ã¬ãŒã·ã§ã³ãé²ããŠããæ¶²äœã®å èš³ãšããã«äœçœ®ã¯å€ããããããŒãã»ç©ºäžåãšã0mLã§ããã
- æŽæ°åŸã®ãã€ãã£ãçµè·¯ã§ãé·ãã°ãªãããŒåŸ ã¡äžã®åæ¢ãçŽ0.31ç§ã§ç¢ºèªã
- 远å ããæãäžã: å·Šå³ãšãäž¡æã®ææããè§£æŸåŸã®èªç±é£è¡ãŸã§æåãè§£æŸç¹ããã®äžæã¯å³43.87mmãå·Š41.37mmãéçŽå é床ã¯çŽâ9.81m/s²ã
- ããŒã«ã«ã¢ãã«æå¹æã®èšèªã¿ã¹ã¯: 7ã·ããªãªã»8æç€ºããã¹ãŠæåãçŽæ¥åãæž¡ã9åãå«ã¿ãŸãã
- äžèš8æç€ºã®ãã¡ã7æç€ºã¯
local_ollamaãåçŽãªãæŽãã§ãã®1æç€ºã¯æç€ºãããå®åæã³ã³ãã€ã©ãŒã§ãã - åæäœçœ®ã倿ŽããããŠãŒã¶ãŒã®2ååãæž¡ãã®äŸãæåã
- æ¢åã®åæäœçœ®9éãã®ææã»é 眮ã9/9æåããæ°Žå¹³èª€å·®ã¯2.4â2.8mmã
- IKãèšç®çšããŒã¿ãžåé¢ããåŸããWebãããã€ãã£ããã¥ãŒã¢ãŒãžéã£ãåãé·ãäŸãæåãå š14å·¥çšãå1åãå詊è¡0åã§å®äºããæçµé çœ®ã®æ°Žå¹³èª€å·®ã¯é3.55mmãèµ€3.57mmãå®è¡ã¯çŽ119ç§ã§ããã
ãããã¯ãã®ã·ãŒã³ã§å®è¡ããå
·äœçãªã±ãŒã¹ã®çµæã§ããä»»æã®æç€ºå
šè¬ã®æåçã瀺ããã®ã§ã¯ãããŸããã
çæããã outputs/validation_summary.jsonãoutputs/motion_replay_fix_validation.json ãšåå®è¡JSONã«ãå€å®ãšèšæž¬å€ãä¿åããŠããŸãã
æ€èšŒæã® ãã€ãã£ãç»é¢ ãš Webã®å®äºè¡šç€º ãä¿åããŠããŸãã
çŸè¡ã®ã¯ã€ã³å
šå·¥çšã¯ outputs/wine_smooth_verified.json 㚠泚å
¥ããçœ®ãæ»ããŸã§ã®é²ç» ã«ä¿åããŸããã
ã¿ã¹ã¯å®è¡æéã¯ãã®Macã§çŽ17å25ç§ïŒ1,044.59ç§ãååã·ãŒã³æ§ç¯ãé€ãïŒã§ãããé²ç»ã¯ã·ãã¥ã¬ãŒã·ã§ã³æéã§åçããŸãã
å®çšé床ã«ã¯èª²é¡ãæ®ããæµäœä»ãã®ãªã¢ã«ã¿ã€ã åäœã確èªããçµæã§ã¯ãããŸããã
以åã®ãã€ãã£ãåºæºèšé²ã¯ outputs/native_wine_surface_final.jsonãç
§åçµæã¯ outputs/native_wine_surface_audit.jsonã
åœæã®é²ç»ã§ãããã®å®è¡æéã¯çŽ51åïŒ3,085.5ç§ïŒã§ããã
åºå®å®¹åšã ãã®æµäœæ€èšŒã¯ outputs/wine_fluid_current_validation.jsonãCPU/Metalã®éæ¢èšºæã¯ outputs/wine_*_hold.json ã§ãã
outputs/dynamic_tasks.json ã«ã¯ä»¥åã®æµäœèšå®ã«ããã±ãŒã¹ãå«ãŸããŸãã
outputs/pour_final.jsonãoutputs/native_wine_pour_final.json ã¯ä»¥åã®4.5mmç²åã»ç·©ãããŒã蚱容å€ã§ã®çµæã§ãã
ãããã¯çŸåšã®2.5mmç²åã»0.1mLäžéã§ã®æåã®æ ¹æ ã«ã¯äœ¿çšããŸããã
ãã®Macã§ã¯æµäœä»ãã®åäœã¯å®æéããé
ãé²ã¿ãŸãã
- æšæºã®å ¬åŒOpenArm v2 Cellã§ã¯ããã¥ãŒãçšã·ãŒã³ãšã¯ã€ã³çšã·ãŒã³ãåãæ¿ããŠäœ¿çšããŸããã€ã³ããŒãURDFã¯æºã®å¥ã·ãŒã³ã§FK/IKãšé¢ç¯æäœãå©çšãã察åããé§åæãæ€åºãããå Žåã¯ç©çææã»éæ¬ã»åãæž¡ãã»çžå¯Ÿé 眮ã詊è¡ã§ããŸããå°éã»ææã»ã¿ã¹ã¯å®äºã¯åå¥ã®å®è¡ã§æ€èšŒããŸãã
- èšèªã¢ãã«ãå©çšããã°èšãæããæ±ããŸãããä»»æã®æ¥æ¬èªã»è±èªãåžžã«æ£ããè§£éããä¿èšŒã¯ãããŸããã
- ãã®ã·ãŒã³ã®å®è£ æžã¿æäœã®çµã¿åããã察象ã§ãããã¥ãŒã2åã®ç©ã¿éããšçžå¯Ÿé 眮ã¯å®è£ ããŠããŸãããç©ãã 2åãåæã«ææããŠæž¡ãæäœã¯æªå®è£ ã§ãã
- æªç»é²ç©äœã®ç»åèªèãæè»ç©ãæŠããªã©ã®ä»»æã®æ¥è§Šäœæ¥ãããã«ã®åãæž¡ããåæã«å¥ã ã®ç©äœã亀æããåäœã«ã¯å¯Ÿå¿ããŠããŸãããå®è¡å€±æåŸã®æ±çšLLMåèšç»ãåäœã³ãŒãã®èªååæãæªå®è£ ã§ãã
- ä»»æã®URDFã远å ããã°èªåã§å šäœæ¥ã«æåããç¶æ ã§ã¯ãããŸãããçŸåšã®èªåè§£æã¯åºå®ããŒã¹ã®ããªãŒãšæå€§2æ¬ã®æäœãã§ãŒã³ã察åããé§åæãäžå¿ã«ããŠããŸããæ€åºã§ããªãEEãç¹æ®ãªãã³ãã«ã¯è¿œå ã®è¡šçŸãšå¶åŸ¡ãå¿ èŠã§ãã
- åºãã©ã³ãã é 眮ã§ã¯ã2026-10-23ã®å4ã±ãŒã¹ã§ç©çææãOpenArmã»Scorpionãšã2/4æåã§ããã24/24ã®IKã»å¹Ÿäœæ€æ»åæ Œã¯ãç©çææãåŸç¶ã¿ã¹ã¯å šäœã®æåãæå³ããŸããããã¥ãŒãåæ°ã»ãµã€ãºã»å転ãã¯ã€ã³å®¹åšã®é 眮ã¯ãã®ã©ã³ãã åã®å¯Ÿè±¡å€ã§ãã
- åãæã®æãå¡ãã£ãŠããå Žåã¯ãå ã«çœ®ãæç€ºãå¿ èŠã§ããç®æšã«å¥ã®ãã¥ãŒããããå Žåããæå³ããç©ã¿éããããšãé¿ããŠåæ¢ããŸãã
- ç©çã®å€±æã¯çŸåšã®ç¶æ ãæ®ããŠå ±åããŸããéå®ããããŒãã«äžã®ææã®å詊è¡ã¯è¡ããŸãããã·ãŒã³ãéäžã§åæåããå埩ã¯è¡ããŸããã
- æºé åãžã®é 眮ãšç©äœäžã®ç©ã¿éãã¯å¥ã®æåæ¡ä»¶ã§ããåè ã¯æ°Žå¹³40mm以å ã»åçŽ50mm以å ãåŸè ã¯äžå¿ãã12mm以å ã»æ¯æé¢ã®éé4mmæªæºãªã©ãèŠæ±ããã©ã¡ããè§£æŸãšéæ¢ã確èªããŸãã蚱容å€ãšå®éã®èª€å·®ã¯åºå¥ããŠè¡šç€ºããŸãã
OpenArm ã®å
¬åŒã¢ãã«ããã€ã³ã¹ããŒã«æžã¿ openarm-mujoco ããåç
§ããŠæ·»ä»ããŸãã
æšæºããããã®å
ã¢ãã«ã¯ã³ããŒããåç
§ããŸããã€ã³ããŒãURDFããŠãŒã¶ãŒãæå®ããå
ã®ã¡ãã·ã¥ãåç
§ããŸãã
Genesis World ãç©çç¶æ
ã®å¯äžã®æ£ã§ãã
MuJoCo ã®ã³ã³ãã€ã©ãŒãšéååŠé¢æ°ã¯å
¬åŒ MJCF ã®ååãé¢ç¯ç¯å²ã圢ç¶ãåè£å§¿å¢ã®èªã¿åãã«äœ¿ããç©çå®è¡ã¯è¡ããŸããã
åãããžã§ã¯ãã® Apache-2.0 ã©ã€ã»ã³ã¹ã«åŸããŸãã