예제

mseokq23·2025년 1월 21일
0

Ubuntu on WSL

목록 보기
10/11

필요 패키지 설치 확인

 sudo apt install ros-foxy-gazebo-ros-pkgs

라이다 센서 URDF

<!-- 파일명 예: my_lidar_robot.urdf.xacro (xacro 사용 시) 또는 my_lidar_robot.urdf -->

<robot name="my_lidar_robot" xmlns:xacro="http://ros.org/wiki/xacro">

  <!-- 로봇 기본 바디(링크) -->
  <link name="base_link">
    <visual>
      <geometry>
        <box size="0.3 0.3 0.1"/>
      </geometry>
      <material name="grey"/>
    </visual>
  </link>

  <!-- 라이다 센서가 위치할 링크 -->
  <link name="lidar_link">
    <visual>
      <geometry>
        <cylinder length="0.05" radius="0.05"/>
      </geometry>
      <material name="black"/>
    </visual>
  </link>

  <!-- base_link와 lidar_link를 연결하는 조인트 -->
  <joint name="lidar_joint" type="fixed">
    <parent link="base_link"/>
    <child link="lidar_link"/>
    <origin xyz="0 0 0.1" rpy="0 0 0"/> <!-- 라이다가 base_link 위에 0.1m 정도 올라간 위치 -->
  </joint>

  <!-- Gazebo 플러그인: ROS 2 레이저 센서 (libgazebo_ros_laser.so) -->
  <gazebo>
    <plugin name="my_laser_plugin" filename="libgazebo_ros_laser.so">
      <!-- ROS 노드 네임스페이스 / 토픽 설정 -->
      <ros>
        <!-- 로봇 자체에 대한 네임스페이스를 지정할 수도 있음 (필수 아님) -->
        <namespace>/</namespace>  
      </ros>

      <!-- 스캔 토픽 이름 -->
      <topicName>/scan</topicName>

      <!-- 레이저 센서가 장착된 링크 -->
      <frameName>lidar_link</frameName>

      <!-- 센서 업데이트 주기 (Hz) -->
      <update_rate>10</update_rate>

      <!-- 가로 방향으로 몇 개의 빔을 쏠 것인지 -->
      <horizontal_samples>720</horizontal_samples>

      <!-- FOV: 최소/최대 각도 (라디안 단위) -->
      <horizontal_min_angle>-1.5708</horizontal_min_angle> <!-- -90도 -->
      <horizontal_max_angle>1.5708</horizontal_max_angle>  <!-- +90도 -->

      <!-- 레이저 측정 거리 범위 -->
      <range_min>0.12</range_min>
      <range_max>3.5</range_max>
    </plugin>
  </gazebo>

</robot>

빈 월드 실행

# 터미널 1
ros2 launch gazebo_ros empty_world.launch.py

라이다 로봇 스폰
위에서 만든 my_lidar_robot.urdf 파일을 Gazebo에 스폰하려면, ROS 2에서 제공하는 spawn_entity.py 스크립트를 사용.

# 터미널 2
ros2 run gazebo_ros spawn_entity.py \
    -entity my_lidar_robot \
    -file /경로/내_URDF_또는_SDF_파일/my_lidar_robot.urdf \
    -x 0.0 -y 0.0 -z 0.0

LaserScan 토픽 확인

ros2 topic list

아래와 같이 나옴

ros2 topic echo /scan

Rviz2에서 시작화가능

rviz2

By topic -> /scan -> LaserScan 추가

추가 예제

sudo apt update
sudo apt install ros-foxy-turtlebot3* \
                 ros-foxy-slam-toolbox \
                 ros-foxy-navigation2 \
                 ros-foxy-nav2-bringup

0개의 댓글