์ˆ˜์„ ํ™”

[ROS2/Dashing] USB CAM์œผ๋กœ camera calibrationํ•˜๊ธฐ (v4l2) ๋ณธ๋ฌธ

๐Ÿง Ubuntu/ROS2

[ROS2/Dashing] USB CAM์œผ๋กœ camera calibrationํ•˜๊ธฐ (v4l2)

re.aom 2023. 10. 16. 04:35

 

 

 

 

 

์นด๋ฉ”๋ผ๋ฅผ ์“ธ ์ƒ๊ฐ์ด ์—†์—ˆ๋Š”๋ฐ
์–ด์ฉŒ๋‹ค๋ณด๋‹ˆ ํ•„์š”ํ•˜๊ฒŒ ๋ผ์„œ usb-cam์„ ์—ฐ๊ฒฐํ•˜๊ฒŒ ๋๋‹ค.

 

ํ˜น์‹œ ROS1 (Kinetic, Noetic) ์„ ์‚ฌ์šฉํ•˜์‹ ๋‹ค๋ฉด.

 

ROBOTIS e-Manual

 

emanual.robotis.com

 

e-Manual์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
๊ทผ๋ฐ picam์ด๋ผ ์ž‘๋™์ด ๋˜๋Š”์ง€๋Š” ํ™•์ธ์ด ํ•„์š” ํ•  ๋“ฏ ์‹ถ์–ด์š”

 

 

 

 

ํ•„์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

๋‚˜๋Š” ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๋ฅผ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ ํ–ˆ์–ด์„œ Buster๋ฒ„์ „์ด์ง€๋งŒ
์ €๋ฒˆ์— ๋ฌธ์„œ ์ฐพ๋‹ค๊ฐ€ ๋ณด๋‹ˆ raspicam node๋„ ๋” ์ด์ƒ ์ง€์› ์•ˆํ•œ๋‹ค๊ณ  ๋ดค์—ˆ๋˜ ๊ฒƒ ๊ฐ™์•„์„œ..

์ฐธ๊ณ : https://github.com/christianrauch/raspicam2_node

 

 

์ŠคํŠธ๋ ˆ์Šค ๋ฐ›์„๋ฐ”์— usb cam์“ฐ๊ณ  v4l2๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋ฏธ raspicam ์‹œ๋„ํ•ด๋ด„...^^
์นด๋ฉ”๋ผ๋Š” ํŒŒ์ด์บ 3์„ ์ผ์—ˆ๊ณ  ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๋Š” 4๋ฅผ ์‚ฌ์šฉ์ค‘.
ํ˜น์‹œ libcamera๋กœ ํŒŒ์ด์บ  ์‹œ๋„ํ•  ๋ถ„์ด ์žˆ๋‹ค๋ฉด ์—ฌ๊ธฐ ์ฐธ๊ณ  

 

 

์นด๋ฉ”๋ผ๋ฅผ ๊ตฌ๋™์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ„ฐํ‹€๋ด‡์— v4l2 ๋ฅผ ๋‹ค์šด๋ฐ›์•„์ค€๋‹ค.

 

Bold Hearts / ros2_v4l2_camera · GitLab

A ROS 2 camera driver using Video4Linux2

gitlab.com

 

 

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 ์ค€๋น„

 

์บ˜๋ฆฌ๋ธŒ๋ ˆ์ด์…˜์— ํ•„์š”ํ•œ ์ฒด์ปค๋ณด๋“œ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›์•„์ค€๋‹ค

 

camera_calibration/Tutorials/StereoCalibration์˜ attachment:check-108.pdf - ROS Wiki

์ฒจ๋ถ€ ํŒŒ์ผ 'check-108.pdf' Download ์ฒจ๋ถ€ ํŒŒ์ผ ์ด ๋ฌธ์„œ์—์„œ ์ฒจ๋ถ€๋ฅผ ๋งํฌํ•˜๋ ค๋ฉด, ์•„๋ž˜์˜ ํŒŒ์ผ ๋ชฉ๋ก ์˜†์— ์žˆ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ attachment:ํŒŒ์ผ์ด๋ฆ„ ํ˜•์‹์œผ๋กœ ์“ฐ์‹ญ์‹œ์˜ค. URL์€ ์ž์ฃผ ๋ฐ”๋€” ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ [๋ฐ›๊ธฐ] ๋งํฌ์˜ UR

wiki.ros.org

 

์ด ์ฒด์ปค๋ณด๋“œ ์‚ฌ์ด์ฆˆ๋Š” 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 ์‹คํ–‰ํ•˜๋ฉด ๊ฒฝ๊ณ ๋ฌธ์ด ์‚ฌ๋ผ์ง„ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

 

 

 

 

Comments