How to use LiDAR

박종명 ·2024년 5월 14일
0
post-custom-banner

안녕하세요.
오늘은 라이다를 사용하는 방법에 대해 알려드리겠습니다.

우분투 20.04 noetic 버전과 ros1 기준이며
velodyne lidar VLP16 장비를 사용함을 가정하고 설명된 글 입니다.

-라이다 초기 설정 방법 및 환경 세팅

1. 네트워크 설정

sudo ifconfig enp3s0 192.168.3.100
sudo route add 192.168.1.201 enp3s0

enp3s0 이 부분은
ifconfig 명령어를 터미널에서 실행한 뒤 나오는 첫번째 인터페이스로 대체해줘야합니다.

2. ROS dependencies 설치하기

sudo apt-get install ros-VERSION-velodyne
VERSION에 자신의 ROS버전에 맞는 버전이름을 입력해주면 됩니다.
저는 noetic version을 사용 중이기에 다음과 같이 입력했습니다.

sudo apt-get install ros-noetic-velodyne

3. VLP16 driver 설치하기

cd ~/catkin_ws/src/ && git clone https://github.com/ros-drivers/velodyne.git
cd ..
rosdep install --from-paths src --ignore-src --rosdistro YOURDISTRO -y
cd ~/catkin_ws/ && catkin_make

4. Data 시각화

roslaunch velodyne_pointcloud VLP16_points.launch
rosnode list
rostopic echo /velodyne_points
rosrun rviz rviz -f velodyne

이를 통해 rviz로 라이다 데이터를 확인 할 수 있게 되었습니다.
rivz 들어가서 fixed frame 은 velodyne으로 수정해야하지만 rosrun rviz rviz -f velodyne 이렇게 실행시키면 수정 안해줘도 됩니다.

토픽 발행해보기

rostopic echo /velodyne_points
이 명령어를 통해서 라이다 데이터가 잘 들어오는지 확인할 수 있다.

-라이다 백파일 저장 방법

rosbag은 ROS에서 제공하는 로깅 툴입니다. rosbag을 이용하여 센서에서 들어는 모든 메시지들을 시간 순서에 맞게 저장 하고 재생 할 수 있습니다. 저장시 확장자는 *.bag입니다.

rosbag record -O velodyne_data.bag /velodyne_points
이 명령은 ROS에게 '/velodyne_points' 토픽의 메시지를 기록하고 이를 'velodyne_data.bag'라는 이름의 백 파일에 저장하도록 지시합니다.
'velodyne_data.bag'을 원하는 파일 이름으로 바꿀 수 있습니다.

  1. rosbag Record 명령이 실행되는 동안 지정된 주제에 게시된 메시지를 계속해서 bag 파일에 저장합니다.
  2. 충분한 데이터를 녹음한 후 'rosbag Record'가 실행 중인 터미널에서 'Ctrl + C'를 눌러 녹화를 중지할 수 있습니다.

모든 토픽을 포함하는 bag 파일을 저장하려면 rosbag record -a 명령어를 사용하면 됩니다.
예를 들어 gps 토픽도 받아오고 싶은데 토픽이름을 모르면 일단 -a로 다 받아오는 방법도 있습니다.

명령어 설명:

  • rosbag: ROS bag 파일 관련 명령어를 사용하는 툴
  • record: ROS 토픽 데이터를 bag 파일에 저장하는 명령
  • a: 모든 토픽을 포함하도록 지정하는 옵션

사용 예시:

rosbag record -a /my_bag_file.bag

-라이다 백파일 실행 방법

백 파일(이 경우 velodyne_data.bag)이 있으면  rosbag play를 사용하여 재생할 수 있습니다. RViz에서 고정 프레임을 'velodyne'으로 설정하고 토픽을 '/velodyne_points'로 설정하여 LiDAR 데이터를 시각화할 수 있습니다.

rosbag play [저장경로]
여기에 play 뒤에 -l을 붙여서 rosbag play -l [저장경로] 라고 하면 bag파일이 무한히 재생됩니다.

-rosbag info


여기서 중요한것은 마지막 줄의 topics입니다.

/velodyne_points 토픽과 sensor_msgs/PointCloud2 메시지 설명

1. /velodyne_points 토픽:

이 토픽은 LiDAR (Light Detection and Ranging) 센서로부터 수집된 3D 데이터를 나타냅니다. LiDAR 센서는 레이저 펄스를 발사하여 주변 환경의 표면 거리를 측정하고, 이 정보를 사용하여 3D pointcloud를 생성합니다.

pointcloud는 주변 환경의 표면을 나타내는 수백만 개의 데이터 포인트로 구성됩니다. 각 데이터 포인트에는 x, y, z 좌표 (3D 공간에서의 위치) 및 강도 (레이저 펄스의 반사 강도)와 같은 정보가 포함됩니다.

/velodyne_points 토픽은 이러한 LiDAR 점 구름 데이터를 로봇 시스템에 전달하는 데 사용됩니다.

2. sensor_msgs/PointCloud2 메시지:

sensor_msgs/PointCloud2는 ROS에서 3D pointcloud 데이터를 표현하는 데 사용되는 표준 메시지 형식입니다. 이 메시지는 다음과 같은 정보를 포함합니다.

헤더(header): 메시지의 시간, 프레임 ID 및 기타 메타데이터를 포함합니다.
필드(field): pointcloud 데이터를 구성하는 각 데이터 포인트에 대한 정보를 포함합니다. 일반적으로 필드에는 x, y, z 좌표, 강도 및 기타 추가 정보가 포함됩니다.

오늘은 라이다 드라이버를 설치하는 방법, 라이다 데이터 백 파일 저장, 백 파일 실행 그리고 토픽과 메시지에 대한 이야기를 하였습니다.

다시 한번 리마인드 해보면서 직접 vlp 16으로 사용해보시다가 모르는 부분이 생기면 댓글 남겨주세요.
감사합니다.

good morning ~

profile
안녕하세요. 자율주행을 공부하고 있는 학생입니다.
post-custom-banner

2개의 댓글

comment-user-thumbnail
2024년 5월 21일

"gps 토픽도 받아오고 싶은데 토픽이름을 모르면 일단 -a로 다 받아오는 방법도 있습니다." 이렇게 써주셨는데, 이러면 충돌은 일어나지 않나요?

답글 달기
comment-user-thumbnail
2024년 5월 22일

bag 파일을 실행할 때 실행속도를 조절할 수 있는 방법이 있나요?

답글 달기