1. 설치
참고한 문서
ROS wiki Documentation : http://wiki.ros.org/elp_stereo_camera
Source: https://github.com/joshvillbrandt/elp-stereo-camera-ros-pkg
a. github에 소개되어 있는 설치 방법을 기반으로 ROS 버전에 맞게 설치한다. 필자는 ros noetic을 설치하였기 때문에 아래와 같은 코드를 터미널에 입력하였다.
sudo apt-get update
sudo apt-get install ros-noetic-ros-base ros-noetic-image-common ros-noetic-image-transport-plugins ros-noetic-image-pipeline ros-noetic-usb-cam -y
b. ~/catkin_ws/src/ 폴더에 elp_stereo_camera 패키지를 github로 부터 복제한다.
git clone https://github.com/joshvillbrandt/elp-stereo-camera-ros-pkg.git ~/catkin_ws/src/elp_stereo_camera
c. setup udev rules
sudo cp ~/catkin_ws/src/elp_stereo_camera/debian/99-elp-stereo-camera.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo service udev restart && sudo udevadm trigger
d. catkin build를 해준다. 그리고 source ~/.bashrc는 항상 해준다.
cd ~/catkin_ws
catkin build
source ~/.bashrc
2. launch 파일 수정 작업
필자가 사용한 elp stereo camera는 다음과 같다 : elp_camera_url
이 모듈을 사용하려면 elp_stereo_camera 패키지의 launch 파일을 카메라 정보에 맞게 수정할 필요가 있다.
먼저 elp stereo camera의 해상도를 알아보자.
a. 카메라를 연결하기 전과 후에 각 1번씩 아래의 코드를 터미널에 입력한다.
ls -ltr /dev/video*
카메라를 연결하고 명령을 입력했을 때 필자는 /dev/video2와 /dev/video3가 새로 생겼다.
elp stereo camera는 이 두 포트에 연결되어 있음을 알 수 있다.
b. v4l-utils를 설치한다.
sudo apt-get install v4l-utils
c. 각 포트의 해상도 정보를 확인한다.
v4l2-ctl -d /dev/video2 --list-formats-ext
v4l2-ctl -d /dev/video3 --list-formats-ext
필자의 경우 video3의 정보는 나오지 않고 video2의 정보만 나왔다.
나중에 확인 해보니 stereo camera의 좌, 우 이미지가 video2에 합쳐져서 출력되었다.
d. launch 파일 수정
~/catkin_ws/src/elp_stereo_camera/launch/elp_stereo_camera.launch 파일을 수정한다.
<?xml version="1.0"?>
<launch>
<arg name="CAMERA_NAME" default="elp" />
<arg name="LEFT_DEVICE" default="/dev/video2" />
<arg name="RIGHT_DEVICE" default="/dev/video3" />
<arg name="LEFT_INFO_URL" value="package://elp_stereo_camera/calibration/elp_left.yaml" />
<arg name="RIGHT_INFO_URL" value="package://elp_stereo_camera/calibration/elp_right.yaml" />
<arg name="WIDTH" default="1280" />
<arg name="HEIGHT" default="480" />
<arg name="FRAMERATE" default="30" />
<!-- start the left camera -->
<node respawn="true" pkg="usb_cam" type="usb_cam_node" name="left" ns="$(arg CAMERA_NAME)">
<param name="video_device" value="$(arg LEFT_DEVICE)" type="string"/>
<param name="pixel_format" value="mjpeg" type="string"/>
<param name="image_width" value="$(arg WIDTH)" type="int"/>
<param name="image_height" value="$(arg HEIGHT)" type="int"/>
<param name="framerate" value="$(arg FRAMERATE)" type="int"/>
<param name="camera_name" value="$(arg CAMERA_NAME)_left" type="string"/>
<param name="camera_frame_id" value="$(arg CAMERA_NAME)_left_optical_frame" type="string"/>
<param name="camera_info_url" value="$(arg LEFT_INFO_URL)" />
</node>
<!-- start the right camera >
<node respawn="true" pkg="usb_cam" type="usb_cam_node" name="right" ns="$(arg CAMERA_NAME)">
<param name="video_device" value="$(arg RIGHT_DEVICE)" type="string"/>
<param name="pixel_format" value="mjpeg" type="string"/>
<param name="image_width" value="$(arg WIDTH)" type="int"/>
<param name="image_height" value="$(arg HEIGHT)" type="int"/>
<param name="framerate" value="$(arg FRAMERATE)" type="int"/>
<param name="camera_name" value="$(arg CAMERA_NAME)_right" type="string"/>
<param name="camera_frame_id" value="$(arg CAMERA_NAME)_right_optical_frame" type="string"/>
<param name="camera_info_url" value="$(arg RIGHT_INFO_URL)" />
</node-->
</launch>
video3 포트는 사용하지 않아 주석처리를 했고, video2에 좌우 이미지가 합쳐져서 송출된다.
680x480의 이미지가 좌우에서 송출되므로 video2의 해상도는 1280x480이다.
fps는 30으로 설정했다.
3. 실행
a. terminal #1
roslaunch elp_stereo_camera elp_stereo_camera.launch
b. terminal #2
roslaunch elp_stereo_camera stereo_image_proc.launch
c. terminal #3
roslaunch elp_stereo_camera rviz.launch
각 터미널마다 자잘한 에러가 뜨긴 하지만 아무튼 rviz에서 이미지는 잘 보인다.
단, 두 포트의 이미지가 video2에 합쳐졌으므로 point cloud를 만드는 코드는 동작하지 않는다.
합쳐진 이미지를 쪼개는 방법을 모르기 때문에 point cloud는 따로 만들어줘야 한다.
참고한 블로그
elp_stereo_camera 구동기 https://m.blog.naver.com/jinslove4u/220988357032
usb_cam 사용하기 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=nswve&logNo=221483691234
'프로그래밍 > ROS1' 카테고리의 다른 글
[Ubuntu] 우분투에서 소리 크기 컨트롤하기 (0) | 2021.08.27 |
---|---|
[Ubuntu] 우분투에서 spi 권한 허용하기 (0) | 2021.08.27 |
sd카드 우분투 이미지 백업 (0) | 2021.08.17 |
우분투에서 고정 ip 사용하기 (0) | 2021.08.17 |
ssh 접속 오류 : WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! (0) | 2021.08.17 |