- BOJ
- Android Studio
- raspberry pi
- Dashing
- ubuntu18.04
- dqn
- c++
- raspberrypi
- ์ฐ๋ถํฌ ๋ฆฌ๋ ์ค
- ์ ๋ฎฌ๋ ์ดํฐ
- Gazebo
- libobstacles
- VirtualBox
- ROS
- TURTLEBOT3
- ์๊ฐ ๋ณต์ก๋
- JetsonNano
- ๋ฐฑ์ค
- ubuntu
- ์๋ฃ๊ตฌ์กฐ
- ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด4
- ROS2 Dashing
- ๋ธ๋ฃจํธํฌ์ค
- linux
- ros2
- Ubuntu 18.04
- ์๊ฐ๋ณต์ก๋
- ์๊ณ ๋ฆฌ์ฆ
- ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด
- ์๋๋ก์ด๋์คํ๋์ค
- Today
- Total
์์ ํ
[ROS2/Dashing] USB CAM์ผ๋ก camera calibrationํ๊ธฐ (v4l2) ๋ณธ๋ฌธ
[ROS2/Dashing] USB CAM์ผ๋ก camera calibrationํ๊ธฐ (v4l2)
re.aom 2023. 10. 16. 04:35
์นด๋ฉ๋ผ๋ฅผ ์ธ ์๊ฐ์ด ์์๋๋ฐ
์ด์ฉ๋ค๋ณด๋ ํ์ํ๊ฒ ๋ผ์ usb-cam์ ์ฐ๊ฒฐํ๊ฒ ๋๋ค.
ํน์ ROS1 (Kinetic, Noetic) ์ ์ฌ์ฉํ์ ๋ค๋ฉด.
e-Manual์์ ํ์ธํ ์ ์์ต๋๋ค!
๊ทผ๋ฐ picam์ด๋ผ ์๋์ด ๋๋์ง๋ ํ์ธ์ด ํ์ ํ ๋ฏ ์ถ์ด์
ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
๋๋ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด๋ฅผ ๋ค์ด๊ทธ๋ ์ด๋ ํ์ด์ Buster๋ฒ์ ์ด์ง๋ง
์ ๋ฒ์ ๋ฌธ์ ์ฐพ๋ค๊ฐ ๋ณด๋ raspicam node๋ ๋ ์ด์ ์ง์ ์ํ๋ค๊ณ ๋ดค์๋ ๊ฒ ๊ฐ์์..
์ฐธ๊ณ : https://github.com/christianrauch/raspicam2_node
์คํธ๋ ์ค ๋ฐ์๋ฐ์ usb cam์ฐ๊ณ v4l2๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ raspicam ์๋ํด๋ด...^^
์นด๋ฉ๋ผ๋ ํ์ด์บ 3์ ์ผ์๊ณ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด๋ 4๋ฅผ ์ฌ์ฉ์ค.
ํน์ libcamera๋ก ํ์ด์บ ์๋ํ ๋ถ์ด ์๋ค๋ฉด ์ฌ๊ธฐ ์ฐธ๊ณ
์นด๋ฉ๋ผ๋ฅผ ๊ตฌ๋์ํค๊ธฐ ์ํด ํฐํ๋ด์ v4l2 ๋ฅผ ๋ค์ด๋ฐ์์ค๋ค.
Remote PC์ ํ์ ํจํค์ง ์ค์น
sudo apt install ros-dashing-camera-calibration-parsers
sudo apt install ros-dashing-camera-info-manager
sudo apt install ros-dashing-launch-testing-ament-cmake
sudo apt install ros-dashing-image-pipeline
v4l2๋ ROS2์์ ์ฌ์ฉ๊ฐ๋ฅํด์ dashing ๋์ ๋ณธ์ธ์ ๋ฒ์ ์ ๋ง๊ฒ ๋ณ๊ฒฝํ๋ฉด ๋๋ค.
foxy ์ฌ์ฉํ ๋๋ v4l2 ์๊ธดํ๊ฒ ์ ์ฌ์ฉํจ
๋ค์ ํฐํ๋ด์ผ๋ก ๋์์์
/boot/firmware/config.txt ํ์ผ ๋งจ ๋ง์ง๋ง์ ์ด ๋ ๋ผ์ธ์ ์ถ๊ฐํด์ค๋ค.
#Turtlebot3 /boot/firmware/config.txt
start_x=1
gpu_mem=128
๊น๋จน๊ณ gpu_mem=128 ์ ์ธ ์ํ๋๋ ์บ๋ฆฌ๋ธ๋ ์ด์
์์ผ์ง๊ณ 10๋ถ์ ํ ๋ฒ ์ฐํ๊ณ ๋๋ฆฌ๋ ์๋์์..
ํํ ๋ ์ ฏ์จ๋๋
ธ ๋จนํต์ด๋ผ ๋ฒ์ถ์ผ๋ฐ์ค๋ก ์คํ ์ค์ธ๋ฐ ๊ฐ์ํ๊ฒฝ์ด๋ผ ๋ ๋ฒ๋ฒ
์ด๋ ๊ฑธ ์๋ ์์
๋๋จธ์ง ํ๊ฒฝ์ ์ ๋ชจ๋ฆ
$ v4l2-ctl --list-devices
๋ช ๋ น์ด ์คํํ์ ๋ video0 ์กํ๋ฉด ์ฑ๊ณต
$ ros2 run v4l2_camera v4l2_camera_node --ros-args --param index:=0
์ด ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ v4l2๋ก ์นด๋ฉ๋ผ๋ฅผ ์ผ์ฃผ๋๋ฐ,
์๋ง yaml ํ์ผ์ด ์๋ค๊ณ ๋ฐ ๊ฒ์ด๋ค. (๋๋ ์ด๋ฏธ ์ถ๊ฐ๋ฅผ ํ ์ํ์ฌ์ not match๋ก ๋ธ)
๋ด ์นด๋ฉ๋ผ ์ด๋ฆ์ uvc_camera_(046d:0825)
์ด๊ฑด ์บ๋ฆฌ๋ธ๋ ์ด์ ํ๋ฉด์ ์ถ๊ฐํ ๊ฒ์ด๋ ๋ฌด์ํด๋ ๋๋ค.
Remote PC์์ rqt๋ก ์ด๋ฏธ์ง ์ ๋์ค๋์ง๋ ํ์ธํ๋ฉด ์ค๋น ๋.
$ ros2 run rqt_image_view rqt_image_view
Calibration ์ค๋น
์บ๋ฆฌ๋ธ๋ ์ด์ ์ ํ์ํ ์ฒด์ปค๋ณด๋ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ฐ์์ค๋ค
์ด ์ฒด์ปค๋ณด๋ ์ฌ์ด์ฆ๋ 8x6์ square๋ 0.024๋ผ๊ณ ํ๋ค.
$ ros2 run camera_calibration cameracalibrator --size 8x6 --square 0.024 --no-service-check image:=/image_raw
Remote PC์์ ์คํํด์ฃผ๋ฉด ์บ๋ฆฌ๋ธ๋ ์ด์ ํ๋ฉด์ด ๋ฌ๋ค.
์บ๋ฆฌ๋ธ๋ ์ด์
๋ฒํผ์ด ํ์ฑํ ๋ ๋๊น์ง ์ฒด์ปค๋ณด๋ ์ด๋ฏธ์ง๋ฅผ ์์ง์ฌ์ฃผ๋ค๊ฐ,
๋ฒํผ์ด ํ์ฑํ๋๋ฉด ์บ๋ฆฌ๋ธ๋ ์ด์
๋ฒํผ๋๋ฅด๊ณ ์ ์ฅ ๋ฒํผ ๋๋ฅด๋ฉด calibration.tar.gz ํ์ผ์ด ํ๋ ์์ฑ๋๋ค.
์์ถ์ ํ๋ฉด txtํ์ผํ๊ณ yaml ํ์ผ์ด ์๋๋ฐ, ์ด yaml ํ์ผ์ด ์๊น v4l2 ์คํํ ๋ ๋์๋ yaml์ด๋ค.
์ด yaml ํ์ผ์ ํฐํ๋ด์ผ๋ก ์ฎ๊ฒจ์ค๋ค.
$ sudo scp ost.yaml ubuntu@IP์ฃผ์:~/.ros/camera_info/์นด๋ฉ๋ผ์ด๋ฆ.yaml
์ด ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ฎ๊ฒจ์ง๋๋ฐ, ์นด๋ฉ๋ผ ์ด๋ฆ์ ํน์๋ฌธ์๊ฐ ์์ผ๋ฉด
์๋ง syntax near unexpected token `(' ๊ฐ ๋จ๋ฉด์ ์ฎ๊ฒจ์ง์ง ์์ ๊ฒ์ด๋ค.
$ sudo scp ost.yaml ubuntu@IP์ฃผ์:~/.ros/camera_info/"์นด๋ฉ๋ผ์ด๋ฆ.yaml"
๊ทธ๋ด ๋ "์นด๋ฉ๋ผ์ด๋ฆ.yaml" ๊ฐ์ด ๋ฐ์ดํ๋ก ์ด๋ฆ์ ๊ฐ์ธ๊ณ ์ฎ๊ฒจ์ฃผ๋ฉด ๋๋ค.
์นด๋ฉ๋ผ ์ด๋ฆ์ ํน์๋ฌธ์๊ฐ ์๋ค์ด๊ฐ๋ฉด ๋ฐ์ดํ๋ ํจ์ค.
๊ทธ๋ฆฌ๊ณ ๋์ v4l2๋ก ์นด๋ฉ๋ผ๋ฅผ ๋ค์ ์คํํ๋ฉด ๊ณ์ํด์ yaml์ ๋ชป์ฐพ๋ ๊ฒฝ๊ณ ๊ฐ ๋ฐ ๊ฒ์ด๋ค.
์นด๋ฉ๋ผ ์ด๋ฆ์ uvc_camera_(046d:0825)์ธ๋ฐ yaml ํ์ผ์๋ narrow_stereo๋ก ์จ์์ด์ ๋งค์น๋ฅผ ๋ชปํ๋ ์ํฉ์ด ๋ฐ์.
์ด๋ด ๋ yaml ํ์ผ์ ์ด์ด์ 3๋ฒ์งธ ์ค์ camera_name์ ํ์ฌ ์นด๋ฉ๋ผ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ์ค ํ ์ ์ฅํ๋ฉด ๋๋ค
๋๊ฐ์ ๊ฒฝ์ฐ,
camera_name: narrow_stereo ์์
camera_name: uvc_camera_(046d:0825)๋ก ๋ณ๊ฒฝํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ v4l2 ์คํํ๋ฉด ๊ฒฝ๊ณ ๋ฌธ์ด ์ฌ๋ผ์ง ๊ฒ์ ๋ณผ ์ ์๋ค