NVIDIA Isaac Sim: Dynamic Control Extension 사용

개요


Dynamic Control Extension을 사용하여 로봇을 실행합니다.
Issac Sim의 Extension 섹션에는 이러한 내용이 기재되어 있으며, 이 내용에 따라 진행된다.
https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/ext_omni_isaac_dynamic_control.html#isaac-dynamic-control

운영 환경

  • 설치 실행 환경
  • unit
    specification
    CPU
    i9-11900H
    GPU
    GeForce RTX 3080 Laptop
    RAM
    32GB
    OS
    Ubuntu 20.04.3 LTS
  • Nvidia Driver 버전
  • 510.39.01
  • Issacsim 버전
  • 2021.2.1
  • 절차.


    Dynamic Control Extension은 객체의 확장을 제어하는 기능입니다.
    확장 기능은 위치 제어, 속도 제어, 토크 제어 등 컨트롤러를 포함한다.
    또한 축 단위의 제어, 위치 및 속도 값도 얻을 수 있습니다.
    API의 Reference는 여기에 기재되어 있습니다.
    https://docs.omniverse.nvidia.com/py/isaacsim/source/extensions/omni.isaac.dynamic_control/docs/index.html
    이번에는 간단한 시위로 Script Editor의 집행과 2개의 Example을 실행한다.
  • Script Editor에서 실행
  • Read Articalations Example
  • 실행
  • Joint Controller Example
  • 실행

    1. Script Editor에서 시작


    1.1 Omniverse에서 Issac Sim 시작



    1.2 로보트 탑재


    메뉴 표시줄의create > Isaac > Robots > From Library > Manipulators > Franka를 선택하십시오.

    로봇 읽기가 완료되면 오른쪽 도구 모음에서 Play 버튼을 선택하여 시뮬레이션을 시작합니다.

    1.3 Script Editor 시작


    메뉴 모음의 Window>Script Editor를 선택합니다.

    1.4 컨트롤러 증가


    이번에 스피드 컨트롤러 추가해서
    위치 제어 및 토크 제어의 예는 다음 URL에 기재되어 있습니다.
    https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/ext_omni_isaac_dynamic_control.html#code-snippets
    방금 시작한 Script Editor에 다음 코드를 추가합니다.
    Python3
    import omni
    omni.timeline.get_timeline_interface().play()
    
    from pxr import UsdPhysics
    stage = omni.usd.get_context().get_stage()
    for prim in stage.TraverseAll():
        prim_type = prim.GetTypeName()
        if prim_type in ["PhysicsRevoluteJoint" , "PhysicsPrismaticJoint"]:
            if prim_type == "PhysicsRevoluteJoint":
                drive = UsdPhysics.DriveAPI.Get(prim, "angular")
            else:
                drive = UsdPhysics.DriveAPI.Get(prim, "linear")
            drive.GetStiffnessAttr().Set(0)
    from omni.isaac.dynamic_control import _dynamic_control
    import numpy as np
    dc = _dynamic_control.acquire_dynamic_control_interface()
    #Note: getting the articulation has to happen after changing the drive stiffness
    articulation = dc.get_articulation("/Franka")
    dc.wake_up_articulation(articulation)
    joint_vels = [-np.random.rand(9)*10]
    dc.set_articulation_dof_velocity_targets(articulation, joint_vels)
    

    1.5 추가 컨트롤러로부터 로봇 이동


    script Editor 내에서 RUN을 선택하면 로봇이 동작합니다.

    2. Read Articalations Example 실행


    이 엑셀은 로봇의 각종 관절 정보를 얻을 수 있다.

    2.1 Example 로드


    메뉴 표시줄의 Isaac Examples Dynamic Control Read Artication을 선택합니다.


    2.2 로보트 탑재


    팝업 창에서 Load Robot 을 선택합니다.
    선택하면 로봇이 탑재됩니다.

    로봇 읽기 완료 후 오른쪽 도구 모음에서 Play 버튼을 선택하여 시뮬레이션을 시작합니다

    2.3 관절 정보 얻기


    팝업 창에서 "Get Artication Information"을 선택합니다.
    선택하면 로봇의 관절 정보가 팝업 창에 표시됩니다.

    3. Joint Controller Example 실행


    이 엑셀에서는 로봇을 돌리면서 로봇의 각종 관절 정보를 얻을 수 있다.

    3.1 Example 로드


    메뉴 표시줄의 Isaac Examples > Dynamic Control > Joint Controller를 선택합니다.


    3.2 로보트 탑재


    팝업 창에서 Load Robot 을 선택합니다.
    선택하면 로봇이 탑재됩니다.

    로봇 읽기 완료 후 오른쪽 도구 모음에서 Play 버튼을 선택하여 시뮬레이션을 시작합니다

    3.3 관절 정보 얻기


    팝업 창에서 "move"를 선택합니다.
    선택하면 로봇이 이동하고 로봇의 관절 정보가 팝업 창에 표시됩니다.

    좋은 웹페이지 즐겨찾기