{"id":499015,"date":"2026-10-17T00:17:26","date_gmt":"2026-10-16T21:17:26","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=499015"},"modified":"2026-10-17T00:17:26","modified_gmt":"2026-10-16T21:17:26","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=499015","title":{"rendered":"\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430 GPU \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c RGB-D \u043a\u0430\u043c\u0435\u0440\u044b &amp; \u043b\u0438\u0434\u0430\u0440\u0430"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0435\u0432\u044b\u0445 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0439 \u043a\u0430\u0440\u0442\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0448\u043b\u0430 \u0440\u0435\u0447\u044c \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438\u0441\u044c \u0431\u0430\u0433\u0438: \u043a\u0440\u0430\u0448\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430. \u041f\u043e\u043a\u0430 \u044f \u0438\u0445 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u043b, \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435: \u043d\u0430 \u0440\u043e\u0432\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u043e\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u043f\u0430\u0434 \u0432\u044b\u0441\u043e\u0442.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6ad294664903ae0dbe8b75d7\" data-style=\"\" id=\"6ad294664903ae0dbe8b75d7\" width=\"\" data-habr-games=\"\"><\/div>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6ad294669830c71e6f7419fe\" data-style=\"\" id=\"6ad294669830c71e6f7419fe\" width=\"\" data-habr-games=\"\"><\/div>\n<p>\u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0430\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u043f\u0430\u0434 \u043c\u043e\u0433 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432 \u0442\u0440\u0451\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445:<\/p>\n<ul>\n<li>\n<p>\u041e\u0442\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434 \u043d\u0430\u043a\u043b\u043e\u043d\u043e\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0435\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0441\u043a\u0430\u043d\u044b \u043d\u0435 \u0441\u0442\u044b\u043a\u0443\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u0442\u044c \u0441\u043a\u0430\u0447\u043a\u0438 \u043e\u0434\u043e\u043c\u0435\u0442\u0440\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043e\u0440\u043e\u0433\u0430 \u043d\u0430 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u044f\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043c\u0435\u043b\u0430 \u0443\u043a\u043b\u043e\u043d\u044b \u2014 \u043a\u0432\u0430\u0434\u0440\u043e\u0446\u0438\u043a\u043b \u043b\u0435\u0433\u043a\u043e \u043a\u0430\u0442\u0438\u043b\u0441\u044f \u043f\u043e\u0434 \u0433\u043e\u0440\u043a\u0443. \u041d\u043e \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0432 \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u043e\u043a\u0441\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b.<\/p>\n<h2>\u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u043a\u0441\u0435\u043b\u0438 10 \u0441\u043c \u043f\u043b\u043e\u0445\u043e \u0434\u0440\u0443\u0436\u0430\u0442 \u0441 \u0443\u043a\u043b\u043e\u043d\u0430\u043c\u0438<\/h2>\n<p>\u0412\u043e\u043a\u0441\u0435\u043b\u044c \u0443\u0441\u0440\u0435\u0434\u043d\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430. \u041f\u043e\u043a\u0430 \u043d\u0430\u043a\u043b\u043e\u043d \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0440\u043e\u0433, \u043a\u0430\u0440\u0442\u0430 \u0445\u0440\u0430\u043d\u0438\u0442 \u0443\u0441\u0440\u0435\u0434\u043d\u0451\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u043e\u0433 \u043f\u0440\u043e\u0439\u0434\u0435\u043d, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0440\u0435\u0437\u043a\u0438\u0439 \u0441\u043a\u0430\u0447\u043e\u043a: \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u00ab\u043f\u043e\u0434\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0435\u0442\u00bb \u043d\u0430 \u043e\u0434\u0438\u043d \u043a\u0443\u0431 \u0432\u0432\u0435\u0440\u0445 \u0438\u043b\u0438 \u0432\u043d\u0438\u0437.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0437\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430 \u044d\u0442\u043e \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430. \u0412\u043e\u043a\u0441\u0435\u043b\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 10 \u0441\u043c \u2014 \u044d\u0442\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u0443\u0431 10\u00d710\u00d710 \u0441\u043c. \u0422\u0430\u043a\u043e\u0439 \u043a\u0443\u0431 \u0440\u043e\u0432\u0435\u0440 \u0435\u0449\u0451 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438. \u041d\u043e \u0434\u0432\u0430 \u043a\u0443\u0431\u0430 \u043f\u043e\u0434\u0440\u044f\u0434 \u2014 \u044d\u0442\u043e \u0443\u0436\u0435 \u0432\u044b\u0441\u043e\u0442\u0430 \u043e\u043a\u043e\u043b\u043e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0440\u0430\u0434\u0438\u0443\u0441\u0430 \u043a\u043e\u043b\u0435\u0441\u0430. \u0411\u0435\u0437 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u043d\u0430 \u0440\u043e\u0432\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0441\u043a\u043e\u0447\u0438\u0442 \u043e\u0442 \u043d\u0435\u0433\u043e.<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u0441\u0435\u0433\u043e \u0442\u0440\u0438 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>\u0440\u043e\u0432\u043d\u043e \u2014 \u043c\u043e\u0436\u043d\u043e \u0435\u0445\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u043e;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u0440\u043e\u0432\u043d\u043e \u2014 \u043d\u0443\u0436\u043d\u043e \u0435\u0445\u0430\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u043e \u2014 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044a\u0435\u0437\u0436\u0430\u0442\u044c.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 \u043e\u0434\u0438\u043d \u043a\u0443\u0431 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u044a\u0435\u0445\u0430\u0442\u044c \u0438\u043b\u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u0442\u044c. \u0414\u0432\u0430 \u043a\u0443\u0431\u0430 \u0432 \u0432\u044b\u0441\u043e\u0442\u0443 \u0443\u0436\u0435 \u0440\u0430\u0437\u0443\u043c\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438: \u0437\u0430\u043b\u0435\u0442\u0430\u0442\u044c \u043d\u0430 \u043d\u0438\u0445 \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u043c \u0445\u043e\u0434\u0443 \u2014 \u0440\u0438\u0441\u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0440\u043e\u0442\u0430 \u0438 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0440\u043e\u0432\u0435\u0440\u0430.<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u043d\u0430\u043a\u043b\u043e\u043d\u043d\u044b\u0435 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438. \u041d\u0430 \u043d\u0438\u0445 \u043f\u0435\u0440\u0435\u043f\u0430\u0434\u044b \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u044b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u0430\u0440\u0442\u0430 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0431\u044a\u0451\u043c\u0430 \u0432\u043e\u043a\u0441\u0435\u043b\u044f \u0438 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u0435\u0437\u043a\u0438\u0439 \u0441\u043a\u0430\u0447\u043e\u043a \u043d\u0430 \u043a\u0443\u0431 \u0432\u0432\u0435\u0440\u0445 \u0438\u043b\u0438 \u0432\u043d\u0438\u0437. \u0415\u0441\u043b\u0438 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432\u043e\u043a\u0441\u0435\u043b\u044f, \u043c\u044b \u0443\u043f\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0423\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441 10 \u0441\u043c \u0434\u043e 5 \u0441\u043c \u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u0434\u0430\u0451\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0433\u0440\u0430\u0434\u0430\u0446\u0438\u0439: \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0440\u0451\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u043f\u044f\u0442\u044c. \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u043e\u0433 \u0443\u043a\u043b\u043e\u043d\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f 5 \u0441\u043c, \u0430 \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u044b\u0448\u0435, \u0443\u0436\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u0435\u043c. \u041d\u043e \u043f\u043b\u0430\u0442\u0430 \u0437\u0430 \u044d\u0442\u043e \u0432\u0435\u043b\u0438\u043a\u0430:<\/p>\n<ul>\n<li>\n<p>\u043a\u0430\u0440\u0442\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0430\u043c\u044f\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a state lattice, \u0432\u0437\u044f\u0442\u044b\u0439 \u0438\u0437 ROS, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0434\u0438\u0443\u0441 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0440\u043e\u0432\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0442\u0430\u043a \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d 3,9 \u043c \u043f\u0440\u0438 24 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a? \u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b state lattice \u0434\u043e\u043b\u0436\u043d\u044b \u0442\u043e\u0447\u043d\u043e \u0441\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0448\u0451\u0442\u043a\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u043a \u0435\u0451 \u0441\u0435\u0442\u043a\u0435. \u0415\u0441\u043b\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0443, \u043e\u043d\u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0443\u0442 \u0441\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f, \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u0438\u043b\u0438 \u0443\u0439\u0434\u0451\u0442 \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043c\u0430\u0448\u0438\u043d \u043d\u0443\u0436\u043d\u044b \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435.<\/p>\n<p>\u0423 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u043e\u0433\u043e A* \u0442\u0430\u043a\u0438\u0445 \u0436\u0451\u0441\u0442\u043a\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0435\u0442: \u0442\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0440\u0430\u0434\u0438\u0443\u0441 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0434\u0430\u0436\u0435 \u043d\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435. \u041d\u043e \u043f\u043b\u0430\u0442\u043e\u0439 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0440\u0435\u0437\u043a\u0438\u0439 \u0440\u043e\u0441\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432. \u0421 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0447\u0438\u0441\u043b\u0430 \u044f\u0447\u0435\u0435\u043a \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0438 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0441\u0442\u0451\u0442 \u0432 \u0440\u0430\u0437\u044b.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432\u043e\u043a\u0441\u0435\u043b\u044f \u2014 \u043f\u0430\u043b\u043a\u0430 \u043e \u0434\u0432\u0443\u0445 \u043a\u043e\u043d\u0446\u0430\u0445: \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043a\u0430\u0440\u0442\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 \u0440\u0430\u0441\u0442\u0451\u0442 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u0432\u0441\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043e\u0431\u0445\u043e\u0434\u0430 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u0439.<\/p>\n<h2>\u0418\u0434\u0435\u044f: \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0435 \u0437\u0430\u043d\u044f\u0442\u043e\u0441\u0442\u044c, \u0430 \u0432\u044b\u0441\u043e\u0442\u0443<\/h2>\n<p>\u0411\u043e\u043b\u0435\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u2014 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u043e\u043a\u0441\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u0432 \u0438\u0442\u043e\u0433\u0435 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0440\u0442\u0443 \u0432\u044b\u0441\u043e\u0442. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043e\u043d\u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435: \u0435\u0451 \u043e\u0441\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0437\u0435\u043c\u043b\u0438 \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0443 \u0433\u0440\u0430\u0432\u0438\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p>\u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u044b \u0434\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u0430\u044e\u0442 \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u043d\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0435\u0442\u043a\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0442\u043e\u0447\u0435\u043a \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u0440\u0442\u044b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u044f\u0447\u0435\u0439\u043a\u0443 \u043d\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 1\/0, \u0430 \u0442\u043e\u0447\u043d\u0443\u044e \u0432\u044b\u0441\u043e\u0442\u0443 \u0442\u043e\u0447\u043a\u0438. \u0422\u043e\u0433\u0434\u0430 \u043a\u0430\u0440\u0442\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u0430.<\/p>\n<p>\u0414\u043b\u044f \u043b\u0438\u0434\u0430\u0440\u0430 \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u2014 1\u20132 \u0441\u043c. \u0414\u043b\u044f RGB-D \u043a\u0430\u043c\u0435\u0440\u044b \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f: \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 1\u20131,5 \u043c \u044d\u0442\u043e \u043e\u043a\u043e\u043b\u043e \u00b12 \u043c\u043c, \u043d\u0430 5 \u043c \u2014 \u0443\u0436\u0435 \u00b110 \u0441\u043c, \u0434\u0430\u043b\u044c\u0448\u0435 \u0435\u0449\u0451 \u0445\u0443\u0436\u0435.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u044b\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u0430\u043a \u044f \u0434\u0435\u043b\u0430\u043b \u0440\u0430\u043d\u044c\u0448\u0435, \u0440\u043e\u0441\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u044f\u0432\u0438\u0442 \u0448\u0443\u043c \u0441\u0435\u043d\u0441\u043e\u0440\u0430, \u0432 \u0442\u043e-\u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0432 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0438 \u043d\u0430 \u0440\u043e\u0431\u043e\u0442\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438\u043b\u0438 \u043d\u0435 \u0434\u0430\u044e\u0442 \u0434\u043e\u043b\u0436\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430.<\/p>\n<p>\u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0443 \u043d\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0435\u0441\u0442\u044c \u0438 \u043f\u043b\u044e\u0441\u044b:<\/p>\n<ul>\n<li>\n<p>\u043c\u0438\u043b\u043b\u0438\u043c\u0435\u0442\u0440\u043e\u0432\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0430\u0440\u0442\u0443 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439, \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u0432\u0430\u0436\u043d\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0438 MPPI \u0438 MPC: \u043e\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0442\u043e\u0447\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0438\u043b\u044b, \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430 \u043a\u043e\u043b\u0451\u0441\u0430, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u044a\u0451\u043c\u044b, \u0441\u043f\u0443\u0441\u043a\u0438 \u0438 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u0433\u0440\u0430\u0432\u0438\u0442\u0430\u0446\u0438\u0438 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0445 \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u043d\u0438\u044f \u0438 \u0432\u0441\u0451 \u0442\u0430\u043a\u043e\u0435;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u0435\u0440\u0435\u043f\u0430\u0434\u043e\u0432 \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442: \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0443\u043a\u043b\u043e\u043d \u043f\u043b\u0430\u0432\u043d\u043e \u0440\u0430\u0437\u043c\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043a\u0430\u0440\u0442\u0435 \u0438 \u0442\u043e\u043d\u0435\u0442 \u0432 \u0448\u0443\u043c\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0446\u0435\u043d\u043a\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u0435\u0435 \u0438 \u043f\u043b\u0430\u0432\u043d\u0435\u0435: \u0440\u043e\u0431\u043e\u0442 \u043c\u043e\u0436\u0435\u0442 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u044b\u0441\u043e\u0442\u0443 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u044f \u0438 \u0440\u0435\u0448\u0438\u0442\u044c, \u043e\u0431\u044a\u0435\u0437\u0436\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u0442\u044c \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043b\u044e\u0441\u044b \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0448\u0438\u0432\u0430\u043b\u0438 \u043c\u0438\u043d\u0443\u0441\u044b, \u0438 \u044f \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043b \u043a \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c\u0443 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0443 \u043a\u0430\u0440\u0442\u044b.<\/p>\n<h2>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f: frustum, \u0446\u0435\u043d\u0442\u0440\u043e\u0438\u0434 \u0438 atomicMin<\/h2>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0430 \u043f\u0443\u0442\u0438 \u043e\u0442 \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u043a \u043a\u0430\u0440\u0442\u0435 \u2014 \u0432\u043e\u043a\u0441\u0435\u043b\u0438\u0437\u0430\u0446\u0438\u044f. \u041c\u043e\u0439 \u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u043e\u0434 \u043c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u043d\u043e \u0434\u043b\u044f \u0433\u0440\u0443\u0431\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043e\u0441\u043e\u0431\u044b\u0445 \u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u0439 \u043d\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c. \u0415\u0441\u043b\u0438 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043e\u0431\u044a\u0451\u043c \u0432\u043e\u043a\u0441\u0435\u043b\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0430 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0430 \u0442\u043e\u0447\u043a\u0430, \u043e\u043d \u0441\u0447\u0438\u0442\u0430\u043b\u0441\u044f \u0437\u0430\u043d\u044f\u0442\u044b\u043c. \u0422\u0430\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043a\u0430\u043a\u0430\u044f \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u0447\u043a\u0430 \u0438 \u043f\u043e\u0442\u043e\u043c\u0443 \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0438\u043c\u043c\u0443\u043d\u043d\u0430 \u043a \u0433\u043e\u043d\u043a\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0441\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u043f\u0438\u0441\u0430\u043b\u0438 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 1.<\/p>\n<pre><code>__global__void kernel_deproject_depth_cuda(uint16_t *ray_points, const rs2_intrinsics* intrin, const uint16_t * depth, float depth_scale, double w, double x, double y, double z){    int i = blockDim.x * blockIdx.x + threadIdx.x;    if (i &gt;= (*intrin).height * (*intrin).width) {        return;    }    int stride = blockDim.x * gridDim.x;    int a, b;    const float ww = w * w;    const float xx = x * x;    const float yy = y * y;    const float zz = z * z;    const float wx = w * x;    const float wy = w * y;    const float wz = w * z;    const float xy = x * y;    const float xz = x * z;    const float yz = y * z;    const float two = 2.0f;    for (int j = i; j &lt; (*intrin).height * (*intrin).width; j += stride) {        b = j \/ (*intrin).width;        a = j - b * (*intrin).width;        const float pixel[] = { (float)a, (float)b };        float point[3] = {0}; float point_s[3] = {0}; uint16_t points[3] = {0};        deproject_pixel_to_point_cuda(point, intrin, pixel, depth_scale * depth[j]);        point_s[0] = (Rotation_matrix[0] * point[0] + Rotation_matrix[3] * point[1] + Rotation_matrix[6] * point[2]);        point_s[1] = (Rotation_matrix[1] * point[0] + Rotation_matrix[4] * point[1] + Rotation_matrix[7] * point[2]);        point_s[2] = (Rotation_matrix[2] * point[0] + Rotation_matrix[5] * point[1] + Rotation_matrix[8] * point[2]);        point_s[0] += Translation[0];        point_s[1] += Translation[1];        point_s[2] += Translation[2];        point_s[0] *= Map_scale;        point_s[1] *= Map_scale;        point_s[2] *= Map_scale;        points[0] = __float2int_rd(ww*point_s[0] + two*wy*point_s[2] - two*wz*point_s[1] + xx*point_s[0] + two*xy*point_s[1] + two*xz*point_s[2] - zz*point_s[0] - yy*point_s[0]) + Map_center_X;        points[1] = __float2int_rd(two*xy*point_s[0] + yy*point_s[1] + two*yz*point_s[2] + two*wz*point_s[0] - zz*point_s[1] + ww*point_s[1] - two*wx*point_s[2] - xx*point_s[1]) + Map_center_Y;        points[2] = __float2int_rd(two*xz*point_s[0] + two*yz*point_s[1] + zz*point_s[2] - two*wy*point_s[0] - yy*point_s[2] + two*wx*point_s[1] - xx*point_s[2] + ww*point_s[2]) + Map_center_Z;        if((points[0] &lt; Map_X) &amp;&amp; (points[1] &lt; Map_Y) &amp;&amp; (points[2] &lt; Map_Z) &amp;&amp; (points[0] &gt; 0) &amp;&amp; (points[1] &gt; 0) &amp;&amp; (points[2] &gt; 0)) {            ray_points[j * 3] = points[0];            ray_points[1 + j * 3] = points[1];            ray_points[2 + j * 3] = points[2];        }        else {            ray_points[j * 3] = 0;            ray_points[1 + j * 3] = 0;            ray_points[2 + j * 3] = 0;        }   }}__global__void voxelization_cuda( uint8_t * voxels, const uint16_t * ray_points, const unsigned int counter){    int i = blockDim.x * blockIdx.x + threadIdx.x;    if (i &gt;= counter) {        return;    }    int stride = blockDim.x * gridDim.x;    for (int j = i; j &lt; counter; j += stride) {        if((ray_points[j * 3] &gt; 0) &amp;&amp; (ray_points[1 + j * 3] &gt; 0) &amp;&amp; (ray_points[2 + j * 3] &gt; 0)) {            voxels[get_value(ray_points[j * 3], ray_points[1 + j * 3], ray_points[2 + j * 3])] = 1;        }    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430 \u0432\u0445\u043e\u0434 \u0438\u0434\u0443\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0432\u044b\u0441\u043e\u0442\u0435 \u0442\u043e\u0447\u043a\u0438. \u0417\u0430 \u043e\u0434\u0438\u043d \u0432\u043e\u043a\u0441\u0435\u043b\u044c \u043c\u043e\u0433\u0443\u0442 \u043a\u043e\u043d\u043a\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0442\u043d\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439: \u043e\u0431\u044a\u0451\u043c \u0432\u043e\u043a\u0441\u0435\u043b\u044f 10\u00d710\u00d710 \u0441\u043c, \u0430 \u043a\u0430\u0440\u0442\u0430 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 848\u00d7480, \u0442\u043e \u0435\u0441\u0442\u044c 407 040 \u0442\u043e\u0447\u0435\u043a \u043f\u0440\u0438 FOV \u043a\u0430\u043c\u0435\u0440\u044b 90\u00b0 \u043f\u043e \u0448\u0438\u0440\u0438\u043d\u0435 \u0438 58\u00b0 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435.<\/p>\n<p>\u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f: \u0443 \u043b\u0438\u0434\u0430\u0440\u0430 \u0432\u0441\u0435\u0433\u043e \u043e\u043a\u043e\u043b\u043e 20 000 \u0442\u043e\u0447\u0435\u043a \u043d\u0430 360\u00b0 \u043f\u043e \u0448\u0438\u0440\u0438\u043d\u0435 \u0438 57\u00b0 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435. \u0414\u0430\u0436\u0435 \u0442\u0430\u043c LIO-\u043f\u0430\u043a\u0435\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432\u043e\u043a\u0441\u0435\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0438\u043b\u0438 downsampling, \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u041a\u043e\u0440\u0440\u0435\u043b\u044f\u0442\u043e\u0440\u044b \u043d\u0430 CPU \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0442\u044f\u043d\u0443\u0442 \u0438 \u043d\u0435 \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 realtime.<\/p>\n<p>\u0415\u0449\u0451 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e\u043a\u0441\u0435\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 GPU \u2014 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u044f. \u0415\u0451 \u043d\u0435 \u043b\u044e\u0431\u044f\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0430 \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u044f\u0434\u0440\u043e \u0432 \u043a\u043e\u043d\u0446\u0435 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u044e \u043f\u0430\u043c\u044f\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043f\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u0430\u043c. \u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u044d\u0442\u043e\u0433\u043e, \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u043b ray_points \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u043c\u043e\u0433 \u043f\u0440\u0438\u043d\u044f\u0442\u044c: 407 040 \u0442\u043e\u0447\u0435\u043a.<\/p>\n<p>\u041d\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e: \u043e\u0434\u0438\u043d \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043a\u0441\u0435\u043b\u044c. \u0422\u043e\u0447\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438. \u0427\u0435\u043c \u043e\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0435, \u0442\u0435\u043c \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u043c\u0443 \u0447\u0438\u0441\u043b\u0443 \u0432\u043e\u043a\u0441\u0435\u043b\u0435\u0439 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u0441\u044f \u0442\u043e\u0447\u043a\u0438. \u041d\u0430 \u044d\u0442\u043e \u0432\u043b\u0438\u044f\u044e\u0442 \u0444\u043e\u0440\u043c\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u043d\u0438\u0445. \u0421\u043b\u043e\u0436\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442 \u0432\u0438\u0434\u0438\u043c\u0443\u044e \u043f\u043b\u043e\u0449\u0430\u0434\u044c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u0438, \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u044f\u043b\u044f\u0442\u0441\u044f \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u0438.<\/p>\n<p>\u041a\u0430\u043a \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 ray_points, \u0440\u0435\u0448\u0438\u0442\u044c \u0433\u043e\u043d\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u0432\u044b\u0441\u043e\u0442\u0443 \u043a\u0430\u043a\u043e\u0433\u043e \u0438\u0437 \u0441\u043e\u0442\u0435\u043d \u043a\u043e\u043d\u043a\u0443\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u044f\u0447\u0435\u0439\u043a\u0443?<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b \u043c\u043e\u0434\u0435\u043b\u044c FOV \u043a\u0430\u043c\u0435\u0440\u044b \u2014 frustum view. \u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u0430\u043c\u0435\u0440\u044b \u0432 \u0432\u0438\u0434\u0435 \u0443\u0441\u0435\u0447\u0451\u043d\u043d\u043e\u0439 \u043f\u0438\u0440\u0430\u043c\u0438\u0434\u044b, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0435\u0439\u0441\u044f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0432\u0437\u0433\u043b\u044f\u0434\u0430. \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043e\u0431\u044a\u0451\u043c \u044d\u0442\u043e\u0439 \u043f\u0438\u0440\u0430\u043c\u0438\u0434\u044b \u0432\u043e\u043a\u0441\u0435\u043b\u044f\u043c\u0438 10\u00d710\u00d710 \u0441\u043c, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 ray_points.<\/p>\n<p>\u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u0442\u0443\u0434\u0430 \u0437\u0430\u043f\u0438\u0448\u0435\u0442\u0441\u044f. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u043e\u043a\u0441\u0435\u043b\u044f \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0446\u0435\u043d\u0442\u0440 \u2014 \u0446\u0435\u043d\u0442\u0440\u043e\u0438\u0434. \u0417\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043a\u0430, \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0430\u044f \u043a \u0446\u0435\u043d\u0442\u0440\u043e\u0438\u0434\u0443. \u0422\u0430\u043a \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u043e\u043a\u0441\u0435\u043b\u044c \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432\u044b\u0441\u043e\u0442\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0433\u043e, \u0441\u0430\u043c\u043e\u0433\u043e \u0431\u043b\u0438\u0437\u043a\u043e\u0433\u043e \u043a \u0446\u0435\u043d\u0442\u0440\u043e\u0438\u0434\u0443 \u043f\u0438\u043a\u0441\u0435\u043b\u044f. \u042d\u0442\u043e \u0437\u0430\u043e\u0434\u043d\u043e \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0432\u044b\u0431\u0440\u043e\u0441\u044b \u043a\u0430\u0440\u0442\u044b \u0433\u043b\u0443\u0431\u0438\u043d\u044b: \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043e\u0431\u044a\u0451\u043c\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0432\u043e\u043a\u0441\u0435\u043b\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u0448\u0443\u043c\u044f\u0449\u0430\u044f \u0442\u043e\u0447\u043a\u0430.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/d7\/59\/66\/d75966a2091f7237c70f829540ec5f0b.jpg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/d7\/59\/66\/d75966a2091f7237c70f829540ec5f0b.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/d7\/59\/66\/d75966a2091f7237c70f829540ec5f0b.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0433\u043e\u043d\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u041e\u043d\u0438 \u0434\u043e\u0440\u043e\u0433\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432: \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043b \u0442\u0440\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0442\u043e\u0447\u043a\u0438 \u043a\u0430\u043a \u043c\u043b\u0430\u0434\u0448\u0438\u0435 \u0431\u0430\u0439\u0442\u044b, \u0430 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044e \u2014 \u043a\u0430\u043a \u0441\u0442\u0430\u0440\u0448\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0448\u043b\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u043e \u043d\u0435\u0439, \u0432 \u043e\u0434\u043d\u0443 64-\u0431\u0438\u0442\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e unsigned long long \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0434\u0432\u0438\u0433\u043e\u0432. \u042d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0447\u0435\u0442\u044b\u0440\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 16-\u0431\u0438\u0442\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435.<\/p>\n<pre><code>__global__void kernel_deproject_depth_cuda(unsigned long long *ray_points_cam,                                 const rs2_intrinsics* intrin,                                 const uint16_t * depth,                                 float depth_scale){    int i = blockDim.x * blockIdx.x + threadIdx.x;    if (i &gt;= (*intrin).height * (*intrin).width) return;    int stride = blockDim.x * gridDim.x;    for (int j = i; j &lt; (*intrin).height * (*intrin).width; j += stride) {        int b = j \/ (*intrin).width;        int a = j - b * (*intrin).width;        const float pixel[] = { (float)a, (float)b };        float point[3] = {0};        deproject_pixel_to_point_cuda(point, intrin, pixel, depth_scale * depth[j]);        float xf = point[0] * 1000.0f;        float yf = point[1] * 1000.0f;        float zf = point[2] * 1000.0f;        if (zf &lt; c_cam_near_mm || zf &gt;= c_cam_far_mm) continue;        int iz = (int)((zf - c_cam_near_mm) \/ FRUSTUM_VOXEL_MM);        if (iz &lt; 0 || iz &gt;= c_Nz) continue;        float z_center = c_cam_near_mm + iz * FRUSTUM_VOXEL_MM + FRUSTUM_VOXEL_MM * 0.5f;        float half_x = z_center * c_tan_half_h;        float half_y = z_center * c_tan_half_v;        if (xf &lt; -half_x || xf &gt;= half_x) continue;        if (yf &lt; -half_y || yf &gt;= half_y) continue;        int Nx = c_Nx_per_layer[iz];        int Ny = c_Ny_per_layer[iz];        int ix = (int)((xf + half_x) \/ FRUSTUM_VOXEL_MM);        int iy = (int)((yf + half_y) \/ FRUSTUM_VOXEL_MM);        if (ix &lt; 0 || ix &gt;= Nx) continue;        if (iy &lt; 0 || iy &gt;= Ny) continue;        int16_t x_mm = (int16_t)xf;        int16_t y_mm = (int16_t)yf;        int16_t z_mm = (int16_t)zf;        \/\/ \u0426\u0435\u043d\u0442\u0440\u043e\u0438\u0434 \u0432\u043e\u043a\u0441\u0435\u043b\u044f        float cx = -half_x + (ix + 0.5f) * FRUSTUM_VOXEL_MM;        float cy = -half_y + (iy + 0.5f) * FRUSTUM_VOXEL_MM;        float cz = z_center;        float dxn = xf - cx, dyn = yf - cy, dzn = zf - cz;        uint32_t d_new = (uint32_t)(dxn*dxn + dyn*dyn + dzn*dzn);        \/\/ \u041a\u043b\u0430\u043c\u043f\u0438\u043c dist\u00b2 \u0432 16 \u0431\u0438\u0442        if (d_new &gt; 0xFFFFu) d_new = 0xFFFFu;        \/\/ \u0421\u0434\u0432\u0438\u0433\u0430\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0432 [0, 65535] (\u0434\u043b\u044f \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432 atomicMin)        uint64_t ux = (uint64_t)((int32_t)x_mm + 32768);        uint64_t uy = (uint64_t)((int32_t)y_mm + 32768);        uint64_t uz = (uint64_t)((int32_t)z_mm + 32768);        \/\/ \u0423\u043f\u0430\u043a\u043e\u0432\u043a\u0430: [63:48] dist\u00b2 | [47:32] x | [31:16] y | [15:0] z        unsigned long long packed = ((unsigned long long)d_new &lt;&lt; 48)                                  | ((unsigned long long)ux &lt;&lt; 32)                                  | ((unsigned long long)uy &lt;&lt; 16)                                  |  (unsigned long long)uz;        uint32_t voxel_idx = get_value_frustum((uint16_t)iz, (uint16_t)iy, (uint16_t)ix);        atomicMin(&amp;ray_points_cam[voxel_idx], packed);    }}__global__void rotate_ray_points_to_world(const unsigned long long *ray_points_cam,                                uint16_t *ray_points_world,                                const unsigned int counter,                                double w, double x, double y, double z){    int i = blockDim.x * blockIdx.x + threadIdx.x;    if (i &gt;= counter) return;    int stride = blockDim.x * gridDim.x;    const float ww=w*w, xx=x*x, yy=y*y, zz=z*z;    const float wx=w*x, wy=w*y, wz=w*z;    const float xy=x*y, xz=x*z, yz=y*z;    const float two = 2.0f;    const unsigned long long MAX_PACKED = 0xFFFFFFFFFFFFFFFFULL;       for (int j = i; j &lt; counter; j += stride) {       unsigned long long packed = ray_points_cam[j];        \/\/ \u0415\u0441\u043b\u0438 \u0431\u0443\u0444\u0435\u0440 \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u043d \u2014 \u043f\u0443\u0441\u0442\u043e        if (packed == MAX_PACKED) {            ray_points_world[j*3]     = 0;            ray_points_world[1 + j*3] = 0;            ray_points_world[2 + j*3] = 0;            continue;        }        \/\/ \u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430: [63:48] dist\u00b2 | [47:32] x | [31:16] y | [15:0] z        unsigned long long ux = (packed &gt;&gt; 32) &amp; 0xFFFFULL;        unsigned long long uy = (packed &gt;&gt; 16) &amp; 0xFFFFULL;        unsigned long long uz =  packed        &amp; 0xFFFFULL;        int16_t cx = (int16_t)((int32_t)ux - 32768);        int16_t cy = (int16_t)((int32_t)uy - 32768);        int16_t cz = (int16_t)((int32_t)uz - 32768);        if (cz == 0) {            ray_points_world[j*3]     = 0;            ray_points_world[1 + j*3] = 0;            ray_points_world[2 + j*3] = 0;            continue;        }        \/\/ \u043c\u043c \u2192 \u043c        float px = cx * 0.001f;        float py = cy * 0.001f;        float pz = cz * 0.001f;        \/\/ 1. \u041a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 \u043a\u0430\u043c\u0435\u0440\u044b        float ps0 = Rotation_matrix[0]*px + Rotation_matrix[3]*py + Rotation_matrix[6]*pz;        float ps1 = Rotation_matrix[1]*px + Rotation_matrix[4]*py + Rotation_matrix[7]*pz;        float ps2 = Rotation_matrix[2]*px + Rotation_matrix[5]*py + Rotation_matrix[8]*pz;        \/\/ 2. Offset \u043a\u0430\u043c\u0435\u0440\u044b        ps0 += Translation[0];        ps1 += Translation[1];        ps2 += Translation[2];        \/\/ 3. \u041c\u0430\u0441\u0448\u0442\u0430\u0431        ps0 *= Map_scale;        ps1 *= Map_scale;        ps2 *= Map_scale;        \/\/ 4. \u041f\u043e\u0432\u043e\u0440\u043e\u0442 \u043a\u0432\u0430\u0442\u0435\u0440\u043d\u0438\u043e\u043d\u043e\u043c        float rs0 = ww*ps0 + two*wy*ps2 - two*wz*ps1 + xx*ps0 + two*xy*ps1 + two*xz*ps2 - zz*ps0 - yy*ps0;        float rs1 = two*xy*ps0 + yy*ps1 + two*yz*ps2 + two*wz*ps0 - zz*ps1 + ww*ps1 - two*wx*ps2 - xx*ps1;        float rs2 = two*xz*ps0 + two*yz*ps1 + zz*ps2 - two*wy*ps0 - yy*ps2 + two*wx*ps1 - xx*ps2 + ww*ps2;        \/\/ 5. \u0412 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043a\u0430\u0440\u0442\u044b        int imx = __float2int_rd(rs0 + Map_center_X);        int imy = __float2int_rd(rs1 + Map_center_Y);        int imz = __float2int_rd(rs2 + Map_center_Z);        if (imx &lt;= 0 || imx &gt;= Map_X ||            imy &lt;= 0 || imy &gt;= Map_Y ||            imz &lt;= 0 || imz &gt;= Map_Z) {            ray_points_world[j*3]     = 0;            ray_points_world[1 + j*3] = 0;            ray_points_world[2 + j*3] = 0;            continue;        }        \/\/ 6. Y-\u0432\u044b\u0441\u043e\u0442\u0430 \u0432 \u043c\u0438\u0440\u043e\u0432\u044b\u0445 \u043c\u043c        float y_world_mm_f = (rs1 + (float)Map_center_Y) * 100.0f;        int y_world_mm = __float2int_rd(y_world_mm_f);        if (y_world_mm &lt; 0) y_world_mm = 0;        if (y_world_mm &gt; Map_Y * 100 - 1) y_world_mm = Map_Y * 100 - 1;        ray_points_world[j*3]     = (uint16_t)imx;        ray_points_world[1 + j*3] = (uint16_t)(y_world_mm + 1);        ray_points_world[2 + j*3] = (uint16_t)imz;    }}__global__void voxelization_cuda(uint16_t *voxels,                       const uint16_t *ray_points_world,                       const unsigned int counter){    int i = blockDim.x * blockIdx.x + threadIdx.x;    if (i &gt;= counter) return;    int stride = blockDim.x * gridDim.x;    for (int j = i; j &lt; counter; j += stride) {        uint16_t imx   = ray_points_world[j*3];        uint16_t y_mm1 = ray_points_world[1 + j*3];        uint16_t imz   = ray_points_world[2 + j*3];        if (y_mm1 == 0) continue;        uint16_t iy = (uint16_t)((y_mm1 - 1) \/ 100);        uint32_t idx = get_value(imx, iy, imz);        voxels[idx] = y_mm1;    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u0443\u0441\u0435\u0447\u0451\u043d\u043d\u043e\u0439 \u043f\u0438\u0440\u0430\u043c\u0438\u0434\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 SDK RealSense \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u0430\u043c\u0435\u0440\u044b, \u043f\u0440\u043e\u0448\u0438\u0442\u044b\u0445 \u0432 \u0435\u0451 EEPROM \u043f\u0440\u0438 \u0437\u0430\u0432\u043e\u0434\u0441\u043a\u043e\u0439 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0435.<\/p>\n<pre><code>\/\/ ============================================================================\/\/ Frustum binning parameters\/\/ ============================================================================#define FRUSTUM_MAX_LAYERS 256static const float CAM_NEAR_MM      = 500.0f;static const float CAM_FAR_MM       = 5000.0f;static const float FRUSTUM_VOXEL_MM = 100.0f;__constant__ int   c_Nz;__constant__ int   c_Nx_per_layer[FRUSTUM_MAX_LAYERS];__constant__ int   c_Ny_per_layer[FRUSTUM_MAX_LAYERS];__constant__ int   c_layer_offset[FRUSTUM_MAX_LAYERS];__constant__ float c_tan_half_h;__constant__ float c_tan_half_v;__constant__ float c_cam_near_mm;__constant__ float c_cam_far_mm;extern \"C\" __host__int init_frustum_cuda(const rs2_intrinsics &amp;intrin){    cudaError_t result;    float fov[2];    rs2_fov(&amp;intrin, fov);   \/\/ \u0433\u0440\u0430\u0434\u0443\u0441\u044b    float fov_h_rad = fov[0] * (float)M_PI \/ 180.0f;    float fov_v_rad = fov[1] * (float)M_PI \/ 180.0f;    float tan_half_h = tanf(fov_h_rad \/ 2.0f);    float tan_half_v = tanf(fov_v_rad \/ 2.0f);    const float NEAR_MM = CAM_NEAR_MM;    const float FAR_MM  = CAM_FAR_MM;    const float VOX_MM  = FRUSTUM_VOXEL_MM;    int Nz = (int)((FAR_MM - NEAR_MM) \/ VOX_MM);    assert(Nz &lt;= FRUSTUM_MAX_LAYERS &amp;&amp; \"frustum layers exceed FRUSTUM_MAX_LAYERS\");    int Nx_arr[FRUSTUM_MAX_LAYERS] = {0};    int Ny_arr[FRUSTUM_MAX_LAYERS] = {0};    int off_arr[FRUSTUM_MAX_LAYERS] = {0};    int offset = 0;    for (int iz = 0; iz &lt; Nz; ++iz) {        float z_center = NEAR_MM + iz * VOX_MM + VOX_MM * 0.5f;        float half_x = z_center * tan_half_h;        float half_y = z_center * tan_half_v;        int Nx = (int)floorf(2.0f * half_x \/ VOX_MM);        int Ny = (int)floorf(2.0f * half_y \/ VOX_MM);        if (Nx &lt; 1) Nx = 1;        if (Ny &lt; 1) Ny = 1;        Nx_arr[iz] = Nx;        Ny_arr[iz] = Ny;        off_arr[iz] = offset;        offset += Nx * Ny;    }    int total_voxels = offset;    result = cudaMemcpyToSymbol(c_Nz, &amp;Nz, sizeof(int)); assert(result == cudaSuccess);    result = cudaMemcpyToSymbol(c_Nx_per_layer, Nx_arr, sizeof(int) * Nz); assert(result == cudaSuccess);    result = cudaMemcpyToSymbol(c_Ny_per_layer, Ny_arr, sizeof(int) * Nz); assert(result == cudaSuccess);    result = cudaMemcpyToSymbol(c_layer_offset, off_arr, sizeof(int) * Nz); assert(result == cudaSuccess);    result = cudaMemcpyToSymbol(c_tan_half_h, &amp;tan_half_h, sizeof(float)); assert(result == cudaSuccess);    result = cudaMemcpyToSymbol(c_tan_half_v, &amp;tan_half_v, sizeof(float)); assert(result == cudaSuccess);    result = cudaMemcpyToSymbol(c_cam_near_mm, &amp;NEAR_MM, sizeof(float)); assert(result == cudaSuccess);    result = cudaMemcpyToSymbol(c_cam_far_mm, &amp;FAR_MM, sizeof(float)); assert(result == cudaSuccess);    std::cout &lt;&lt; \"[CUDA] init_frustum_cuda: Nz=\" &lt;&lt; Nz              &lt;&lt; \" total_voxels=\" &lt;&lt; total_voxels              &lt;&lt; \" fov_h=\" &lt;&lt; fov[0] &lt;&lt; \" fov_v=\" &lt;&lt; fov[1] &lt;&lt; std::endl;    return total_voxels;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u043b\u043d\u044b\u0435 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f rotate_ray_points_to_world \u0438 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e voxelization_cuda, <a href=\"https:\/\/github.com\/Userpc1010\/UGV\/blob\/master\/UGV_Core\/cudamap.cu\" rel=\"noopener nofollow\">\u043b\u0435\u0436\u0430\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>.<\/p>\n<h2>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b: HD-\u043a\u0430\u0440\u0442\u0430 \u0438 \u043d\u043e\u0432\u0430\u044f \u0433\u043e\u043b\u043e\u0432\u043d\u0430\u044f \u0431\u043e\u043b\u044c<\/h2>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0442\u0435\u0441\u0442\u0430\u043c. \u0412\u043e\u0442 \u043a\u0430\u0440\u0442\u0430 \u0432\u044b\u0441\u043e\u0442, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0432\u043e\u043a\u0441\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f:<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6ad29466965b561e9f4a4c40\" data-style=\"\" id=\"6ad29466965b561e9f4a4c40\" width=\"\" data-habr-games=\"\"><\/div>\n<p>\u0410 \u0432\u043e\u0442 HD-\u043a\u0430\u0440\u0442\u0430 \u0432\u044b\u0441\u043e\u0442 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c 1 \u043c\u043c. \u041c\u0435\u043d\u044c\u0448\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0442\u0430\u043a-\u0447\u0442\u043e \u044d\u0442\u043e \u0438 \u0442\u043e \u0441 \u0437\u0430\u043f\u0430\u0441\u043e\u043c:<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6ad294666adf0a0da6b3795a\" data-style=\"\" id=\"6ad294666adf0a0da6b3795a\" width=\"\" data-habr-games=\"\"><\/div>\n<p>\u0428\u0443\u043c\u0430 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u043b\u043e\u0441\u044c. \u0415\u0441\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0430 2D-\u043a\u0430\u0440\u0442\u0435 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u043e\u0431\u043b\u0430\u0434\u0430\u043b\u0438 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u043e\u0432\u043d\u044b\u0435 \u0431\u0435\u043b\u044b\u0435 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0432\u043e\u043a\u0441\u0435\u043b\u0435\u0439, \u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043a\u0430\u0440\u0442\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u0438\u0433\u0430\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043e\u0442\u0442\u0435\u043d\u043a\u0430\u043c\u0438 \u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u0438 \u0441\u0438\u043d\u0435\u0433\u043e.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443? \u042d\u0442\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0443\u043a\u043b\u043e\u043d \u043e\u0442 1 \u0434\u043e 5 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432 \u043f\u043e \u043e\u0446\u0435\u043d\u043a\u0435 \u0443\u043a\u043b\u043e\u043d\u043e\u0432 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438. \u0420\u0430\u043d\u044c\u0448\u0435 \u0432 \u0432\u043e\u043a\u0441\u0435\u043b\u044f\u0445 \u0435\u0433\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u0432\u0438\u0434\u043d\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u043f\u043e \u0432\u0441\u0435\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u0438. \u041f\u043b\u044e\u0441 \u0448\u0443\u043c \u0433\u043b\u0443\u0431\u0438\u043d\u044b.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0448\u0442\u0430\u0442\u043d\u044b\u0439 RealSense Viewer (\u0447\u0442\u043e \u044f \u0438 \u0441\u0434\u0435\u043b\u0430\u043b \u0432 \u043a\u043e\u043d\u0446\u0435 \u0432\u0438\u0434\u0435\u043e) \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u0432 \u043e\u0431\u043b\u0430\u043a\u043e \u0442\u043e\u0447\u0435\u043a, \u043d\u0430\u043b\u043e\u0436\u0438\u0432 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u043e\u0442 \u043a\u0430\u043c\u0435\u0440\u044b, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0430\u0441\u0444\u0430\u043b\u044c\u0442 \u0438\u0434\u0451\u0442 \u0432\u043e\u043b\u043d\u0430\u043c\u0438 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043a\u0440\u0438\u0432\u044b\u043c. \u042d\u0442\u043e \u0448\u0443\u043c \u0433\u043b\u0443\u0431\u0438\u043d\u044b. \u041d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 2D-\u0446\u0432\u0435\u0442\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u0441 \u043a\u0430\u043c\u0435\u0440\u044b \u0435\u0433\u043e \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u043d\u0435 \u0432\u0438\u0434\u043d\u043e (\u043f\u043e\u0442\u043e\u043c\u0443-\u0447\u0442\u043e \u0435\u0451 \u043d\u0435\u0442, \u043d\u0435 \u043d\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439) \u2014 \u0437\u0430\u043c\u0435\u0442\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0443\u043a\u043b\u043e\u043d.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u0440\u0435\u0448\u0438\u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u044b, \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u044e \u0434\u0440\u0443\u0433\u0443\u044e: \u0441\u043a\u0430\u0447\u043a\u0438 \u043e\u0434\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435 \u0441\u0442\u0430\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u044b \u0435\u0449\u0451 \u0441\u0438\u043b\u044c\u043d\u0435\u0435. \u0412 \u044d\u0442\u043e\u0439 \u043a\u0430\u0440\u0442\u0435 \u043e\u0441\u044c Y \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u044b\u0441\u043e\u0442\u0435, \u0438 \u0441\u043a\u0430\u0447\u043a\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043d\u0430 \u0440\u043e\u0432\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0437\u043e\u043d \u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c\u044e. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u044d\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u043f\u043e \u043a\u0440\u0430\u044f\u043c frustum view: \u043e\u043d\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0438\u0434\u043d\u044b \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u043a\u0430\u043a \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u0433\u0434\u0435 \u0447\u0430\u0441\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043a\u0430\u043d\u0430 \u0441\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0430 \u0444\u043e\u043d\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043a\u0430\u0440\u0442\u044b.<\/p>\n<p>\u0421\u0430\u043c \u0448\u0443\u043c \u0442\u043e\u0436\u0435 \u043d\u0435 \u0434\u0430\u0451\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e. \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0434\u0430\u0436\u0435 \u0441 \u043d\u0438\u043c \u0432\u0438\u0434\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u0443\u044e \u0432\u044b\u0441\u043e\u0442\u0443 \u043f\u0440\u0435\u043f\u044f\u0441\u0442\u0432\u0438\u0439 \u0442.\u043a. \u0448\u0443\u043c \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043e\u0434\u043d\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0431\u043b\u0443\u0436\u0434\u0430\u043d\u0438\u044f. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0435\u0441\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0435 \u043c\u0430\u043d\u0451\u0432\u0440\u044b, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u043e\u0431\u044a\u0435\u0445\u0430\u0442\u044c \u0448\u0443\u043c. \u042d\u0442\u043e \u043d\u0435\u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e.<\/p>\n<h2>Elevation Mapping cupy: \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043d\u043e \u043d\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445.<\/h2>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u0435\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u2014 \u0448\u0443\u043c\u0430 \u0438 \u0441\u043a\u0430\u0447\u043a\u043e\u0432 \u0432\u044b\u0441\u043e\u0442\u044b \u2014 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0433\u043e\u0442\u043e\u0432\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435 <a href=\"https:\/\/github.com\/leggedrobotics\/elevation_mapping_cupy\" rel=\"noopener nofollow\">Elevation Mapping cupy<\/a> \u041e\u043d \u0442\u043e\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 GPU, \u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0435 \u043d\u0430 CUDA, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u0430 \u043d\u0430 <a href=\"https:\/\/cupy.dev\/\" rel=\"noopener nofollow\">CuPy<\/a> \u2014 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 Python-\u043a\u043e\u0434 \u0432 CUDA-\u043a\u043e\u0434 \u0434\u043b\u044f GPU.<\/p>\n<p>\u0412 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u043f\u0430\u043a\u0435\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0430\u0446\u0438\u044f \u0434\u0440\u0435\u0439\u0444\u0430 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435: \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u043e\u0446\u0435\u043d\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u0430\u043c \u043d\u0430 \u043a\u0430\u0440\u0442\u0435;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432: raycasting \u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0435 \u0437\u043e\u043d\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0443\u0431\u0438\u0440\u0430\u0442\u044c \u043b\u043e\u0436\u043d\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0432\u0438\u0441\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f: \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f: \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439;<\/p>\n<\/li>\n<li>\n<p>Multi-Modal Elevation Map: \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445, \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438 \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0441\u043e\u043a\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0441\u0447\u0451\u0442 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u043d\u0430 GPU.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043c\u043e\u0435\u0439 \u043a\u0430\u0440\u0442\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c: raycasting, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0432\u0438\u0441\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u0439, GPU-\u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435. \u041d\u043e \u0434\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0435\u0449\u0451 \u0434\u0430\u043b\u0435\u043a\u043e.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Elevation Mapping cupy. \u041d\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, Python-\u043a\u043e\u0434 \u043f\u0430\u043a\u0435\u0442\u0430 \u043f\u043b\u043e\u0445\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043c\u043e\u0439 C++\/Qt-\u043f\u0440\u043e\u0435\u043a\u0442. ROS-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u0435\u0439\u0447\u0430\u0441, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0437\u043b\u043e\u0440\u0430\u0434\u0441\u0442\u0432\u0443\u044e\u0442: \u0443 \u043d\u0438\u0445 \u043d\u043e\u0434\u044b \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 Qt \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c.<\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u0430\u043a\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0441\u0447\u0451\u0442\u0430 \u043a\u0430\u0440\u0442\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043c\u043e\u0435\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430, \u0433\u0434\u0435 \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0451\u0442\u0430 \u0443\u043a\u043b\u043e\u043d\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u041c\u041d\u041a \u0438\u0437 <a href=\"https:\/\/github.com\/LTU-RAI\/Map-Conversion-3D-Voxel-Map-to-2D-Occupancy-Map\" rel=\"noopener nofollow\">Map-Conversion-3D-Voxel-Map-to-2D-Occupancy-Map<\/a>, \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f ML-\u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0430\u043a\u0435\u0442 \u043d\u0435 \u0442\u044f\u043d\u0435\u0442 \u043d\u0430 \u043c\u043e\u0435\u0439 \u0441\u043b\u0430\u0431\u043e\u0439 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0435 \u0440\u043e\u0432\u0435\u0440\u0430 \u2014 RTX 3050 Ti \u0441 4 GB VRAM. \u0415\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u043c\u0438\u043d\u0438\u043c\u0443\u043c 6 GB VRAM, \u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f RTX 4060. \u042d\u0442\u043e \u043f\u043b\u043e\u0445\u043e, \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0443. \u0412\u043e\u0442 \u043a \u0447\u0435\u043c\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 Python \u043f\u043b\u044e\u0441 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438.<\/p>\n<p>\u0410 \u0432\u0435\u0434\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b GPU \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u0438\u0431\u0435\u0440\u0435\u0447\u044c \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0437\u0430\u0434\u0430\u0447, \u043d\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043d\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u0442\u043d\u043e\u0433\u043e GPU \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e: \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, VLA \u0438\u043b\u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0418\u0418, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u043e\u0431\u043e\u0442\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u043d\u0435\u0440\u044b \u0438 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u0442\u043e\u0442 \u0436\u0435 MPPI \u0443 \u043c\u0435\u043d\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 GPU. \u041d\u043e \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u043d\u0451\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u0451 \u043c\u0435\u043d\u044c\u0448\u0435. \u0415\u0441\u043b\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u044f \u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c CUDA-\u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u0445\u043e\u0442\u044c \u0447\u0435\u043c-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0437\u0430\u043d\u044f\u0442\u044c GPU \u043f\u043e\u043c\u0438\u043c\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0442\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0435\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u0442\u0430\u0442\u044c \u0434\u0435\u0444\u0438\u0446\u0438\u0442\u043e\u043c.<\/p>\n<h2>\u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435<\/h2>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u0440\u043e\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043a\u0430\u0440\u0442\u044b \u2014 \u043e\u043d \u0434\u0430\u0451\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u2014 \u0438 \u043d\u0435 \u0432\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0433\u043e\u043d\u043a\u0443 \u043f\u043e \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0443 \u0436\u0435\u043b\u0435\u0437\u0430, \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u0432\u0437\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u043e\u0435 \u0432\u0430\u0436\u043d\u043e\u0435 \u0447\u0442\u043e-\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0443 \u0431\u043e\u043b\u0435\u0435 \u044d\u043a\u043e\u043d\u043e\u043c\u043d\u043e\u0439 \u043f\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 GPU.<\/p>\n<p>\u041f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438\u0437 Elevation Mapping cupy:<\/p>\n<ul>\n<li>\n<p>\u043e\u0434\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 \u041a\u0430\u043b\u043c\u0430\u043d\u0430 \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0448\u0443\u043c\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0430\u0446\u0438\u044e \u0434\u0440\u0435\u0439\u0444\u0430 \u0438 \u0441\u043a\u0430\u0447\u043a\u043e\u0432 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0443\u0441\u0442\u043e\u0442 \u043a\u0430\u0440\u0442\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044f \u043d\u0435 \u0437\u043d\u0430\u044e \u0434\u0430\u0436\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Python, \u0430 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 CuPy, \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0443 \u043d\u0430 LLM \u0438 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438: \u043e\u043d\u0438 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u0434 \u0441 CuPy \u043d\u0430 CUDA, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0431\u0443\u0434\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0418\u0418 \u043a\u043e\u0434 \u0438 \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u043c \u0441\u0432\u043e\u044e \u043a\u0430\u0440\u0442\u0443. \u0412 \u043a\u0440\u0430\u0439\u043d\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0443\u043f\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 NVIDIA, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c Elevation Mapping cupy, \u0433\u0434\u0435 \u0432\u0441\u0451 \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 GPU.<\/p>\n<h2>\u0412\u044b\u0432\u043e\u0434\u044b<\/h2>\n<p>\u0414\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0432\u043e\u043a\u0441\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u0441 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u2014 \u0443\u0434\u043e\u0431\u043d\u044b\u0439, \u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u041d\u0430 \u0443\u043a\u043b\u043e\u043d\u0430\u0445 \u043e\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043b\u043e\u0436\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043f\u0430\u0434\u044b \u0432\u044b\u0441\u043e\u0442 \u0438 \u0437\u0430\u0433\u043e\u043d\u044f\u0435\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0432 \u0442\u0440\u0438 \u0436\u0451\u0441\u0442\u043a\u0438\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f: \u0440\u043e\u0432\u043d\u043e, \u043d\u0435\u0440\u043e\u0432\u043d\u043e, \u043d\u0435\u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u043e.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a HD-\u043a\u0430\u0440\u0442\u0435 \u0432\u044b\u0441\u043e\u0442 \u0441 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u0447\u043d\u043e\u0439 \u0432\u044b\u0441\u043e\u0442\u044b \u0432 \u044f\u0447\u0435\u0439\u043a\u0435 \u0434\u0430\u0451\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438: \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0438, \u0442\u043e\u0447\u043d\u0435\u0435 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c, \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u0432\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0443\u043a\u043b\u043e\u043d\u044b. \u041d\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043e\u0431\u043d\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0448\u0443\u043c \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u0438 \u0441\u043a\u0430\u0447\u043a\u0438 \u043e\u0434\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 \u2014 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f, \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0430\u0446\u0438\u044f \u0434\u0440\u0435\u0439\u0444\u0430 \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0443\u0441\u0442\u043e\u0442. \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0430 CUDA \u0431\u0435\u0437 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0439 \u0438 Python-\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043a\u0430\u0440\u0442\u0430 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043b\u0451\u0433\u043a\u043e\u0439 \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0442\u0430\u043d\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0442\u043e\u0447\u043d\u0435\u0435.<\/p>\n<\/div>\n<p>\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\/1095506\/\">https:\/\/habr.com\/ru\/articles\/1095506\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0435\u0432\u044b\u0445 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0439 \u043a\u0430\u0440\u0442\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0448\u043b\u0430 \u0440\u0435\u0447\u044c \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438\u0441\u044c \u0431\u0430\u0433\u0438: \u043a\u0440\u0430\u0448\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430. \u041f\u043e\u043a\u0430 \u044f \u0438\u0445 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u043b, \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435: \u043d\u0430 \u0440\u043e\u0432\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u043e\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u043f\u0430\u0434 \u0432\u044b\u0441\u043e\u0442.\u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0430\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u043f\u0430\u0434 \u043c\u043e\u0433 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432 \u0442\u0440\u0451\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445:\u041e\u0442\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434 \u043d\u0430\u043a\u043b\u043e\u043d\u043e\u043c.\u0412 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0435\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0441\u043a\u0430\u043d\u044b \u043d\u0435 \u0441\u0442\u044b\u043a\u0443\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438.\u0415\u0441\u0442\u044c \u0441\u043a\u0430\u0447\u043a\u0438 \u043e\u0434\u043e\u043c\u0435\u0442\u0440\u0438\u0438.\u0414\u043e\u0440\u043e\u0433\u0430 \u043d\u0430 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u044f\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043c\u0435\u043b\u0430 \u0443\u043a\u043b\u043e\u043d\u044b \u2014 \u043a\u0432\u0430\u0434\u0440\u043e\u0446\u0438\u043a\u043b \u043b\u0435\u0433\u043a\u043e \u043a\u0430\u0442\u0438\u043b\u0441\u044f \u043f\u043e\u0434 \u0433\u043e\u0440\u043a\u0443. \u041d\u043e \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0432 \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u043e\u043a\u0441\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b.\u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u043a\u0441\u0435\u043b\u0438 10 \u0441\u043c \u043f\u043b\u043e\u0445\u043e \u0434\u0440\u0443\u0436\u0430\u0442 \u0441 \u0443\u043a\u043b\u043e\u043d\u0430\u043c\u0438\u0412\u043e\u043a\u0441\u0435\u043b\u044c \u0443\u0441\u0440\u0435\u0434\u043d\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430. \u041f\u043e\u043a\u0430 \u043d\u0430\u043a\u043b\u043e\u043d \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0440\u043e\u0433, \u043a\u0430\u0440\u0442\u0430 \u0445\u0440\u0430\u043d\u0438\u0442 \u0443\u0441\u0440\u0435\u0434\u043d\u0451\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u043e\u0433 \u043f\u0440\u043e\u0439\u0434\u0435\u043d, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0440\u0435\u0437\u043a\u0438\u0439 \u0441\u043a\u0430\u0447\u043e\u043a: \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u00ab\u043f\u043e\u0434\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0435\u0442\u00bb \u043d\u0430 \u043e\u0434\u0438\u043d \u043a\u0443\u0431 \u0432\u0432\u0435\u0440\u0445 \u0438\u043b\u0438 \u0432\u043d\u0438\u0437.\u0414\u043b\u044f \u043d\u0430\u0437\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430 \u044d\u0442\u043e \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430. \u0412\u043e\u043a\u0441\u0435\u043b\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 10 \u0441\u043c \u2014 \u044d\u0442\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u0443\u0431 10\u00d710\u00d710 \u0441\u043c. \u0422\u0430\u043a\u043e\u0439 \u043a\u0443\u0431 \u0440\u043e\u0432\u0435\u0440 \u0435\u0449\u0451 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438. \u041d\u043e \u0434\u0432\u0430 \u043a\u0443\u0431\u0430 \u043f\u043e\u0434\u0440\u044f\u0434 \u2014 \u044d\u0442\u043e \u0443\u0436\u0435 \u0432\u044b\u0441\u043e\u0442\u0430 \u043e\u043a\u043e\u043b\u043e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0440\u0430\u0434\u0438\u0443\u0441\u0430 \u043a\u043e\u043b\u0435\u0441\u0430. \u0411\u0435\u0437 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u043d\u0430 \u0440\u043e\u0432\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0441\u043a\u043e\u0447\u0438\u0442 \u043e\u0442 \u043d\u0435\u0433\u043e.\u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u0441\u0435\u0433\u043e \u0442\u0440\u0438 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f:\u0440\u043e\u0432\u043d\u043e \u2014 \u043c\u043e\u0436\u043d\u043e \u0435\u0445\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u043e;\u043d\u0435\u0440\u043e\u0432\u043d\u043e \u2014 \u043d\u0443\u0436\u043d\u043e \u0435\u0445\u0430\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e;\u043d\u0435\u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u043e \u2014 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044a\u0435\u0437\u0436\u0430\u0442\u044c.\u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 \u043e\u0434\u0438\u043d \u043a\u0443\u0431 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u044a\u0435\u0445\u0430\u0442\u044c \u0438\u043b\u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u0442\u044c. \u0414\u0432\u0430 \u043a\u0443\u0431\u0430 \u0432 \u0432\u044b\u0441\u043e\u0442\u0443 \u0443\u0436\u0435 \u0440\u0430\u0437\u0443\u043c\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438: \u0437\u0430\u043b\u0435\u0442\u0430\u0442\u044c \u043d\u0430 \u043d\u0438\u0445 \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u043c \u0445\u043e\u0434\u0443 \u2014 \u0440\u0438\u0441\u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0440\u043e\u0442\u0430 \u0438 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0440\u043e\u0432\u0435\u0440\u0430.\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u043d\u0430\u043a\u043b\u043e\u043d\u043d\u044b\u0435 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438. \u041d\u0430 \u043d\u0438\u0445 \u043f\u0435\u0440\u0435\u043f\u0430\u0434\u044b \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u044b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u0430\u0440\u0442\u0430 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0431\u044a\u0451\u043c\u0430 \u0432\u043e\u043a\u0441\u0435\u043b\u044f \u0438 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u0435\u0437\u043a\u0438\u0439 \u0441\u043a\u0430\u0447\u043e\u043a \u043d\u0430 \u043a\u0443\u0431 \u0432\u0432\u0435\u0440\u0445 \u0438\u043b\u0438 \u0432\u043d\u0438\u0437. \u0415\u0441\u043b\u0438 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432\u043e\u043a\u0441\u0435\u043b\u044f, \u043c\u044b \u0443\u043f\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f.\u0423\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441 10 \u0441\u043c \u0434\u043e 5 \u0441\u043c \u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u0434\u0430\u0451\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0433\u0440\u0430\u0434\u0430\u0446\u0438\u0439: \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0440\u0451\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u043f\u044f\u0442\u044c. \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u043e\u0433 \u0443\u043a\u043b\u043e\u043d\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f 5 \u0441\u043c, \u0430 \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u044b\u0448\u0435, \u0443\u0436\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u0435\u043c. \u041d\u043e \u043f\u043b\u0430\u0442\u0430 \u0437\u0430 \u044d\u0442\u043e \u0432\u0435\u043b\u0438\u043a\u0430:\u043a\u0430\u0440\u0442\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0430\u043c\u044f\u0442\u0438;\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a state lattice, \u0432\u0437\u044f\u0442\u044b\u0439 \u0438\u0437 ROS, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u0430;\u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0434\u0438\u0443\u0441 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0440\u043e\u0432\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0442\u0430\u043a \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d 3,9 \u043c \u043f\u0440\u0438 24 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f.\u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a? \u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b state lattice \u0434\u043e\u043b\u0436\u043d\u044b \u0442\u043e\u0447\u043d\u043e \u0441\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0448\u0451\u0442\u043a\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u043a \u0435\u0451 \u0441\u0435\u0442\u043a\u0435. \u0415\u0441\u043b\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0443, \u043e\u043d\u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0443\u0442 \u0441\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f, \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u0438\u043b\u0438 \u0443\u0439\u0434\u0451\u0442 \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043c\u0430\u0448\u0438\u043d \u043d\u0443\u0436\u043d\u044b \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435.\u0423 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u043e\u0433\u043e A* \u0442\u0430\u043a\u0438\u0445 \u0436\u0451\u0441\u0442\u043a\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0435\u0442: \u0442\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0440\u0430\u0434\u0438\u0443\u0441 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0434\u0430\u0436\u0435 \u043d\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435. \u041d\u043e \u043f\u043b\u0430\u0442\u043e\u0439 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0440\u0435\u0437\u043a\u0438\u0439 \u0440\u043e\u0441\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432. \u0421 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0447\u0438\u0441\u043b\u0430 \u044f\u0447\u0435\u0435\u043a \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0438 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0441\u0442\u0451\u0442 \u0432 \u0440\u0430\u0437\u044b.\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432\u043e\u043a\u0441\u0435\u043b\u044f \u2014 \u043f\u0430\u043b\u043a\u0430 \u043e \u0434\u0432\u0443\u0445 \u043a\u043e\u043d\u0446\u0430\u0445: \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043a\u0430\u0440\u0442\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 \u0440\u0430\u0441\u0442\u0451\u0442 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u0432\u0441\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043e\u0431\u0445\u043e\u0434\u0430 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u0439.\u0418\u0434\u0435\u044f: \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0435 \u0437\u0430\u043d\u044f\u0442\u043e\u0441\u0442\u044c, \u0430 \u0432\u044b\u0441\u043e\u0442\u0443\u0411\u043e\u043b\u0435\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u2014 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u043e\u043a\u0441\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u0432 \u0438\u0442\u043e\u0433\u0435 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0440\u0442\u0443 \u0432\u044b\u0441\u043e\u0442. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043e\u043d\u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435: \u0435\u0451 \u043e\u0441\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0437\u0435\u043c\u043b\u0438 \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0443 \u0433\u0440\u0430\u0432\u0438\u0442\u0430\u0446\u0438\u0438.\u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u044b \u0434\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u0430\u044e\u0442 \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u043d\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0435\u0442\u043a\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0442\u043e\u0447\u0435\u043a \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u0440\u0442\u044b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u044f\u0447\u0435\u0439\u043a\u0443 \u043d\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 1\/0, \u0430 \u0442\u043e\u0447\u043d\u0443\u044e \u0432\u044b\u0441\u043e\u0442\u0443 \u0442\u043e\u0447\u043a\u0438. \u0422\u043e\u0433\u0434\u0430 \u043a\u0430\u0440\u0442\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u0430.\u0414\u043b\u044f \u043b\u0438\u0434\u0430\u0440\u0430 \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u2014 1\u20132 \u0441\u043c. \u0414\u043b\u044f RGB-D \u043a\u0430\u043c\u0435\u0440\u044b \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f: \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 1\u20131,5 \u043c \u044d\u0442\u043e \u043e\u043a\u043e\u043b\u043e \u00b12 \u043c\u043c, \u043d\u0430 5 \u043c \u2014 \u0443\u0436\u0435 \u00b110 \u0441\u043c, \u0434\u0430\u043b\u044c\u0448\u0435 \u0435\u0449\u0451 \u0445\u0443\u0436\u0435.\u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u044b\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u0430\u043a \u044f \u0434\u0435\u043b\u0430\u043b \u0440\u0430\u043d\u044c\u0448\u0435, \u0440\u043e\u0441\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u044f\u0432\u0438\u0442 \u0448\u0443\u043c \u0441\u0435\u043d\u0441\u043e\u0440\u0430, \u0432 \u0442\u043e-\u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0432 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0438 \u043d\u0430 \u0440\u043e\u0431\u043e\u0442\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438\u043b\u0438 \u043d\u0435 \u0434\u0430\u044e\u0442 \u0434\u043e\u043b\u0436\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430.\u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0443 \u043d\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0435\u0441\u0442\u044c \u0438 \u043f\u043b\u044e\u0441\u044b:\u043c\u0438\u043b\u043b\u0438\u043c\u0435\u0442\u0440\u043e\u0432\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0430\u0440\u0442\u0443 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439, \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u0432\u0430\u0436\u043d\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0438 MPPI \u0438 MPC: \u043e\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0442\u043e\u0447\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0438\u043b\u044b, \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430 \u043a\u043e\u043b\u0451\u0441\u0430, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u044a\u0451\u043c\u044b, \u0441\u043f\u0443\u0441\u043a\u0438 \u0438 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u0433\u0440\u0430\u0432\u0438\u0442\u0430\u0446\u0438\u0438 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0445 \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u043d\u0438\u044f \u0438 \u0432\u0441\u0451 \u0442\u0430\u043a\u043e\u0435;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u0435\u0440\u0435\u043f\u0430\u0434\u043e\u0432 \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442: \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0443\u043a\u043b\u043e\u043d \u043f\u043b\u0430\u0432\u043d\u043e \u0440\u0430\u0437\u043c\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043a\u0430\u0440\u0442\u0435 \u0438 \u0442\u043e\u043d\u0435\u0442 \u0432 \u0448\u0443\u043c\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439;\u043e\u0446\u0435\u043d\u043a\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u0435\u0435 \u0438 \u043f\u043b\u0430\u0432\u043d\u0435\u0435: \u0440\u043e\u0431\u043e\u0442 \u043c\u043e\u0436\u0435\u0442 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u044b\u0441\u043e\u0442\u0443 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u044f \u0438 \u0440\u0435\u0448\u0438\u0442\u044c, \u043e\u0431\u044a\u0435\u0437\u0436\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u0442\u044c \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438.\u041f\u043b\u044e\u0441\u044b \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0448\u0438\u0432\u0430\u043b\u0438 \u043c\u0438\u043d\u0443\u0441\u044b, \u0438 \u044f \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043b \u043a \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c\u0443 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0443 \u043a\u0430\u0440\u0442\u044b.\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f: frustum, \u0446\u0435\u043d\u0442\u0440\u043e\u0438\u0434 \u0438 atomicMin\u041f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0430 \u043f\u0443\u0442\u0438 \u043e\u0442 \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u043a \u043a\u0430\u0440\u0442\u0435 \u2014 \u0432\u043e\u043a\u0441\u0435\u043b\u0438\u0437\u0430\u0446\u0438\u044f. \u041c\u043e\u0439 \u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u043e\u0434 \u043c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u043d\u043e \u0434\u043b\u044f \u0433\u0440\u0443\u0431\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043e\u0441\u043e\u0431\u044b\u0445 \u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u0439 \u043d\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c. \u0415\u0441\u043b\u0438 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043e\u0431\u044a\u0451\u043c \u0432\u043e\u043a\u0441\u0435\u043b\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0430 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0430 \u0442\u043e\u0447\u043a\u0430, \u043e\u043d \u0441\u0447\u0438\u0442\u0430\u043b\u0441\u044f \u0437\u0430\u043d\u044f\u0442\u044b\u043c. \u0422\u0430\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043a\u0430\u043a\u0430\u044f \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u0447\u043a\u0430 \u0438 \u043f\u043e\u0442\u043e\u043c\u0443 \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0438\u043c\u043c\u0443\u043d\u043d\u0430 \u043a \u0433\u043e\u043d\u043a\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0441\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u043f\u0438\u0441\u0430\u043b\u0438 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 1.__global__void kernel_deproject_depth_cuda(uint16_t *ray_points, const rs2_intrinsics* intrin, const uint16_t * depth, float depth_scale, double w, double x, double y, double z){    int i = blockDim.x * blockIdx.x + threadIdx.x;    if (i &gt;= (*intrin).height * (*intrin).width) {        return;    }    int stride = blockDim.x * gridDim.x;    int a, b;    const float ww = w * w;    const float xx = x * x;    const float yy = y * y;    const float zz = z * z;    const float wx = w * x;    const float wy = w * y;    const float wz = w * z;    const float xy = x * y;    const float xz = x * z;    const float yz = y * z;    const float two = 2.0f;    for (int j = i; j &lt; (*intrin).height * (*intrin).width; j += stride) {        b = j \/ (*intrin).width;        a = j &#8212; b * (*intrin).width;        const float pixel[] = { (float)a, (float)b };        float point[3] = {0}; float point_s[3] = {0}; uint16_t points[3] = {0};        deproject_pixel_to_point_cuda(point, intrin, pixel, depth_scale * depth[j]);        point_s[0] = (Rotation_matrix[0] * point[0] + Rotation_matrix[3] * point[1] + Rotation_matrix[6] * point[2]);        point_s[1] = (Rotation_matrix[1] * point[0] + Rotation_matrix[4] * point[1] + Rotation_matrix[7] * point[2]);        point_s[2] = (Rotation_matrix[2] * point[0] + Rotation_matrix[5] * point[1] + Rotation_matrix[8] * point[2]);        point_s[0] += Translation[0];        point_s[1] += Translation[1];        point_s[2] += Translation[2];        point_s[0] *= Map_scale;        point_s[1] *= Map_scale;        point_s[2] *= Map_scale;        points[0] = __float2int_rd(ww*point_s[0] + two*wy*point_s[2] &#8212; two*wz*point_s[1] + xx*point_s[0] + two*xy*point_s[1] + two*xz*point_s[2] &#8212; zz*point_s[0] &#8212; yy*point_s[0]) + Map_center_X;        points[1] = __float2int_rd(two*xy*point_s[0] + yy*point_s[1] + two*yz*point_s[2] + two*wz*point_s[0] &#8212; zz*point_s[1] + ww*point_s[1] &#8212; two*wx*point_s[2] &#8212; xx*point_s[1]) + Map_center_Y;        points[2] = __float2int_rd(two*xz*point_s[0] + two*yz*point_s[1] + zz*point_s[2] &#8212; two*wy*point_s[0] &#8212; yy*point_s[2] + two*wx*point_s[1] &#8212; xx*point_s[2] + ww*point_s[2]) + Map_center_Z;        if((points[0] &lt; Map_X) &amp;&amp; (points[1] &lt; Map_Y) &amp;&amp; (points[2] &lt; Map_Z) &amp;&amp; (points[0] &gt; 0) &amp;&amp; (points[1] &gt; 0) &amp;&amp; (points[2] &gt; 0)) {            ray_points[j * 3] = points[0];            ray_points[1 + j * 3] = points[1];            ray_points[2 + j * 3] = points[2];        }        else {            ray_points[j * 3] = 0;            ray_points[1 + j * 3] = 0;            ray_points[2 + j * 3] = 0;        }   }}__global__void voxelization_cuda( uint8_t * voxels, const uint16_t * ray_points, const unsigned int counter){    int i = blockDim.x * blockIdx.x + threadIdx.x;    if (i &gt;= counter) {        return;    }    int stride = blockDim.x * gridDim.x;    for (int j = i; j &lt; counter; j += stride) {        if((ray_points[j * 3] &gt; 0) &amp;&amp; (ray_points[1 + j * 3] &gt; 0) &amp;&amp; (ray_points[2 + j * 3] &gt; 0)) {            voxels[get_value(ray_points[j * 3], ray_points[1 + j * 3], ray_points[2 + j * 3])] = 1;        }    }}\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430 \u0432\u0445\u043e\u0434 \u0438\u0434\u0443\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0432\u044b\u0441\u043e\u0442\u0435 \u0442\u043e\u0447\u043a\u0438. \u0417\u0430 \u043e\u0434\u0438\u043d \u0432\u043e\u043a\u0441\u0435\u043b\u044c \u043c\u043e\u0433\u0443\u0442 \u043a\u043e\u043d\u043a\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0442\u043d\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439: \u043e\u0431\u044a\u0451\u043c \u0432\u043e\u043a\u0441\u0435\u043b\u044f 10\u00d710\u00d710 \u0441\u043c, \u0430 \u043a\u0430\u0440\u0442\u0430 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 848\u00d7480, \u0442\u043e \u0435\u0441\u0442\u044c 407 040 \u0442\u043e\u0447\u0435\u043a \u043f\u0440\u0438 FOV \u043a\u0430\u043c\u0435\u0440\u044b 90\u00b0 \u043f\u043e \u0448\u0438\u0440\u0438\u043d\u0435 \u0438 58\u00b0 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435.\u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f: \u0443 \u043b\u0438\u0434\u0430\u0440\u0430 \u0432\u0441\u0435\u0433\u043e \u043e\u043a\u043e\u043b\u043e 20 000 \u0442\u043e\u0447\u0435\u043a \u043d\u0430 360\u00b0 \u043f\u043e \u0448\u0438\u0440\u0438\u043d\u0435 \u0438 57\u00b0 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435. \u0414\u0430\u0436\u0435 \u0442\u0430\u043c LIO-\u043f\u0430\u043a\u0435\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432\u043e\u043a\u0441\u0435\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0438\u043b\u0438 downsampling, \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u041a\u043e\u0440\u0440\u0435\u043b\u044f\u0442\u043e\u0440\u044b \u043d\u0430 CPU \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0442\u044f\u043d\u0443\u0442 \u0438 \u043d\u0435 \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 realtime.\u0415\u0449\u0451 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e\u043a\u0441\u0435\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 GPU \u2014 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u044f. \u0415\u0451 \u043d\u0435 \u043b\u044e\u0431\u044f\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0430 \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u044f\u0434\u0440\u043e \u0432 \u043a\u043e\u043d\u0446\u0435 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u044e \u043f\u0430\u043c\u044f\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043f\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u0430\u043c. \u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u044d\u0442\u043e\u0433\u043e, \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u043b ray_points \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u043c\u043e\u0433 \u043f\u0440\u0438\u043d\u044f\u0442\u044c: 407 040 \u0442\u043e\u0447\u0435\u043a.\u041d\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e: \u043e\u0434\u0438\u043d \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043a\u0441\u0435\u043b\u044c. \u0422\u043e\u0447\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438. \u0427\u0435\u043c \u043e\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0435, \u0442\u0435\u043c \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u043c\u0443 \u0447\u0438\u0441\u043b\u0443 \u0432\u043e\u043a\u0441\u0435\u043b\u0435\u0439 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u0441\u044f \u0442\u043e\u0447\u043a\u0438. \u041d\u0430 \u044d\u0442\u043e \u0432\u043b\u0438\u044f\u044e\u0442 \u0444\u043e\u0440\u043c\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u043d\u0438\u0445. \u0421\u043b\u043e\u0436\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442 \u0432\u0438\u0434\u0438\u043c\u0443\u044e \u043f\u043b\u043e\u0449\u0430\u0434\u044c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u0438, \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u044f\u043b\u044f\u0442\u0441\u044f \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u0438.\u041a\u0430\u043a \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 ray_points, \u0440\u0435\u0448\u0438\u0442\u044c \u0433\u043e\u043d\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u0432\u044b\u0441\u043e\u0442\u0443 \u043a\u0430\u043a\u043e\u0433\u043e \u0438\u0437 \u0441\u043e\u0442\u0435\u043d \u043a\u043e\u043d\u043a\u0443\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u044f\u0447\u0435\u0439\u043a\u0443?\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b \u043c\u043e\u0434\u0435\u043b\u044c FOV \u043a\u0430\u043c\u0435\u0440\u044b \u2014 frustum view. \u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u0430\u043c\u0435\u0440\u044b \u0432 \u0432\u0438\u0434\u0435 \u0443\u0441\u0435\u0447\u0451\u043d\u043d\u043e\u0439 \u043f\u0438\u0440\u0430\u043c\u0438\u0434\u044b, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0435\u0439\u0441\u044f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0432\u0437\u0433\u043b\u044f\u0434\u0430. \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043e\u0431\u044a\u0451\u043c \u044d\u0442\u043e\u0439 \u043f\u0438\u0440\u0430\u043c\u0438\u0434\u044b \u0432\u043e\u043a\u0441\u0435\u043b\u044f\u043c\u0438 10\u00d710\u00d710 \u0441\u043c, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-499015","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/499015","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=499015"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/499015\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=499015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=499015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=499015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}