Meta Quest 3 VR 컨νΈλ‘€λ¬λ‘ μ°μ μ© λ‘λ΄μ μ€μκ° μ격 μ‘°μ’ νλ XR μμ€ν μ체 IK μλ² + 4-μ€λ λ UDP μ€μκ° λΈλ¦Ώμ§
Unity VR μ±μμ μ체 ꡬνν IK μλ²λ‘ λ‘λ΄ κ΄μ μ κ³μ°νκ³ , Python UDP λΈλ¦Ώμ§λ₯Ό ν΅ν΄ μ€μ λ‘λ΄(myCobot 280)μ λͺ λ Ήμ μ λ¬νλ μμ€ν . μ΄ν Doosan A0912 μ°μ μ© λ‘λ΄μΌλ‘ νμ₯λμ΄ μμ€ν¬ μ μμ μ±κ³΅.
Unity C# Meta Quest 3 Python pymycobot UDP Socket IK (Jacobian) Burst/Job System
- Jacobian κΈ°λ° 6DOF IK μλ² β JointDef / JointLimit / JointType(Revolute/Prismatic)
- κ΄μ λ³ Weight Override β νΉμ κ΄μ μ μμ§μ λΉμ€ μ‘°μ
- External Feedback β λ‘λ΄ μΈ‘μ κ°(measured q)μ seedλ‘ μ£Όμ
- νκ² Rate Limit β μ΅λ μ μλ(m/s), κ°μλ(deg/s) μ ν
- κ΄μ μΆλ ₯ Smoothing β μ±κ³΅/μ€ν¨ μ λ³λ SmoothTime μ μ©
- SolveFlags β Success / UnreachablePos / Singularity / TooFast / Diverged λ± μν μΆμ
- IkMotion μμ€ν β λ Ήν(Recorder) β μ μ₯(Storage) β μ¬μ(Player) λͺ¨μ νμ΄νλΌμΈ
Unity CMD β UdpCmdReceiver β λͺ
λ Ή νμ±/κ²μ¦
β
RobotCommandSender β λ‘λ΄ μ μ΄
β
RobotStateReader β κ΄μ μν μ½κΈ°
β
UdpStateSender β Unityλ‘ STA ν¨ν· μ μ‘
- μ°μ κ΄μ λ±κ°κ° μ ν (
choose_limit_aware_equivalent) β νλμ¨μ΄ λ¦¬λ° λ΄μμ μ΅μ κ°λ μλ μ ν - Deadband / Resend Skip / Steady-state Suppression β λΆνμν λͺ λ Ή μ μ‘ λ°©μ§
- Resync λ‘μ§ β measured/last_sent λ리ννΈ κ°μ§ μ μλ μ¬λκΈ°ν
- λμ μλ κ³μ° β κ΄μ λ³μμ λ°λ₯Έ μλ μλ μ‘°μ
- νλμ¨μ΄ κ΄μ λ¦¬λ° ν΄λ¨ν β 6μΆ κ°λ μ ν
- κ΄μ λ¦¬λ° ν΄λ¨ν (6μΆ κ°λ³)
- μλΒ·κ°μλ μ ν
- νΉμ΄μ (Singularity) κ°μ§
- deg/rad νΌλ λ°©μ§ ν΄λ¦¬μ€ν±
| κ΅¬λΆ | λ§ν¬ |
|---|---|
| IK + Teaching VR λ‘λ΄ | YouTube Shorts |
| λ€μ€ λ‘λ΄ VR μ‘°μ | YouTube Shorts |
| IK + Damping 물리 | YouTube Shorts |
| TCP IK μΆμ λ‘λ΄ | YouTube Shorts |
| MetaArm (μ μ νλ‘μ νΈ) | darkhtk/MetaArm |
IK μλ², UDP λΈλ¦Ώμ§ μ 체λ₯Ό Claude Code ν λ°μ΄λΈ μ½λ©μΌλ‘ ꡬν. 10λ κ°μ λλ©μΈ μ§μμΌλ‘ AIμκ² μ νν κΈ°μ μ μ½Β·μν€ν μ²λ₯Ό μ λ¬νμ¬ μ°μ μ© μμ€μ μ½λλ₯Ό AI νμ λ§μΌλ‘ ꡬμΆ.