{"id":338937,"date":"2022-09-27T15:00:59","date_gmt":"2022-09-27T15:00:59","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=338937"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=338937","title":{"rendered":"<span>\u041a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 \u043a\u0430\u043c\u0435\u0440\u044b-imu \u0441 Kalibr<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/qt\/th\/o9\/qttho9d1ejkqp_fsmx_85g8ifoc.png\" data-src=\"https:\/\/habrastorage.org\/webt\/qt\/th\/o9\/qttho9d1ejkqp_fsmx_85g8ifoc.png\"\/><br \/>  \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c \u0441 \u043f\u0430\u043a\u0435\u0442\u043e\u043c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u043a\u0430\u043c\u0435\u0440\u044b Kalibr, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u043b\u044f \u0446\u0435\u043b\u0435\u0439 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u0430\u043a\u0435\u0442\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 ORB_SLAM3. \u0411\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u043a\u0430\u043c\u0435\u0440\u044b fish-eye \u0434\u043b\u044f raspberry pi. \u041a\u0430\u043c\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 \u0433\u0438\u0440\u043e\u0441\u043a\u043e\u043f\u043e\u043c\/\u0430\u043a\u0441\u0435\u043b\u0435\u0440\u043e\u043c\u0435\u0442\u0440\u043e\u043c imu-650 (GY-521). \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0442\u0430\u043a\u043e\u0432\u043e\u0439.<br \/>  <a name=\"habracut\"><\/a><\/p>\n<h3>\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435.<\/h3>\n<p>  \u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u0438\u043a\u0430\u0442\u044c\u0441\u044f \u0441 <a href=\"https:\/\/habr.com\/ru\/post\/689168\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u044b\u043b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f ORB_SLAM3.<\/p>\n<p>  \u041a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 ORB_SLAM3 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u043a\u0430\u043c\u0435\u0440\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043a\u0430\u043c\u0435\u0440 (fish-eye, pinhole), \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0432 \u0441\u0432\u044f\u0437\u043a\u0435 imu-camera \u0432 \u043f\u0430\u043a\u0435\u0442\u0435 ORB_SLAM3 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u043e\u0437\u043d\u0438\u043a \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043d\u0430 raspberry pi, \u0447\u044c\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b, \u0435\u0441\u043b\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u0434\u0440\u0430 \u0445\u043e\u0442\u044f \u0431\u044b \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430.<\/p>\n<p>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Kalibr \u043d\u0430 Raspbian buster \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0434\u0438\u043d \u0438\u0437 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0430\u043c\u0438\u043c Kalibro\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 Ubuntu 20.04 \u0432 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441 ROS Noetic. <\/p>\n<h3>\u041e Kalibr.<\/h3>\n<p>  \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Kalibr \u0438 \u0447\u0435\u043c \u043e\u043d \u043b\u0443\u0447\u0448\u0435\/\u0445\u0443\u0436\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438?<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Kalibra, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0443 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445:  <\/p>\n<blockquote>\n<ul>\n<li> Multi-Camera Calibration: Intrinsic and extrinsic calibration of a camera-systems with non-globally shared overlapping fields of view with support for a wide range of camera models.<\/li>\n<li> Visual-Inertial Calibration (CAM-IMU): Spatial and temporal calibration of an IMU w.r.t a camera-system along with IMU intrinsic parameters<\/li>\n<li>Multi-Inertial Calibration (IMU-IMU): Spatial and temporal calibration of an IMU w.r.t a base inertial sensor along with IMU intrinsic parameters (requires 1-aiding camera sensor). <\/li>\n<li>Rolling Shutter Camera Calibration: Full intrinsic calibration (projection, distortion and shutter parameters) of rolling shutter cameras. <\/li>\n<\/ul>\n<\/blockquote>\n<p>  \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043e\u043a \u043a\u0430\u043c\u0435\u0440 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u043f\u0443\u043d\u043a\u0442\u0430\u043c\u0438, \u043d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u044f \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 imu.<\/p>\n<p>  \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043e\u043a \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438 \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 ORB_SLAM3 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c, \u0442\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c CAM_IMU calibration.<\/p>\n<p>  \u0418\u0437 \u043f\u043b\u044e\u0441\u043e\u0432 kalibr \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e wiki \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0444\u043e\u043a\u0443\u0441\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u0430\u043c\u0435\u0440\u044b, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u0438 \u0442.\u0434.<\/p>\n<h3>\u041d\u044e\u0430\u043d\u0441\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Kalibr \u043d\u0430 ubuntu 20.04 raspberry pi.<\/h3>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043d\u0438\u0438 \u0441 ubuntu \u043d\u0430 raspberry \u0438\u0437 \u043f\u043e\u0434 windows \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c x2go:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/zs\/i7\/r3\/zsi7r3xtlwrbxkctmv9ysdwoooq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/zs\/i7\/r3\/zsi7r3xtlwrbxkctmv9ysdwoooq.png\"\/><\/p>\n<pre><code class=\"python\">sudo apt-get install x2goserver x2goserver-xsession sudo systemctl status x2goserver<\/code><\/pre>\n<p>  \u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 Kalibra \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 <a href=\"https:\/\/github.com\/ethz-asl\/kalibr\/wiki\/installation\" rel=\"nofollow noopener noreferrer\">\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0430 wiki<\/a>.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f docker \u043d\u0430 raspberry \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0438 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432\u0441\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0441 \u043a\u0430\u043c\u0435\u0440\u044b \u0438 imu, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u0438\u0445 ROS nod\u044b, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u043e ORB_SLAM3, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 ROS \u043f\u0430\u043a\u0435\u0442\u044b:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/3z\/jd\/7z\/3zjd7z_ekmo3a2mlcpueyplkvm8.png\" data-src=\"https:\/\/habrastorage.org\/webt\/3z\/jd\/7z\/3zjd7z_ekmo3a2mlcpueyplkvm8.png\"\/><\/p>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u044d\u0442\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043d\u0435 \u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u0430 \u2014 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0438\u0445 \u0432 workspace\/src \u0438 \u0434\u0430\u043b\u0435\u0435 \u0438\u0437 workspace \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c:<\/p>\n<pre><code class=\"python\"> cd ~\/kalibr_workspace catkin build -DCMAKE_BUILD_TYPE=Release -j4<\/code><\/pre>\n<p>  \u0412\u0441\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0448\u0442\u0430\u0442\u043d\u043e\u2026 \u043a\u0440\u043e\u043c\u0435 raspicam_node \u0438 imu node, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f.<\/p>\n<h3>Raspicam node \u043d\u0430 ubuntu.<\/h3>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f raspicam node \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c usb camera node, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0446\u0435\u043b\u043e\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u0430\u043a \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u043e ORB_SLAM3 \u043c\u0435\u0436\u0434\u0443 \u043d\u043e\u0434\u0430\u043c\u0438 \u0435\u0441\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u0438\u044f.<\/p>\n<p>  \u042d\u0442\u0430\u043f\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0447\u0442\u043e \u043a\u0430\u043c\u0435\u0440\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0430\u0441\u044c:<\/p>\n<pre><code class=\"python\">sudo nano \/boot\/firmware\/config.txt start_x=1 gpu_mem=128 vcgencmd get_camera supported=1 detected=1<\/code><\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438:<\/p>\n<pre><code class=\"python\">sudo apt-get install libogg-dev libvorbis-dev libtheora-dev<\/code><\/pre>\n<p>  \u0414\u0432\u0438\u0436\u0435\u043c\u0441\u044f \u043f\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0440\u0435\u043f\u043e raspicam node \u043e\u0442 userland:<\/p>\n<pre><code class=\"python\">---userland--- *https:\/\/github.com\/raspberrypi\/userland\/issues\/597 git clone https:\/\/github.com\/raspberrypi\/userland.git cd userland sed -i 's\/__bitwise\/FDT_BITWISE\/'  \/home\/ubuntu\/userland\/opensrc\/helpers\/libfdt\/libfdt_env.h sed -i 's\/__force\/FDT_FORCE\/'  \/home\/ubuntu\/userland\/opensrc\/helpers\/libfdt\/libfdt_env.h .\/buildme --aarch64<\/code><\/pre>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c raspistill \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043d\u0438\u043c\u043e\u043a \u0441 \u043a\u0430\u043c\u0435\u0440\u044b:<\/p>\n<pre><code class=\"python\">LD_PRELOAD=\"\/home\/ubuntu\/userland\/build\/lib\/libmmal_vc_client.so \/home\/ubuntu\/userland\/build\/lib\/libvcsm.so \/home\/ubuntu\/userland\/build\/lib\/libmmal_core.so \/home\/ubuntu\/userland\/build\/lib\/libmmal_util.so\" \/opt\/vc\/bin\/raspistill -o cam.jpg<\/code><\/pre>\n<p>  \u041b\u0438\u0431\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"python\">export LD_PRELOAD=\"\/home\/ubuntu\/userland\/build\/lib\/libmmal_vc_client.so \/home\/ubuntu\/userland\/build\/lib\/libvcsm.so \/home\/ubuntu\/userland\/build\/lib\/libmmal_core.so \/home\/ubuntu\/userland\/build\/lib\/libmmal_util.so\" cd \/opt\/vc\/bin .\/raspistill -k<\/code><\/pre>\n<p>  <\/p>\n<h3>Imu node \u043d\u0430 ubuntu.<\/h3>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c imu, \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0448\u0430\u0433\u0438, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">test_imu.py<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\"> '''         Read Gyro and Accelerometer by Interfacing Raspberry Pi with MPU6050 using Python http:\/\/www.electronicwings.com ''' import smbus#import SMBus module of I2C from time import sleep          #import  #some MPU6050 Registers and their Address PWR_MGMT_1   = 0x6B SMPLRT_DIV   = 0x19 CONFIG       = 0x1A GYRO_CONFIG  = 0x1B INT_ENABLE   = 0x38 ACCEL_XOUT_H = 0x3B ACCEL_YOUT_H = 0x3D ACCEL_ZOUT_H = 0x3F GYRO_XOUT_H  = 0x43 GYRO_YOUT_H  = 0x45 GYRO_ZOUT_H  = 0x47   def MPU_Init(): #write to sample rate register bus.write_byte_data(Device_Address, SMPLRT_DIV, 7)  #Write to power management register bus.write_byte_data(Device_Address, PWR_MGMT_1, 1)  #Write to Configuration register bus.write_byte_data(Device_Address, CONFIG, 0)  #Write to Gyro configuration register bus.write_byte_data(Device_Address, GYRO_CONFIG, 24)  #Write to interrupt enable register bus.write_byte_data(Device_Address, INT_ENABLE, 1)  def read_raw_data(addr): #Accelero and Gyro value are 16-bit         high = bus.read_byte_data(Device_Address, addr)         low = bus.read_byte_data(Device_Address, addr+1)              #concatenate higher and lower value         value = ((high &lt;&lt; 8) | low)                  #to get signed value from mpu6050         if(value > 32768):                 value = value - 65536         return value   bus = smbus.SMBus(1) # or bus = smbus.SMBus(0) for older version boards Device_Address = 0x68   # MPU6050 device address  MPU_Init()  print (\" Reading Data of Gyroscope and Accelerometer\")  while True:  #Read Accelerometer raw value acc_x = read_raw_data(ACCEL_XOUT_H) acc_y = read_raw_data(ACCEL_YOUT_H) acc_z = read_raw_data(ACCEL_ZOUT_H)  #Read Gyroscope raw value gyro_x = read_raw_data(GYRO_XOUT_H) gyro_y = read_raw_data(GYRO_YOUT_H) gyro_z = read_raw_data(GYRO_ZOUT_H)  #Full scale range +\/- 250 degree\/C as per sensitivity scale factor Ax = acc_x\/16384.0 Ay = acc_y\/16384.0 Az = acc_z\/16384.0  Gx = gyro_x\/131.0 Gy = gyro_y\/131.0 Gz = gyro_z\/131.0   print (\"Gx=%.2f\" %Gx, u'\\u00b0'+ \"\/s\", \"\\tGy=%.2f\" %Gy, u'\\u00b0'+ \"\/s\", \"\\tGz=%.2f\" %Gz, u'\\u00b0'+ \"\/s\", \"\\tAx=%.2f g\" %Ax, \"\\tAy=%.2f g\" %Ay, \"\\tAz=%.2f g\" %Az)  sleep(1) <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0415\u0441\u043b\u0438 imu \u0448\u043b\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u0434\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442, \u0442\u043e:<\/p>\n<pre><code class=\"python\">pip3 install smbus sudo nano \/lib\/udev\/rules.d\/60-i2c-tools.rules KERNEL==\"i2c-0\"     , GROUP=\"i2c\", MODE=\"0660\" KERNEL==\"i2c-[1-9]*\", GROUP=\"i2c\", MODE=\"0666\"  sudo groupadd gpio sudo usermod -a -G gpio ubuntu sudo grep gpio \/etc\/group sudo chown ubuntu.gpio \/dev\/gpiomem sudo chmod g+rw \/dev\/gpiomem<\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 imu node (\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 ORB_SLAM3), \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e \u043f\u0430\u0442\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442:<\/p>\n<pre><code class=\"python\">download patch https:\/\/groups.google.com\/g\/bcm2835\/c\/BwZXVsDRtwI tar zxvf bcm2835-1.59.tar.gz cd bcm2835-1.59 patch -lNp1 --input=\/path\/to\/patch\/bcm2835_rpi4.diff <\/code><\/pre>\n<p>  \u0421\u0431\u043e\u0440\u043a\u0430 \u043d\u043e\u0434\u044b:<\/p>\n<pre><code class=\"python\">cd ~\/kalibr_workspace\/src catkin build -DCMAKE_BUILD_TYPE=Release -j4<\/code><\/pre>\n<p>  <\/p>\n<h3>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043d\u0430\u0447\u0430\u0442\u044c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0443.<\/h3>\n<p>  \u0412 \u0438\u0434\u0435\u0430\u043b\u0435 kalibr \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <\/p>\n<pre><code class=\"python\">rosrun kalibr &lt;command_you_want_to_run_here><\/code><\/pre>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b kalibra \u0438\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438:<\/p>\n<pre><code class=\"python\">\/home\/ubuntu\/kalibr_workspace\/src\/kalibr\/aslam_offline_calibration\/kalibr\/python<\/code><\/pre>\n<p>  \u0412\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0432 \u044d\u0442\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043a\u043e\u0441\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e: \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0438\u0442\u044c import cv2 \u0432 \u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0430\u043c\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ft\/df\/aa\/ftdfaaeydolo7_qcmpurftg3oly.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ft\/df\/aa\/ftdfaaeydolo7_qcmpurftg3oly.png\"\/><\/p>\n<h3>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438<\/h3>\n<p>  \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:  <\/p>\n<ul>\n<li>\u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0444\u043e\u043a\u0443\u0441 \u043a\u0430\u043c\u0435\u0440\u044b,<\/li>\n<li>\u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0435\u043d\u0441\u043e\u0440 \u043a\u0430\u043c\u0435\u0440\u044b,<\/li>\n<li>\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u043a\u0443 \u0441 aprilgrid,<\/li>\n<li>\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c rosbag \u0434\u043b\u044f static dataset,<\/li>\n<li>\u043e\u0442\u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e static dataset,<\/li>\n<li>\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c rosbag \u0434\u043b\u044f dynamic dataset,<\/li>\n<li>\u043e\u0442\u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u0442\u044c \u0441 dynamic dataset.<\/li>\n<\/ul>\n<p>  \u041e\u0442\u0447\u0430\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043f\u043e <a href=\"https:\/\/github.com\/ethz-asl\/kalibr\/wiki\/calibrating-the-vi-sensor\" rel=\"nofollow noopener noreferrer\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<br \/>  \u041f\u0440\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u043f\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043d\u044e\u0430\u043d\u0441\u044b.<\/p>\n<h3>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0444\u043e\u043a\u0443\u0441 \u043a\u0430\u043c\u0435\u0440\u044b.<\/h3>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u043d\u0435 \u043b\u0438\u0448\u043d\u0438\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0435 \u0444\u043e\u043a\u0443\u0441.<\/p>\n<p>  \u041c\u043e\u0436\u043d\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u00ab\u043d\u0430 \u0433\u043b\u0430\u0437\u043e\u043a\u00bb, \u0443\u0431\u0435\u0434\u0438\u0432\u0448\u0438\u0441\u044c, \u0447\u0442\u043e \u043a\u0430\u043c\u0435\u0440\u0430 \u0447\u0435\u0442\u043a\u043e \u0432\u0438\u0434\u0438\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>  \u041d\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <a href=\"https:\/\/github.com\/ethz-asl\/kalibr\/wiki\/camera-focus\" rel=\"nofollow noopener noreferrer\">\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438<\/a> \u0441\u0430\u043c\u043e\u0433\u043e kalibra.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 raspberry, \u0430 \u043c\u043e\u0436\u043d\u043e \u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0441\u0441\u0438\u044e x2go. \u041d\u043e \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c raspicam \u043d\u043e\u0434\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0432 launch \u0444\u0430\u0439\u043b viewer (\u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u043c \u0442\u0435\u0433\u043e\u043c launch):<\/p>\n<pre><code class=\"xml\">&lt;node name=\"image_view\" pkg=\"image_view\" type=\"image_view\" respawn=\"false\" output=\"screen\">     &lt;remap from=\"image\" to=\"image\"\/>     &lt;param name=\"autosize\" value=\"true\" \/>   &lt;\/node> &lt;\/launch> <\/code><\/pre>\n<p>  \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e launch \u0444\u0430\u0439\u043b <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">camerav2_320x240.launch<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"xml\">&lt;launch>   &lt;arg name=\"enable_raw\" default=\"true\"\/>   &lt;arg name=\"enable_imv\" default=\"false\"\/>   &lt;arg name=\"camera_id\" default=\"0\"\/>   &lt;arg name=\"camera_frame_id\" default=\"raspicam\"\/>   &lt;arg name=\"camera_name\" default=\"camerav2_320x240\"\/>    &lt;node type=\"raspicam_node\" pkg=\"raspicam_node\" name=\"raspicam_node\" output=\"screen\">     &lt;param name=\"private_topics\" value=\"false\"\/>      &lt;param name=\"camera_frame_id\" value=\"$(arg camera_frame_id)\"\/>     &lt;param name=\"enable_raw\" value=\"$(arg enable_raw)\"\/>     &lt;param name=\"enable_imv\" value=\"$(arg enable_imv)\"\/>     &lt;param name=\"camera_id\" value=\"$(arg camera_id)\"\/>      &lt;param name=\"camera_name\" value=\"$(arg camera_name)\"\/>     &lt;param name=\"width\" value=\"320\"\/>     &lt;param name=\"height\" value=\"240\"\/>      &lt;param name=\"framerate\" value=\"20\"\/>     &lt;param name=\"exposure_mode\" value=\"antishake\"\/>     &lt;param name=\"shutter_speed\" value=\"0\"\/>   &lt;\/node> &lt;node name=\"image_view\" pkg=\"image_view\" type=\"image_view\" respawn=\"false\" output=\"screen\">     &lt;remap from=\"raspicam_node\/image\" to=\"image\"\/>     &lt;param name=\"autosize\" value=\"true\" \/>   &lt;\/node> &lt;\/launch> <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043c\u0430\u0441\u0442\u0435\u0440-\u043d\u043e\u0434\u0443:<\/p>\n<pre><code class=\"python\">sudo bash -c \"source \/home\/ubuntu\/kalibr_workspace\/devel\/setup.bash; roscore\"<\/code><\/pre>\n<p>  \u0412 \u0434\u0440\u0443\u0433\u043e\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c raspicam node (\u043d\u043e\u0434\u0443 \u043a\u0430\u043c\u0435\u0440\u044b):<\/p>\n<pre><code class=\"python\">export LD_PRELOAD=\"\/home\/ubuntu\/userland\/build\/lib\/libmmal_vc_client.so \/home\/ubuntu\/userland\/build\/lib\/libvcsm.so \/home\/ubuntu\/userland\/build\/lib\/libmmal_core.so \/home\/ubuntu\/userland\/build\/lib\/libmmal_util.so\" sudo bash -c \"source \/home\/ubuntu\/kalibr_workspace\/devel\/setup.bash; roslaunch raspicam_node camerav2_320x240.launch\"<\/code><\/pre>\n<p>  \u0423\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/xn\/y_\/1d\/xny_1dvkhiiqy7ydak_vlxkxkom.png\" data-src=\"https:\/\/habrastorage.org\/webt\/xn\/y_\/1d\/xny_1dvkhiiqy7ydak_vlxkxkom.png\"\/><\/p>\n<p>  \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0441 \u0444\u043e\u043a\u0443\u0441\u043e\u043c \u043a\u0430\u043c\u0435\u0440\u044b:<\/p>\n<pre><code class=\"python\">cd \/home\/ubuntu\/kalibr_workspace\/src\/kalibr\/aslam_offline_calibration\/kalibr\/python python3 kalibr_camera_focus --topic \/image\/compressed<\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ig\/1q\/zb\/ig1qzb93uc6ww8svn3quzpnizkm.gif\" data-src=\"https:\/\/habrastorage.org\/webt\/ig\/1q\/zb\/ig1qzb93uc6ww8svn3quzpnizkm.gif\"\/><\/p>\n<p>  \u0417\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430:<br \/>  \u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043e\u043f\u0442\u0438\u043a\u0443 \u043a\u0430\u043c\u0435\u0440\u044b, \u0447\u0442\u043e\u0431\u044b fde \u0431\u044b\u043b \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0435\u043d (\u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u0432\u0438\u0434\u0435\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440). \u041f\u0440\u0438 \u044d\u0442\u043e\u043c -11 \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c -9. \u0414\u0430 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u043c\u0435\u0440\u0430 \u0440\u0430\u0441\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0430 \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442.<\/p>\n<p>  \u0424\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0442\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0441\u0435\u0442\u044c \u0438\u043b\u0438 \u0441\u0442\u043e\u044f\u0442\u044c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043e\u0447\u043d\u0430\u044f \u0434\u043e\u0441\u043a\u0430.<\/p>\n<h3>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0435\u043d\u0441\u043e\u0440 \u043a\u0430\u043c\u0435\u0440\u044b.<\/h3>\n<p>  \u042d\u0442\u043e\u0442 \u0448\u0430\u0433, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0435\u0433\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c wiki kalibra \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u0441 \u0441\u0435\u0431\u044f \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u0437\u043a\u0438\u0445 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u0441\u044a\u0435\u043c\u043a\u0435 \u0441 \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0441\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0448\u0430\u0433 \u0432 \u0447\u0438\u0441\u043b\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0445, \u043f\u0440\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u043f\u043e \u043d\u0435\u043c\u0443.<\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 roscore, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c raspicam node (camerav2_640x480.launch \u0438\u043b\u0438 \u0438\u043d\u043e\u0439), \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443:<\/p>\n<pre><code class=\"python\">sudo bash -c \"source \/home\/ubuntu\/kalibr_workspace\/devel\/setup.bash; roslaunch raspicam_node camerav2_320x240.launch\"<\/code><\/pre>\n<p>  \u0412 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u0430\u043a\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u0430\u043c\u0435\u0440\u044b:<\/p>\n<pre><code class=\"python\">sudo bash -c \"source \/home\/ubuntu\/kalibr_workspace\/devel\/setup.bash; rosrun rqt_reconfigure rqt_reconfigure\"<\/code><\/pre>\n<p>  \u041e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043e\u043a\u043d\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u043b\u0435\u0442\u0443 \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u043e\u043c raspicam node \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u043e\u043a\u043d\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044e \u0440\u0430\u0437\u043c\u044b\u0442\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0438 \u043a\u0430\u043c\u0435\u0440\u044b:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/b1\/7p\/76\/b17p76hv_qax4bjroshuya6kr6o.png\" data-src=\"https:\/\/habrastorage.org\/webt\/b1\/7p\/76\/b17p76hv_qax4bjroshuya6kr6o.png\"\/> <\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043e\u043a\u043d\u043e reconfigure \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 yaml \u0444\u0430\u0439\u043b, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c, \u0442.\u043a. \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u043a\u0430 \u0432\u044b \u0438\u0445 \u0441\u043d\u043e\u0432\u0430 \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442\u0435.<\/p>\n<h3>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u043a\u0443 \u0441 aprilgrid.<\/h3>\n<p>  Kalibr \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0434\u043b\u044f \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u0442\u0440\u0438 \u0442\u0438\u043f\u0430 <a href=\"https:\/\/github.com\/ethz-asl\/kalibr\/wiki\/calibration-targets\" rel=\"nofollow noopener noreferrer\">\u00ab\u0434\u043e\u0441\u043e\u043a\u00bb<\/a>:  <\/p>\n<ul>\n<li>aprilgrid;<\/li>\n<li>\u0441heckerboard(\u0448\u0430\u0445\u043c\u0430\u0442\u043d\u0430\u044f \u0434\u043e\u0441\u043a\u0430);<\/li>\n<li>circlegrid.<\/li>\n<\/ul>\n<p>  \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u0440\u0438 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0448\u0430\u0445\u043c\u0430\u0442\u043d\u0430\u044f \u0434\u043e\u0441\u043a\u0430 \u043a\u0430\u043a \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435.<\/p>\n<p>  \u041e\u0441\u043e\u0431\u043e\u0439 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u0434\u043e\u0441\u043a\u0430\u043c\u0438 \u043d\u0435\u0442, \u043d\u043e \u0441\u0430\u043c kalibr \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c aprilgrid:  <\/p>\n<blockquote><p> It is recommended to use the Aprilgrid due to the following benefits:  <\/p>\n<ul>\n<li>partially visible calibration boards can be used<\/li>\n<li>pose of the target is fully resolved (no flips) <\/li>\n<\/ul>\n<\/blockquote>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0441 aprilgrid.<\/p>\n<p>  <b>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 aprilgrid ?<\/b><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/1m\/y_\/yp\/1my_ypgwxiwnf1ehrf_fv9s3dyi.png\" data-src=\"https:\/\/habrastorage.org\/webt\/1m\/y_\/yp\/1my_ypgwxiwnf1ehrf_fv9s3dyi.png\"\/><\/p>\n<p>  \u042d\u0442\u043e, \u043a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0441 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u043a\u0430\u043c\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u043e\u0431 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>  \u0421\u0430\u043c\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0441 aprilgrid \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0441 wiki kalibra \u2014 <a href=\"https:\/\/github.com\/ethz-asl\/kalibr\/wiki\/downloads\" rel=\"nofollow noopener noreferrer\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  \u041f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043a\u0430\u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0432 pdf, \u0442\u0430\u043a \u0438 yaml \u0444\u0430\u0439\u043b \u043a \u043d\u0435\u0439:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/nh\/rr\/7f\/nhrr7fevpvl3pdwibctqo4rx2cy.png\" data-src=\"https:\/\/habrastorage.org\/webt\/nh\/rr\/7f\/nhrr7fevpvl3pdwibctqo4rx2cy.png\"\/><br \/>  \u0414\u0430\u043d\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432 \u0438\u0434\u0435\u0430\u043b\u0435 \u0431\u044b\u0442\u044c 80 \u043d\u0430 80 \u0441\u043c, \u043d\u043e \u043d\u0435 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u043d\u0442\u0435\u0440, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u043a\u0430 \u043d\u0430 \u04104 \u0442\u043e\u0436\u0435 \u0441\u0433\u043e\u0434\u0438\u0442\u0441\u044f.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438:<\/p>\n<p>   \u2014 \u043d\u0435 \u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u0432 \u0433\u0440\u0430\u0434\u0430\u0446\u0438\u044f\u0445 \u0441\u0435\u0440\u043e\u0433\u043e, \u0442.\u0435. \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0447\u0435\u0440\u043d\u043e\u0433\u043e \u0446\u0432\u0435\u0442\u0430 \u0431\u0435\u0437 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0439,<br \/>   \u2014 \u043a\u043b\u0435\u0438\u0442\u044c aprilgrid \u043d\u0430 \u043c\u0430\u0442\u043e\u0432\u0443\u044e \u0440\u043e\u0432\u043d\u0443\u044e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u0431\u0435\u0437 \u0433\u043b\u044f\u043d\u0446\u0430 \u0438 \u0431\u043b\u0438\u043a\u043e\u0432,<br \/>   \u2014 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0434\u0432\u0430 \u044d\u043a\u0437\u0435\u043c\u043b\u044f\u0440\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438:   <\/p>\n<ul>\n<li> \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043a\u043b\u0435\u0438\u0442\u044c \u043d\u0430 \u0440\u043e\u0432\u043d\u0443\u044e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043d\u0435\u043f\u043e\u0434\u0432\u0438\u0436\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u043e\u0439, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c static dataset<\/li>\n<li>\u0432\u0442\u043e\u0440\u043e\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u2014 \u043f\u0440\u0438\u043a\u043b\u0435\u0438\u0442\u044c \u043d\u0430 \u0441\u0442\u0435\u043d\u0443 \u0438\u043b\u0438 \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u0442\u044c \u043d\u0430 \u0448\u0442\u0430\u0442\u0438\u0432\u0435, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043f\u043e\u0434\u0432\u0438\u0436\u0435\u043d \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043a\u0430\u043c\u0435\u0440\u044b \u0432\u043e\u043a\u0440\u0443\u0433 \u043d\u0435\u0433\u043e \u2014 dynamic dataset.  <\/li>\n<\/ul>\n<p>   \u2014 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c 6\u04456 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432, \u043e\u043d\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0432\u044b\u0448\u0435, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0443 kalibra \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u0435\u043c.<\/p>\n<p>  \u0421 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c aprilgrid \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430, \u0432\u044b\u0434\u0430\u0432 \u043e\u0448\u0438\u0431\u043a\u0443:<\/p>\n<pre><code class=\"python\">[FATAL] [1663165566.276776]: No corners could be extracted for camera \/raspicam_node\/image\/compressed! Check the calibration target configuration and dataset.<\/code><\/pre>\n<p>   \u2014 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u043e\u0441\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0445 \u0443\u0447\u0435\u0441\u0442\u044c. \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0435\u0435, \u043d\u0435 \u0437\u0435\u0440\u043a\u0430\u043b\u0438\u0442\u044c \u0438 \u0442.\u043f.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/dr\/mb\/fx\/drmbfxvzkwdaizfnrrxqd-ork3a.png\" data-src=\"https:\/\/habrastorage.org\/webt\/dr\/mb\/fx\/drmbfxvzkwdaizfnrrxqd-ork3a.png\"\/><\/p>\n<p>   \u2014 \u043d\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0431\u0435\u043b\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043b\u0438\u0441\u0442\u0430 \u0432\u043e\u043a\u0440\u0443\u0433 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. <\/p>\n<p>  <b>\u0420\u0435\u0437\u044e\u043c\u0438\u0440\u0443\u044f<\/b>: \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u0430 \u04104 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0431\u0435\u0437 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0439 (\u043b\u0438\u0441\u0442 \u04104 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e) \u0438 \u043d\u0430\u043a\u043b\u0435\u0438\u0442\u0435 \u0435\u0435 \u043d\u0430 \u0440\u043e\u0432\u043d\u0443\u044e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c, \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c yaml \u0444\u0430\u0439\u043b \u0434\u043b\u044f aprilgrid. \u0417\u0434\u0435\u0441\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e.<\/p>\n<p>  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u0441 aprilgrid \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438 \u0432\u043d\u0435\u0441\u0442\u0438 \u043f\u0440\u0430\u0432\u043a\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/qi\/i5\/l7\/qii5l7l8r43essclr9id47ta9pe.png\" data-src=\"https:\/\/habrastorage.org\/webt\/qi\/i5\/l7\/qii5l7l8r43essclr9id47ta9pe.png\"\/><\/p>\n<h3>\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c rosbag \u0434\u043b\u044f static dataset.<\/h3>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/0l\/b2\/zh\/0lb2zh8hwozpynfjzacwx5jv86y.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/0l\/b2\/zh\/0lb2zh8hwozpynfjzacwx5jv86y.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0434\u043e\u0441\u043a\u0438 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u0433\u043e\u0442\u043e\u0432\u044b, \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0437\u0430\u043f\u0438\u0441\u0438 rosbag.<\/p>\n<p>  Rosbag \u2014 \u044d\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u00ab\u0441\u0443\u043c\u043a\u0430\u00bb, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e ROS \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0442\u043e\u043f\u0438\u043a\u043e\u0432. \u0418\u0437 \u043a\u0430\u043a\u0438\u0445 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u043f\u0438\u043a\u043e\u0432 \u0438 \u043a\u0430\u043a \u0434\u043e\u043b\u0433\u043e \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u2014 \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c. \u041f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0430\u0443\u0434\u0438\u043e-\/\u0432\u0438\u0434\u0435\u043e- \u0444\u0430\u0439\u043b\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0441\u043e\u0431\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c rosbag, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043f\u043e \u043d\u0438\u043c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u0442\u044c. \u041e \u0442\u043e\u043c, \u0427\u0422\u041e \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u043e\u0441\u044c \u0432 rosbag \u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u043e\u0441\u044c \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u0441\u0442\u0430\u0440\u0442\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e:<\/p>\n<p>   \u2014 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u043a\u0443 \u0441 aprilgrid \u0434\u043b\u044f static dataset, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u043c\u0435\u0440\u043e\u0439, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044f rosbag.<br \/>   \u2014 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0442\u043e\u043f\u0438\u043a\u0438 roscore \u0438 raspicam node (\u0438\u043b\u0438 usb node)<\/p>\n<pre><code class=\"python\">sudo bash -c \"source \/home\/ubuntu\/kalibr_workspace\/devel\/setup.bash; roscore\" export LD_PRELOAD=\"\/home\/ubuntu\/userland\/build\/lib\/libmmal_vc_client.so \/home\/ubuntu\/userland\/build\/lib\/libvcsm.so \/home\/ubuntu\/userland\/build\/lib\/libmmal_core.so \/home\/ubuntu\/userland\/build\/lib\/libmmal_util.so\" sudo bash -c \"source \/home\/ubuntu\/kalibr_workspace\/devel\/setup.bash; roslaunch raspicam_node camerav2_320x240.launch\"<\/code><\/pre>\n<p>   \u2014 \u0434\u043e\u0441\u043a\u0430 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0430.<\/p>\n<p>  \u0412 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044c:<\/p>\n<pre><code class=\"python\">rosbag record \/image --duration=60 -O static.bag #60\u0441\u0435\u043a\u0443\u043d\u0434 \u0437\u0430\u043f\u0438\u0441\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u044b<\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043b\u0430\u0432\u043d\u043e, \u043d\u0435 \u0441\u043f\u0435\u0448\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u0434\u043e\u0441\u043a\u0443 \u0441 aprilgrid \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u043c\u0435\u0440\u043e\u0439 \u0438\u0437 \u043a\u0440\u0430\u044f \u0432 \u043a\u0440\u0430\u0439 \u0432 \u0437\u043e\u043d\u0435 \u0435\u0435 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430 \u0444\u043e\u043a\u0443\u0441\u043d\u043e\u043c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0438 (\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438). \u041f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0442\u044c-\u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0438\u043b\u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u043e\u0441\u043a\u0443 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u0434\u0440\u044b \u043e\u0442\u0431\u0440\u0430\u043a\u0443\u044e\u0442\u0441\u044f \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043a\u0430\u043a \u0440\u0430\u0437\u043c\u044b\u0442\u044b\u0435 \u0438\u043b\u0438 \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u0434\u043e\u0441\u043a\u0438. \u0422\u0430\u043a\u0436\u0435 \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0434\u0440\u043e\u0436\u0430\u0442\u044c, \u043d\u0435 \u0434\u0435\u0440\u0433\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u0438 \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u044b\u0442\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u043d\u0430 rolling shutter \u043a\u0430\u043c\u0435\u0440\u0430\u0445.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b static.bag \u0438 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0435\u0441\u043b\u0438 \u0446\u0435\u043b\u044c \u2014 \u043e\u0442\u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043c\u0435\u0440\u0443 \u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 imu.<\/p>\n<h3>\u041e\u0442\u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e static dataset.<\/h3>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0435\u043d rosbag, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0435.<\/p>\n<p>  \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u0434\u043b\u044f static dataset (\u0431\u0435\u0437 imu):<\/p>\n<pre><code class=\"python\">cd ~\/kalibr_workspace\/src\/kalibr\/aslam_offline_calibration\/kalibr\/python python3 kalibr_calibrate_cameras --model pinhole-equi --topics \/image --bag static.bag --target aprilgrid_6x6.yaml<\/code><\/pre>\n<p>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u043b\u044f fish-eye \u043a\u0430\u043c\u0435\u0440\u044b \u0441 rolling shutter:<\/p>\n<pre><code class=\"python\">python3 kalibr_calibrate_rs_cameras --model pinhole-radtan-rs --topic \/image --bag 320x240_static.bag --target aprilgrid_6x6.yaml --inverse-feature-variance 1 --frame-rate 20<\/code><\/pre>\n<p>  \u041f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u0441\u043e static dataset kalibr \u0432\u044b\u0434\u0430\u0441\u0442 \u0444\u0430\u0439\u043b <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">320x240_static-camchain.yaml<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"xml\">cam0:   camera_model: pinhole   distortion_coeffs: [-0.29585544183959606, 0.06950559854738034, 0.000981636728463331, 0.0010529550643745315]   distortion_model: radtan   intrinsics: [155.59508048438533, 155.001082471171, 148.3289996162289, 128.18248085164035]   line_delay: 8.839452618620747e-05   resolution: [320, 240]   rostopic: \/image <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  , \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u0443\u0436\u0435 \u0441 imu.<\/p>\n<p>  *\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0441\u043a\u043e\u0447\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/cg\/is\/cx\/cgiscxxgnqwv44elhcunux6ntfe.png\" data-src=\"https:\/\/habrastorage.org\/webt\/cg\/is\/cx\/cgiscxxgnqwv44elhcunux6ntfe.png\"\/><\/p>\n<p>  \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 rosbag \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f launch \u0444\u0430\u0439\u043b raspicam nod\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 yaml \u0444\u0430\u0439\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043a\u0430\u043c\u0435\u0440\u044b.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043d\u043e\u0432\u043e \u043d\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c rosbag \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0443\u043a\u0430\u0437\u0430\u0442\u044c FOCAL_LENGTH.<br \/>  \u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u0432\u0432\u0435\u0441\u0442\u0438:<\/p>\n<pre><code class=\"python\">export KALIBR_MANUAL_FOCAL_LENGTH_INIT=1<\/code><\/pre>\n<p>  \u0418, \u0434\u0430\u043b\u0435\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442 \u0432\u0432\u0435\u0441\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/vs\/hw\/jp\/vshwjpoonkblnjjvrnhedvgxa2a.png\" data-src=\"https:\/\/habrastorage.org\/webt\/vs\/hw\/jp\/vshwjpoonkblnjjvrnhedvgxa2a.png\"\/><\/p>\n<p>  \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 158 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043e \u0440\u0430\u0441\u0447\u0435\u0442\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c:<br \/>  \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u043a\u0430\u043c\u0435\u0440\u044b Waveshare Camera H:<br \/>  \u0414\u0438\u0430\u0433\u043e\u043d\u0430\u043b\u044c \u00bc \u0434\u044e\u0439\u043c\u0430<br \/>  \u0414\u043b\u0438\u043d\u0430 \u0444\u043e\u043a\u0443\u0441\u0430 3.15 \u043c\u043c<br \/>  \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u0434\u0440\u0430: 320\u0445240<br \/>  3,15\u043c\u043c\/6,35\u043c\u043cx320=158<\/p>\n<p>  **\u0412\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442, \u0435\u0441\u043b\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c rosbag, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 launch \u0444\u0430\u0439\u043b raspicam node, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c yaml \u0444\u0430\u0439\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 camerav2_640x480.launch \u0438 \u0434\u0430\u043b\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0443:<\/p>\n<pre><code class=\"python\">python3 kalibr_calibrate_rs_cameras --model pinhole-radtan-rs --topic \/image --bag 640x480_static.bag --target aprilgrid_6x6.yaml --inverse-feature-variance 1 --frame-rate 30<\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 FOCAL_LENGTH:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/i3\/it\/2k\/i3it2k00_xs5xn_dsahw8bcwkoy.png\" data-src=\"https:\/\/habrastorage.org\/webt\/i3\/it\/2k\/i3it2k00_xs5xn_dsahw8bcwkoy.png\"\/><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e:<br \/>  317,48 (3,15\u043c\u043c\/6,35\u043c\u043cx640). \u041f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043f\u0440\u0430\u0432\u0434\u0443.<\/p>\n<h3>\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c rosbag \u0434\u043b\u044f dynamic dataset.<\/h3>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/7k\/sk\/rl\/7kskrlsvvnlwp-8ffuaebensnci.gif\" data-src=\"https:\/\/habrastorage.org\/webt\/7k\/sk\/rl\/7kskrlsvvnlwp-8ffuaebensnci.gif\"\/><\/p>\n<p>  \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430:<br \/>   \u2014 \u0432 launch \u0444\u0430\u0439\u043b\u0435 \u043a\u0430\u043c\u0435\u0440\u044b (raspicam node) \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043a\u0430\u0434\u0440\u043e\u0432 (fps) 20Hz, \u0432 launch imu \u0447\u0430\u0441\u0442\u043e\u0442\u0443- 200Hz.<br \/>   \u2014 aprilgrid \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0435\u043d \u043d\u0430 \u0441\u0442\u0435\u043d\u0435 \u043d\u0435\u043f\u043e\u0434\u0432\u0438\u0436\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u0430\u043c\u0435\u0440\u0430 \u0441 imu \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0432\u043e\u043a\u0440\u0443\u0433 aprilgrid.<br \/>   \u2014 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u043e\u0434\u044b \u0441 roscore, raspicam \u0438 imu:<\/p>\n<pre><code class=\"python\">1st: sudo bash -c \"source \/home\/ubuntu\/kalibr_workspace\/devel\/setup.bash; roscore\" 2d: export LD_PRELOAD=\"\/home\/ubuntu\/userland\/build\/lib\/libmmal_vc_client.so \/home\/ubuntu\/userland\/build\/lib\/libvcsm.so \/home\/ubuntu\/userland\/build\/lib\/libmmal_core.so \/home\/ubuntu\/userland\/build\/lib\/libmmal_util.so\" sudo bash -c \"source \/home\/ubuntu\/kalibr_workspace\/devel\/setup.bash; roslaunch raspicam_node camerav2_320x240.launch\" 3d: sudo bash -c \"source \/home\/ubuntu\/kalibr_workspace\/devel\/setup.bash; roslaunch ros_mpu6050_node mpu6050.launch\"<\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c rosbag (dynamic dataset):<\/p>\n<pre><code class=\"python\">rosbag record \/raspicam_node\/image\/compressed --duration=180 \/imu\/data -O dynami\u0441_320x240_30fps_with_imu.bag #180\u0441\u0435\u043a\u0443\u043d\u0434 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u043c\u0435\u0440\u044b \u0438 imu<\/code><\/pre>\n<p>  \u0421\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0442\u0430\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0439 \u0441 \u043a\u0430\u043c\u0435\u0440\u043e\u0439 \u0438 imu \u043f\u0435\u0440\u0435\u0434 aprilgrid (pitch,yaw,roll) \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0432\u0438\u0434\u0435\u043e, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u043e\u043c \u043d\u0430 <a href=\"https:\/\/github.com\/ethz-asl\/kalibr\/wiki\/camera-imu-calibration\" rel=\"nofollow noopener noreferrer\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043a\u0430\u043b\u0438\u0431\u0440\u0430<\/a>. \u041f\u0440\u0438 \u0432\u0441\u0435\u043c \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u0447\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043d\u0438\u043c\u043a\u0430\u0445 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u0430\u043c\u0435\u0440\u044b \u0441 rolling shutter.<\/p>\n<p>  \u041a\u0430\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f rosbag? \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 imu \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043b\u044c\u0432\u0438\u043d\u0443\u044e \u0434\u043e\u043b\u044e \u0442\u0430\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0441 \u043a\u0430\u043c\u0435\u0440\u044b. \u0427\u0435\u043c \u0432\u044b\u0448\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u0434\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u043f\u0438\u0441\u044c rosbag, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 rosbag. <\/p>\n<h3>\u041e\u0442\u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u0442\u044c c dynamic dataset.<\/h3>\n<p>  \u041a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 \u0441 dynamic dataset:<\/p>\n<pre><code class=\"python\"> cd ~\/kalibr_workspace\/src\/kalibr\/aslam_offline_calibration\/kalibr\/python python3 kalibr_calibrate_imu_camera --cam 320x240_static-camchain.yaml --target aprilgrid_6x6.yaml --imu imu0.yaml --bag dynami\u0441_320x240.bag<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0440\u0430\u043d\u0435\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0438\u0441\u044c \u043a\u0440\u043e\u043c\u0435 imu0.yaml. \u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f, \u044d\u0442\u043e \u0444\u0430\u0439\u043b \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0434\u043b\u044f imu. \u0412 \u043d\u0435\u043c \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b imu \u043b\u0438\u0431\u043e \u0438\u0437 datasheet \u043b\u0438\u0431\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0435 \u0441\u0430\u043c\u043e\u0433\u043e imu.<\/p>\n<p>  \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">imu0.yaml<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"xml\">rostopic: \/imu\/data accelerometer_noise_density: 0.05 #continous accelerometer_random_walk: 0.001 gyroscope_noise_density: 0.02 #continous gyroscope_random_walk: 4.0e-05 update_rate: 200 <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u0434\u043b\u044f dynamic dataset, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0442 15 \u043c\u0438\u043d \u0438 \u0431\u043e\u043b\u0435\u0435 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 rosbag, kalibr \u0432\u044b\u0434\u0430\u0441\u0442 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 camera-imu.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0444\u0430\u0439\u043b\u043e\u0432:<br \/>   \u2014 <a href=\"https:\/\/disk.yandex.ru\/d\/wu9HODaX4wlrRw\" rel=\"nofollow noopener noreferrer\">320x240_dynamic-results-imucam.txt<\/a><br \/>   \u2014 <a href=\"https:\/\/disk.yandex.ru\/i\/I9xWhUVNWVxkQQ\" rel=\"nofollow noopener noreferrer\">320x240_dynamic-report-imucam.pdf<\/a><\/p>\n<p>  <b>\u041d\u0430 \u044d\u0442\u043e\u043c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 \u0441 kalibr \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430!<\/b><\/p>\n<h3>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 rosbag.<\/h3>\n<p>  \u0418\u043d\u043e\u0433\u0434\u0430, \u043f\u043e \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e.<br \/>  \u0412 \u044d\u0442\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u0432\u0448\u0435\u0433\u043e\u0441\u044f rosbag, \u0435\u0433\u043e \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 static \u0438\u043b\u0438 dynamic rosbag.<\/p>\n<p>  \u0412 kalibr \u0435\u0441\u0442\u044c \u043f\u0430\u043a\u0435\u0442 bagextractor:<\/p>\n<pre><code class=\"python\">python3 kalibr_bagextractor --image-topics \/image --output-folder . --bag static.bag<\/code><\/pre>\n<p>  \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u044b\u0448\u0435 bagextractor \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u0442 bag, \u0441\u043b\u043e\u0436\u0438\u0432 \u0432\u0441\u0435 \u0441\u043d\u0438\u043c\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u043f\u0440\u0438 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0435 \u0432 cam0 \u043f\u0430\u043f\u043a\u0443. \u0414\u0430\u043b\u0435\u0435, \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u044d\u0442\u0438 \u0441\u043d\u0438\u043c\u043a\u0438, \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a.<\/p>\n<h3>\u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 \u0444\u0430\u0439\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a ORB_SLAM3.<\/h3>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u0438 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0435, \u0438\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0432 \u0444\u0430\u0439\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 ORB_SLAM3:<\/p>\n<pre><code class=\"python\">nano \/home\/pi\/ORB_SLAM3\/Examples\/Monocular\/TUM1.yaml<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">TUM1.yaml<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"xml\">%YAML:1.0  System.SaveAtlasToFile: \"my_01\" #System.LoadAtlasFromFile: \"my_01\" #-------------------------------------------------------------------------------------------- # Camera Parameters. Adjust them! #-------------------------------------------------------------------------------------------- File.version: \"1.0\" Camera.type: \"PinHole\"  # Camera calibration and distortion parameters (OpenCV)  #Camera1.fx: 517.306408 #Camera1.fy: 516.469215 #Camera1.cx: 318.643040 #Camera1.cy: 255.313989 Camera1.fx: 155.595080 Camera1.fy: 155.00108 Camera1.cx: 148.389000 Camera1.cy: 128.182481  #Camera1.k1: 0.262383 #Camera1.k2: -0.953104 #Camera1.p1: -0.005358 #Camera1.p2: 0.002628 #Camera1.k3: 1.163314 Camera1.k1: -0.295855 Camera1.k2: 0.069506 Camera1.p1: 0.000982 Camera1.p2: 0.001053  # Camera frames per second  Camera.fps: 5  # Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale) Camera.RGB: 0  # Camera resolution Camera.width: 320 Camera.height: 240  #-------------------------------------------------------------------------------------------- # ORB Parameters #--------------------------------------------------------------------------------------------  # ORB Extractor: Number of features per image ORBextractor.nFeatures: 1000  # ORB Extractor: Scale factor between levels in the scale pyramid  ORBextractor.scaleFactor: 1.2  # ORB Extractor: Number of levels in the scale pyramid ORBextractor.nLevels: 1  #8  # ORB Extractor: Fast threshold # Image is divided in a grid. At each cell FAST are extracted imposing a minimum response. # Firstly we impose iniThFAST. If no corners are detected we impose a lower value minThFAST # You can lower these values if your images have low contrast ORBextractor.iniThFAST: 20 ORBextractor.minThFAST: 7  #-------------------------------------------------------------------------------------------- # Viewer Parameters #-------------------------------------------------------------------------------------------- Viewer.KeyFrameSize: 0.05 Viewer.KeyFrameLineWidth: 1.0 Viewer.GraphLineWidth: 0.9 Viewer.PointSize: 2.0 Viewer.CameraSize: 0.08 Viewer.CameraLineWidth: 3.0 Viewer.ViewpointX: 0.0 Viewer.ViewpointY: -0.7 Viewer.ViewpointZ: -1.8 Viewer.ViewpointF: 500.0 Viewer.imageViewScale: 0.3 <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0438<\/p>\n<pre><code class=\"python\">nano \/home\/pi\/ORB_SLAM3\/Examples\/Monocular-Inertial\/TUM-VI.yaml<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">TUM-VI.yaml<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"xml\">%YAML:1.0  #-------------------------------------------------------------------------------------------- # Camera Parameters. Adjust them! #-------------------------------------------------------------------------------------------- File.version: \"1.0\"  Camera.type: \"KannalaBrandt8\"  # Camera calibration and distortion parameters (OpenCV)  #Camera1.fx: 190.978477 #Camera1.fy: 190.973307 #Camera1.cx: 254.931706 #Camera1.cy: 256.897442 Camera1.fx: 155.595080 Camera1.fy: 155.001082 Camera1.cx: 148.329000 Camera1.cy: 128.182481   # Equidistant distortion 0.0034823894022493434, 0.0007150348452162257, -0.0020532361418706202, 0.00020293673591811182 #Camera.bFishEye: 1 #Camera1.k1: 0.003482389402 #Camera1.k2: 0.000715034845 #Camera1.k3: -0.002053236141 #Camera1.k4: 0.000202936736 Camera1.k1: -0.29585544183959606 Camera1.k2: 0.06950559854738034 Camera1.k3: 0.000981636728463331 Camera1.k4: 0.0010529550643745315      # Camera resolution Camera.width: 320 Camera.height: 240  # Camera frames per second  Camera.fps: 3  # Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale) Camera.RGB: 1  # Transformation from body-frame (imu) to camera IMU.T_b_c1: !!opencv-matrix    rows: 4    cols: 4    dt: f #   data: [-0.9995250378696743, 0.0075019185074052044, -0.02989013031643309, 0.045574835649698026,  #          0.029615343885863205, -0.03439736061393144, -0.998969345370175, -0.071161801837997044, #         -0.008522328211654736, -0.9993800792498829, 0.03415885127385616, -0.044681254117144367, #          0.0, 0.0, 0.0, 1.0]    data: [0.98598023, 0.05458661, 0.15768097, 0.09686663,          -0.04210964, -0.83299201,  0.55168024,  0.13264273,          0.16146134, -0.5505857, -0.81901503, -0.32186711,          0.0, 0.0, 0.0, 1.0]   # IMU noise (Use those from VINS-mono) IMU.NoiseGyro: 0.02 #0.004 # 0.00016 (TUM) # 0.00016    # rad\/s^0.5  IMU.NoiseAcc: 0.05  #0.04  # 0.0028 (TUM) # 0.0028     # m\/s^1.5 IMU.GyroWalk: 4e-05 #0.000022 #(VINS and TUM) rad\/s^1.5 IMU.AccWalk: 0.001  #0.0004 # 0.00086 # 0.00086    # m\/s^2.5 IMU.Frequency: 200.0 System.thFarPoints: 7.0  #-------------------------------------------------------------------------------------------- # ORB Parameters #--------------------------------------------------------------------------------------------  # ORB Extractor: Number of features per image ORBextractor.nFeatures: 1000 # Tested with 1250  # ORB Extractor: Scale factor between levels in the scale pyramid  ORBextractor.scaleFactor: 1.2  # ORB Extractor: Number of levels in the scale pyramid ORBextractor.nLevels: 3 #8  # ORB Extractor: Fast threshold # Image is divided in a grid. At each cell FAST are extracted imposing a minimum response. # Firstly we impose iniThFAST. If no corners are detected we impose a lower value minThFAST # You can lower these values if your images have low contrast ORBextractor.iniThFAST: 20 ORBextractor.minThFAST: 7  #-------------------------------------------------------------------------------------------- # Viewer Parameters #-------------------------------------------------------------------------------------------- Viewer.KeyFrameSize: 0.05 Viewer.KeyFrameLineWidth: 1.0 Viewer.GraphLineWidth: 0.9 Viewer.PointSize: 2.0 Viewer.CameraSize: 0.08 Viewer.CameraLineWidth: 3.0 Viewer.ViewpointX: 0.0 Viewer.ViewpointY: -0.7 Viewer.ViewpointZ: -3.5 Viewer.ViewpointF: 500.0 <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0439, \u0447\u0442\u043e \u043a\u0443\u0434\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 320x240_dynamic-results-imucam.txt:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/dr\/0u\/nz\/dr0unzc6k0fef-liagiplwy7eri.png\" data-src=\"https:\/\/habrastorage.org\/webt\/dr\/0u\/nz\/dr0unzc6k0fef-liagiplwy7eri.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gy\/dp\/d5\/gydpd5f8fdnrzdxe1rgvnxwz5b4.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gy\/dp\/d5\/gydpd5f8fdnrzdxe1rgvnxwz5b4.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/6a\/bx\/u4\/6abxu4enfip_kepdkj25_qjksdy.png\" data-src=\"https:\/\/habrastorage.org\/webt\/6a\/bx\/u4\/6abxu4enfip_kepdkj25_qjksdy.png\"\/><\/p>\n<p>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435.<\/p><\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/689778\/\"> https:\/\/habr.com\/ru\/post\/689778\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/qt\/th\/o9\/qttho9d1ejkqp_fsmx_85g8ifoc.png\" data-src=\"https:\/\/habrastorage.org\/webt\/qt\/th\/o9\/qttho9d1ejkqp_fsmx_85g8ifoc.png\"\/><br \/>  \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c \u0441 \u043f\u0430\u043a\u0435\u0442\u043e\u043c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u043a\u0430\u043c\u0435\u0440\u044b Kalibr, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u043b\u044f \u0446\u0435\u043b\u0435\u0439 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u0430\u043a\u0435\u0442\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 ORB_SLAM3. \u0411\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u043a\u0430\u043c\u0435\u0440\u044b fish-eye \u0434\u043b\u044f raspberry pi. \u041a\u0430\u043c\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 \u0433\u0438\u0440\u043e\u0441\u043a\u043e\u043f\u043e\u043c\/\u0430\u043a\u0441\u0435\u043b\u0435\u0440\u043e\u043c\u0435\u0442\u0440\u043e\u043c imu-650 (GY-521). \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0442\u0430\u043a\u043e\u0432\u043e\u0439.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-338937","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/338937","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=338937"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/338937\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=338937"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=338937"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=338937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}