문서의 이전 판입니다!


ROS 스터디 #6: 로봇,센서,모터

2021년 01월 13일 수요일 19:00
ZOOM 화상회의

ROS네는 현재 다양한 패키지 들이 있다. 선택 할 하드웨어에 맞는 패키지들을 선택해주면 되는데 하드웨어의 카테고리에 따라 패키지들도 나눠져 있다. 로봇 관련 패키지, 센서 관련 패키지, 모터 관련 패키지로 크게 나눠져있다.

http://robots.ros.org/ 사이트 들어가면 다양한 로봇 패키지들이 나와 있음 :현재 동방에는 tutlebot이 있음

ros패키지 리스트에서 명령어로 찾기

apt-cache search ros-melodic

특정패키지를 설치하는 명령어

sudo apt-get install ros-melodic-패키지명-desktop

터틀봇3 패키지 설치하는 명령

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/

http://wiki.ros.org/Sensors 사이트 들어가면 다양한 센서패키지들이 나와 있음 : RGB-D cameras 중 realsense는 동방에 있음

센서 패키지의 종류 1D Range Finders:저가의 로봇을 만들 때 사용할만한 적외선 방식의 직선거리 센서들이다
2D Range Finders: 2차 평면상의 거리를 계측할 수 있는 센서로 주로 내비게이션에 많이 사용되는 센서들이다
3D Range Finders: intel사의 RealRense, Microsoft 사의 Kinect, ASUS사의 Xion과 같은 3차원 거리 측정에 사용되는 센서들이다.
Audio/Speech Recognition: 현재 음성인식 관련 부분은 매우 적지만, 지속해서 추가될 것으로 보인다.
Cameras: 물체인식, 얼굴인식, 문자판독 등에 많이 사용되는 카메라의 드라이버, 각종 응용 패키지 들을 모아두었다.
Sensor Interfaces: USB및 웹 프ㅗ토콜을 지원하는 센서는 매우 적다. 아직까지도 많은 센서들은 마이크로프로세서에서 정보를 쉽게 얻을 수 있는 센서가 많다. 이러한 센서는 마이크로프로세서의 UART 및 미니 PC계열에서 ROS와의 연결을 지원한다.

USB 카메라
ROS 에서 지원하는 USB카메라 패키지를 이용하여 실습을 진행해 볼 수 있다

우선 카메라를 USB포트에 연결하고 터미널 창을 연뒤 'lsusb' 명령어로 접속을 확인한다.

uvc camera 패키지 설치

sudo apt-get install ros-melodic-uvc-camera

image관련 패키지 설치

sudo apt-get install ros-melodic-image-*
sudo apt-get install ros-melodic-rqt-image-view

uvc_camera노드 실행

roscore
rosrun uvc_camera uvc_camera_node

토픽 메세지 확인

rostopic list


이미지 정보 확인
- image_view 노드로 확인

rosrun image_view image_view image:=/image_raw

- rqt_image_view 노드로 확인

rosrun image_view image:=/image_raw

- RViz로 확인하기

rviz







원격으로 이미지 전송
- 카메라가 연결된 컴퓨터
gedit ~/.bashrc
bashrc파일의 제일 밑으로 내려가서 다음과 같이 ROS_MASTER_URI와 ROS-HOSTNAME변수를 수정한다. 자신의 IP는 ifcnofig명령어로 확인 할 수 있다.
export ROS_MASTER_URI = http://192.168.1.100:11311
export ROS-HOSTNAME = 192.168.1.100 

그 다음 roscore를 구동 , uvc_camera_node구동
roscore
rosrun uvc_camera uvc_camera_node



-원격 컴퓨터 bashrc파일의 제일 밑으로 내려가서 다음과 같이 ROS_MASTER_URI와 ROS-HOSTNAME변수를 수정한다. 자신의 IP는 ifcnofig명령어로 확인 할 수 있다.
단!! 여기서 ROS-HOSTNAME만 원격 컴퓨터의 ip이며 ROS_MASTER_URI는 카메라가 연결된 컴퓨터의 ip이다.
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

체스보드준비
http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration?action=AttachFile&do=view&target=check-108.pdf 카메라 캘리브레이션은 체스보드를 기준으로 수행한다.(캘리브레이션용 체스보드(8×6))

