ROS2 카메라&서보모터 :: object tracking (1)

임선자·2024년 1월 14일

1. 목적


크리소 인턴기간동안 퇴근 후 카메라로 객체인식을 하여 트래킹하기 위해 모터제어를 하려고 한다.
ROS1와 아두이노 간의 시리얼 통신은 이미 경험한 바가 있기 때문에 이번에는 ROS2와의 시리얼 통신을 시도해보려고 한다.

2. 패키치 설치 & 환경 설정


먼저, ROS 호환이 가능한 Logitech사의 C922 모델의 카메라를 활용하였다.

USB CAM launch를 위해 다음과 같은 패키지를 활용하였다.
[https://github.com/ros-drivers/usb_cam/tree/ros2]
나는 git을 활용하기보다는 원하는 패키지의 branch를 들어가 zip파일을 다운로드하는 편이다.
나의 workspace의 소스 파일에 zip파일을 압축해제한다.

cd ros2_ws
rosdep install --from-paths src --ignore-src -y -r
colcon build
source ~/ros2_ws/install/setup.bash

이로써, 카메라 launch를 위한 패키지 설치와 환경설정이 완료되었다.

3. 파라미터 수정 & 환경 구축


1. 카메라 번호 확인하기

ls -ltr /dev/video*

다음 명령어를 통해서 내가 연결한 카메라 번호를 확인한다.

확인한 결과, 내 카메라 번호는 video2임을 알 수 있다.

2. 파라미터 수정(yaml 파일)

camera.launch.py(런치파일)을 확인해보면 camera의 대한 정보로서 params_1.yaml파일의 정보를 불러온다는 것을 확인할 수 있다.

따라서, 나는 config폴더의 params_1.yaml파일의 수정이 필요하다.
yaml파일에서 중요하게 봐야할 정보는 video_deviceframe_id 그리고 camera_name이다.
video_device : "/dev/video2"로 수정하고,

frame_id와 camera_name의 정보는 잘 기억해두도록 한다.

3. 파라미터 수정(node 파일)

usb_cam_node.cpp파일에서 고쳐야할 파라미터도 있다.
나는 params_1.yaml에 담긴 정보를 사용하기에 노드파일에도 그에 맞춰 수정해줄 필요가 있다.
camera_name에 대한 정보는 test_camera로, frame_id에 대한 정보를 camera로 맞추도록 한다.

모든 준비를 마쳤으니 카메라를 켜보도록 한다.

sudo chmod 777 /dev/video* #usbcam 권한 부여
cd ros2_ws
cd source ~/ros2_ws/install/setup.bash
ros2 run usb_cam usb_cam_node_exe --ros-args --params-file /path/to/ros2_ws/src/usb_cam_config/params_1.yaml

0개의 댓글