åæ©
ROSã§ã®ããããã®æäœãã»ã³ãµãŒããŒã¿ã®åæ±ããåŠãŒããšæãã
ROSããã°ã©ãã³ã°ãã€ãã«ã賌å
¥ããŠèŠãã®ã§ãåèã«ããªãããåå¿é²ãšããŠæžããŠããã
ä»ã«ãããããã«ã¯ããããæ
å ±ãæº¢ãããŠããããROS Wikiã«ãããŸããŸãªæ
å ±ãããã®ã§ãããããæŽ»çšããŠè¡ãäºå®ã
æ¬æ¥ã®ç®çã¯ãã¹ãã¬ãªã§æ·±åºŠèšæž¬ãããããã¢ã©ãŠã³ããã¥ãŒã¢ãã¿ãŒã¿ããã«å šåšå²ãæ®åœ±ã§ãããããè€æ°ã®ã«ã¡ã©ãã€ãªãããã®ã ããã©ããä»åã¯ã²ãšãŸã1å°ã®æ¥ç¶ã
ç°å¢
- Ubuntu 16.04 LTS
- ROS Kinetic Kame
- ä»å䜿çšããã®USBã«ã¡ã©ïŒLogicool C270ãUVC察å¿ïŒ1å°
ã«ã¡ã©æ¥ç¶
ã«ã¡ã©æ¥ç¶ç¢ºèª
USBã«ã¡ã©ãPCã«ã€ãªãã§ã
$ lsusb
ãŸãã¯
$ ls /dev/device*
ã§æ¥ç¶ç¢ºèªããLogitec~ããšãããªã¹ãã«åºãŠãããããdevice0ãããããããªãã°ãèªèã¯ãããŠããã
uvc_cameraããã±ãŒãžã®ã€ã³ã¹ããŒã«
å€ãæ å ±ãå ã«ãusb_camããã±ãŒãžãã€ã³ã¹ããŒã«ããŠãããåŸã ã®ãã£ãªãã¬ãŒã·ã§ã³ãããã§ãããã«ããã£ãã¿ãããªã®ã§ãæ¹ããŠäžèšæ¬ã«å£ã£ãŠå®æœããããåé¡ãªããããã®ã§ããã¡ããuvc_cameraãããŒã¹ã«ããŸãã
$ sudo apt-get install ros-kinetic-uvc-camera
imageé¢é£ã®ããã±ãŒãžãã€ã³ã¹ããŒã«
$ sudo apt-get install ros-kinetic-image-*
$ sudo apt-get install ros-kinetic-image-view
ããããã¯å®éã®æ©å確èª
ãã€ãã®ããã«ã
$ roscore
å¥ã®ç«¯æ«ãç«ã¡äžããŠã
$ rosrun uvc_camera uvc_camera_node
ãšãããšãè²ã ã¡ãã»ãŒãžãåºãŠããã
[ WARN] [1522822252.725651583]: [camera] does not match name narrow_stereo in file /home/kondo/.ros/camera_info/camera.yaml
ãšããWarningã¯åºããã©ãåœç¶ãå éšãã©ã¡ãŒã¿ã®ãã£ãªãã¬ãŒã·ã§ã³ãã¡ã€ã«ãèšå®ããŠããªãã®ã§ãä»ã¯ç¡èŠãæ¥ç¶ãåé¡ãªããªããUSBã«ã¡ã©ã®ã©ã€ããã€ããŠããã¯ãã
[rostopic list]ãªã©ã§ç¢ºèªããã°ããããã¯ã¡ãã»ãŒãžãããããšãåããã
ïŒ/camera_info, /image_rawãªã©ïŒ
æ å確èª
ãã®ããŒããç«ã¡äžãããŸãŸïŒä»ãroscoreãšãuvc_camera_nodeã®ïŒã€ïŒããŸãæ°ãã端æ«ãç«ã¡äžããŠã
$ rosrun image_view image_view image:=/image_raw
ãšãããšããã¥ãŒã¯ãŒãç«ã¡äžãã£ãŠãã«ã¡ã©æ åãèŠããã
rqt_image_viewãRVizãããæ åãèŠãããšãã§ããã
ãã£ãªãã¬ãŒã·ã§ã³
æ åãèŠãã ããªãããã§ããããç©äœèªèãã¹ãã¬ãªãèšæž¬ãªã©ãããããã«ã¯ãã«ã¡ã©ã®å éšãã©ã¡ãŒã¿ïŒçŠç¹è·é¢ãç»åäžå¿ãã¬ã³ãºæªã¿ãªã©ïŒãååŸããŠãããããç»ååŠçã®åã«é©çšããŠç»åãè£æ£ããå¿ èŠãåºãŠããã
ãã£ãªãã¬ãŒã·ã§ã³ããŒã«ãçšæãããŠããã®ã§ãããã䜿ãã ãã
ãããŸã§ã¯OpenCVã§æ®åœ±ããŠãã£ãªãã¬ãŒã·ã§ã³é¢æ°ãåãããããšããœãããŠã§ã¢ãèªäœããŠãããããªããšäŸ¿å©ãå®é䜿ã£ãŠã¿ããšãããæ¥œã¡ãã
äžèšããªã³ã¯ãåèã
RobotãSystemã宿ããããŸã§ Wiki*ã®ROS/Package/ar_track_alvar
ãã£ãªãã¬ãŒã·ã§ã³é¢é£ããã±ãŒãžã®ã€ã³ã¹ããŒã«
äžåºŠå šéšã®ç«¯æ«ãèœãšããŠãåèµ·åã
$ sudo apt-get install ros-kinetic-camera-calibration
$ roscore
$ rosrun uvc_camera uvc_camera_node
ãã§ãã«ãŒããŒãã®çšæ
ROSã®ãšãããOpenCVãªã©ãããããªãšããã«ãã§ãã«ãŒããŒãã®ç»åã¯ããã®ã§ãå°å·ããŠãå¹³ããªæ¿ã«è²Œãä»ãã
æºåãšããŠã
- çœé»ã®æ£æ¹åœ¢ã®å€§ãããèšæž¬ïŒïœmmïŒ
- çžŠã»æšªã®çœé»ã®â亀ç¹âãæ°ããïŒæšªé·ã§ã9x7åãªãã8x6åïŒ
ã調ã¹ãŠããã
ãã£ãªãã¬ãŒã·ã§ã³ããŒã«ã®å®è¡
$ rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.025 image:=/image_raw
25mmãµã€ãºãªããã¡ãŒãã«éæ£ã§è¡šèšã®ããã«ãæ¬ã ãšã«ã¡ã©ã«ååãã€ããŠããŠãæåŸã«ã[camera:=/camera]ã®ãªãã·ã§ã³ã远å ããŠããããã©ãããªããèªåã®ç°å¢ã ãšãšã©ãŒãåºãŠããŸã£ããååãå€ããšãèµ·åããïŒãªãã ãã...ïŒã
GUIãç«ã¡äžããã®ã§ãããšã¯ã«ã¡ã©ã®åã§ããŒããäžäžå·Šå³ã«ç§»åãããããå転ãããããåŸãããã"x", "y", "Size", "Skew"ãšããã²ãŒãžããã£ãŠããã®ç§»åãå転ã«ããããŒã¿ãååã«ããŸããšãç·ã®ã²ãŒãžã䌞ã³ãŠãã£ãŠããããšããã§ã[CALIBRATE]ãã¿ã³ãæŒããããã«ãªãã
æ°ååŸ
ã€ïŒäžç¬ããŠã£ã³ããŠãããªãŒãºããããã«èŠããã...ïŒãš[SAVE]ãš[COMMIT]ãã¿ã³ãæŒããããã«ãªãã®ã§ã[SAVE]ã
/tmp/calibrationdata.tar.gzãã«ä¿åãããã
ãã©ã¡ãŒã¿ãã¡ã€ã«ã®æœåºãšé 眮
å§çž®ãã¡ã€ã«ã奜ããªãšããã«ç§»åãããŠå±éããããã£ãªãã¬ãŒã·ã§ã³ã«äœ¿ã£ãç»åãæ°åæã°ãã°ãã£ãšå±éãããŠããŸãã®ã§ãã©ãããã©ã«ããäœã£ãŠãã®äžã§è§£åããã®ãããïŒ
$ tar -xvzf calibrationdata.tar.gz
ãšãããšãããããã®ç»åãšãost.txt, ost.yamlãå±éãããã
以äžã®ããã«ããã¡ã€ã«åã®å€æŽãããŒãµãŒã䜿ã£ãŠConvertãšãé
眮ãè¡ãã
$ mv ost.txt ost.ini
$ rosrun camera_calibration_parsers convert ost.ini camera.yaml
$ mkdir ~/.ros/camera_info
$ mv camera.yaml ~/.ros/camera_info
ã€ãã«ããã£ãæå®ã§ããªãã£ãã«ã¡ã©ã®ååã倿Žããã
camera.yamlãç·šéã®ããã«éããŠãäžã®ã»ãã«ããã
camera_name: narrow_stereo
ãšãªã£ãŠããã®ãã
camera_name: camera
ãšæžãå€ããããã
åäœç¢ºèª
ãŸãã端æ«ãéããŠãããå床ç«ã¡äžããããŸãããã
$ roscore
$ rosrun uvc_camera uvc_camera_node
ãå®è¡ããŠã¿ããšãä»åºŠã¯ãã¡ã€ã«ããªããšãæãããã«ããšã©ãŒãªã衚瀺ãããã¯ãã
ãããã«
~/.ros/camera_infoã«ãã«ã¡ã©ã®èšå®ãã¡ã€ã«ã眮ããã®ã§ãåžžã«ããã©ã«ãã§èªã¿åºããŠãããããã ãä»åŸã«ã¡ã©ãæ¿ããããè€æ°ã«ã¡ã©ãã€ããããšãã¯ãããããã®ã«ã¡ã©ã«å¯ŸããŠãå¥ã ã®èšå®ãã¡ã€ã«ãçŽä»ãããå¿ èŠãããã
ããŒãç«ã¡äžãæã®æå®ã®ä»æ¹ãlaunchãã¡ã€ã«ã«ããçååã¯æ¬¡åã