이 글은 NVIDIA TK2, 오드로이드 등 임베디드 보드에 연결된 벨로다인 VLP16을 이용해 스캔 데이터를 ROS RVIZ로 처리하는 방법을 간략히 정리한다. 참고로, 지난번 글에서는 윈도우에서 VPL16 LiDAR 설정 방법을 다루었었다. 참고로, 오드로이드는 이 설치방법을 참고하길 바란다. NVIDIA TK2나 인텔 호환 PC도 설치 방법은 동일하다.
Velodyne VLP16 ROS RViz 실행 모습(오드로이드)
ROS 벨로다인 LiDAR VPL16 설정 및 패키지 설치
벨로다인 설정 및 설치 방법은 아래 글을 참고하였다.
LiDAR 이더넷 연결 단계는 다음과 같다.
- LiDAR 파워 연결
- LiDAR와 오드로이드 간 이더넷 케이블 연결
- 오드로이드 WiFi 끄기
- Networks Connections 실행. edit를 선택해 IPV4 설정 탭 선택. "Method"를 "Manual"로 변경
- add를 선택해 IP 주소 필드에 192.168.1.70 설정
- Netmask는 255.255.255.0, Gateway는 0.0.0.0 설정
- Routes > Use this connection only for resources on its network 선택 (for WiFi connection)
- OK > save 선택
IPv4 setting
Routes setting
LiDAR 설정단계는 다음과 같다.
- 터미널에서 다음 명령 입력. sudo ifconfig eth0 192.168.3.100
- LiDAR IP 주소에 고정 라운트를 추가함. IP주소는 제품 CD 케이스에 포함되어 있음 (참고로 벨로다인 VLP16 라이다에 기본 설정된 IP는 192.168.1.201 임). sudo route add 192.168.XX.YY eth0
- LiDAR 설정 체크를 위해, 인터넷 브라우저에 192.168.XX.YY 입력해 세부 설정 화인
혹시 eth0가 안보인다면, 다음 파일에 eth0를 설정, 맵핑한다.
sudo gedit /etc/udev/rules.d/70-persistent-net.rules
편집 내용은 다음과 같다. 여기서, ATTR{address}는 벨로다인을 연결했을 때 mac 주소이며, KERNELS는 이더넷 PCI 장치 번호이다. 이 장치 번호는 lspci -D 명령을 통해 확인할 수 있다.
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="40:8D:5C:B1:D9:A0", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNELS=="0000:02:00.0", NAME="eth0"
이제, VLP16 ROS 패키지를 다음과 같이 설치한다. 참고로 VERSION은 melodic이다.
sudo gedit /etc/udev/rules.d/70-persistent-net.rules
편집 내용은 다음과 같다. 여기서, ATTR{address}는 벨로다인을 연결했을 때 mac 주소이며, KERNELS는 이더넷 PCI 장치 번호이다. 이 장치 번호는 lspci -D 명령을 통해 확인할 수 있다.
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="40:8D:5C:B1:D9:A0", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNELS=="0000:02:00.0", NAME="eth0"
이제, VLP16 ROS 패키지를 다음과 같이 설치한다. 참고로 VERSION은 melodic이다.
sudo apt-get install ros-VERSION-velodyne
만약 제대로 설치되지 않으면, 다음과 같이 소스코드를 다운로드받아 직접 빌드한다.
- 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
혹시 rospkg 등이 제대로 설치되지 않아 빌등 에러가 발생하면 해당 패키지를 다음과 같이 설치하고 재시도한다.
pip install rospkg
제대로 설치가 되면, 다음과 같이 터미널에서 ROS를 실행한다.
source ~/.bashrc
roscore
ROS 실행된 모습
터미널에서 다음과 같이 velodyne VLP16 노드와 토픽을 실행한다.
roslaunch velodyne_pointcloud VLP16_points.launch
rosnode list
rostopic echo /velodyne_points
velodyne pointcloud node 실행 후 rosnode list 결과
rostopic echo 실행 결과
rviz 를 다음과 같이 실행한다.
rosrun rviz rviz -f velodyne
RViz에서 다음과 같이 Point Cloud 토픽 데이터를 볼 수 있도록 설정한다.
- RViz > display > Add 선택 후 Point Cloud2 선택 확인
- Topic 필드에 Point Cloud2 탭에서 "/velodyne_points" 입력 후 확인
설정 후 다음 같이 벨로다인에서 획득한 포인트 클라우드를 확인할 수 있다.
RViz 실행 모습
추신 - 요즘 오랜만에 시간이 나서 1년동안 쌓여 있던 장비와 컨텐츠들을 꺼내 쌓인 먼지를 털고 기억을 떠올려가며 정리한다. 회사가 정출연이라 직업은 연구하는 것인데, 여기 저기서 행정으로 인터럽트가 걸리고, 정신차려보면 몇년이 흘러 있는 경우가 많음. 브랜드 기술력 쌓으며 연구하기 정말 어려운 환경. - 넌센스
추신 - 시스템 안전성 테스트를 위해 2019년 6월 5일부터 현재(6월 17일)까지 LiDAR를 실행해 보았다. 아직 잘 동작하고 있다.
다음 링크를 참고해 VeloView를 설치하고 실행한다. 단, VeloView 설치 파일은 아직 64비트만 지원하고 있어, 직접 소스코드를 빌드해야 한다. 이 경우, QT4 패키지 업데이트 부분이 있는 데, 이는 오드로이드의 EGL과 Segmentation fault를 유발한다. 이 경우, 여기를 참고해 QT를 다시 설정해야 한다.
레퍼런스