2021년 01월 13일 수요일 19:00
ZOOM 화상회의
ROS에는 현재 다양한 패키지들이 있다. 사용할 하드웨어에 맞는 패키지들을 선택해주면 되는데 하드웨어의 카테고리에 따라 패키지들도 나눠져 있다. 크게 로봇 관련 패키지, 센서 관련 패키지, 모터 관련 패키지로 나눠져있다.
ROS 공식 페이지: 다양한 로봇 패키지들이 나와 있다.1)
apt-cache search ros-melodic
sudo apt-get install ros-melodic-패키지명-desktop
sudo apt-get install ros-melodic-turtlebot3 ros-melodic-turtlebot3-msgs ros-kinetic-turtlebot3-simulations
cd ~/catkin_ws/src
hg clone http://code.google.com/p/amor-ros-pkg/
ROS wiki-Sensor: 다양한 센서패키지들이 나와 있다.2)
센서 패키지의 종류
ROS 에서 지원하는 USB카메라. 패키지를 이용하여 실습을 진행해 볼 수 있다
우선 카메라를 USB포트에 연결하고 터미널 창을 연뒤 'lsusb' 명령어로 접속을 확인한다.
sudo apt-get install ros-melodic-uvc-camera
sudo apt-get install ros-melodic-image-* sudo apt-get install ros-melodic-rqt-image-view
roscore rosrun uvc_camera uvc_camera_node
rostopic list
rosrun image_view image_view image:=/image_raw
rosrun image_view image:=/image_raw
rviz
gedit ~/.bashrc
export ROS_MASTER_URI = http://192.168.1.100:11311 export ROS-HOSTNAME = 192.168.1.100
bashrc파일의 제일 밑으로 내려가서 위 같이 ROS_MASTER_URI와 ROS-HOSTNAME 변수를 수정한다. 자신의 IP는 ifcnofig명령어로 확인 할 수 있다.
roscore rosrun uvc_camera uvc_camera_node
그 다음 roscore와, uvc_camera_node를 구동한다.
bashrc파일의 제일 밑으로 내려가서 다음과 같이 ROS_MASTER_URI와 ROS-HOSTNAME 변수를 수정한다. 자신의 IP는 ifcnofig명령어로 확인 할 수 있다.3)
export ROS_MASTER_URI = http://192.168.1.100:11311 export ROS-HOSTNAME = 192.168.1.120
rosun image_view image:=/image_raw
로봇에서 촬영한 이미지를 원격으로 받아 볼 수 있도록 하기 위해서는 위와 같은 기술이 필요하다. 탐사로봇, 화상회의 로봇, 웹캠 등이 이러한 기술을 활용하고 있다.
카메라로부터 얻은 이미지 정보에서 정확한 거리 정보를 얻으려면 카메라나 다른 렌즈 특성, 렌즈와 이미지 센서 사이의 거리, 뒤틀린 각도 등의 정보가 필요하다. 투사 과정에서 카메라마다의 고유 특성으로 인해 조금씩 다른 값을 갖기 때문이다. 카메라마다 이미지 센서 사이의 거리가 다르고 렌즈와 이미지센서 종류가 다를 경우 등이 있다. 이러한 부분들을 보정하기 위하여 카메라의 고유 파라미터 값을 찾는 것이 중요한데 이를 카메라 캘리브레이션이라고 한다. ros에서 제공되는 패키지를 이용하여 카메라 캘리브레이션을 할 수 있다.
sudo apt-get install ros-kinetic-camera-calibration rosrun uvc_camera uvc_camera_node
rostopic echo /camera_info아직 카메라 캘리브레션에 대한 정보가 없으므로 모두 초깃값으로 표시된다.
체스보드준비: 카메라 캘리브레이션은 체스보드를 기준으로 수행한다.4)
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/image_raw camera:=/camera
캘리브레이션 gui에서 calivrate 버튼이 활성화 되면 누른다.
cd /tmptar -xvzf calibrationdata.tar.gzcamera calibration 파라미터를 담은 카메라 파라미터 파일을 생성했다. calibrationdata.tar.gz의 압축을 풀면 캘리브레이션에서 사용된 이미지 파일들과 맬리브레이션 파라미터들이 저장된 ost.txt.파일을 확인 할 수 있다.
mv ost.txt ost.ini //ost.txt 파일을 ost.ini파일로 바꾸기 rosrun camera_calibration_parsers convert ost.ini camera.yaml //camera_calibration_parsers 패키지의 convert 노드로 camera.yaml을 생성 mkdir ~/.ros/camera_info //~/.ros/camera_info/폴더에 저장 mv camera.yaml ~/.ros/camera_info
camera.yaml 파일을 열면 camera_matrix5), distortion_coefficients6)등의 값을 확인할 수 있다. 자세한 정보는 여기 참조
rosrun uvc_camera uvc_camera_node rostopic echo /camera_info
처음엔 0이었던 D,K,R,P의 값들이 채워져있는것을 확인 할 수 있다.
sudo apt-get instll ros-kinetic-librealsense ros-melodic-realsense-camera
roscore roslaunch realsense_camera r200_nodelet_default.launch
Point Cloud Data의 시각화
depth camera의 3차원 거릿값은 대상체와의 거리를 한 점으로 표시하고 이들 점들의 집합체가 구름과 같다고 하여 Point Cloud Data라 부른다. GUI환경에서 Point Cloud Data를 확인하기 위해 RViz를 실행하고 다음 순서대로 디스플레이 옵션을 변경한다.
그 이외의 다른 depth camera를 이용할 경우는 위키에 나온 사용법을 참고.
LDS7)는 레이저 거리 센서이며 레이저 광원을 이용하여 물체와의 거리를 측정하는데 사용하는 센서이다. 주로 slam, 물체인식 등에 사용된다.
LDS 테스트
ros 에서 대표적인 LDS 지원 패키지로는 SICK 사의 LDS를 지원하는 sick300, sicktoolbox, sicktoolbox_wrapper 패키지, Hokuyo 사의 hokuyo_node, urg_node패키지, velodyne사의 velodyne패키지가 있다.
중저가형 가격이 싸야 동아리 수준에서 만들 수 있다 으로는 RPLIDAR를 지원하는 rplidar, 터틀봇3에서 사용하는 hls_lfcd_lds_driver이 있다.
동아리에 터틀봇이 있으므로 hls_lfcd_lds_driver관련한 실습 자료를 살펴보면
sudo apt-get install ros-melodic-hls_lfcd_lds_driver
ls -l .dev/ttyUSB* //연결되었을때 ttyUSB*로 인식됨
sudo chmod a+rw /devttyUSB0
ttyUSB0의 사용권한이 주어지지 않았으면 chmod 명령어로 권한을 설정한다.
roslaunch hls_lfcd_lds_driver hls_laser.launch
rostopic echo /scan
rviz roslaunch hls_lfcd_lds_driver view_hls_laser.launch