캘리브레이션
캘리브레이션을 수행
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/image_raw camera:=/camera

캘리브레이션 gui에서 calivrate버튼 활성화 되면 누르기
카메라 파라미터 파일 생성 (camera calibration 파라미터를 담은 카메라 파라키터 파일을 생성하기)

cd /tmp
tar -xvzf calibrationdata.tar.gz
calibrationdata.tar.gz압축 풀면 캘리브레이션에서 사용된 이미지 파일들과 맬리브레이션 파라미터들이 저장된 ost.txt.파일 확인 할 수 있다.
mv ost.txt ost.ini
rosrun camera_calibration_parsers convert ost.ini camera.yaml
mkdir ~/.ros/camera_info
mv camera.yaml ~/.ros/camera_info
ost.txt 파일을 ost.ini파일로 바꾸기 & camera_calibration_parsers 패키지의 convert 노드로 camera.yaml을 생성 후 ~/.ros/camera_info/폴더에 저장
camera.yaml파일 열면 camera_matrix(카메라 내부 행렬), distortion_coefficients(왜곡계수)등의 값을 확인할 수 있다.
추가 정보 : http://wiki.ros.org/image_pipeline/CameraInfo
rosrun uvc_camera uvc_camera_node
rostopic echo /camera_info
처음엔 0이었던 D,K,R,P의 값들이 채워져있는것을 확인 할 수 있다.













심도 카메라(Depth Camera) with RealSense

RealSense 관련 패키지 설치

sudo apt-get instll ros-kinetic-librealsense ros-melodic-realsense-camera

r200_nodelet_default 런치 파일 실행

roscore
roslaunch realsense_camera r200_nodelet_default.launch

Point Cloud Data의 시각화
depth camera의 3차원 거릿값은 대상체와의 거리를 한 점으로 표시하고 이들 점들의 집합체가 구름과 같다고 하여 Point Cloud Data라 부른다.
GUI환경에서 Point Cloud Data를 확인하기 위해 RViz를 실행하고 다음 순서대로 디스플레이 옵션을 변경한다.

  1. Global Options → Fixed Frame 을 camera_depth_frame으로 변경
  2. RViz왼쪽 아래에 Add 버튼을 클릭한 다음 pointcloude2를 선택하여 추가한다. 세부 설정으로 Topic으로 camera/depth/points를 설정하고 원하는 형태의 크기나 색상 등을 선택한다
  3. 모든 설정을 마쳤다면 그림 8-14처럼 PCD값을 확인할 수 있다. 색상 기준은 X축으로 지정하였으므로 X축에서 멀어질 수록 보라색에 가깝게 나타난다.

*그 이외의 다른 depth camera를 이용할 경우는 다음 주소의 위키에 나온 사용법을 참고하면 된다
http://wiki.ros.org/Sensor#A3D_Sensors_.28range_finders_.26_RGB-d_cameras.29











레이저 거리 센서** LDS(Laser Distance Sensor)는 레이저 거리 센서이며 레이저 광원을 이용하여 물체와의 거리를 측정하는데 사용하는 센서이다.주로 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관련한 실습 자료를 올린다.

hls_lfcd_lds_driver패키지 설치

sudo apt-get install ros-melodic-hls_lfcd_lds_driver
LDS 연결 및 사용 권한 변경(여기서는 연결되었을때 ttyUSB*로 인식되었다)
ls -l .dev/ttyUSB*
ttyUSB0의 사용권한이 주어지지 않았으면 chmod 명령어로 권한을 설정한다
sudo chmod a+rw /devttyUSB0
hlds_laser 런치 파일 실행
roslaunch hls_lfcd_lds_driver hls_laser.launch
scan 데이터 확인
rostopic echo /scan
LDS거릿값의 시각화
 rviz
 roslaunch hls_lfcd_lds_driver view_hls_laser.launch

하지만!!! 동방에 RPLIDAR이 있었다??! <sxh>ls -l /dev |grep ttyUSB sudo chmod 666 /dev/ttyUSB0 roslaunch rplidar_ros view_rplidar.launch</sxh>

  • activity/public/2020/ros/210113.1610537262.txt.gz
  • 마지막으로 수정됨: 4년 전
  • 저자 gakscoriora1