RGB camera in Pybullet

About_non_work·2023년 4월 27일
0

풋살분석

목록 보기
1/2

글 1

  • https://medium.com/@chand.shelvin/sensors-in-pybullet-ac9b3c01460f
  • 임의의 카메라 위치에서 이미지를 렌더링하는 것은 내장 OpenGL GPU visualizer 로 PyBullet에서 쉽게 처리됩니다.
  • synthetic camera는 뷰 매트릭스와 프로젝션 매트릭스 두 개의 4x4 매트릭스로 지정됩니다.
    • 뷰 매트릭스(View Matrix)
      • 카메라의 위치와 방향을 기준으로 월드 좌표계에서 뷰 좌표계로 변환하는 4x4 행렬
      • 뷰 좌표계에서는 카메라가 원점에 위치하고, 카메라의 전방 방향이 -z축 방향이 되도록 정렬
    • 프로젝션 매트릭스(Projection Matrix)
      • 카메라의 시점과 원근감을 표현하기 위해 사용되는 4x4 행렬
      • 이 행렬은 월드 좌표계에서 뷰 좌표계로 변환된 좌표를
        • 다시 정규화된 디바이스 좌표계(Normalized Device Coordinate, NDC)로 변환하여 출력할 수 있도록 합니다.
        • 디바이스 좌표계는 x, y, z 값이 -1에서 1 사이인 정규화된 좌표계입니다.
      • 이를 통해 원근감을 렌더링하고, 카메라 시점에서 보이는 객체들을 정확하게 투영하여 출력할 수 있습니다.

글 1의 코드

  • 위 코드는 PyBullet 시뮬레이션 환경에서 카메라 이미지를 가져오고, 이를 Matplotlib를 사용하여 시각화하는 예시입니다.

  • 그리고 PyBullet에서 제공하는 로봇 시뮬레이션 환경(pybullet_data)을 추가 검색 경로에 추가합니다.

  • 다음으로, PyBullet GUI를 사용하기 위해 direct 변수를 선언하고, p.connect() 함수를 사용하여 PyBullet GUI와 연결합니다.

  • 이 때, 옵션으로 "--window_backend=2 --render_device=0"을 추가하여 OpenGL을 사용하도록 합니다.

  • 이후에는 PyBullet에서 제공하는 함수들을 사용하여,

    • 로봇과 다른 객체들을 생성하고,
    • 카메라 위치와 방향, 시야각, 너비, 높이, 깊이 등의 정보를 통해
      • 뷰 매트릭스와 프로젝션 매트릭스를 계산합니다.
  • 그리고 PyBullet의 getCameraImage() 함수를 사용하여 OpenGL 렌더러와 Tiny 렌더러에서의 이미지를 각각 가져와서 변수에 저장합니다.

  • 마지막으로, Matplotlib의 subplot() 함수를 사용하여 각 이미지를 시각화하고, imshow() 함수를 사용하여 이미지를 출력합니다.

profile
"짧은 주기의 피드백"과 "실수를 교정할 기회"

0개의 댓글

관련 채용 정보