카메라 센서 설정
카메라 센서를 설정할 때, SDF에서 주로 사용되는 요소는 <sensor>
태그이며, type
속성으로 카메라를 명시할 수 있다. 기본적으로 SDF에서 카메라 센서는 3D 환경을 시뮬레이션하고 이미지 데이터를 생성하는 역할을 한다.
<sensor name="camera" type="camera">
<pose>0 0 0 0 0 0</pose> <!-- 카메라의 위치와 방향 -->
<camera>
<horizontal_fov>1.047</horizontal_fov> <!-- 수평 시야각 (라디안) -->
<image>
<width>800</width> <!-- 이미지의 가로 픽셀 수 -->
<height>600</height> <!-- 이미지의 세로 픽셀 수 -->
<format>R8G8B8</format> <!-- 이미지 형식 (RGB) -->
</image>
<clip>
<near>0.1</near> <!-- 근거리 절단면 -->
<far>100</far> <!-- 원거리 절단면 -->
</clip>
</camera>
<update_rate>30</update_rate> <!-- 카메라 업데이트 속도 (Hz) -->
</sensor>
카메라의 주요 파라미터는 pose
, horizontal_fov
, image
, 그리고 clip
이다. pose
는 카메라의 위치와 방향을 나타내며, 일반적으로 로봇의 특정 링크에 상대적으로 설정된다. horizontal_fov
는 카메라의 수평 시야각을 정의하며, 라디안 단위로 설정된다.
image
태그에서는 카메라가 생성하는 이미지의 해상도를 설정할 수 있으며, width
와 height
는 각각 가로와 세로 픽셀 수를 의미한다. 마지막으로 clip
에서는 카메라가 처리할 수 있는 근거리와 원거리 절단면을 설정할 수 있다. 근거리 절단면은 카메라의 가장 가까운 인식 범위, 원거리 절단면은 가장 먼 인식 범위를 뜻한다.
LIDAR 센서 설정
LIDAR 센서는 3D 환경에서 거리 데이터를 수집하는 역할을 한다. LIDAR는 각도와 범위 데이터를 수집하며, 주로 거리 측정 및 3D 맵 생성에 사용된다. SDF에서 LIDAR 센서를 설정하는 방법은 다음과 같다.
<sensor name="lidar" type="ray">
<pose>0 0 0 0 0 0</pose> <!-- LIDAR의 위치와 방향 -->
<ray>
<scan>
<horizontal>
<samples>1080</samples> <!-- 수평 방향 스캔 샘플 수 -->
<resolution>1</resolution> <!-- 해상도 -->
<min_angle>-1.57</min_angle> <!-- 최소 각도 (라디안) -->
<max_angle>1.57</max_angle> <!-- 최대 각도 (라디안) -->
</horizontal>
<vertical>
<samples>1</samples> <!-- 수직 방향 스캔 샘플 수 -->
<min_angle>0</min_angle> <!-- 수직 최소 각도 -->
<max_angle>0</max_angle> <!-- 수직 최대 각도 -->
</vertical>
</scan>
<range>
<min>0.1</min> <!-- 최소 감지 거리 -->
<max>30.0</max> <!-- 최대 감지 거리 -->
<resolution>0.01</resolution> <!-- 거리 해상도 -->
</range>
</ray>
<update_rate>40</update_rate> <!-- LIDAR 업데이트 속도 (Hz) -->
</sensor>
LIDAR 센서의 중요한 설정 중 하나는 ray
태그이다. 이 태그는 레이저 스캔과 관련된 설정을 포함하며, scan
과 range
의 세부 설정이 포함된다.
수평 방향 스캔(horizontal
)에서 samples
는 LIDAR가 수집하는 수평 샘플의 수를 나타내며, min_angle
과 max_angle
은 LIDAR의 수평 스캔 각도를 설정한다. 예를 들어, 위 코드에서는 -1.57에서 1.57 라디안까지의 범위로 스캔을 수행하며, 이는 약 180도의 스캔 범위를 의미한다.
또한, range
태그에서는 LIDAR의 감지 가능한 최소 거리와 최대 거리를 설정할 수 있으며, resolution
은 감지 거리의 정밀도를 나타낸다.
IMU 센서 설정
IMU(관성 측정 장치) 센서는 가속도계, 자이로스코프, 그리고 종종 자기 센서로 구성되어 로봇의 3축 가속도와 각속도를 측정한다. IMU 센서를 SDF에서 설정하는 예시는 다음과 같다.
<sensor name="imu" type="imu">
<pose>0 0 0 0 0 0</pose> <!-- IMU의 위치와 방향 -->
<imu>
<angular_velocity>
<x>
<noise type="gaussian">
<mean>0.0</mean> <!-- x축 각속도의 평균값 -->
<stddev>0.01</stddev> <!-- x축 각속도의 표준 편차 -->
</noise>
</x>
<y>
<noise type="gaussian">
<mean>0.0</mean>
<stddev>0.01</stddev>
</noise>
</y>
<z>
<noise type="gaussian">
<mean>0.0</mean>
<stddev>0.01</stddev>
</noise>
</z>
</angular_velocity>
<linear_acceleration>
<x>
<noise type="gaussian">
<mean>0.0</mean> <!-- x축 가속도의 평균값 -->
<stddev>0.1</stddev> <!-- x축 가속도의 표준 편차 -->
</noise>
</x>
<y>
<noise type="gaussian">
<mean>0.0</mean>
<stddev>0.1</stddev>
</noise>
</y>
<z>
<noise type="gaussian">
<mean>0.0</mean>
<stddev>0.1</stddev>
</noise>
</z>
</linear_acceleration>
</imu>
<update_rate>100</update_rate> <!-- IMU 업데이트 속도 (Hz) -->
</sensor>
IMU 센서 설정에서 중요한 요소는 각속도(angular_velocity
)와 선형 가속도(linear_acceleration
)의 노이즈 설정이다. 각 축(x
, y
, z
)에 대해 노이즈가 추가될 수 있으며, 일반적으로 가우시안 노이즈가 적용된다. mean
은 각속도 또는 가속도의 평균값을 나타내며, stddev
는 표준 편차를 나타낸다. 이 값들은 센서 데이터의 불확실성을 시뮬레이션할 때 유용하다.
IMU 센서에서 중요한 파라미터는 다음과 같다:
- pose
: 센서의 위치와 방향을 나타낸다.
- angular_velocity
: 각속도 데이터를 출력하는 설정으로, 노이즈 파라미터를 포함한다.
- linear_acceleration
: 선형 가속도 데이터를 출력하는 설정으로, 마찬가지로 노이즈 파라미터를 포함한다.
- update_rate
: 센서의 업데이트 속도를 설정하며, Hz 단위로 설정된다.
초음파 센서 설정
초음파 센서는 물체와의 거리를 측정하는데 사용되며, 특히 장애물 회피와 근거리 탐지에서 유용하다. SDF에서 초음파 센서를 설정하는 방법은 다음과 같다.
<sensor name="sonar" type="sonar">
<pose>0 0 0 0 0 0</pose> <!-- 초음파 센서의 위치와 방향 -->
<sonar>
<range>
<min>0.02</min> <!-- 최소 감지 거리 (m) -->
<max>4.0</max> <!-- 최대 감지 거리 (m) -->
<resolution>0.01</resolution> <!-- 거리 해상도 -->
</range>
<radius>0.05</radius> <!-- 감지 범위의 반경 -->
</sonar>
<update_rate>20</update_rate> <!-- 초음파 센서 업데이트 속도 (Hz) -->
</sensor>
초음파 센서의 중요한 설정 요소는 range
와 radius
이다. range
는 초음파 센서가 감지할 수 있는 최소 거리와 최대 거리를 나타내며, resolution
은 측정 거리의 정밀도를 나타낸다. radius
는 초음파의 감지 범위를 설정하며, 보통 원형의 범위 내에서 물체를 감지한다.
초음파 센서는 주로 로봇 주변의 장애물을 감지하고, 근거리에서의 정확한 거리 데이터를 제공하는데 사용된다. 센서의 업데이트 속도(update_rate
)는 거리 데이터를 얼마나 자주 갱신할 것인지를 결정한다.
자이로센서와 가속도계 설정
가속도계와 자이로센서는 로봇의 자세를 추정하는 데 필수적인 역할을 한다. 가속도계는 로봇의 선형 가속도를 측정하고, 자이로센서는 각속도를 측정하여 회전 운동을 감지한다.
자이로센서의 경우 각 축에서의 회전 속도를 측정하며, 가속도계는 축 방향으로의 가속도를 측정한다. SDF에서는 다음과 같이 자이로센서와 가속도계를 설정할 수 있다.
<sensor name="gyro_accel" type="imu">
<pose>0 0 0 0 0 0</pose> <!-- IMU의 위치와 방향 -->
<imu>
<angular_velocity>
<noise type="gaussian">
<mean>0.0</mean>
<stddev>0.01</stddev> <!-- 각속도의 표준편차 -->
</noise>
</angular_velocity>
<linear_acceleration>
<noise type="gaussian">
<mean>0.0</mean>
<stddev>0.1</stddev> <!-- 가속도의 표준편차 -->
</noise>
</linear_acceleration>
</imu>
<update_rate>100</update_rate> <!-- 자이로 및 가속도계 업데이트 속도 (Hz) -->
</sensor>
이 설정은 자이로와 가속도계의 동작을 시뮬레이션할 때 중요한 변수들을 다룬다. 가우시안 노이즈는 센서 데이터의 불확실성을 반영하기 위해 추가된다. update_rate
는 센서 데이터가 갱신되는 빈도를 나타내며, 높은 주파수로 설정하는 것이 일반적이다.