크리소 인턴기간동안 퇴근 후 카메라로 객체인식을 하여 트래킹하기 위해 모터제어를 하려고 한다.
ROS1와 아두이노 간의 시리얼 통신은 이미 경험한 바가 있기 때문에 이번에는 ROS2와의 시리얼 통신을 시도해보려고 한다.
먼저, 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를 위한 패키지 설치와 환경설정이 완료되었다.
ls -ltr /dev/video*
다음 명령어를 통해서 내가 연결한 카메라 번호를 확인한다.

확인한 결과, 내 카메라 번호는 video2임을 알 수 있다.
camera.launch.py(런치파일)을 확인해보면 camera의 대한 정보로서 params_1.yaml파일의 정보를 불러온다는 것을 확인할 수 있다.
따라서, 나는 config폴더의 params_1.yaml파일의 수정이 필요하다.
yaml파일에서 중요하게 봐야할 정보는 video_device와 frame_id 그리고 camera_name이다.
video_device : "/dev/video2"로 수정하고,

frame_id와 camera_name의 정보는 잘 기억해두도록 한다.
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