NVIDIA Isaac Sim: Dynamic Control Extension 사용
개요
Dynamic Control Extension을 사용하여 로봇을 실행합니다.
Issac Sim의 Extension 섹션에는 이러한 내용이 기재되어 있으며, 이 내용에 따라 진행된다.
운영 환경
specification
CPU
i9-11900H
GPU
GeForce RTX 3080 Laptop
RAM
32GB
OS
Ubuntu 20.04.3 LTS
절차.
Dynamic Control Extension은 객체의 확장을 제어하는 기능입니다.
확장 기능은 위치 제어, 속도 제어, 토크 제어 등 컨트롤러를 포함한다.
또한 축 단위의 제어, 위치 및 속도 값도 얻을 수 있습니다.
API의 Reference는 여기에 기재되어 있습니다.
이번에는 간단한 시위로 Script Editor의 집행과 2개의 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에 기재되어 있습니다.
방금 시작한 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"를 선택합니다.
선택하면 로봇이 이동하고 로봇의 관절 정보가 팝업 창에 표시됩니다.

Reference
이 문제에 관하여(NVIDIA Isaac Sim: Dynamic Control Extension 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/sotahi/articles/b11733e40cdc7d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)