터틀봇 2D 라이다 LDS-01 Lidar 센서 ROS 에서 구동해보기 본문
LDS-01 실물 ( 분리한 상태 )
잘돌아간다.
https://emanual.robotis.com/docs/en/platform/turtlebot3/appendix_lds_01/#appendix-lds01
공홈에서 확인해보니 ROS kinetic 버전 패키지가 있는데 이는 ROS1 willy, 20.04 이전의 리눅스에서 돌아감
rosversion -d 로 현재 설치된 버전 확인하면, ROS1 noetic.
Github 링크에서 확인해본 결과 noetic 버전 pass 받아서 실행 가능함.
https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver
ROS 설치 방법 참고 ( 레포 등록 ~ 키 설정 ~ 설치 ~ 환경 셋업 = 배시 설정, 의존성 패키지 설치 )
http://wiki.ros.org/noetic/Installation/Ubuntu
.bashrc에 등록한 alias noetic으로 실행
alias eb='nano ~/.bashrc'
alias sb='source ~/.bashrc'
alias gs='git status'
alias gp='git pull'
alias cw='cd ~/catkin_ws'
alias cs='cd ~/catkin_ws/src'
alias cm='cd ~/catkin_ws && catkin_make'
alias noetic='source /opt/ros/noetic/setup.bash'
다운받은 패키지는 catkin_ws/src/hls_lfcd_lds_driver로 워크스페이스의 소스 폴더 안에 위치시킨다
바로 catkin_make를 하면 다음과 같은 오류가 뜬다
Could NOT find PY_em (missing: PY_EM)
CMake Error at /opt/ros/noetic/share/catkin/cmake/empy.cmake:30 (message):
Unable to find either executable 'empy' or Python module 'em'... try
installing the package 'python3-empy'
Call Stack (most recent call first):
/opt/ros/noetic/share/catkin/cmake/all.cmake:164 (include)
/opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:20 (include)
CMakeLists.txt:58 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/----------/catkin_ws/build/CMakeFiles/CMakeOutput.log".
Invoking "cmake" failed
http://wiki.ros.org/ROS/Tutorials/CreatingPackage
이떄, catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 로 다시 빌드하면 성공한다.
런치 파일 실행 ( 터틀봇3 참고 )
https://emanual.robotis.com/docs/en/platform/turtlebot3/appendix_lds_01/
Rviz로 실행하고 확인하는 방법
이후 term1 : roscore
term2 : roslaunch hls_lfcd_lds_driver view_hlds_laser.launch
이 밖에도 링크에는 GUI 로 실행하는 다른 방법이 있음
Rviz로 확인한 결과
Detection distance | 120mm ~ 3,500mm |
Ambient Light Resistance | 10,000 lux or less |
Sampling Rate | 1.8kHz |
감지거리가 대략 3m 정도 되는 것 같고, 테스트는 실내에서 진행해서 주변광 저항은 문제가 되지 않았다.
거리 별 오차와 스캔율, 스캔 범위는 다음과 같다. 비교적 정확하게 검출이 되는 것 같다.
Distance Range | 120 ~ 3,500mm |
Distance Accuracy (120mm ~ 499mm) | ±15mm |
Distance Accuracy(500mm ~ 3,500mm) | ±5.0% |
Distance Precision(120mm ~ 499mm) | ±10mm |
Distance Precision(500mm ~ 3,500mm) | ±3.5% |
Scan Rate | 300±10 rpm |
Angular Range | 360° |
Angular Resolution | 1° |
럭스 (lux or lx) 국제 단위계의 조명도(조도, illuminance )의 단위. |
국제 단위계(SI)의 조명도의 단위. 기호 ㏓. 1㎡의 넓이에 11m의 광속이 균등하게 입사했을 때의 조명도로서 광도가 1㏅인 점광원으로부터 1m의 거리에서 빛의 방향에 수직한 면의 조명도에 해당된다. 예를 들면 거실에서 30W고리모양 형광등을 2개 사용한 조명기구를 바닥에서 높이 1.8m의 위치에 달 때, 그 아래 탁자 위의 조명도는 140∼160㏓ 정도이며, 가벼운 독서나 오락은 이 이상이 바람직하다. |
칸델라 (candela) 광도 단위. 국제단위계 기본단위로, 기호는 ㏅이다. |
광도 단위. 국제단위계(SI) 기본단위로, 기호는 ㏅이다. 지금의 계량법으로는 <10만 1325㎩(파스칼) 압력에서 백금 응고점에 있는 흑체(黑體)의 1/60만㎡의 평평한 표면의 수직방향의 광도>라고 정의되었다. 그러나 이것은 1948년 국제도량형 총회의 정의이며, 1979년 <주파수 540×10㎐인 단색복사(單色輻射)를 방출하는 광원의 복사강도가 1/683W/㏛인 방향에서의 광도>라고 개정되었다. 또 광도의 옛 단위로 쓰인 촉(燭)은 1.0067㏅에 해당한다. 칸델라라는 이름은 수지(獸脂)로 만든 양초를 뜻하는 라틴어에서 유래한다. |
야외
직사일광 : 100,000 LUX
쾌청 : 10,000 LUX
구름있는낮 : 1,000 LUX
실내
일반사무실 : 1,000 LUX
시청각실 : 200 LUX
황혼, 호텔로비 : 100 LUX
호텔의 복도 : 50 LUX
주차장, 극장 휴식중의 객석 : 10 LUX
극장의 객석 : 2 LUX
밤
만월 시 맑은 밤의 지상 : 0.3 LUX
상현달의 밝기 : 0.001 LUX
별의 밝기 : 0.001 LUX
즉, LDS-01로는 야외의 쾌청한 날씨정도에서 사용 가능할 것 같다. 실내용 라이다는 몇K lux밖에 되지 않는데, 그에 비해서는 조도 저항이 있는 편 같다.
CygLidar 같은 비회전형 제품이 있길래 확인해보았지만, 야외에서는 사용이 불가능할 것 같다.
https://www.devicemart.co.kr/goods/view?no=13901542
테스트 ~
책상 위에 물건이 많아서 좀 어지럽게 나왔다.
키보드, 사람, 책상 의자 모두 감지되고 있다.
키보드를 치운 상황. ToF 방식이라 의자 앞에 서 있으니 의자는 감지되지 않는다.
이걸로 사람을 감지할 수 있을까?
cv2 match Template을 사용해서 패턴을 찾아본다.
우선 패턴 이미지가 필요하다. 알아서 가공하자.
상관관계 매칭 결과, 위치를 잘 잡은 것 같다. 충분히 사람 인식에 써먹을 수 있을 것 같다.
제곱 차이 매칭 결과, 상관관계 매칭 결과보다는 원하는 위치가 추출되지 않았다.
'BF 2024 > ROS2' 카테고리의 다른 글
ZYC0076 가지고 놀기 Arduino + ESP32 CAM ( 2 ) (0) | 2023.04.17 |
---|---|
ZYC0076 가지고 놀기 Arduino + ESP32 CAM ( 1 ) (0) | 2023.04.17 |
ROS2 QoS Profile 설정하기 (0) | 2023.04.16 |