{"id":457937,"date":"2025-04-29T09:22:34","date_gmt":"2025-04-29T09:22:34","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=457937"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=457937","title":{"rendered":"<span>\u041e\u0431\u0443\u0447\u0430\u0435\u043c \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438<\/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-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u0410\u0432\u0442\u043e\u0440 \u0441\u0442\u0430\u0442\u044c\u0438: \u0415\u0433\u043e\u0440 \u041a\u043e\u043b\u043e\u0442\u0432\u0438\u043d <\/em><\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2c2\/01b\/ef5\/2c201bef59ec3ea0b5bd271f5ce9f238.png\" alt=\"\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u043e\u0447\u0435\u043a, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" title=\"\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u043e\u0447\u0435\u043a, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" width=\"1600\" height=\"856\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/2c2\/01b\/ef5\/2c201bef59ec3ea0b5bd271f5ce9f238.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2c2\/01b\/ef5\/2c201bef59ec3ea0b5bd271f5ce9f238.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u043e\u0447\u0435\u043a, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u0433\u043e \u0432\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0432\u00a0\u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u0438 \u0441\u0435\u043d\u0441\u043e\u0440\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439. \u041e\u0434\u043d\u043e\u0439 \u0438\u0437\u00a0\u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u043f\u0440\u0438\u00a0\u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0442\u0430\u043a\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044f \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u0440\u0435\u0434\u044b \u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432\u00a0\u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u0434\u043e\u0440\u043e\u0436\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0434\u043b\u044f\u00a0\u0447\u0435\u0433\u043e \u0432\u0441\u0451 \u0447\u0430\u0449\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u00a0\u2014 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432,\u00a0\u2014 \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0432\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0430.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u0432\u0437\u044f\u043b\u0441\u044f \u0437\u0430\u00a0\u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442? \u0412\u0441\u0435\u0433\u0434\u0430\u00a0\u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a \u00ab\u0432\u0438\u0434\u0438\u0442\u00bb \u0434\u043e\u0440\u043e\u0433\u0443 \u0431\u0435\u0441\u043f\u0438\u043b\u043e\u0442\u043d\u0438\u043a \u0438 \u043a\u0430\u043a\u00a0\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043d\u0435\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438\u0437\u00a0\u043a\u043d\u0438\u0436\u0435\u043a \u0438 \u0441\u0442\u0430\u0442\u0435\u0439, \u0430\u00a0\u0440\u0443\u043a\u0430\u043c\u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u00a0\u2014 \u043e\u0442\u00a0\u0441\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0439.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b CARLA Simulator. \u041e\u0434\u043d\u0438\u043c \u0438\u0437\u00a0\u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432 \u044d\u0442\u043e\u0433\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432, \u0447\u0442\u043e\u00a0\u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0434\u043b\u044f\u00a0\u0437\u0430\u0434\u0430\u0447 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f.<\/p>\n<p><strong>\u041f\u043e\u0447\u0435\u043c\u0443 CARLA?<\/strong><\/p>\n<ul>\n<li>\n<p><strong>\u0413\u0438\u0431\u043a\u043e\u0441\u0442\u044c<\/strong>: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0440\u0430\u0441\u0441 \u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/strong>: \u043c\u043e\u0436\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432:\u00a0\u043b\u0438\u0434\u0430\u0440\u044b, RGB\u2011\u043a\u0430\u043c\u0435\u0440\u044b, \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u044b<\/p>\n<\/li>\n<li>\n<p><strong>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c<\/strong>: \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u00a0\u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0440\u0438\u0441\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u044f\u043c\u0438, \u0438 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0446\u0438\u043a\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041a\u0430\u043a\u00a0\u043e\u0431\u0443\u0447\u0430\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u044c?<\/strong><\/p>\n<p>\u0421\u0440\u0435\u0434\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a\u00a0\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044e \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c:<\/p>\n<ul>\n<li>\n<p><strong>Reinforcement Learning<\/strong>\u00a0\u2014 \u043e\u0431\u0443\u0447\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0431\u044b \u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0430\u0433\u0435\u043d\u0442\u0430 \u0441\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p><strong>Behavioral Cloning<\/strong>\u00a0\u2014 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0430 \u043f\u043e\u00a0\u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c;<\/p>\n<\/li>\n<li>\n<p><strong>\u0418\u043c\u0438\u0442\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u00a0\u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c<\/strong>\u00a0\u2014 \u0441\u043b\u0435\u0434\u0443\u0435\u043c \u043f\u043e\u00a0\u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u00a0\u044d\u0442\u043e\u043c \u0434\u0430\u043d\u043d\u043e\u043c \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0447\u0435\u0441\u043a\u043e\u0435 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a\u00a0\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044e\u00a0\u2014 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u00a0\u0442\u043e\u043c, \u043a\u0443\u0434\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0432\u00a0\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u042d\u0442\u043e \u0434\u0430\u0451\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u00ab\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438\u0435\u00bb\u00a0\u2014 \u043d\u0435\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u00a0\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u0430\u00a0\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e. \u0414\u043b\u044f\u00a0\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b RGB\u2011\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u0440\u0442\u044b \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u0433\u043b\u0443\u0431\u0438\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0441\u00a0\u043b\u0438\u0434\u0430\u0440\u043e\u0432, \u0447\u0442\u043e\u00a0\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u0441\u0446\u0435\u043d\u044b \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u0448\u0430\u0433\u0435.<\/p>\n<p>\u0422\u0430\u043a\u043e\u0439 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u00a0\u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u0441\u00a0\u0443\u0447\u0435\u0442\u043e\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438\u00a0\u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u0430 \u043c\u0435\u0436\u0434\u0443 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u044e, \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c\u044e \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u043e\u0434\u0435\u043b\u0438, \u0447\u0442\u043e\u00a0\u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0434\u043b\u044f\u00a0\u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u00a0\u0432\u00a0\u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438, \u0442\u0430\u043a \u0438 \u0432\u00a0\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445.<\/p>\n<h2>1. \u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430<\/h2>\n<p>\u0412\u0441\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u00a0\u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430: \u043e\u0442\u00a0\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u0438 \u0441\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u00a0\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. <\/p>\n<ul>\n<li>\n<p><strong>\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438. <\/strong>\u0412\u00a0\u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u00a0\u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u0439\u043f\u043e\u0438\u043d\u0442\u043e\u0432 \u043e\u0442\u00a0\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u00a0\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u00a0\u043c\u0435\u0440\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0434\u043e\u0441\u0442\u0430\u0435\u043c \u0438\u0437\u00a0\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 20\u00a0\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0442\u043e\u0447\u0435\u043a, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e? \u0427\u0442\u043e\u0431\u044b \u043c\u043e\u0434\u0435\u043b\u044c \u0437\u043d\u0430\u043b\u0430 \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043d\u043e\u00a0\u0438 \u00ab\u043a\u0443\u0434\u0430 \u0434\u0435\u0440\u0436\u0438\u043c \u043a\u0443\u0440\u0441\u00bb. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0435\u0439 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u00a0\u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043d\u0430\u00a0\u0434\u043e\u0440\u043e\u0433\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445<\/strong>. \u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044e: \u0430\u0432\u0442\u043e \u043f\u043e\u0434\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0430\u0433\u0435\u043d\u0442\u0430 \u0435\u0434\u0435\u0442 \u043f\u043e\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443, \u0441\u043e\u0431\u0438\u0440\u0430\u044f \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432. \u0412\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u00a0\u043a\u0430\u0434\u0440\u0430\u043c(\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0441\u0432\u043e\u0439 <em>frame_id<\/em>): RGB\u2011\u043a\u0430\u043c\u0435\u0440\u044b, \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b,\u00a0\u043b\u0438\u0434\u0430\u0440\u044b, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/strong>.\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u0432\u0441\u0435, \u0447\u0442\u043e\u00a0\u0441\u043e\u0431\u0440\u0430\u043b\u0438: \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u043d\u0441\u043e\u0440\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u043c\u0443\u043b\u044c\u0442\u0438\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f; \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043a\u0430\u0434\u0440\u0443 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e(\u0442\u0435 \u0441\u0430\u043c\u044b\u0435 20\u00a0\u0442\u043e\u0447\u0435\u043a); \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u0430; \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b(\u043e\u043d\u0438\u00a0\u0436\u0435 \u0438 \u0431\u0443\u0434\u0443\u0442 \u0442\u0430\u0440\u0433\u0435\u0442\u0430\u043c\u0438 \u0432\u00a0\u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435)<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438<\/strong>. \u041c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430\u00a0\u0432\u0445\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b: \u043c\u0443\u043b\u044c\u0442\u0438\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u00a0\u2014 15\u00a0\u043a\u0430\u043d\u0430\u043b\u043e\u0432:RGB, \u0433\u043b\u0443\u0431\u0438\u043d\u0430, \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430; \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u00a0\u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0437 20\u00a0\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0442\u043e\u0447\u0435\u043a \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430; \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u0430\u00a0\u2014 \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u0437 3\u00a0\u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432; \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u00a0\u2014 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0434\u043b\u044f\u00a0\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c; \u0442\u0430\u0440\u0433\u0435\u0442\u044b\u00a0\u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f, \u0442\u043e\u0440\u043c\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0443\u0433\u043b\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0440\u0443\u043b\u044f. <\/p>\n<\/li>\n<\/ul>\n<h3>2. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432\u00a0CARLA<\/h3>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a\u00a0\u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0443 \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u0435\u0433\u043e \u0432\u00a0\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c. \u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0432\u00a0\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u0430\u0434\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0442\u0435\u0440\u044f\u0442\u044c\u0441\u044f \u0438\u043b\u0438\u00a0\u0441\u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u00a0\u0432\u0440\u0435\u043c\u0435\u043d\u0438\u00a0\u2014 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u00a0\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432.<\/p>\n<p><strong>2.1\u00a0\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044e<\/strong><\/p>\n<pre><code class=\"python\">client = carla.Client(\"localhost\", 2000) client.set_timeout(20.0) world = client.get_world()  settings = world.get_settings() settings.synchronous_mode = True settings.fixed_delta_seconds = 0.1 world.apply_settings(settings)<\/code><\/pre>\n<p>\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0430\u00a0\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code><em>delta_seconds<\/em> = 0.1<\/code>\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432 10\u00a0\u0413\u0446.<\/p>\n<h4>2.2 \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e<\/h4>\n<p>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0430\u0432\u0442\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0435\u0437\u0434\u0438\u0442\u044c \u043f\u043e\u00a0\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0434\u0430\u0435\u043c \u0435\u0433\u043e \u0446\u0432\u0435\u0442. \u0412\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0435\u00a0\u2014 Mini Cooper, \u043d\u043e\u00a0\u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0438\u0437\u00a0\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 CARLA<\/p>\n<pre><code class=\"python\">bp_lib = world.get_blueprint_library() vehicle_blueprints = bp_lib.filter('vehicle.*') vehicle_bp = bp_lib.find('vehicle.mini.cooper_s_2021') vehicle_bp.set_attribute('color', '250, 240, 230')<\/code><\/pre>\n<h4>2.3 \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u00a0<\/h4>\n<p>\u0414\u043b\u044f\u00a0\u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code><em>build_random_long_route()<\/em><\/code>. \u041e\u043d\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0443\u044e \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0438 \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442, \u043f\u043e\u043a\u0430 \u043d\u0435\u00a0\u043d\u0430\u0431\u0435\u0440\u0435\u0442\u0441\u044f \u043d\u0443\u0436\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430. \u041f\u043e\u0434\u00a0\u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00a0\u2014 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a <strong><em>GlobalRoutePlanner<\/em><\/strong><em>,<\/em> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0441\u00a0\u0443\u0447\u0435\u0442\u043e\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0433\u043e\u0440\u043e\u0434\u0430<\/p>\n<pre><code class=\"python\">from agents.navigation.global_route_planner import GlobalRoutePlanner from agents.navigation.global_route_planner_dao import GlobalRoutePlannerDAO from agents.navigation.behavior_agent import BehaviorAgent  def build_random_long_route(world, planner, min_distance=20000.0):     spawn_points = world.get_map().get_spawn_points()     start_transform = random.choice(spawn_points)     current_location = start_transform.location      total_route = []     total_length = 0.0      while total_length &lt; min_distance:         next_location = random.choice(spawn_points).location         segment = planner.trace_route(current_location, next_location)          if len(segment) &lt; 2:             continue          for i in range(len(segment) - 1):             wp1 = segment[i][0].transform.location             wp2 = segment[i + 1][0].transform.location             total_length += wp1.distance(wp2)          total_route.extend(segment)         current_location = next_location      return start_transform, total_route<\/code><\/pre>\n<p>\u0417\u0430\u0434\u0430\u0435\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0438 \u0441\u0442\u0440\u043e\u0438\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442:<\/p>\n<pre><code class=\"python\">dao = GlobalRoutePlannerDAO(world.get_map(), sampling_resolution=1.0) grp = GlobalRoutePlanner(dao, sampling_resolution=1.0)  spawn_transform, route = build_random_long_route(world, grp, min_distance=2600)<\/code><\/pre>\n<h4>2.4 \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0430\u0433\u0435\u043d\u0442<\/h4>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u0441\u043f\u0430\u0432\u043d \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0432\u00a0\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0430\u0433\u0435\u043d\u0442\u0430 (<em>BehaviorAgent<\/em>):<\/p>\n<pre><code class=\"python\">vehicle = world.spawn_actor(vehicle_bp, spawn_transform) agent = BehaviorAgent(vehicle, behavior='aggressive') agent.set_global_plan(route)<\/code><\/pre>\n<p>\u0410\u0433\u0435\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0443, \u0431\u0443\u0444\u0435\u0440\u0443 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0442\u043e\u0447\u0435\u043a \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u043c\u0430\u043d\u0435\u0432\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438:<\/p>\n<pre><code class=\"python\">agent._local_planner._lane_change = False agent._local_planner._buffer_size = 20 agent._local_planner._min_distance = 1.5<\/code><\/pre>\n<p>\u0410\u0433\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u043e\u043b\u043e\u0441\u0435, \u0447\u0442\u043e\u00a0\u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f\u00a0\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f;<\/p>\n<p>\u0410\u0433\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c 20\u00a0\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0442\u043e\u0447\u0435\u043a \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u043f\u0440\u0438\u00a0\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f;<\/p>\n<p>\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0430\u0433\u0435\u043d\u0442\u043e\u043c \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439: \u041a\u043e\u0433\u0434\u0430 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e\u00a0\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043c\u0435\u043d\u044c\u0448\u0435 1.5\u00a0\u043c\u0435\u0442\u0440\u0430\u00a0\u2014 \u0430\u0433\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043a\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439. <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e0c\/86c\/85b\/e0c86c85bbef1cd0f5877ec376caaf21.jpeg\" alt=\"\u0421\u0446\u0435\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0441\u00a0\u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" title=\"\u0421\u0446\u0435\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0441\u00a0\u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" width=\"1278\" height=\"678\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e0c\/86c\/85b\/e0c86c85bbef1cd0f5877ec376caaf21.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e0c\/86c\/85b\/e0c86c85bbef1cd0f5877ec376caaf21.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0421\u0446\u0435\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0441\u00a0\u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0430\u0433\u0435\u043d\u0442\u0430, \u0432\u00a0\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<h4>2.5 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432<\/h4>\n<p>\u0414\u043b\u044f\u00a0\u0438\u043c\u0438\u0442\u0430\u0446\u0438\u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u0440\u0435\u0434\u044b \u043d\u0430\u00a0\u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432: RGB\u2011\u043a\u0430\u043c\u0435\u0440\u044b, \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0438\u00a0\u043b\u0438\u0434\u0430\u0440\u044b. \u0412\u0441\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432\u00a0\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0441\u00a0\u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f 2.5\u00a0\u0413\u0446 (<code><em>sensor_tick = 0.4<\/em><\/code>), \u0447\u0442\u043e\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u0448\u0430\u0433\u0435.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c RGB\u2011\u043a\u0430\u043c\u0435\u0440\u044b:<\/p>\n<pre><code class=\"python\">camera_bp = bp_lib.find('sensor.camera.rgb') camera_bp.set_attribute(\"image_size_x\", \"1280\") camera_bp.set_attribute(\"image_size_y\", \"720\") camera_bp.set_attribute('sensor_tick', '0.4') camera_bp.set_attribute(\"fov\", \"90\")<\/code><\/pre>\n<p>\u0414\u043b\u044f\u00a0\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u0440\u0438 RGB\u2011\u043a\u0430\u043c\u0435\u0440\u044b: \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0438 \u0434\u0432\u0435 \u0431\u043e\u043a\u043e\u0432\u044b\u0435. \u041e\u043d\u0438 \u043a\u0440\u0435\u043f\u044f\u0442\u0441\u044f \u043a\u00a0\u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044e \u0441\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0443\u0433\u043b\u0430\u043c\u0438 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430:<\/p>\n<pre><code class=\"python\">camera_front = world.spawn_actor(     camera_bp,     carla.Transform(carla.Location(x=1.0, y=0.0, z=1.8)),     attach_to=vehicle )  camera_left = world.spawn_actor(     camera_bp,     carla.Transform(carla.Location(x=1.0, y=-0.5, z=1.8), carla.Rotation(yaw=-45)),     attach_to=vehicle )  camera_right = world.spawn_actor(     camera_bp,     carla.Transform(carla.Location(x=1.0, y=0.5, z=1.8), carla.Rotation(yaw=45)),     attach_to=vehicle )<\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e RGB \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u043c \u0442\u0440\u0438 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u00a0\u043a\u043b\u0430\u0441\u0441\u0430\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (\u0434\u043e\u0440\u043e\u0433\u0430, \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u044b, \u0437\u0434\u0430\u043d\u0438\u044f \u0438\u00a0\u0442.\u00a0\u0434.):<\/p>\n<pre><code class=\"python\">semantic_bp = bp_lib.find('sensor.camera.semantic_segmentation') semantic_bp.set_attribute('image_size_x', '1280') semantic_bp.set_attribute('image_size_y', '720') semantic_bp.set_attribute('sensor_tick', '0.4') semantic_bp.set_attribute(\"fov\", \"90\")   semantic_camera_front = world.spawn_actor(     semantic_bp,     carla.Transform(carla.Location(x=1.0, y=0.0, z=1.8)),     attach_to=vehicle ) semantic_camera_left = world.spawn_actor(     semantic_bp,     carla.Transform(carla.Location(x=1.0, y=-0.5, z=1.8), carla.Rotation(yaw=-45)),     attach_to=vehicle ) semantic_camera_right = world.spawn_actor(     semantic_bp,     carla.Transform(carla.Location(x=1.0, y=0.5, z=1.8), carla.Rotation(yaw=45)),     attach_to=vehicle )<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u00a0\u043b\u0438\u0434\u0430\u0440\u043e\u0432:<\/p>\n<pre><code class=\"python\">lidar_bp = bp_lib.find('sensor.lidar.ray_cast') lidar_bp.set_attribute('channels', '64') lidar_bp.set_attribute('points_per_second', '500000') lidar_bp.set_attribute('range', '50.0') lidar_bp.set_attribute('rotation_frequency', '20.0') lidar_bp.set_attribute('upper_fov', '15.0') lidar_bp.set_attribute('lower_fov', '-40.0') lidar_bp.set_attribute('sensor_tick', '0.4')<\/code><\/pre>\n<p>\u0414\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0433\u043b\u0443\u0431\u0438\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u00a0\u0441\u0446\u0435\u043d\u0435 \u043d\u0430\u00a0\u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0447\u0435\u0442\u044b\u0440\u0435\u00a0\u043b\u0438\u0434\u0430\u0440\u0430, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0437\u043e\u0440 \u0432\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0437\u043e\u043d\u0435:<\/p>\n<ul>\n<li>\n<p><strong>lidar_roof<\/strong>\u00a0\u2014 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u043d\u0430\u00a0\u043a\u0440\u044b\u0448\u0435 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0432\u043f\u0435\u0440\u0435\u0434, \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0437\u043e\u0440 \u043d\u0430 360\u00b0 \u043f\u043e\u00a0\u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u0438 \u0448\u0438\u0440\u043e\u043a\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u043e\u00a0\u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e 3D\u2011\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u0440\u0435\u0434\u044b.<\/p>\n<\/li>\n<li>\n<p><strong>lidar_front<\/strong>\u00a0\u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432\u00a0\u043f\u0435\u0440\u0435\u0434\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f, \u0432\u00a0\u0440\u0430\u0439\u043e\u043d\u0435 \u0440\u0435\u0448\u0435\u0442\u043a\u0438 \u0440\u0430\u0434\u0438\u0430\u0442\u043e\u0440\u0430. \u041e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u00a0\u0431\u043b\u0438\u0436\u043d\u0435\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434 \u043c\u0430\u0448\u0438\u043d\u043e\u0439, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u043f\u0440\u0438\u00a0\u043c\u0430\u043d\u0435\u0432\u0440\u0430\u0445 \u043d\u0430\u00a0\u043d\u0438\u0437\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>lidar_left<\/strong>\u00a0\u2014 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u043d\u0430\u0434 \u043b\u0435\u0432\u044b\u043c \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u043c \u043a\u043e\u043b\u0435\u0441\u043e\u043c, \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442 \u0432\u043b\u0435\u0432\u043e (yaw = 90\u00b0). \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u044f \u0441\u0431\u043e\u043a\u0443<\/p>\n<\/li>\n<li>\n<p><strong>lidar_right<\/strong>\u00a0\u2014 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u043d \u043b\u0435\u0432\u043e\u043c\u0443, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0430\u0434 \u043f\u0440\u0430\u0432\u044b\u043c \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u043c \u043a\u043e\u043b\u0435\u0441\u043e\u043c \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0432\u043f\u0440\u0430\u0432\u043e (yaw = -90\u00b0). \u041e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0437\u043e\u0440 \u043f\u0440\u0430\u0432\u043e\u0439 \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u0437\u043e\u043d\u044b.<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"python\">lidar_positions = {     \"lidar_roof\": carla.Transform(carla.Location(x=-1.0, y=0.0, z=1.8)),     \"lidar_left\": carla.Transform(carla.Location(x=0.5, y=-1.0, z=1.0), carla.Rotation(yaw=90)),     \"lidar_right\": carla.Transform(carla.Location(x=0.5, y=1.0, z=1.0), carla.Rotation(yaw=-90)),     \"lidar_front\": carla.Transform(carla.Location(x=2.0, y=0.0, z=0.9)) }   lidars = {} for name, transform in lidar_positions.items():     lidar = world.spawn_actor(lidar_bp, transform, attach_to=vehicle)     lidars[name] = lidar <\/code><\/pre>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0442\u0430\u043a\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u043c\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u043c \u043c\u043d\u043e\u0433\u043e\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u2011\u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u0441\u0446\u0435\u043d\u044b, \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0451\u043d\u043d\u043e\u0435 \u043a\u00a0\u0442\u043e\u043c\u0443, \u043a\u0430\u043a\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044c. \u042d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442 \u043e\u0441\u043d\u043e\u0432\u0443 \u0434\u043b\u044f\u00a0\u0432\u0445\u043e\u0434\u0430 \u0432\u00a0\u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0432\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430\u00a0\u0435\u0451 \u043e\u0431\u043e\u0431\u0449\u0430\u044e\u0449\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c.<\/p>\n<h3>3. \u041a\u0430\u043a\u00a0\u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u0430\u043d\u043d\u044b\u0435<\/h3>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0447\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043e\u043c, \u043d\u0443\u0436\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445(\u043e\u0442 5\u00a0\u0434\u043e 8\u00a0\u0442\u044b\u0441\u044f\u0447 \u0434\u043e\u0440\u043e\u0436\u043d\u044b\u0445 \u0441\u0446\u0435\u043d). \u041d\u0438\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a\u00a0\u0443\u00a0\u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c<\/p>\n<h4>3.1 \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>\u0414\u043b\u044f\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 csv\u2011\u0444\u0430\u0439\u043b\u044b:<\/p>\n<ul>\n<li>\n<p><code><em>vehicle_commands.csv<\/em><\/code>\u00a0\u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b (\u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0440\u0443\u043b\u044f, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435(\u0433\u0430\u0437), \u0442\u043e\u0440\u043c\u043e\u0436\u0435\u043d\u0438\u0435) \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p><code><em>traffic_light.csv<\/em>\u00a0<\/code>\u2014 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u0430 (\u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u0432\u00a0\u0434\u043e\u0440\u043e\u0436\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u0435). <\/p>\n<\/li>\n<\/ul>\n<p>RGB \u0438 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b \u0432\u00a0\u0444\u043e\u0440\u043c\u0430\u0442\u0435 <em>.png<\/em> \u0438 <em>.npy<\/em> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.\u00a0\u041b\u0438\u0434\u0430\u0440\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u043e\u0447\u0435\u043a \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u043b \u0438\u0437\u00a0\u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b \u0432 <em>.npy<\/em>, \u0430\u00a0\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u043d\u0430\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u00a0\u2014 \u0432 <em>.npz<\/em>.<\/p>\n<h4>3.2 \u0411\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u044c<\/h4>\n<p>\u0414\u043b\u044f\u00a0\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043e\u0431\u0449\u0438\u0439 <em>data_buffer<\/em>, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u0430\u0445 (\u0437\u0430\u043f\u0438\u0441\u044c \u043f\u0440\u0438\u00a0\u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0441\u0435\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u0432\u00a0\u043a\u0430\u0434\u0440\u0435):<\/p>\n<pre><code class=\"python\">def save_data(frame_id):     if not all(sensor in data_buffer[frame_id] for sensor in SENSORS):         return     # \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 RGB, \u043a\u0430\u0440\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0439, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u043e\u0432, \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u043b\u0438\u0434\u0430\u0440\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0439<\/code><\/pre>\n<h4>3.3 \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432<\/h4>\n<p>\u041a\u0430\u0436\u0434\u043e\u043c\u0443 \u0441\u0435\u043d\u0441\u043e\u0440\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0432\u043e\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>RGB \u0438 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u00a0\u2014 \u0447\u0435\u0440\u0435\u0437 <code><em>process_camera_image()<\/em> \u0438 <em>process_semantic_image()<\/em><\/code>;<\/p>\n<\/li>\n<li>\n<p>\u041b\u0438\u0434\u0430\u0440\u044b\u00a0\u2014 <code><em>process_lidar_data()<\/em> \u0438 <em>process_lidar_scene()<\/em><\/code>(\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0432\u00a0\u0435\u0434\u0438\u043d\u043e\u0435).<\/p>\n<\/li>\n<\/ul>\n<h4>3.4 \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438<\/h4>\n<p>\u0414\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u043b \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e\u00a0\u2014 20\u00a0\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0442\u043e\u0447\u0435\u043a \u043e\u0442\u00a0\u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430. \u042d\u0442\u0438 \u0442\u043e\u0447\u043a\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u043b \u0432\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442:<\/p>\n<pre><code class=\"python\">dx = loc.x - vehicle_loc.x dy = loc.y - vehicle_loc.y trajectory_local.append((dx, dy))<\/code><\/pre>\n<p><strong>3.5\u00a0\u041f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043d\u0430\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u043a\u0430\u043c\u0435\u0440<\/strong><\/p>\n<p>\u0417\u0430\u0434\u0430\u0435\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u0430\u043c\u0435\u0440\u044b K: <\/p>\n<pre><code class=\"python\">def get_camera_intrinsics(camera):     width = int(camera.attributes['image_size_x'])      height = int(camera.attributes['image_size_y'])      fov = float(camera.attributes['fov'])           f_x = width \/ (2 * np.tan(np.radians(fov) \/ 2))     f_y = f_x        c_x = width \/ 2        c_y = height \/ 2     K = np.array([         [f_x, 0, c_x],         [0, f_y, c_y],         [0,  0,   1] ])     return K <\/code><\/pre>\n<h3>\u0417\u0430\u0434\u0430\u0435\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043a\u0430\u043c\u0435\u0440\u044b world_to_cam_matrix:\u00a0<\/h3>\n<pre><code class=\"python\">def world_to_cam_matrix(camera_name):     transform = camera_name.get_transform()     location = transform.location     rotation = transform.rotation     yaw = np.radians(rotation.yaw)     pitch = np.radians(rotation.pitch)     roll = np.radians(rotation.roll)     R_roll = np.array([         [1, 0, 0],         [0, np.cos(roll), -np.sin(roll)],         [0, np.sin(roll), np.cos(roll)]     ])     R_pitch = np.array([         [np.cos(pitch), 0, np.sin(pitch)],         [0, 1, 0],         [-np.sin(pitch), 0, np.cos(pitch)]     ])     R_yaw = np.array([         [np.cos(yaw), -np.sin(yaw), 0],         [np.sin(yaw), np.cos(yaw), 0],         [0, 0, 1]     ])     R = R_yaw @ R_pitch @ R_roll     R_inv = R.T     T = np.array([         [1, 0, 0, -location.x],         [0, 1, 0, -location.y],         [0, 0, 1, -location.z],         [0, 0, 0, 1]     ])      world_to_cam = np.eye(4)     world_to_cam[:3, :3] = R_inv     world_to_cam = world_to_cam @ T      A = np.array([         [0, 1, 0],         [0, 0, -1],         [1, 0, 0]     ])     T_A = np.eye(4)     T_A[:3, :3] = A      world_to_cam_final = T_A @ world_to_cam     return world_to_cam_final <\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446 <em>K<\/em> \u0438 <em>world_to_cam_matrix<\/em>, 3D\u2011\u0442\u043e\u0447\u043a\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u0430\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u043a\u0430\u043c\u0435\u0440 \u0441\u00a0\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u043f\u043e\u00a0\u0433\u043b\u0443\u0431\u0438\u043d\u0435:<\/p>\n<pre><code class=\"python\">def project_lidar_to_image(lidar_points, world_to_cam, K, img_width, img_height):     N = lidar_points.shape[0]     ones = np.ones((N, 1))      # \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0433\u043e\u043c\u043e\u0433\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b     lidar_points_hom = np.hstack((lidar_points, ones))      # \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b     points_cam_hom = (world_to_cam @ lidar_points_hom.T).T      # \u0418\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 X, Y, Z \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u0430\u043c\u0435\u0440\u044b     X = points_cam_hom[:, 0]     Y = points_cam_hom[:, 1]     Z = points_cam_hom[:, 2]      # \u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0442\u043e\u0447\u0435\u043a \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u043c\u0435\u0440\u043e\u0439      valid_idx = Z &gt; 0     X_valid = X[valid_idx]     Y_valid = Y[valid_idx]     Z_valid = Z[valid_idx]      if len(X_valid) == 0:         return np.array([]), np.array([])        # \u041d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442     x_norm = X_valid \/ Z_valid     y_norm = Y_valid \/ Z_valid      # \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a     points_norm = np.vstack((x_norm, y_norm, np.ones_like(x_norm)))      # \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b K \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442     pixels_hom = K @ points_norm      # \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f     u = pixels_hom[0, :]     v = pixels_hom[1, :]      # \u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0442\u043e\u0447\u0435\u043a, \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0445 \u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435     mask = (u &gt;= 0) &amp; (u &lt; img_width) &amp; (v &gt;= 0) &amp; (v &lt; img_height)      return np.vstack((u[mask], v[mask])).T, Z_valid[mask] <\/code><\/pre>\n<h4>3.6 \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u043f\u0438\u0448\u0435\u043c \u0432\u0441\u0435 \u043f\u043e\u0434\u0440\u044f\u0434<\/h4>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u0430\u0442\u0430\u0441\u0435\u0442:<\/p>\n<pre><code class=\"python\">command_thread = threading.Thread(target=record_commands, args=(agent,), daemon=True) command_thread.start()  camera_front.listen(lambda image: process_camera_image(image, \"camera_front\")) camera_left.listen(lambda image: process_camera_image(image, \"camera_left\")) camera_right.listen(lambda image: process_camera_image(image, \"camera_right\"))  semantic_camera_front.listen(lambda image: process_semantic_image(image, \"semantic_camera_front\")) semantic_camera_left.listen(lambda image: process_semantic_image(image, \"semantic_camera_left\")) semantic_camera_right.listen(lambda image: process_semantic_image(image, \"semantic_camera_right\")) lidars[\"lidar_roof\"].listen(lambda data: process_lidar_data(data, \"lidar_roof\")) lidars[\"lidar_left\"].listen(lambda data: process_lidar_data(data, \"lidar_left\")) lidars[\"lidar_right\"].listen(lambda data: process_lidar_data(data, \"lidar_right\")) lidars[\"lidar_front\"].listen(lambda data: process_lidar_data(data, \"lidar_front\")) <\/code><\/pre>\n<p>\u041a\u0430\u0436\u0434\u0443\u044e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e \u043c\u044b \u0434\u0435\u043b\u0430\u043b\u0438:<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0438\u0440\u0430 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <code><em>world.tick()<\/em><\/code>;<\/p>\n<\/li>\n<li>\n<p>C\u043d\u0438\u043c\u0430\u043b\u0438 <em>snapshot<\/em> \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u043b\u0438 <em>frame_id<\/em> \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code><em>process_vehicle_commands<\/em><\/code><em>;<\/em><\/p>\n<\/li>\n<li>\n<p>\u0416\u0434\u0430\u043b\u0438 0.4\u00a0\u0441\u0435\u043a\u0443\u043d\u0434\u044b (\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0441 <em>sensor_tick)<\/em>;<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438, \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u00a0\u043b\u0438 \u0430\u0433\u0435\u043d\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 (<code><em>agent.done()<\/em><\/code>)<em>.<\/em><\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"python\">n = 80000 try:     for i in range(n):          world.tick()         snapshot = world.get_snapshot()         frame_id = snapshot.frame                  process_vehicle_commands(agent)                  time.sleep(0.4)         if agent.done():             print(\"done\")             break except KeyboardInterrupt:     print(\"stop\") <\/code><\/pre>\n<p>\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0432\u00a0\u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435\u00a0\u2014 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043a\u0430\u0434\u0440.<\/p>\n<h2>4. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u043d\u0430\u0441\u043d\u0438\u043c\u0430\u043b\u0438: \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/h2>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0430\u0436\u043d\u044b\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0441\u0446\u0435\u043d.<\/p>\n<p><strong>4.1\u00a0RGB\u2011\u043a\u0430\u043c\u0435\u0440\u044b: front, left, right<\/strong><\/p>\n<p>\u0414\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0446\u0435\u043d\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u00a0\u0442\u0440\u0451\u0445 \u043a\u0430\u043c\u0435\u0440: \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439, \u043b\u0435\u0432\u043e\u0439 \u0438 \u043f\u0440\u0430\u0432\u043e\u0439. <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f59\/c04\/4fb\/f59c044fbc1ca4a2f756602f4bd3d122.png\" alt=\"\u0412\u044b\u0432\u043e\u0434 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0441\u00a0\u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 RGB\u2011\u043a\u0430\u043c\u0435\u0440\u044b \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" title=\"\u0412\u044b\u0432\u043e\u0434 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0441\u00a0\u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 RGB\u2011\u043a\u0430\u043c\u0435\u0440\u044b \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" width=\"556\" height=\"341\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f59\/c04\/4fb\/f59c044fbc1ca4a2f756602f4bd3d122.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f59\/c04\/4fb\/f59c044fbc1ca4a2f756602f4bd3d122.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0412\u044b\u0432\u043e\u0434 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0441\u00a0\u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 RGB\u2011\u043a\u0430\u043c\u0435\u0440\u044b \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/35f\/1f6\/1ed\/35f1f61ed5546cd7a07b4aa19f9530a5.png\" alt=\"\u0412\u044b\u0432\u043e\u0434 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u00a0\u043b\u0435\u0432\u043e\u0439 \u0438 \u043f\u0440\u0430\u0432\u043e\u0439 RGB\u2011\u043a\u0430\u043c\u0435\u0440 \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" title=\"\u0412\u044b\u0432\u043e\u0434 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u00a0\u043b\u0435\u0432\u043e\u0439 \u0438 \u043f\u0440\u0430\u0432\u043e\u0439 RGB\u2011\u043a\u0430\u043c\u0435\u0440 \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" width=\"1114\" height=\"336\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/35f\/1f6\/1ed\/35f1f61ed5546cd7a07b4aa19f9530a5.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/35f\/1f6\/1ed\/35f1f61ed5546cd7a07b4aa19f9530a5.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0412\u044b\u0432\u043e\u0434 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u00a0\u043b\u0435\u0432\u043e\u0439 \u0438 \u043f\u0440\u0430\u0432\u043e\u0439 RGB\u2011\u043a\u0430\u043c\u0435\u0440 \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<h4>4.2 \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u0430<\/h4>\n<p>\u0414\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0446\u0435\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u00a0\u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u0445 (\u0440\u0443\u043b\u044c, \u0433\u0430\u0437, \u0442\u043e\u0440\u043c\u043e\u0437), \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u0430:<\/p>\n<pre><code class=\"python\">df_commands = pd.read_csv(vehicle_commands_file) frame_commands = df_commands[df_commands[\"frame_id\"] == scene_numb]  df_traffic_light = pd.read_csv(traffic_light_file) frame_traffic_light = df_traffic_light[df_traffic_light[\"frame_id\"] == scene_numb]<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6e8\/506\/252\/6e850625269d4f6ce33e4cf0a76c5be8.png\" width=\"443\" height=\"66\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6e8\/506\/252\/6e850625269d4f6ce33e4cf0a76c5be8.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6e8\/506\/252\/6e850625269d4f6ce33e4cf0a76c5be8.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/955\/4f9\/d3f\/9554f9d3f6444e97c5877332addf554d.png\" alt=\"C:\\Users\\egork\\AppData\\Local\\Microsoft\\Windows\\INetCache\\Content.Word\\\u0421\u043d\u0438\u043c\u043e\u043a.png\" title=\"\" width=\"283\" height=\"68\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/955\/4f9\/d3f\/9554f9d3f6444e97c5877332addf554d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/955\/4f9\/d3f\/9554f9d3f6444e97c5877332addf554d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>4.3\u00a0\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f<\/strong><\/p>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u00a0\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 20\u00a0\u0442\u043e\u0447\u043a\u0430\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0432\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442. \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e: \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e\u00a0\u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u044b\u0439 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0446\u0435\u043d\u0435:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/39e\/2a7\/4df\/39e2a74df1091eddbb1d60069dee0356.png\" width=\"755\" height=\"739\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/39e\/2a7\/4df\/39e2a74df1091eddbb1d60069dee0356.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/39e\/2a7\/4df\/39e2a74df1091eddbb1d60069dee0356.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/p>\n<h4>4.4 \u0421\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0430\u0441\u043a\u0438<\/h4>\n<p>\u0421\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u00a0\u0441\u0446\u0435\u043d\u0430 \u0432\u0438\u0434\u0438\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u044c\u044e: \u0433\u0434\u0435 \u0434\u043e\u0440\u043e\u0433\u0430, \u0433\u0434\u0435 \u043f\u0435\u0448\u0435\u0445\u043e\u0434\u044b, \u0430\u00a0\u0433\u0434\u0435 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/877\/170\/1fc\/8771701fc5fcf9c275a72ddf300505e9.png\" alt=\"\u0412\u044b\u0432\u043e\u0434 \u043a\u0430\u0440\u0442\u044b \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0441\u00a0\u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" title=\"\u0412\u044b\u0432\u043e\u0434 \u043a\u0430\u0440\u0442\u044b \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0441\u00a0\u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" width=\"383\" height=\"236\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/877\/170\/1fc\/8771701fc5fcf9c275a72ddf300505e9.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/877\/170\/1fc\/8771701fc5fcf9c275a72ddf300505e9.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0412\u044b\u0432\u043e\u0434 \u043a\u0430\u0440\u0442\u044b \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0441\u00a0\u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9ca\/53e\/f01\/9ca53ef01be447cf207e7f62e5537018.png\" alt=\"\u0412\u044b\u0432\u043e\u0434 \u043a\u0430\u0440\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u00a0\u043b\u0435\u0432\u043e\u0439 \u0438 \u043f\u0440\u0430\u0432\u043e\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u0430\u043c\u0435\u0440 \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" title=\"\u0412\u044b\u0432\u043e\u0434 \u043a\u0430\u0440\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u00a0\u043b\u0435\u0432\u043e\u0439 \u0438 \u043f\u0440\u0430\u0432\u043e\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u0430\u043c\u0435\u0440 \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" width=\"770\" height=\"235\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/9ca\/53e\/f01\/9ca53ef01be447cf207e7f62e5537018.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9ca\/53e\/f01\/9ca53ef01be447cf207e7f62e5537018.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0412\u044b\u0432\u043e\u0434 \u043a\u0430\u0440\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u00a0\u043b\u0435\u0432\u043e\u0439 \u0438 \u043f\u0440\u0430\u0432\u043e\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u0430\u043c\u0435\u0440 \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u043e\u043c\u0435\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432\u00a0\u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u0435 \u043b\u0435\u0432\u043e\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b:<\/p>\n<p>\u041a\u043b\u0430\u0441\u0441\u044b: [ 1 2 3 4 5 6 7 8 9 11 14 15 20 21 22 23 24 25]<\/p>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0441\u043e\u0432: 18 <\/p>\n<p>\u041d\u043e\u043c\u0435\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432\u00a0\u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u0435 \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b:<\/p>\n<p>\u041a\u043b\u0430\u0441\u0441\u044b: [ 1 2 3 4 5 6 7 8 9 11 14 15 20 21 22 23 24 25]<\/p>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0441\u043e\u0432: 18 <\/p>\n<p>\u041d\u043e\u043c\u0435\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432\u00a0\u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b:<\/p>\n<p>\u041a\u043b\u0430\u0441\u0441\u044b: [ 1 2 3 4 5 6 7 8 9 11 13 14 15 18 20 21 22 23 24 25]<\/p>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0441\u043e\u0432: 20 <\/p>\n<h4>4.5 \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u043e\u0435 \u043e\u0431\u043b\u0430\u043a\u043e \u043b\u0438\u0434\u0430\u0440\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a<\/h4>\n<p>\u041b\u0438\u0434\u0430\u0440\u044b, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0443\u0447\u0430\u0441\u0442\u043a\u0430\u0445 \u043a\u0443\u0437\u043e\u0432\u0430 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442 \u043e\u0431\u0449\u0435\u0435 \u043e\u0431\u043b\u0430\u043a\u043e\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u0441\u0446\u0435\u043d\u044b<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d8a\/dbc\/5ea\/d8adbc5eae7a78e6953c5ecd6f4a2942.png\" alt=\"\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u043e\u0447\u0435\u043a \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" title=\"\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u043e\u0447\u0435\u043a \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" width=\"1600\" height=\"671\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d8a\/dbc\/5ea\/d8adbc5eae7a78e6953c5ecd6f4a2942.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d8a\/dbc\/5ea\/d8adbc5eae7a78e6953c5ecd6f4a2942.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u043e\u0447\u0435\u043a \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<p><strong>4.6\u00a0\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439 \u0442\u043e\u0447\u0435\u043a \u0438\u0437\u00a0\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u043e\u0433\u043e\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u043d\u0430\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u043a\u0430\u043c\u0435\u0440<\/strong><\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f <em>world_to_cam_matrix<\/em> \u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u0430\u043c\u0435\u0440\u044b <em>K<\/em>, \u043c\u044b \u0441\u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u043e\u0435\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0435 \u043e\u0431\u043b\u0430\u043a\u043e \u0442\u043e\u0447\u0435\u043a \u043d\u0430\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439, \u043b\u0435\u0432\u043e\u0439 \u0438 \u043f\u0440\u0430\u0432\u043e\u0439 RGB\u2011\u043a\u0430\u043c\u0435\u0440. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 3D\u2011\u0442\u043e\u0447\u0435\u043a \u0432\u00a0\u0432\u0438\u0434\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u00a0\u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f\u00a0\u0441\u043e\u0432\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0438 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0441\u0446\u0435\u043d\u044b. \u0414\u043b\u044f\u00a0\u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u044d\u0442\u043e \u043e\u0431\u043b\u0430\u043a\u043e \u0442\u043e\u0447\u0435\u043a \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0441\u00a0\u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439, \u043b\u0435\u0432\u043e\u0439 \u0438 \u043f\u0440\u0430\u0432\u043e\u0439 RGB\u2011\u043a\u0430\u043c\u0435\u0440:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fce\/afd\/7eb\/fceafd7eb4d42f09f368c99be3083faf.jpeg\" alt=\"\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u043e\u0447\u0435\u043a \u043d\u0430\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" title=\"\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u043e\u0447\u0435\u043a \u043d\u0430\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" width=\"438\" height=\"263\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/fce\/afd\/7eb\/fceafd7eb4d42f09f368c99be3083faf.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fce\/afd\/7eb\/fceafd7eb4d42f09f368c99be3083faf.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u043e\u0447\u0435\u043a \u043d\u0430\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/897\/acf\/954\/897acf95443c081d2704e1007c0f2534.jpeg\" alt=\"\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u043e\u0447\u0435\u043a \u043d\u0430\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u043b\u0435\u0432\u043e\u0439 \u0438 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u0430\u043c\u0435\u0440 \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" title=\"\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u043e\u0447\u0435\u043a \u043d\u0430\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u043b\u0435\u0432\u043e\u0439 \u0438 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u0430\u043c\u0435\u0440 \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" width=\"870\" height=\"263\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/897\/acf\/954\/897acf95443c081d2704e1007c0f2534.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/897\/acf\/954\/897acf95443c081d2704e1007c0f2534.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u043e\u0447\u0435\u043a \u043d\u0430\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u043b\u0435\u0432\u043e\u0439 \u0438 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u0430\u043c\u0435\u0440 \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<p><strong>\u0417\u0430\u0447\u0435\u043c \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u043b\u0438?<\/strong><\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0440\u0430\u0441\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438 \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u0431\u0430\u0433\u0438 \u0434\u043e\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p>\u0423\u0431\u0435\u0434\u0438\u043b\u0438\u0441\u044c, \u0447\u0442\u043e\u00a0\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u043b\u043e\u0436\u0438\u043b\u0430\u0441\u044c \u043d\u0430\u00a0\u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432\u00a0\u043a\u0430\u0434\u0440\u0435<\/p>\n<\/li>\n<\/ul>\n<h2>5. \u0413\u043e\u0442\u043e\u0432\u0438\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0441\u043a\u043e\u0440\u043c\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0432\u00a0\u043f\u043e\u0440\u044f\u0434\u043e\u043a. \u0421\u044b\u0440\u044b\u0435 \u043b\u043e\u0433\u0438 \u0438\u0437\u00a0\u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438\u00a0\u2014 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b\u043e.<\/p>\n<h4>5.1 \u041f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438 \u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>\u0427\u0442\u043e\u00a0\u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u043d\u0430\u00a0\u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435:<\/p>\n<ul>\n<li>\n<p>\u0438\u0441\u043a\u043b\u044e\u0447\u0430\u043b\u0438 \u0441\u0446\u0435\u043d\u044b \u0441\u00a0\u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0431\u0435\u0437\u00a0\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043b\u0438 \u0432\u044b\u0431\u0440\u043e\u0441\u044b \u043f\u043e\u00a0\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 (&gt; 30\u00a0\u043a\u043c\/\u0447);<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u0444\u0430\u0439\u043b\u044b \u043d\u0430\u00a0\u0438\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u043b\u0438\u00a0\u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u044b \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043b\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u043c\u0430\u0441\u043a\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b\u0438 \u043a\u00a0\u0435\u0434\u0438\u043d\u043e\u043c\u0443 \u0440\u0430\u0437\u043c\u0435\u0440\u0443 (224\u00d7224);<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438\u00a0\u043b\u0438\u0434\u0430\u0440\u043e\u0432 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u043b\u0438 \u0432\u00a0\u0433\u043b\u0443\u0431\u0438\u043d\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442. \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 5616\u00a0\u0441\u0442\u0440\u043e\u043a(\u0441\u0435\u043c\u043f\u043b\u043e\u0432)<\/p>\n<p>\u0414\u043b\u044f\u00a0\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 <em>CarlaDataset<\/em>, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442:<\/p>\n<ul>\n<li>\n<p>\u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u043d\u0437\u043e\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f: 15\u00a0\u043a\u0430\u043d\u0430\u043b\u043e\u0432 (3\u00a0RGB + 3\u00a0semantic +3\u00a0lidar project \u00d7 3\u00a0\u0432\u0438\u0434\u0430 \u043a\u0430\u043c\u0435\u0440);<\/p>\n<\/li>\n<li>\n<p>\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e: (10, 2) \u0442\u043e\u0447\u0435\u043a;<\/p>\n<\/li>\n<li>\n<p>\u0432\u0435\u043a\u0442\u043e\u0440 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u0430: (3,);<\/p>\n<\/li>\n<li>\n<p>\u0432\u0435\u043a\u0442\u043e\u0440 \u0446\u0435\u043b\u0435\u0432\u044b\u0445 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439: (4,)\u00a0\u2014 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0440\u0443\u043b\u044f, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435, \u0442\u043e\u0440\u043c\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"python\">class CarlaDataset(Dataset):     def __init__(self, data):         self.data = data      def __len__(self):         return len(self.data)      def __getitem__(self, idx):         scene = self.data[idx]          #\u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f         # RGB: (3, 224, 224, 3) - (3, 3, 224, 224)         rgb = torch.from_numpy(np.stack(scene[\"rgb\"])).permute(0, 3, 1, 2).float()  #(3, 3, 224, 224)         rgb = rgb.reshape(-1, 224, 224)  # (9, 224, 224)          # Lidar: (3, 224, 224)         lidar = torch.from_numpy(np.stack(scene[\"lidar\"])).float()  #(3, 224, 224)          # Semantic: (3, 224, 224)         semantic = torch.from_numpy(np.stack(scene[\"semantic\"])).float()  #(3, 224, 224)         # \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u043c 9 + 3 + 3 = 15 \u043a\u0430\u043d\u0430\u043b\u043e\u0432         input_tensor = torch.cat([rgb, lidar, semantic], dim=0)  #(15, 224, 224)          #\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438         trajectory_tensor = torch.from_numpy(scene[\"trajectory\"]).float()  #(10, 2)         lights = scene[\"lights\"]         light_tensor = torch.tensor([             lights[\"green\"],             lights[\"red\"],             lights[\"yellow\"]         ], dtype=torch.float32)  # (3,)          #\u0426\u0435\u043b\u0435\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435         target = scene[\"target\"]         target_tensor = torch.tensor([             target[\"speed\"],             target[\"steer\"],             target[\"throttle\"],             target[\"brake\"]         ], dtype=torch.float32)  # (4,)          return {             \"input\": input_tensor,              #(15, 224, 224)             \"trajectory\": trajectory_tensor,    #(10, 2)             \"traffic_lights\": light_tensor,     #(3,)             \"target\": target_tensor             #(4,)         } <\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432\u00a0\u0431\u0430\u0442\u0447\u0435:<\/p>\n<pre><code class=\"python\">{   \"input\": tensor(15, 224, 224),   \"trajectory\": tensor(10, 2),   \"traffic_lights\": tensor(3),   \"target\": tensor(4) } <\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u0435\u0441\u044c \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043b\u0438 \u043d\u0430 <em>train, val \u0438 test<\/em>:<\/p>\n<ul>\n<li>\n<p>\u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0430\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0430 (train)\u00a0\u2014 70% \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0430 (val)\u00a0\u2014 15% \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0442\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0430 (test)\u00a0\u2014 15% \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"python\">train_data, temp_data = train_test_split(dataset, test_size=0.3, random_state=42) val_data, test_data = train_test_split(temp_data, test_size=0.5, random_state=42)  train_dataset = CarlaDataset(train_data) val_dataset   = CarlaDataset(val_data) test_dataset  = CarlaDataset(test_data) <\/code><\/pre>\n<h4>5.2 \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/h4>\n<p>\u0414\u043b\u044f\u00a0\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0443\u044e \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c <em>CarlaControlModel<\/em>. \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a\u00a0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<ul>\n<li>\n<p>\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c (CNN): \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u00a0\u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u044b\u043c \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435\u043c\u00a0\u2014 RGB, \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438\u00a0\u043b\u0438\u0434\u0430\u0440, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u0435 \u0432\u00a0\u043e\u0434\u0438\u043d \u0442\u0435\u043d\u0437\u043e\u0440 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c (15, 224, 224);<\/p>\n<\/li>\n<li>\n<p>\u0422\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f: \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u043c \u0431\u043b\u043e\u043a\u043e\u043c \u0438\u0437 20\u00a0\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u0430: \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u0434\u043b\u0438\u043d\u044b 3\u00a0\u0438 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0442\u043a\u0443;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432: \u0432\u0441\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432\u00a0\u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 head\u2011\u0431\u043b\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0434\u0430\u0451\u0442 4\u00a0\u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u00a0\u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"python\">class CarlaControlModel(nn.Module):     def __init__(self):         super().__init__()          #\u0411\u043b\u043e\u043a CNN \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (15 \u043a\u0430\u043d\u0430\u043b\u043e\u0432)         self.conv = nn.Sequential(             nn.Conv2d(15, 32, kernel_size=5, stride=2, padding=2),               nn.BatchNorm2d(32),             nn.ReLU(),              nn.Conv2d(32, 64, kernel_size=3, stride=2, padding=1),              nn.BatchNorm2d(64),             nn.ReLU(),              nn.Conv2d(64, 128, kernel_size=3, stride=2, padding=1),               nn.BatchNorm2d(128),             nn.ReLU(),              nn.AdaptiveAvgPool2d((1, 1))          )          self.fc_image = nn.Linear(128, 64)          #\u0411\u043b\u043e\u043a \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438          self.fc_traj = nn.Sequential(             nn.Linear(20 * 2, 32),             nn.ReLU(),             nn.Linear(32, 16)         )          #\u0411\u043b\u043e\u043a \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u0430         self.fc_lights = nn.Sequential(             nn.Linear(3, 8),             nn.ReLU()         )          #\u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434         self.head = nn.Sequential(             nn.Linear(64 + 16 + 8, 64),             nn.ReLU(),             nn.Linear(64, 4)          )      def forward(self, input_img, trajectory, traffic_lights):         x = self.conv(input_img)           x = x.view(x.size(0), -1)           x = self.fc_image(x)                traj = self.fc_traj(trajectory.view(trajectory.size(0), -1))          lights = self.fc_lights(traffic_lights)           combined = torch.cat([x, traj, lights], dim=1)           out = self.head(combined)            return out            device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\") model = CarlaControlModel().to(device)  BATCH_SIZE = 64  train_loader = DataLoader(train_dataset, batch_size=BATCH_SIZE, shuffle=True, num_workers=0, pin_memory=True)  val_loader   = DataLoader(val_dataset, batch_size=BATCH_SIZE, shuffle=False, num_workers=0, pin_memory=True)  test_loader  = DataLoader(test_dataset, batch_size=BATCH_SIZE, shuffle=False, num_workers=0, pin_memory=True) <\/code><\/pre>\n<h4>5.3 \u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u0446\u0438\u043a\u043b<\/h4>\n<p>\u0414\u043b\u044f\u00a0\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d:<\/p>\n<ul>\n<li>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0442\u0435\u0440\u044c: <code>nn.MSELoss()<\/code>\u00a0\u2014 \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u0430\u044f;<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440: Adam \u0441\u00a0learning rate = 1e-4;<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043f\u043e\u0445: 120;<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u0431\u0430\u0442\u0447\u0430: 64.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u044d\u043f\u043e\u0445\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u043b\u0438 \u0441\u0440\u0435\u0434\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u00a0\u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0439 \u0438 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435. \u0415\u0441\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u00a0\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438\u00a0\u2014 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u0438 \u0435\u0435 \u043a\u0430\u043a\u00a0\u043b\u0443\u0447\u0448\u0443\u044e \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e:<\/p>\n<pre><code class=\"python\">EPOCHS = 120 best_val_loss = float('inf')  train_losses = [] val_losses = []  for epoch in range(EPOCHS):     print(f\"\\nEpoch {epoch+1}\/{EPOCHS}\")     start_time = time.time()      model.train()     train_loss = 0.0      for batch in tqdm(train_loader, desc=\"Training\"):         inputs = batch[\"input\"].to(device)         traj = batch[\"trajectory\"].to(device)         lights = batch[\"traffic_lights\"].to(device)         targets = batch[\"target\"].to(device)          optimizer.zero_grad()         outputs = model(inputs, traj, lights)         loss = criterion(outputs, targets)         loss.backward()         optimizer.step()          train_loss += loss.item()      avg_train_loss = train_loss \/ len(train_loader)     train_losses.append(avg_train_loss)      model.eval()     val_loss = 0.0      with torch.no_grad():         for batch in tqdm(val_loader, desc=\"Validation\"):             inputs = batch[\"input\"].to(device)             traj = batch[\"trajectory\"].to(device)             lights = batch[\"traffic_lights\"].to(device)             targets = batch[\"target\"].to(device)              outputs = model(inputs, traj, lights)             loss = criterion(outputs, targets)             val_loss += loss.item()      avg_val_loss = val_loss \/ len(val_loader)     val_losses.append(avg_val_loss)      elapsed = time.time() - start_time     print(f\"Train Loss: {avg_train_loss:.4f} | Val Loss: {avg_val_loss:.4f} | Time: {elapsed:.2f}s\")      if avg_val_loss &lt; best_val_loss:         best_val_loss = avg_val_loss         torch.save(model.state_dict(), \"best_model.pth\") <\/code><\/pre>\n<h4>5.4 \u041a\u0430\u043a\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438<\/h4>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8d3\/355\/960\/8d33559604537d79b0a7eadcf5a432ba.jpeg\" alt=\"\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0442\u0435\u0440\u044c \u043d\u0430\u00a0\u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0439 \u0438 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0430\u0445 \u043f\u043e\u00a0\u044d\u043f\u043e\u0445\u0430\u043c, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" title=\"\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0442\u0435\u0440\u044c \u043d\u0430\u00a0\u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0439 \u0438 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0430\u0445 \u043f\u043e\u00a0\u044d\u043f\u043e\u0445\u0430\u043c, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\" width=\"1138\" height=\"742\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/8d3\/355\/960\/8d33559604537d79b0a7eadcf5a432ba.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8d3\/355\/960\/8d33559604537d79b0a7eadcf5a432ba.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0442\u0435\u0440\u044c \u043d\u0430\u00a0\u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0439 \u0438 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0430\u0445 \u043f\u043e\u00a0\u044d\u043f\u043e\u0445\u0430\u043c, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u0438 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0435 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430\u00a0\u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435, \u0447\u0442\u043e\u00a0\u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u043c\u043e\u0434\u0435\u043b\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0443\u0441\u0432\u0430\u0438\u0432\u0430\u043b\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u041d\u0430\u00a0\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043b\u0430\u0432\u043d\u043e \u0441\u043d\u0438\u0436\u0430\u043b\u0430\u0441\u044c, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u044d\u043f\u043e\u0445 (\u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u043e\u0441\u043b\u0435 60) \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0442\u0438. \u042d\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u00a0\u0442\u043e, \u0447\u0442\u043e\u00a0\u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f\u00a0\u2014 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0430 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u00a0\u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u0432\u00a0\u0443\u0449\u0435\u0440\u0431 \u043e\u0431\u043e\u0431\u0449\u0430\u044e\u0449\u0435\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h4>5.5 \u041e\u0446\u0435\u043d\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435<\/h4>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430\u00a0\u0440\u0430\u043d\u0435\u0435 \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u00a0\u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438. \u0414\u043b\u044f\u00a0\u043e\u0446\u0435\u043d\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 (MSE) \u0438 \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 (MAE) \u043f\u043e\u00a0\u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437\u00a0\u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0432\u044b\u0445\u043e\u0434\u043e\u0432: \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0440\u0443\u043b\u044f, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435, \u0442\u043e\u0440\u043c\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<pre><code class=\"python\">test_loss = 0.0 speed_loss = 0.0 steer_loss = 0.0 throttle_loss = 0.0 brake_loss = 0.0  with torch.no_grad():     for batch in tqdm(test_loader, desc=\"Testing\"):         inputs = batch[\"input\"].to(device)         traj = batch[\"trajectory\"].to(device)         lights = batch[\"traffic_lights\"].to(device)         targets = batch[\"target\"].to(device)          outputs = model(inputs, traj, lights)          loss = criterion(outputs, targets)         test_loss += loss.item()          #Unpacking the loss for each target variable         diff = torch.abs(outputs - targets)         speed_loss += diff[:, 0].mean().item()         steer_loss += diff[:, 1].mean().item()         throttle_loss += diff[:, 2].mean().item()         brake_loss += diff[:, 3].mean().item()  n_batches = len(test_loader) <\/code><\/pre>\n<p><strong>Test Loss(MSE): 6.5944<\/strong><\/p>\n<p><strong>Speed MAE: 3.8075<\/strong><\/p>\n<p><strong>Steer MAE: 0.0814<\/strong><\/p>\n<p><strong>Throttle MAE: 0.2914<\/strong><\/p>\n<p><strong>Brake MAE: 0.1477<\/strong><\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0412\u00a0\u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b, \u043a\u0430\u043a\u00a0\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u0434\u043b\u044f\u00a0\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u043c \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043e\u043c: \u043e\u0442\u00a0\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043e\u00a0\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430. \u0423\u043f\u043e\u0440 \u0441\u0434\u0435\u043b\u0430\u043d \u043d\u0430\u00a0\u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435 (RGB, \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430,\u00a0\u043b\u0438\u0434\u0430\u0440\u044b) \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043a\u0430\u043a\u00a0\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u00a0\u2014 \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u00a0\u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0434\u043e\u0440\u043e\u0436\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445.<\/p>\n<ul>\n<li>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u0438\u0437\u043a\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u043f\u043e\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0440\u0443\u043b\u0451\u043c, \u0447\u0442\u043e\u00a0\u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f\u00a0\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u00a0\u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044e \u0438 \u0442\u043e\u0440\u043c\u043e\u0436\u0435\u043d\u0438\u044e \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u00a0\u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043f\u0443\u0441\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u00a0\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0432\u044b\u0448\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445\u00a0\u2014 \u044d\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u00a0\u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043a\u0430\u0434\u0440\u0430, \u043d\u043e\u00a0\u0438 \u043e\u0442\u00a0\u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0438 \u0432\u00a0\u043f\u0440\u043e\u0448\u043b\u043e\u043c (\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435\u00a0\u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u00a0\u043f\u043e\u043a\u0430\u0434\u0440\u043e\u0432\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438).<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u00a0\u0446\u0435\u043b\u043e\u043c, \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u0445\u043e\u0440\u043e\u0448\u0443\u044e \u043e\u0431\u043e\u0431\u0449\u0430\u044e\u0449\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c, \u0430\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0430\u00a0\u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442 \u0435\u0451 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u00a0\u0437\u0430\u0434\u0430\u0447\u0430\u0445 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u043c \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043e\u043c.<\/p>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, <a href=\"https:\/\/github.com\/ekolotvin\/Learning_a_control_model_for_autonomous_driving_using_multisensory_perception\">\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>.<\/p>\n<hr\/>\n<p><em>\u0412\u0441\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b DS \u0438 ML \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0432\u043e\u0438\u0442\u044c \u043d\u0430 \u043e\u043d\u043b\u0430\u0439\u043d-\u043a\u0443\u0440\u0441\u0430\u0445 OTUS: <\/em><a href=\"https:\/\/otus.pw\/jnsr\/\"><em>\u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435<\/em><\/a><em> \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u0430 <\/em><a href=\"https:\/\/otus.pw\/5XdP\/\"><em>\u0432 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u0435<\/em><\/a><em> \u2014 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0443\u0440\u043e\u043a\u0438.<\/em> <\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/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\/articles\/904352\/\"> https:\/\/habr.com\/ru\/articles\/904352\/<\/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-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u0410\u0432\u0442\u043e\u0440 \u0441\u0442\u0430\u0442\u044c\u0438: \u0415\u0433\u043e\u0440 \u041a\u043e\u043b\u043e\u0442\u0432\u0438\u043d <\/em><\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e\u00a0\u043b\u0438\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u043e\u0447\u0435\u043a, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u0433\u043e \u0432\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0432\u00a0\u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u0438 \u0441\u0435\u043d\u0441\u043e\u0440\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439. \u041e\u0434\u043d\u043e\u0439 \u0438\u0437\u00a0\u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u043f\u0440\u0438\u00a0\u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0442\u0430\u043a\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044f \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u0440\u0435\u0434\u044b \u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432\u00a0\u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u0434\u043e\u0440\u043e\u0436\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b, \u0434\u043b\u044f\u00a0\u0447\u0435\u0433\u043e \u0432\u0441\u0451 \u0447\u0430\u0449\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u00a0\u2014 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432,\u00a0\u2014 \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0432\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0430.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u0432\u0437\u044f\u043b\u0441\u044f \u0437\u0430\u00a0\u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442? \u0412\u0441\u0435\u0433\u0434\u0430\u00a0\u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a \u00ab\u0432\u0438\u0434\u0438\u0442\u00bb \u0434\u043e\u0440\u043e\u0433\u0443 \u0431\u0435\u0441\u043f\u0438\u043b\u043e\u0442\u043d\u0438\u043a \u0438 \u043a\u0430\u043a\u00a0\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043d\u0435\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438\u0437\u00a0\u043a\u043d\u0438\u0436\u0435\u043a \u0438 \u0441\u0442\u0430\u0442\u0435\u0439, \u0430\u00a0\u0440\u0443\u043a\u0430\u043c\u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u00a0\u2014 \u043e\u0442\u00a0\u0441\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0439.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b CARLA Simulator. \u041e\u0434\u043d\u0438\u043c \u0438\u0437\u00a0\u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432 \u044d\u0442\u043e\u0433\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432, \u0447\u0442\u043e\u00a0\u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0434\u043b\u044f\u00a0\u0437\u0430\u0434\u0430\u0447 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f.<\/p>\n<p><strong>\u041f\u043e\u0447\u0435\u043c\u0443 CARLA?<\/strong><\/p>\n<ul>\n<li>\n<p><strong>\u0413\u0438\u0431\u043a\u043e\u0441\u0442\u044c<\/strong>: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0440\u0430\u0441\u0441 \u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/strong>: \u043c\u043e\u0436\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432:\u00a0\u043b\u0438\u0434\u0430\u0440\u044b, RGB\u2011\u043a\u0430\u043c\u0435\u0440\u044b, \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u044b<\/p>\n<\/li>\n<li>\n<p><strong>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c<\/strong>: \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u00a0\u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0440\u0438\u0441\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u044f\u043c\u0438, \u0438 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0446\u0438\u043a\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041a\u0430\u043a\u00a0\u043e\u0431\u0443\u0447\u0430\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u044c?<\/strong><\/p>\n<p>\u0421\u0440\u0435\u0434\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a\u00a0\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044e \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c:<\/p>\n<ul>\n<li>\n<p><strong>Reinforcement Learning<\/strong>\u00a0\u2014 \u043e\u0431\u0443\u0447\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0431\u044b \u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0430\u0433\u0435\u043d\u0442\u0430 \u0441\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p><strong>Behavioral Cloning<\/strong>\u00a0\u2014 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0430 \u043f\u043e\u00a0\u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c;<\/p>\n<\/li>\n<li>\n<p><strong>\u0418\u043c\u0438\u0442\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u00a0\u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c<\/strong>\u00a0\u2014 \u0441\u043b\u0435\u0434\u0443\u0435\u043c \u043f\u043e\u00a0\u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u00a0\u044d\u0442\u043e\u043c \u0434\u0430\u043d\u043d\u043e\u043c \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0447\u0435\u0441\u043a\u043e\u0435 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a\u00a0\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044e\u00a0\u2014 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u00a0\u0442\u043e\u043c, \u043a\u0443\u0434\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0432\u00a0\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u042d\u0442\u043e \u0434\u0430\u0451\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u00ab\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438\u0435\u00bb\u00a0\u2014 \u043d\u0435\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u00a0\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u0430\u00a0\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e. \u0414\u043b\u044f\u00a0\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b RGB\u2011\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u0440\u0442\u044b \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u0433\u043b\u0443\u0431\u0438\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0441\u00a0\u043b\u0438\u0434\u0430\u0440\u043e\u0432, \u0447\u0442\u043e\u00a0\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u0441\u0446\u0435\u043d\u044b \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u0448\u0430\u0433\u0435.<\/p>\n<p>\u0422\u0430\u043a\u043e\u0439 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u00a0\u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u0441\u00a0\u0443\u0447\u0435\u0442\u043e\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438\u00a0\u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u0430 \u043c\u0435\u0436\u0434\u0443 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u044e, \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c\u044e \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u043e\u0434\u0435\u043b\u0438, \u0447\u0442\u043e\u00a0\u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0434\u043b\u044f\u00a0\u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u00a0\u0432\u00a0\u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438, \u0442\u0430\u043a \u0438 \u0432\u00a0\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445.<\/p>\n<h2>1. \u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430<\/h2>\n<p>\u0412\u0441\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u00a0\u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430: \u043e\u0442\u00a0\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u0438 \u0441\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u00a0\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. <\/p>\n<ul>\n<li>\n<p><strong>\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438. <\/strong>\u0412\u00a0\u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u00a0\u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u0439\u043f\u043e\u0438\u043d\u0442\u043e\u0432 \u043e\u0442\u00a0\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u00a0\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u00a0\u043c\u0435\u0440\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0434\u043e\u0441\u0442\u0430\u0435\u043c \u0438\u0437\u00a0\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 20\u00a0\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0442\u043e\u0447\u0435\u043a, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e? \u0427\u0442\u043e\u0431\u044b \u043c\u043e\u0434\u0435\u043b\u044c \u0437\u043d\u0430\u043b\u0430 \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043d\u043e\u00a0\u0438 \u00ab\u043a\u0443\u0434\u0430 \u0434\u0435\u0440\u0436\u0438\u043c \u043a\u0443\u0440\u0441\u00bb. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0435\u0439 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u00a0\u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043d\u0430\u00a0\u0434\u043e\u0440\u043e\u0433\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445<\/strong>. \u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044e: \u0430\u0432\u0442\u043e \u043f\u043e\u0434\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0430\u0433\u0435\u043d\u0442\u0430 \u0435\u0434\u0435\u0442 \u043f\u043e\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443, \u0441\u043e\u0431\u0438\u0440\u0430\u044f \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432. \u0412\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u00a0\u043a\u0430\u0434\u0440\u0430\u043c(\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0441\u0432\u043e\u0439 <em>frame_id<\/em>): RGB\u2011\u043a\u0430\u043c\u0435\u0440\u044b, \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b,\u00a0\u043b\u0438\u0434\u0430\u0440\u044b, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/strong>.\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u0432\u0441\u0435, \u0447\u0442\u043e\u00a0\u0441\u043e\u0431\u0440\u0430\u043b\u0438: \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u043d\u0441\u043e\u0440\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u043c\u0443\u043b\u044c\u0442\u0438\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f; \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043a\u0430\u0434\u0440\u0443 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e(\u0442\u0435 \u0441\u0430\u043c\u044b\u0435 20\u00a0\u0442\u043e\u0447\u0435\u043a); \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u0430; \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b(\u043e\u043d\u0438\u00a0\u0436\u0435 \u0438 \u0431\u0443\u0434\u0443\u0442 \u0442\u0430\u0440\u0433\u0435\u0442\u0430\u043c\u0438 \u0432\u00a0\u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435)<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438<\/strong>. \u041c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430\u00a0\u0432\u0445\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b: \u043c\u0443\u043b\u044c\u0442\u0438\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u00a0\u2014 15\u00a0\u043a\u0430\u043d\u0430\u043b\u043e\u0432:RGB, \u0433\u043b\u0443\u0431\u0438\u043d\u0430, \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430; \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u00a0\u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0437 20\u00a0\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0442\u043e\u0447\u0435\u043a \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430; \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u0430\u00a0\u2014 \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u0437 3\u00a0\u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432; \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u00a0\u2014 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0434\u043b\u044f\u00a0\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c; \u0442\u0430\u0440\u0433\u0435\u0442\u044b\u00a0\u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f, \u0442\u043e\u0440\u043c\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0443\u0433\u043b\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0440\u0443\u043b\u044f. <\/p>\n<\/li>\n<\/ul>\n<h3>2. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432\u00a0CARLA<\/h3>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a\u00a0\u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0443 \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u0435\u0433\u043e \u0432\u00a0\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c. \u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0432\u00a0\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u0430\u0434\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0442\u0435\u0440\u044f\u0442\u044c\u0441\u044f \u0438\u043b\u0438\u00a0\u0441\u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u00a0\u0432\u0440\u0435\u043c\u0435\u043d\u0438\u00a0\u2014 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u00a0\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432.<\/p>\n<p><strong>2.1\u00a0\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044e<\/strong><\/p>\n<pre><code class=\"python\">client = carla.Client(\"localhost\", 2000) client.set_timeout(20.0) world = client.get_world()  settings = world.get_settings() settings.synchronous_mode = True settings.fixed_delta_seconds = 0.1 world.apply_settings(settings)<\/code><\/pre>\n<p>\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0430\u00a0\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code><em>delta_seconds<\/em> = 0.1<\/code>\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432 10\u00a0\u0413\u0446.<\/p>\n<h4>2.2 \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e<\/h4>\n<p>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0430\u0432\u0442\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0435\u0437\u0434\u0438\u0442\u044c \u043f\u043e\u00a0\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0434\u0430\u0435\u043c \u0435\u0433\u043e \u0446\u0432\u0435\u0442. \u0412\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0435\u00a0\u2014 Mini Cooper, \u043d\u043e\u00a0\u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0438\u0437\u00a0\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 CARLA<\/p>\n<pre><code class=\"python\">bp_lib = world.get_blueprint_library() vehicle_blueprints = bp_lib.filter('vehicle.*') vehicle_bp = bp_lib.find('vehicle.mini.cooper_s_2021') vehicle_bp.set_attribute('color', '250, 240, 230')<\/code><\/pre>\n<h4>2.3 \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u00a0<\/h4>\n<p>\u0414\u043b\u044f\u00a0\u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code><em>build_random_long_route()<\/em><\/code>. \u041e\u043d\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0443\u044e \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0438 \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442, \u043f\u043e\u043a\u0430 \u043d\u0435\u00a0\u043d\u0430\u0431\u0435\u0440\u0435\u0442\u0441\u044f \u043d\u0443\u0436\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430. \u041f\u043e\u0434\u00a0\u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00a0\u2014 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a <strong><em>GlobalRoutePlanner<\/em><\/strong><em>,<\/em> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0441\u00a0\u0443\u0447\u0435\u0442\u043e\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0433\u043e\u0440\u043e\u0434\u0430<\/p>\n<pre><code class=\"python\">from agents.navigation.global_route_planner import GlobalRoutePlanner from agents.navigation.global_route_planner_dao import GlobalRoutePlannerDAO from agents.navigation.behavior_agent import BehaviorAgent  def build_random_long_route(world, planner, min_distance=20000.0):     spawn_points = world.get_map().get_spawn_points()     start_transform = random.choice(spawn_points)     current_location = start_transform.location      total_route = []     total_length = 0.0      while total_length &lt; min_distance:         next_location = random.choice(spawn_points).location         segment = planner.trace_route(current_location, next_location)          if len(segment) &lt; 2:             continue          for i in range(len(segment) - 1):             wp1 = segment[i][0].transform.location             wp2 = segment[i + 1][0].transform.location             total_length += wp1.distance(wp2)          total_route.extend(segment)         current_location = next_location      return start_transform, total_route<\/code><\/pre>\n<p>\u0417\u0430\u0434\u0430\u0435\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0438 \u0441\u0442\u0440\u043e\u0438\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442:<\/p>\n<pre><code class=\"python\">dao = GlobalRoutePlannerDAO(world.get_map(), sampling_resolution=1.0) grp = GlobalRoutePlanner(dao, sampling_resolution=1.0)  spawn_transform, route = build_random_long_route(world, grp, min_distance=2600)<\/code><\/pre>\n<h4>2.4 \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0430\u0433\u0435\u043d\u0442<\/h4>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u0441\u043f\u0430\u0432\u043d \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0432\u00a0\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0430\u0433\u0435\u043d\u0442\u0430 (<em>BehaviorAgent<\/em>):<\/p>\n<pre><code class=\"python\">vehicle = world.spawn_actor(vehicle_bp, spawn_transform) agent = BehaviorAgent(vehicle, behavior='aggressive') agent.set_global_plan(route)<\/code><\/pre>\n<p>\u0410\u0433\u0435\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0443, \u0431\u0443\u0444\u0435\u0440\u0443 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0442\u043e\u0447\u0435\u043a \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u043c\u0430\u043d\u0435\u0432\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438:<\/p>\n<pre><code class=\"python\">agent._local_planner._lane_change = False agent._local_planner._buffer_size = 20 agent._local_planner._min_distance = 1.5<\/code><\/pre>\n<p>\u0410\u0433\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u043e\u043b\u043e\u0441\u0435, \u0447\u0442\u043e\u00a0\u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f\u00a0\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f;<\/p>\n<p>\u0410\u0433\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c 20\u00a0\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0442\u043e\u0447\u0435\u043a \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u043f\u0440\u0438\u00a0\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f;<\/p>\n<p>\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0430\u0433\u0435\u043d\u0442\u043e\u043c \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439: \u041a\u043e\u0433\u0434\u0430 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e\u00a0\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043c\u0435\u043d\u044c\u0448\u0435 1.5\u00a0\u043c\u0435\u0442\u0440\u0430\u00a0\u2014 \u0430\u0433\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043a\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439. <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u0446\u0435\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0441\u00a0\u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0430\u0433\u0435\u043d\u0442\u0430, \u0432\u00a0\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<h4>2.5 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432<\/h4>\n<p>\u0414\u043b\u044f\u00a0\u0438\u043c\u0438\u0442\u0430\u0446\u0438\u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u0440\u0435\u0434\u044b \u043d\u0430\u00a0\u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432: RGB\u2011\u043a\u0430\u043c\u0435\u0440\u044b, \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0438\u00a0\u043b\u0438\u0434\u0430\u0440\u044b. \u0412\u0441\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432\u00a0\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0441\u00a0\u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f 2.5\u00a0\u0413\u0446 (<code><em>sensor_tick = 0.4<\/em><\/code>), \u0447\u0442\u043e\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u0448\u0430\u0433\u0435.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c RGB\u2011\u043a\u0430\u043c\u0435\u0440\u044b:<\/p>\n<pre><code class=\"python\">camera_bp = bp_lib.find('sensor.camera.rgb') camera_bp.set_attribute(\"image_size_x\", \"1280\") camera_bp.set_attribute(\"image_size_y\", \"720\") camera_bp.set_attribute('sensor_tick', '0.4') camera_bp.set_attribute(\"fov\", \"90\")<\/code><\/pre>\n<p>\u0414\u043b\u044f\u00a0\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u0440\u0438 RGB\u2011\u043a\u0430\u043c\u0435\u0440\u044b: \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0438 \u0434\u0432\u0435 \u0431\u043e\u043a\u043e\u0432\u044b\u0435. \u041e\u043d\u0438 \u043a\u0440\u0435\u043f\u044f\u0442\u0441\u044f \u043a\u00a0\u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044e \u0441\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0443\u0433\u043b\u0430\u043c\u0438 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430:<\/p>\n<pre><code class=\"python\">camera_front = world.spawn_actor(     camera_bp,     carla.Transform(carla.Location(x=1.0, y=0.0, z=1.8)),     attach_to=vehicle )  camera_left = world.spawn_actor(     camera_bp,     carla.Transform(carla.Location(x=1.0, y=-0.5, z=1.8), carla.Rotation(yaw=-45)),     attach_to=vehicle )  camera_right = world.spawn_actor(     camera_bp,     carla.Transform(carla.Location(x=1.0, y=0.5, z=1.8), carla.Rotation(yaw=45)),     attach_to=vehicle )<\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e RGB \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u043c \u0442\u0440\u0438 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u00a0\u043a\u043b\u0430\u0441\u0441\u0430\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (\u0434\u043e\u0440\u043e\u0433\u0430, \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u044b, \u0437\u0434\u0430\u043d\u0438\u044f \u0438\u00a0\u0442.\u00a0\u0434.):<\/p>\n<pre><code class=\"python\">semantic_bp = bp_lib.find('sensor.camera.semantic_segmentation') semantic_bp.set_attribute('image_size_x', '1280') semantic_bp.set_attribute('image_size_y', '720') semantic_bp.set_attribute('sensor_tick', '0.4') semantic_bp.set_attribute(\"fov\", \"90\")   semantic_camera_front = world.spawn_actor(     semantic_bp,     carla.Transform(carla.Location(x=1.0, y=0.0, z=1.8)),     attach_to=vehicle ) semantic_camera_left = world.spawn_actor(     semantic_bp,<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-457937","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/457937","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=457937"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/457937\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=457937"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=457937"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=457937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}