오늘은 'create_empty.py' 스크립트에 대한 것을 배울것이다.
경로는 source/standalone/tutorials/00_sim 에 존재한다.
isaaclab 파일에 들어가 터미널을 연 후 가상환경을 설정한다.
$ python source/standalone/tutorials/00_sim/create_empty.py
# 명령줄 인터페이스를 쉽게 만들어주는 라이브러리
import argparse
# 시뮬레이션 환경을 시작하기 위한 라이브러리
from omni.isaac.lab.app import AppLauncher
# ArgumentParser 개체를 통해 명령줄을 통해 실행될때 스크립트에 전달된 인수를 처리
# dscription은 스크립트 기능에 대한 간략한 설명으로 --help를 요청하면 print됨
parser = argparse.ArgumentParser(description="Tutorial on creating an empty stage.")
# 필요한 명령줄 인수를 자동으로 추가
# Isaac Sim에는 다양한 설정 옵션을 가지고 있음(시뮬레이션, 해당도. GPU 사용 여부 등)
# 예를 들어 python your_script.py --resolution 1920 1080
AppLauncher.add_app_launcher_args(parser)
# parse_args() 함수는 스크립트 실행 시 수신된 명령줄 인수를 처리
# 해당 인수를 args_cli에 저장
args_cli = parser.parse_args()
# args_cli라는 인수를 받아서 isaac sim 실행
app_launcher = AppLauncher(args_cli)
simulation_app = app_launcher.app
"""Rest everything follows."""
# SimulationCfg : 시간 단계나 물리 속성과 같은 시뮬레이션 작동 방식 설정
# SimulationContext : 시뮬레이션 세계의 object와 상호 작용하기 위한 핵심 인터페이스
from omni.isaac.lab.sim import SimulationCfg, SimulationContext
def main():
"""Main function."""
# 시뮬레이션을 위한 구성 개체를 생성
# dt=0.01 은 시뮬레이션의 시간 단계를 지정. 즉 시뮬레이션 단계당 0.01초씩 진행된다는 의미
sim_cfg = SimulationCfg(dt=0.01)
# sim_cfg를 사용하여 실제 시뮬레이션 초기화
sim = SimulationContext(sim_cfg)
# set_camera_view : 시뮬레이션 카메라 위치와 방향을 설정
# 첫번째 인수 [2.5, 2.5, 2.5]는 3D공간 (x,y,z) 좌표에서 카메라 위치를 지정
# 두번쨰 인수 [0.0, 0.0, 0.0]카메라가 보고 있는 지점을 지정
sim.set_camera_view([2.5, 2.5, 2.5], [0.0, 0.0, 0.0])
# 시뮬레이션 환경을 초기 상태로 재설정
# 시뮬레이션 실행을 준비하여 이전 상태나 단계가 모두 지워지고 시뮬레이션 처음부터 시작할 준비가 되었는지 확인
sim.reset()
# Now we are ready!
print("[INFO]: Setup complete...")
# Isaac sim 애플리케이션이 활성화되어 있는 동안 계속 실행
while simulation_app.is_running():
# 위에 설정했듯이 (dt=0.01) 0.01초 만큼 시뮬레이션을 진행
# while문이니 0.01 프레임을 기준으로 계속 시뮬레이션 돌아감
sim.step()
if __name__ == "__main__":
# run the main function
main()
# 루프가 완료되면 에플리케이션이 꺼짐
# 마우스로 창을 끄거나 터미널에서 ctrl+c or ctrl+z
simulation_app.close()