{"id":859,"date":"2026-09-30T00:21:05","date_gmt":"2026-09-29T16:21:05","guid":{"rendered":"https:\/\/docs.liuyaorobot.com\/?post_type=docs&#038;p=859"},"modified":"2026-09-30T00:23:21","modified_gmt":"2026-09-29T16:23:21","slug":"magpie360-5s-%e5%bc%80%e5%8f%91%e8%80%85%e6%89%8b%e5%86%8c","status":"publish","type":"docs","link":"https:\/\/docs.liuyaorobot.com\/?docs=magpie360-5s-%e5%bc%80%e5%8f%91%e8%80%85%e6%89%8b%e5%86%8c","title":{"rendered":"Magpie360-5S \u5f00\u53d1\u8005\u624b\u518c"},"content":{"rendered":"\n<p>\u672c\u624b\u518c\u4ecb\u7ecd Magpie360-5S \u7684\u8bbe\u5907\u8fde\u63a5\u3001\u98de\u884c\u63a7\u5236\u3001\u4f20\u611f\u5668\u6570\u636e\u3001\u6fc0\u5149\u5b9a\u4f4d\u53ca\u6295\u653e\u88c5\u7f6e\u63a5\u53e3\uff0c\u9762\u5411\u5177\u5907 Linux\u3001ROS \u548c\u57fa\u7840\u7f16\u7a0b\u77e5\u8bc6\u7684\u5f00\u53d1\u8005\u3002<\/p>\n<p><strong>\u672f\u8bed\u7ea6\u5b9a\uff1a<\/strong><\/p>\n<ul>\n<li><strong>\u4e0a\u4f4d\u673a<\/strong>\uff1a\u98de\u673a\u642d\u8f7d\u7684\u677f\u8f7d\u8ba1\u7b97\u673a\uff0c\u578b\u53f7\u4e3a Jetson Orin NANO \/ NX\u3002<\/li>\n<li><strong>\u98de\u63a7<\/strong>\uff1aPX6C\uff0c\u8d1f\u8d23\u59ff\u6001\u7a33\u5b9a\u3001\u98de\u884c\u72b6\u6001\u7ba1\u7406\u548c\u5e95\u5c42\u6267\u884c\u3002<\/li>\n<li><strong>\u5f00\u53d1\u7535\u8111<\/strong>\uff1a\u7528\u4e8e SSH\u3001\u7f16\u8f91\u7a0b\u5e8f\u3001\u67e5\u770b\u65e5\u5fd7\u6216\u8fd0\u884c\u5730\u9762\u7ad9\u7684\u7535\u8111\u3002<\/li>\n<li><strong>\u6295\u653e\u88c5\u7f6e\u4e0b\u4f4d\u673a<\/strong>\uff1a\u5206\u7535\u677f\u4e0a\u7684\u63a7\u5236\u5355\u7247\u673a\u3002<\/li>\n<li><strong>\u8bbe\u5b9a\u503c\uff08setpoint\uff09<\/strong>\uff1a\u5e94\u7528\u7a0b\u5e8f\u53d1\u9001\u7ed9\u98de\u63a7\u7684\u671f\u671b\u4f4d\u7f6e\u3001\u901f\u5ea6\u6216\u5176\u4ed6\u63a7\u5236\u91cf\u3002<\/li>\n<\/ul>\n<p>\u9664\u660e\u786e\u6807\u6ce8\u201c\u5f00\u53d1\u7535\u8111\u201d\u5916\uff0c\u547d\u4ee4\u5747\u5728\u4e0a\u4f4d\u673a\u7684 Bash \u7ec8\u7aef\u6267\u884c\u3002\u6587\u4e2d\u7684\u6587\u4ef6\u4f4d\u7f6e\u4f7f\u7528\u4e0a\u4f4d\u673a\u4e0a\u7684\u7edd\u5bf9\u8def\u5f84\uff0c\u6837\u4f8b\u4ee3\u7801\u6309\u6587\u4ef6\u540d\u7d22\u5f15\u3002<\/p>\n\n<h2 id=\"overview\">1. \u5e73\u53f0\u6982\u89c8<\/h2>\n<h3 id=\"1-1-%e4%ba%a7%e5%93%81%e5%ae%9a%e4%bd%8d%e4%b8%8e%e5%bc%80%e5%8f%91%e8%83%bd%e5%8a%9b\">1.1 \u4ea7\u54c1\u5b9a\u4f4d\u4e0e\u5f00\u53d1\u80fd\u529b<\/h3>\n<p>Magpie360-5S \u7684\u5e94\u7528\u7a0b\u5e8f\u8fd0\u884c\u5728\u4e0a\u4f4d\u673a\u4e0a\uff0c\u901a\u8fc7 ROS \u4e0e\u98de\u63a7\u3001\u4f20\u611f\u5668\u548c\u6295\u653e\u88c5\u7f6e\u901a\u4fe1\u3002\u4e3b\u8981\u5f00\u53d1\u65b9\u5411\u5305\u62ec\uff1a<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u5f00\u53d1\u65b9\u5411<\/th>\n<th>\u4e3b\u8981\u63a5\u53e3\u6216\u7ec4\u4ef6<\/th>\n<th>\u524d\u63d0<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u72b6\u6001\u76d1\u63a7<\/td>\n<td>MAVROS \u72b6\u6001\u3001\u5c40\u90e8\u4f4d\u59ff\u3001\u901f\u5ea6\u548c\u7535\u6c60\u8bdd\u9898<\/td>\n<td>\u98de\u63a7\u901a\u4fe1\u6b63\u5e38<\/td>\n<\/tr>\n<tr>\n<td>\u98de\u884c\u63a7\u5236<\/td>\n<td>MAVROS \u4f4d\u7f6e\/\u901f\u5ea6\u8bbe\u5b9a\u503c\u3001\u6a21\u5f0f\u53ca\u89e3\u9501\u670d\u52a1<\/td>\n<td>\u5b9a\u4f4d\u6709\u6548\u3001\u98de\u63a7\u5904\u4e8e\u5bf9\u5e94\u63a7\u5236\u6a21\u5f0f<\/td>\n<\/tr>\n<tr>\n<td>\u70b9\u4e91\u4e0e\u60ef\u6027\u6570\u636e\u5904\u7406<\/td>\n<td>Livox ROS Driver 2<\/td>\n<td>\u96f7\u8fbe\u7f51\u7edc\u548c\u9a71\u52a8\u6b63\u5e38<\/td>\n<\/tr>\n<tr>\n<td>\u6fc0\u5149\u5b9a\u4f4d\u4e0e\u5efa\u56fe<\/td>\n<td>FAST-LIO\u3001\u5916\u90e8\u4f4d\u59ff\u8f6c\u53d1\u8282\u70b9<\/td>\n<td>\u65f6\u95f4\u3001\u5916\u53c2\u3001\u5b89\u88c5\u65b9\u5411\u548c\u98de\u63a7\u878d\u5408\u914d\u7f6e\u6b63\u786e<\/td>\n<\/tr>\n<tr>\n<td>\u6295\u653e\u88c5\u7f6e\u63a7\u5236<\/td>\n<td><code>tutorial_catapult<\/code>\u3001<code>rosserial<\/code><\/td>\n<td>\u4e0b\u4f4d\u673a\u901a\u4fe1\u6b63\u5e38<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u672c\u5e73\u53f0\u4e3b\u8981\u63d0\u4f9b <strong>ROS \u63a5\u53e3\u548c\u5e94\u7528\u793a\u4f8b<\/strong>\uff0c\u5f00\u53d1\u8005\u901a\u8fc7\u8ba2\u9605 Topic\u3001\u53d1\u5e03\u8bbe\u5b9a\u503c\u3001\u8c03\u7528 Service \u548c\u914d\u7f6e Launch\/YAML \u5b9e\u73b0\u529f\u80fd\u3002<\/p>\n<h3 id=\"1-2-%e7%a1%ac%e4%bb%b6%e7%bb%84%e6%88%90%e4%b8%8e%e6%8e%a5%e5%8f%a3%e6%80%bb%e8%a7%88\">1.2 \u786c\u4ef6\u7ec4\u6210\u4e0e\u63a5\u53e3\u603b\u89c8<\/h3>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u90e8\u4ef6<\/th>\n<th>\u578b\u53f7\/\u914d\u7f6e<\/th>\n<th>\u804c\u8d23\u4e0e\u63a5\u53e3<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u4e0a\u4f4d\u673a<\/td>\n<td>Jetson Orin NANO \/ NX<\/td>\n<td>\u8fd0\u884c ROS\u3001\u611f\u77e5\u3001\u5b9a\u4f4d\u3001\u89c4\u5212\u548c\u4efb\u52a1\u7a0b\u5e8f<\/td>\n<\/tr>\n<tr>\n<td>\u98de\u63a7<\/td>\n<td>PX6C<\/td>\n<td>\u901a\u8fc7 4-pin USB \u63a5\u53e3\u8fde\u63a5\u5206\u7535\u677f\u5185\u7f6e USB Hub\uff0c\u7531 Hub \u63a5\u5165\u4e0a\u4f4d\u673a\uff0c\u901a\u4fe1\u8bbe\u5907\u4e3a <code>\/dev\/ttyACM0<\/code><\/td>\n<\/tr>\n<tr>\n<td>GPS \u6a21\u5757<\/td>\n<td>M9N<\/td>\n<td>\u5e26\u6709\u5b89\u5168\u5f00\u5173<\/td>\n<\/tr>\n<tr>\n<td>\u6fc0\u5149\u96f7\u8fbe<\/td>\n<td>MID-360 \/ MID-360s<\/td>\n<td>\u901a\u8fc7\u4ee5\u592a\u7f51\u76f4\u8fde\u4e0a\u4f4d\u673a\uff0c\u63d0\u4f9b\u70b9\u4e91\u4e0e IMU \u6570\u636e<\/td>\n<\/tr>\n<tr>\n<td>\u6295\u653e\u88c5\u7f6e<\/td>\n<td>&#8211;<\/td>\n<td>\u5206\u7535\u677f\u5185\u7f6e USB Hub\u3001CH340 USB \u8f6c\u4e32\u53e3\u82af\u7247\u4e0e ATmega328P \u4e0b\u4f4d\u673a\uff0c\u53c2\u8003\u8bbe\u5907\u4e3a <code>\/dev\/ttyUSB0<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3 id=\"1-3-%e8%bd%af%e4%bb%b6%e6%9e%b6%e6%9e%84%e4%b8%8e%e6%95%b0%e6%8d%ae%e6%b5%81\">1.3 \u8f6f\u4ef6\u67b6\u6784\u4e0e\u6570\u636e\u6d41<\/h3>\n<p><img decoding=\"async\" style=\"max-width: 100%; height: auto;\" src=\"https:\/\/docs.liuyaorobot.com\/wp-content\/uploads\/2026\/09\/architecture.png\" alt=\"Magpie360-5S \u8f6f\u4ef6\u67b6\u6784\u4e0e\u6570\u636e\u6d41\"><\/p>\n<p>\u5e94\u7528\u7ed9\u98de\u63a7\u53d1\u9001\u671f\u671b\u503c\uff0c\u98de\u63a7\u8d1f\u8d23\u5e95\u5c42\u63a7\u5236\u3002<\/p>\n<p><code>vision_pose<\/code> \u53ea\u662f MAVROS \u7684\u63a5\u53e3\u540d\u79f0\uff0c\u8f93\u5165\u53ef\u4ee5\u6765\u81ea\u6fc0\u5149\u5b9a\u4f4d\u3002<\/p>\n<hr>\n<h2 id=\"setup\">2. \u8bbe\u5907\u8fde\u63a5\u4e0e\u7f51\u7edc\u914d\u7f6e<\/h2>\n<p><img decoding=\"async\" style=\"max-width: 100%; height: auto;\" src=\"https:\/\/docs.liuyaorobot.com\/wp-content\/uploads\/2026\/09\/connections.png\" alt=\"Magpie360-5S \u8bbe\u5907\u8fde\u63a5\"><\/p>\n<p>\u56fe\u4e2d\u8bbe\u5907\u5916\u5f62\u53c2\u8003 <a href=\"https:\/\/www.livoxtech.com\/mid-360\">Livox MID-360 \u5b98\u65b9\u4ea7\u54c1\u56fe<\/a>\u548c <a href=\"https:\/\/docs.holybro.com\/autopilot\/pixhawk-6c\">Pixhawk 6C \u5b98\u65b9\u8d44\u6599<\/a>\u3002\u5206\u7535\u677f\u4ee5\u7ed3\u6784\u6846\u8868\u793a\uff0c\u6846\u5185\u5c55\u793a USB Hub\u3001USB \u8f6c\u4e32\u53e3\u82af\u7247\u548c\u4e0b\u4f4d\u673a\u7684\u5185\u90e8\u8fde\u63a5\u3002<\/p>\n<h3 id=\"2-1-%e9%a3%9e%e6%8e%a7-usb-%e8%bf%9e%e6%8e%a5%e4%b8%8e%e9%80%9a%e4%bf%a1%e9%85%8d%e7%bd%ae\">2.1 \u98de\u63a7 USB \u8fde\u63a5\u4e0e\u901a\u4fe1\u914d\u7f6e<\/h3>\n<p>PX6C \u901a\u8fc7\u98de\u63a7\u4e0a\u7684 <strong>4-pin USB \u63a5\u53e3<\/strong>\u8fde\u63a5\u5206\u7535\u677f\u5185\u7f6e USB Hub \u7684\u4e00\u4e2a\u4e0b\u6e38\u7aef\u53e3\u3002Hub \u7684\u4e0a\u6e38\u901a\u8fc7\u5206\u7535\u677f\u5f15\u51fa\u7684 USB-A \u63a5\u5934\u63a5\u5165\u4e0a\u4f4d\u673a\u7684 USB Type-A \u53e3\uff0c\u4e0a\u4f4d\u673a\u679a\u4e3e\u51fa\u7684\u98de\u63a7\u8bbe\u5907\u4e3a <code>\/dev\/ttyACM0<\/code>\u3002<\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">lsusb\nls -l \/dev\/ttyACM0\n<\/code><\/pre>\n<p>\u5982\u679c\u9047\u5230\u6743\u9650\u95ee\u9898\uff0c\u53ef\u5c06\u5f53\u524d\u7528\u6237\u52a0\u5165<code>dialout<\/code>\u7ec4\uff1a<\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">sudo usermod -aG dialout \"$USER\"\n<\/code><\/pre>\n<p>\u968f\u540e\u91cd\u65b0\u767b\u5f55\u3002\u4e0d\u8981\u957f\u671f\u4f7f\u7528 <code>chmod 777<\/code> \u6216\u4ee5 root \u8fd0\u884c\u6574\u5957 ROS \u6765\u7ed5\u8fc7\u6743\u9650\u95ee\u9898\u3002<\/p>\n<p><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_basic\/launch\/mavros.launch<\/code>\u5305\u542b\u7684\u914d\u7f6e\u4e3a\uff1a<\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-xml\">&lt;launch&gt;\n  &lt;include file=\"$(find mavros)\/launch\/px4.launch\"&gt;\n    &lt;arg name=\"fcu_url\" value=\"\/dev\/ttyACM0:57600\"\/&gt;\n  &lt;\/include&gt;\n&lt;\/launch&gt;\n<\/code><\/pre>\n<p>\u542f\u52a8\u5165\u53e3\uff1a<\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">roslaunch tutorial_basic mavros.launch\n<\/code><\/pre>\n<p>\u4e5f\u53ef\u4f7f\u7528 MAVROS \u81ea\u8eab\u7684\u5165\u53e3\u6307\u5b9a\u8fde\u63a5 URL\uff0c\u9009\u62e9\u5176\u4e2d\u4e00\u4e2a\u5165\u53e3\u542f\u52a8\uff1a<\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">roslaunch mavros px4.launch fcu_url:=\/dev\/ttyACM0:57600\n<\/code><\/pre>\n<p>\u6ce8\u610f\uff1a<code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_basic\/launch\/mavros.launch<\/code> <strong>\u6ca1\u6709\u66b4\u9732\u53ef\u8986\u76d6\u7684 <code>fcu_url<\/code> \u53c2\u6570<\/strong>\u3002\u9700\u8981\u66f4\u6362\u8bbe\u5907\u8def\u5f84\u65f6\uff0c\u4f7f\u7528\u4e0a\u9762\u7684 MAVROS \u5165\u53e3\uff0c\u6216\u5728\u81ea\u6709 Launch \u4e2d\u660e\u786e\u914d\u7f6e\u3002<\/p>\n<p>\u8bfb\u53d6\u8fde\u63a5\u72b6\u6001\uff1a<\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">rostopic echo -n 1 \/mavros\/state\n<\/code><\/pre>\n<p>\u9884\u671f\u6709 <code>connected: True<\/code>\uff0c\u8868\u793a MAVROS \u5df2\u7ecf\u8fde\u63a5\u4e0a\u98de\u63a7\u3002<\/p>\n<h3 id=\"2-2-mid-360-mid-360s-%e7%9b%b4%e8%bf%9e%e4%b8%8e%e5%b1%80%e5%9f%9f%e7%bd%91%e9%85%8d%e7%bd%ae\">2.2 MID-360 \/ MID-360s \u76f4\u8fde\u4e0e\u5c40\u57df\u7f51\u914d\u7f6e<\/h3>\n<p>\u6fc0\u5149\u96f7\u8fbe\u901a\u8fc7\u7f51\u7ebf\u76f4\u8fde\u4e0a\u4f4d\u673a\u4ee5\u592a\u7f51\u53e3\u3002\u96f7\u8fbe\u4e0e\u4e0a\u4f4d\u673a\u4f7f\u7528\u540c\u4e00 IPv4 \u5b50\u7f51\u5185\u7684\u4e0d\u540c\u5730\u5740\u3002<\/p>\n<h4 id=\"2-2-1-%e5%9c%b0%e5%9d%80%e8%a7%84%e5%88%92\">2.2.1 \u5730\u5740\u89c4\u5212<\/h4>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u9879\u76ee<\/th>\n<th>\u914d\u7f6e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u96f7\u8fbe\u4e13\u7528\u7f51\u5361<\/td>\n<td>\u5982 <code>eth0<\/code>\u3001<code>enP...<\/code>\uff0c\u4ee5\u5b9e\u9645\u7f51\u5361\u540d\u79f0\u4e3a\u51c6<\/td>\n<\/tr>\n<tr>\n<td>\u4e0a\u4f4d\u673a\u5730\u5740<\/td>\n<td><code>192.168.1.5<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u5b50\u7f51\u524d\u7f00\/\u63a9\u7801<\/td>\n<td>\u6309\u8bbe\u5907\u7f51\u7edc\u89c4\u5212\u586b\u5199<\/td>\n<\/tr>\n<tr>\n<td>\u96f7\u8fbe\u5730\u5740<\/td>\n<td><code>192.168.1.1xx<\/code>, \u5176\u4e2d\u6700\u540e\u4e00\u90e8\u5206\u7684\u6700\u540e\u4e24\u4f4d\u4e3a\u96f7\u8fbe\u7684SN\u7801\u6700\u540e\u4e24\u4f4d<\/td>\n<\/tr>\n<tr>\n<td>\u8fdc\u7a0b\u7ba1\u7406\u5730\u5740<\/td>\n<td>\u5f00\u53d1\u7535\u8111\u7528\u4e8e SSH \u7684\u4e0a\u4f4d\u673a\u5730\u5740\uff0c\u53ef\u80fd\u5c5e\u4e8e\u53e6\u4e00\u7f51\u5361<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>\u968f\u65e0\u4eba\u673a\u9644\u5e26\u7684launch\u6587\u4ef6<\/strong>\u4f7f\u7528\u4e0a\u4f4d\u673a\u5730\u5740 <code>192.168.1.5<\/code>\u3001\u96f7\u8fbe\u5730\u5740 <code>192.168.1.1xx<\/code>\u3002<\/p>\n<h4 id=\"2-2-2-%e9%85%8d%e7%bd%ae-livox-%e9%a9%b1%e5%8a%a8\">2.2.2 \u914d\u7f6e Livox \u9a71\u52a8<\/h4>\n<p>\u9a71\u52a8\u5305\u4f4d\u7f6e\u53ef\u901a\u8fc7\u4ee5\u4e0b\u547d\u4ee4\u67e5\u8be2\uff1a<\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">rospack find livox_ros_driver2\n<\/code><\/pre>\n<p>\u914d\u7f6e\u6587\u4ef6\u4e3a <code>\/home\/jetson\/ros_libraries_ws\/src\/livox_ros_driver2\/config\/MID360_config.json<\/code>\uff0c\u4e5f\u53ef\u80fd\u4e3a <code>\/home\/jetson\/ros_libraries_ws\/src\/livox_ros_driver2\/config\/MID360s_config.json<\/code>\uff0c\u53d6\u51b3\u4e8e\u98de\u673a\u6240\u914d\u5907\u7684\u96f7\u8fbe\u578b\u53f7\u3002\u5f53\u524d\u968f\u9644\u914d\u7f6e\u91c7\u7528\u4ee5\u4e0b\u5b57\u6bb5\uff1a<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u5b57\u6bb5<\/th>\n<th>\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>MID360.host_net_info.cmd_data_ip<\/code><\/td>\n<td>\u4e0a\u4f4d\u673a\u63a5\u6536\u63a7\u5236\u901a\u4fe1\u7684\u672c\u673a\u5730\u5740<\/td>\n<\/tr>\n<tr>\n<td><code>MID360.host_net_info.push_msg_ip<\/code><\/td>\n<td>\u4e0a\u4f4d\u673a\u63a5\u6536\u72b6\u6001\u4fe1\u606f\u7684\u672c\u673a\u5730\u5740<\/td>\n<\/tr>\n<tr>\n<td><code>MID360.host_net_info.point_data_ip<\/code><\/td>\n<td>\u4e0a\u4f4d\u673a\u63a5\u6536\u70b9\u4e91\u7684\u672c\u673a\u5730\u5740<\/td>\n<\/tr>\n<tr>\n<td><code>MID360.host_net_info.imu_data_ip<\/code><\/td>\n<td>\u4e0a\u4f4d\u673a\u63a5\u6536 IMU \u7684\u672c\u673a\u5730\u5740<\/td>\n<\/tr>\n<tr>\n<td><code>MID360.host_net_info.log_data_ip<\/code><\/td>\n<td>\u65e5\u5fd7\u901a\u9053\u5730\u5740\uff0c\u6309\u8be5\u7248\u672c\u7684\u65e5\u5fd7\u914d\u7f6e\u5904\u7406<\/td>\n<\/tr>\n<tr>\n<td><code>lidar_configs[].ip<\/code><\/td>\n<td>\u8981\u8fde\u63a5\u7684\u96f7\u8fbe\u5730\u5740<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u5bf9\u5f53\u524d\u5355\u7f51\u5361\u76f4\u8fde\u914d\u7f6e\uff0c\u524d\u56db\u4e2a\u5730\u5740\u4e0e\u4e0a\u4f4d\u673a\u96f7\u8fbe\u7f51\u53e3\u4e00\u81f4\u3002\u7aef\u53e3\u6cbf\u7528\u914d\u5957\u9a71\u52a8\u914d\u7f6e\u4e2d\u7684\u503c\u3002\u4e0d\u540c\u9a71\u52a8\u7248\u672c\u7684\u914d\u7f6e\u7ed3\u6784\u53ef\u80fd\u4e0d\u540c\uff0c\u5b57\u6bb5\u540d\u79f0\u4ee5\u5bf9\u5e94\u578b\u53f7\u7684\u914d\u7f6e\u6587\u4ef6\u4e3a\u51c6\u3002<\/p>\n<p><code>\/home\/jetson\/ros_libraries_ws\/src\/livox_ros_driver2\/launch_ROS1\/msg_MID360.launch<\/code> \u5185\u90e8\u901a\u8fc7 <code>user_config_path<\/code> \u53c2\u6570\u9009\u62e9\u914d\u7f6e\u6587\u4ef6\uff0c\u6ca1\u6709\u66b4\u9732\u540c\u540d Launch \u53c2\u6570\u3002\u4fee\u6539\u914d\u7f6e\u540e\u91cd\u542f\u9a71\u52a8\u3002<\/p>\n<h3 id=\"2-3-%e6%8a%95%e6%94%be%e8%a3%85%e7%bd%ae%e8%bf%9e%e6%8e%a5\">2.3 \u6295\u653e\u88c5\u7f6e\u8fde\u63a5<\/h3>\n<p>\u5206\u7535\u677f\u5185\u7f6e USB Hub \u7684\u53e6\u4e00\u4e2a\u4e0b\u6e38\u7aef\u53e3\u901a\u8fc7<strong>\u677f\u5185 USB \u8d70\u7ebf<\/strong>\u8fde\u63a5 CH340 USB \u8f6c\u4e32\u53e3\u82af\u7247\uff0cCH340 \u518d\u901a\u8fc7<strong>\u677f\u5185\u4e32\u53e3\u8d70\u7ebf<\/strong>\u4e0e ATmega328P \u4e0b\u4f4d\u673a\u901a\u4fe1\u3002\u4e0b\u4f4d\u673a\u901a\u8fc7 PWM \u63a7\u5236\u6295\u653e\u88c5\u7f6e\u8235\u673a\u3002<\/p>\n<p>\u6295\u653e\u88c5\u7f6e\u4e0e\u98de\u63a7\u5171\u7528\u5206\u7535\u677f\u5f15\u51fa\u7684 USB-A \u4e0a\u6e38\u8fde\u63a5\u3002\u5b98\u65b9\u914d\u7f6e\u4e2d\uff0cCH340 \u5bf9\u5e94 <code>\/dev\/ttyUSB0<\/code>\uff0c\u98de\u63a7\u5bf9\u5e94 <code>\/dev\/ttyACM0<\/code>\u3002\u6295\u653e\u88c5\u7f6e\u7684 ROS \u63a5\u53e3\u89c1 6.3 \u8282\u3002<\/p>\n<p>\u591a\u4e2a USB \u4e32\u53e3\u7684\u7f16\u53f7\u53ef\u80fd\u968f\u679a\u4e3e\u987a\u5e8f\u53d8\u5316\u3002\u8bbe\u5907\u8eab\u4efd\u53ef\u901a\u8fc7 <code>\/dev\/serial\/by-id\/<\/code> \u6216\u5df2\u6709\u7684 udev \u522b\u540d\u533a\u5206\u3002<\/p>\n<h3 id=\"2-4-%e5%b7%a5%e4%bd%9c%e5%8c%ba%e4%b8%8e%e8%bd%af%e4%bb%b6%e5%8c%85%e4%bd%8d%e7%bd%ae\">2.4 \u5de5\u4f5c\u533a\u4e0e\u8f6f\u4ef6\u5305\u4f4d\u7f6e<\/h3>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u4e0a\u4f4d\u673a\u8def\u5f84<\/th>\n<th>\u5185\u5bb9<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\/home\/jetson\/ros_libraries_ws\/<\/code><\/td>\n<td>\u5916\u90e8 ROS \u4f9d\u8d56\uff0c\u5982 Livox \u9a71\u52a8\u3001FAST-LIO<\/td>\n<\/tr>\n<tr>\n<td><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_basic\/<\/code><\/td>\n<td>MAVROS \u8fde\u63a5\u3001\u57fa\u7840\u98de\u884c\u793a\u4f8b<\/td>\n<\/tr>\n<tr>\n<td><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_navigation\/<\/code><\/td>\n<td>\u6fc0\u5149\u5b9a\u4f4d\u3001\u4f4d\u59ff\u8f6c\u53d1\u76f8\u5173\u914d\u7f6e\u4e0e\u8282\u70b9<\/td>\n<\/tr>\n<tr>\n<td><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_catapult\/<\/code><\/td>\n<td>\u6295\u653e\u88c5\u7f6e\u9a71\u52a8\u4e0e\u56fa\u4ef6\u8d44\u6599<\/td>\n<\/tr>\n<tr>\n<td><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_all\/<\/code><\/td>\n<td>\u7efc\u5408\u4efb\u52a1\u793a\u4f8b<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u5de5\u4f5c\u533a\u73af\u5883\u52a0\u8f7d\u987a\u5e8f\uff1a<\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">source \/opt\/ros\/noetic\/setup.bash\nsource \/home\/jetson\/ros_libraries_ws\/devel\/setup.bash\nsource \/home\/jetson\/catkin_ws\/devel\/setup.bash\n<\/code><\/pre>\n<hr>\n<h2 id=\"quickstart\">3. \u57fa\u7840\u670d\u52a1\u4e0e\u72b6\u6001\u8bfb\u53d6<\/h2>\n<h3 id=\"3-1-%e5%90%af%e5%8a%a8%e5%9f%ba%e7%a1%80%e6%9c%8d%e5%8a%a1\">3.1 \u542f\u52a8\u57fa\u7840\u670d\u52a1<\/h3>\n<p>\u5404\u7ec8\u7aef\u52a0\u8f7d 2.4 \u8282\u7684\u5de5\u4f5c\u533a\u73af\u5883\u540e\uff0c\u5206\u522b\u542f\u52a8\u4ee5\u4e0b\u670d\u52a1\u3002\u5df2\u7531\u7cfb\u7edf\u542f\u52a8\u7684\u670d\u52a1\u6cbf\u7528\u73b0\u6709\u5b9e\u4f8b\u3002<\/p>\n<p><strong>\u7ec8\u7aef A\uff1aROS Master\u3002<\/strong><\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">roscore\n<\/code><\/pre>\n<p><strong>\u7ec8\u7aef B\uff1a\u98de\u63a7\u901a\u4fe1\u3002<\/strong><\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">roslaunch tutorial_basic mavros.launch\n<\/code><\/pre>\n<p><strong>\u7ec8\u7aef C\uff1a\u96f7\u8fbe\u9a71\u52a8\u3002<\/strong><\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">roslaunch livox_ros_driver2 msg_MID360.launch\n<\/code><\/pre>\n<p>\u4e0a\u8ff0\u5165\u53e3\u5bf9\u5e94 MID-360\uff1bMID-360s \u7684\u5165\u53e3\u53ca\u5176\u52a0\u8f7d\u7684 JSON \u6309\u4ea4\u4ed8\u9a71\u52a8\u914d\u7f6e\u9009\u62e9\u3002<\/p>\n<p><strong>\u7ec8\u7aef D\uff1a\u6fc0\u5149\u5b9a\u4f4d\u3002<\/strong><\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">roslaunch tutorial_navigation mapping_mid360.launch rviz:=false\n<\/code><\/pre>\n<p>\u6b64\u5165\u53e3\u4f1a\u52a0\u8f7d <code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_navigation\/config\/mid360.yaml<\/code>\uff0c\u542f\u52a8 <code>fast_lio<\/code> \u5305\u4e2d\u7684 <code>fastlio_mapping<\/code>\uff0c\u8282\u70b9\u540d\u4e3a <code>\/laserMapping<\/code>\u3002<\/p>\n<p><strong>\u7ec8\u7aef E\uff1a\u5916\u90e8\u4f4d\u59ff\u8f6c\u53d1\u3002<\/strong><\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">rosrun tutorial_navigation odom_forward_node\n<\/code><\/pre>\n<p>\u8be5\u8282\u70b9\u9ed8\u8ba4\u8ba2\u9605 <code>Odometry<\/code>\uff0c\u53d1\u5e03\u5230 <code>mavros\/vision_pose\/pose<\/code>\uff0c\u63a5\u53e3\u4e0e\u53c2\u6570\u89c1 7.3 \u8282\u3002<\/p>\n<h3 id=\"3-2-%e8%af%bb%e5%8f%96%e9%a3%9e%e6%9c%ba%e4%b8%8e%e4%bc%a0%e6%84%9f%e5%99%a8%e7%8a%b6%e6%80%81\">3.2 \u8bfb\u53d6\u98de\u673a\u4e0e\u4f20\u611f\u5668\u72b6\u6001<\/h3>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">rosnode list\nrostopic echo -n 1 \/mavros\/state\nrostopic hz \/livox\/lidar\nrostopic hz \/livox\/imu\n<\/code><\/pre>\n<p>\u4f4d\u59ff\u6570\u636e\uff1a<\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">rostopic echo -n 1 \/Odometry\/header\nrostopic echo -n 1 \/Odometry\/pose\/pose\nrostopic echo -n 1 \/mavros\/vision_pose\/pose\/header\nrostopic echo -n 1 \/mavros\/local_position\/pose\n<\/code><\/pre>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u63a5\u53e3<\/th>\n<th>\u6570\u636e\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\/mavros\/state<\/code><\/td>\n<td>\u98de\u63a7\u8fde\u63a5\u3001\u98de\u884c\u6a21\u5f0f\u53ca\u89e3\u9501\u72b6\u6001<\/td>\n<\/tr>\n<tr>\n<td><code>\/livox\/lidar<\/code>\u3001<code>\/livox\/imu<\/code><\/td>\n<td>\u96f7\u8fbe\u70b9\u4e91\u4e0e\u60ef\u6027\u6d4b\u91cf<\/td>\n<\/tr>\n<tr>\n<td><code>\/Odometry<\/code><\/td>\n<td>FAST-LIO \u7684\u5c40\u90e8\u8fd0\u52a8\u4f30\u8ba1<\/td>\n<\/tr>\n<tr>\n<td><code>\/mavros\/vision_pose\/pose<\/code><\/td>\n<td>\u53d1\u9001\u7ed9\u98de\u63a7\u7684\u5916\u90e8\u4f4d\u59ff\u6d4b\u91cf<\/td>\n<\/tr>\n<tr>\n<td><code>\/mavros\/local_position\/pose<\/code><\/td>\n<td>\u98de\u63a7\u878d\u5408\u540e\u7684\u5c40\u90e8\u4f4d\u59ff<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u67e5\u770b\u70b9\u4e91\u53ef\u8fd0\u884c <code>rviz<\/code>\uff0c\u6dfb\u52a0 <code>PointCloud2<\/code> \u663e\u793a\uff0c\u9009\u62e9 <code>\/cloud_registered<\/code>\u3002Fixed Frame \u4f7f\u7528\u8be5\u6d88\u606f\u7684 <code>header.frame_id<\/code>\uff0c\u5f53\u524d FAST-LIO \u8f93\u51fa\u4e3a <code>camera_init<\/code>\u3002<\/p>\n<h3 id=\"3-3-%e5%9f%ba%e7%a1%80%e9%a3%9e%e8%a1%8c%e4%b8%ad%e7%9a%84%e6%8e%a5%e5%8f%a3%e5%88%86%e5%b7%a5\">3.3 \u57fa\u7840\u98de\u884c\u4e2d\u7684\u63a5\u53e3\u5206\u5de5<\/h3>\n<p>\u8d77\u98de\u3001\u60ac\u505c\u548c\u964d\u843d\u6d41\u7a0b\u6d89\u53ca\u4ee5\u4e0b\u63a5\u53e3\uff1a<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u9636\u6bb5<\/th>\n<th>\u63a5\u53e3<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u8bfb\u53d6\u8fde\u63a5\u548c\u98de\u884c\u72b6\u6001<\/td>\n<td><code>\/mavros\/state<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u83b7\u53d6\u5f53\u524d\u5c40\u90e8\u4f4d\u59ff<\/td>\n<td><code>\/mavros\/local_position\/pose<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u8bf7\u6c42 OFFBOARD \u6216 AUTO.LAND<\/td>\n<td><code>\/mavros\/set_mode<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u8bf7\u6c42\u89e3\u9501\/\u4e0a\u9501<\/td>\n<td><code>\/mavros\/cmd\/arming<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u6301\u7eed\u53d1\u9001\u4f4d\u7f6e\u76ee\u6807<\/td>\n<td><code>\/mavros\/setpoint_position\/local<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u6301\u7eed\u53d1\u9001\u901f\u5ea6\u76ee\u6807<\/td>\n<td><code>\/mavros\/setpoint_velocity\/cmd_vel<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u5bf9\u5e94\u793a\u4f8b\u6587\u4ef6\u4e3a <code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_basic\/src\/takeoff_node.cpp<\/code>\u3002\u8be5\u6587\u4ef6\u4f7f\u7528\u901f\u5ea6\u63a5\u53e3\u6267\u884c\u8d77\u98de\u3001\u60ac\u505c\u548c\u4e0b\u964d\uff0c\u5e76\u8c03\u7528\u6a21\u5f0f\u4e0e\u89e3\u9501\u670d\u52a1\u3002\u5b8c\u6574\u63a5\u53e3\u5b9a\u4e49\u89c1\u7b2c 5 \u7ae0\u3002<\/p>\n<hr>\n<h2 id=\"conventions\">4. \u5f00\u53d1\u57fa\u7840\u7ea6\u5b9a<\/h2>\n<h3 id=\"4-1-%e5%9d%90%e6%a0%87%e7%b3%bb%e3%80%81%e5%8d%95%e4%bd%8d%e4%b8%8e%e5%a7%bf%e6%80%81%e8%a1%a8%e7%a4%ba\">4.1 \u5750\u6807\u7cfb\u3001\u5355\u4f4d\u4e0e\u59ff\u6001\u8868\u793a<\/h3>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u7ea6\u5b9a<\/th>\n<th>\u8f74\u5411\/\u5355\u4f4d<\/th>\n<th>\u63a5\u53e3\u8bf4\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>ROS \u5c40\u90e8 ENU<\/td>\n<td>X \u4e1c\u3001Y \u5317\u3001Z \u4e0a\uff1bm<\/td>\n<td>\u5c40\u90e8\u5efa\u56fe\u7684\u521d\u59cb\u5316\u671d\u5411\u53ca\u5176\u4e0e\u98de\u63a7\u53c2\u8003\u7684\u5173\u7cfb\u7531\u5b9a\u4f4d\u914d\u7f6e\u786e\u5b9a<\/td>\n<\/tr>\n<tr>\n<td>ROS \u673a\u4f53 FLU<\/td>\n<td>X \u524d\u3001Y \u5de6\u3001Z \u4e0a<\/td>\n<td>\u673a\u4f53\u53c2\u8003\u4e0b\u7684\u8fd0\u52a8\u91cf<\/td>\n<\/tr>\n<tr>\n<td>\u98de\u63a7 NED<\/td>\n<td>X \u5317\u3001Y \u4e1c\u3001Z \u4e0b<\/td>\n<td>MAVROS \u5e38\u89c4\u63a5\u53e3\u5904\u7406\u5bf9\u5e94\u8f6c\u6362<\/td>\n<\/tr>\n<tr>\n<td>\u98de\u63a7\u673a\u4f53 FRD<\/td>\n<td>X \u524d\u3001Y \u53f3\u3001Z \u4e0b<\/td>\n<td>\u4e0e ROS \u673a\u4f53 FLU \u7684\u8f74\u5411\u7ea6\u5b9a\u4e0d\u540c<\/td>\n<\/tr>\n<tr>\n<td>\u7ebf\u901f\u5ea6\/\u52a0\u901f\u5ea6<\/td>\n<td>m\/s\u3001m\/s\u00b2<\/td>\n<td>\u98de\u884c\u63a7\u5236\u63a5\u53e3\u7684\u5355\u4f4d<\/td>\n<\/tr>\n<tr>\n<td>\u822a\u5411\/\u89d2\u901f\u5ea6<\/td>\n<td>rad\u3001rad\/s<\/td>\n<td>\u8235\u673a\u89d2\u5ea6\u53c2\u6570\u53e6\u4ee5\u5ea6\u8868\u793a<\/td>\n<\/tr>\n<tr>\n<td>\u59ff\u6001<\/td>\n<td>\u56db\u5143\u6570 <code>x,y,z,w<\/code><\/td>\n<td>\u65e0\u65cb\u8f6c\u4e3a <code>(0,0,0,1)<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u5bf9 ROS 1 MAVROS \u5e38\u89c4\u5c40\u90e8\u4f4d\u7f6e\/\u901f\u5ea6\u63a5\u53e3\uff0c\u5e94\u7528\u4fa7\u4f7f\u7528 ROS \u5750\u6807\u7ea6\u5b9a\uff0c\u7531\u63d2\u4ef6\u8fdb\u884c ENU\/NED \u8f6c\u6362\u3002\u539f\u59cb\u8bbe\u5b9a\u503c\u63a5\u53e3\u7684\u8f6c\u6362\u884c\u4e3a\u89c1 5.4 \u8282\u3002<\/p>\n<h3 id=\"4-2-%e6%97%b6%e9%97%b4%e4%b8%8e%e9%a2%91%e7%8e%87\">4.2 \u65f6\u95f4\u4e0e\u9891\u7387<\/h3>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u6570\u636e\/\u5faa\u73af<\/th>\n<th>\u65f6\u95f4\u6216\u9891\u7387\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u6d88\u606f <code>header.stamp<\/code><\/td>\n<td>\u5bf9\u5e94\u6d88\u606f\u7684\u65f6\u95f4\u6233<\/td>\n<\/tr>\n<tr>\n<td>Livox \u9010\u70b9\u65f6\u95f4<\/td>\n<td>\u76f8\u5bf9\u4e8e\u70b9\u4e91\u65f6\u95f4\u57fa\u51c6\u7684\u504f\u79fb\uff0c\u4f9b\u8fd0\u52a8\u53bb\u7578\u53d8\u7b49\u5904\u7406\u4f7f\u7528<\/td>\n<\/tr>\n<tr>\n<td>MID-360 Launch \u7684 <code>publish_freq<\/code><\/td>\n<td>\u5f53\u524d\u70b9\u4e91\u53d1\u5e03\u53c2\u6570\u4e3a <code>10.0 Hz<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u57fa\u7840 C++ \u63a7\u5236\u793a\u4f8b<\/td>\n<td>\u63a7\u5236\u5faa\u73af\u4e3a <code>20 Hz<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u5916\u90e8\u4f4d\u59ff\u8f6c\u53d1<\/td>\n<td>\u7531\u8f93\u5165 <code>\/Odometry<\/code> \u6d88\u606f\u89e6\u53d1\u53d1\u5e03\uff0c\u4fdd\u7559\u8f93\u5165 Header<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u4f20\u611f\u5668\u91c7\u6837\u3001\u70b9\u4e91\u6253\u5305\u3001\u91cc\u7a0b\u8ba1\u66f4\u65b0\u548c\u63a7\u5236\u53d1\u9001\u5206\u522b\u5177\u6709\u81ea\u5df1\u7684\u9891\u7387\u3002\u591a\u8def\u6570\u636e\u7684\u65f6\u95f4\u5bf9\u5e94\u5173\u7cfb\u7531\u8bbe\u5907\u65f6\u949f\u3001\u9a71\u52a8\u65f6\u95f4\u6233\u53ca\u540c\u6b65\u914d\u7f6e\u5171\u540c\u51b3\u5b9a\u3002<\/p>\n<h3 id=\"4-3-%e5%91%bd%e5%90%8d%e7%a9%ba%e9%97%b4%e4%b8%8e-tf-%e7%ba%a6%e5%ae%9a\">4.3 \u547d\u540d\u7a7a\u95f4\u4e0e TF \u7ea6\u5b9a<\/h3>\n<p>\u672c\u6587\u4ee5\u5355\u673a\u3001\u6839\u547d\u540d\u7a7a\u95f4\u4e3a\u4f8b\uff0c\u4f8b\u5982 <code>\/mavros\/state<\/code>\u3002ROS \u540d\u79f0\u533a\u5206\u5927\u5c0f\u5199\uff0c<code>\/Odometry<\/code> \u4e0e <code>\/odometry<\/code> \u4e0d\u76f8\u540c\u3002ROS \u76f8\u5bf9\u540d\u79f0\u53d7\u8282\u70b9\u547d\u540d\u7a7a\u95f4\u5f71\u54cd\u3002<\/p>\n<p>\u5f53\u524d\u76f8\u5173\u5e27\u540d\uff1a<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u5e27<\/th>\n<th>\u6765\u6e90\/\u7528\u9014<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>livox_frame<\/code><\/td>\n<td>\u968f\u9644 Livox Launch \u7684\u9ed8\u8ba4\u6d88\u606f\u5e27\u540d<\/td>\n<\/tr>\n<tr>\n<td><code>camera_init<\/code><\/td>\n<td>FAST-LIO \u8f93\u51fa\u7684\u5c40\u90e8\u53c2\u8003\u5e27<\/td>\n<\/tr>\n<tr>\n<td><code>body<\/code><\/td>\n<td>FAST-LIO \u72b6\u6001\u6240\u63cf\u8ff0\u7684\u8fd0\u52a8\u4e3b\u4f53\u5e27<\/td>\n<\/tr>\n<tr>\n<td><code>base_link<\/code><\/td>\n<td>ROS \u673a\u4f53\u53c2\u8003\u5e27<\/td>\n<\/tr>\n<tr>\n<td><code>map<\/code>\u3001<code>odom<\/code><\/td>\n<td>\u5e94\u7528\u4f7f\u7528\u7684\u53c2\u8003\u5e27<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>FAST-LIO \u53d1\u5e03\u52a8\u6001\u53d8\u6362 <code>camera_init \u2192 body<\/code>\u3002<code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_navigation\/launch\/mid360.launch<\/code> \u4e2d\u914d\u7f6e\u4e86 <code>map \u2192 odom \u2192 camera_init<\/code> \u548c <code>body \u2192 base_link<\/code> \u7684\u5355\u4f4d\u9759\u6001\u53d8\u6362\uff0c\u8868\u793a\u8fd9\u4e9b\u5e27\u5728\u8be5\u914d\u7f6e\u4e0b\u91cd\u5408\u3002<\/p>\n<p><code>header.frame_id<\/code> \u662f\u5e27\u6807\u7b7e\uff1b\u5750\u6807\u8f6c\u6362\u9700\u8981\u540c\u65f6\u8ba1\u7b97\u4f4d\u7f6e\u548c\u59ff\u6001\u3002\u5f53\u524d\u4f4d\u59ff\u8f6c\u53d1\u8282\u70b9\u7684\u5b57\u6bb5\u5904\u7406\u65b9\u5f0f\u89c1 7.3 \u8282\u3002<\/p>\n<h3 id=\"4-4-%e5%8f%82%e6%95%b0%e4%b8%8e%e9%85%8d%e7%bd%ae%e4%bd%8d%e7%bd%ae\">4.4 \u53c2\u6570\u4e0e\u914d\u7f6e\u4f4d\u7f6e<\/h3>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u914d\u7f6e\u7c7b\u578b<\/th>\n<th>\u4f7f\u7528\u65b9\u5f0f<\/th>\n<th>\u751f\u6548\u8303\u56f4<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Launch \u53c2\u6570<\/td>\n<td><code>roslaunch ... \u53c2\u6570:=\u503c<\/code><\/td>\n<td>Launch \u58f0\u660e\u5e76\u4f20\u9012\u7ed9\u8282\u70b9\u7684\u53c2\u6570<\/td>\n<\/tr>\n<tr>\n<td>ROS \u53c2\u6570<\/td>\n<td><code>rosparam get\/set<\/code><\/td>\n<td>\u662f\u5426\u52a8\u6001\u8bfb\u53d6\u7531\u8282\u70b9\u5b9e\u73b0\u51b3\u5b9a<\/td>\n<\/tr>\n<tr>\n<td>YAML\/JSON<\/td>\n<td>\u7531 Launch \u6216\u9a71\u52a8\u52a0\u8f7d<\/td>\n<td>\u53c2\u6570\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7684\u914d\u7f6e<\/td>\n<\/tr>\n<tr>\n<td>\u8282\u70b9\u79c1\u6709\u53c2\u6570<\/td>\n<td><code>~\u53c2\u6570\u540d<\/code>\uff1b<code>rosrun<\/code> \u53ef\u7528 <code>_\u53c2\u6570:=\u503c<\/code><\/td>\n<td>\u5b9e\u9645\u8def\u5f84\u968f\u8282\u70b9\u540d\u53d8\u5316<\/td>\n<\/tr>\n<tr>\n<td>\u98de\u63a7\u53c2\u6570<\/td>\n<td>\u5730\u9762\u7ad9\/\u98de\u63a7\u53c2\u6570\u63a5\u53e3<\/td>\n<td>\u98de\u63a7\u5185\u90e8\u914d\u7f6e<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_basic\/launch\/run_vel_control.launch<\/code> \u4e2d\u7684\u8282\u70b9\u540d\u662f <code>takeoff_node<\/code>\uff0c\u5176 <code>hover_x<\/code> \u7b49\u79c1\u6709\u53c2\u6570\u4f4d\u4e8e\u8be5\u8282\u70b9\u540d\u4e0b\u3002<\/p>\n<p><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_basic\/launch\/mavros.launch<\/code> \u5305\u542b MAVROS \u7684 <code>px4.launch<\/code>\uff0c\u672a\u663e\u5f0f\u52a0\u8f7d <code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_basic\/config\/px4_config.yaml<\/code>\u3002\u8fd0\u884c\u914d\u7f6e\u7531\u5b9e\u9645 Launch \u5305\u542b\u5173\u7cfb\u51b3\u5b9a\u3002<\/p>\n<hr>\n<h2 id=\"flight-api\">5. \u98de\u884c\u63a7\u5236\u63a5\u53e3\u53c2\u8003<\/h2>\n<h3 id=\"5-1-%e6%8e%a5%e5%8f%a3%e6%80%bb%e8%a7%88%e4%b8%8e%e6%a0%b7%e4%be%8b%e6%96%87%e4%bb%b6\">5.1 \u63a5\u53e3\u603b\u89c8\u4e0e\u6837\u4f8b\u6587\u4ef6<\/h3>\n<p>\u4e0b\u8868\u65b9\u5411\u4ee5\u5e94\u7528\u7a0b\u5e8f\u4e3a\u53c2\u7167\u3002\u201c\u6837\u4f8b\u6587\u4ef6\u201d\u5217\u7ed9\u51fa\u4f7f\u7528\u8be5\u63a5\u53e3\u7684\u4ee3\u8868\u6027\u6587\u4ef6\uff1b\u5b8c\u6574\u6587\u4ef6\u4f4d\u7f6e\u5217\u5728\u8868\u540e\u3002<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u63a5\u53e3<\/th>\n<th>\u7c7b\u578b<\/th>\n<th>\u5e94\u7528\u4fa7\u65b9\u5411<\/th>\n<th>\u7528\u9014<\/th>\n<th>\u6837\u4f8b\u6587\u4ef6<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\/mavros\/state<\/code><\/td>\n<td><code>mavros_msgs\/State<\/code><\/td>\n<td>\u8ba2\u9605<\/td>\n<td>\u8fde\u63a5\u3001\u6a21\u5f0f\u3001\u89e3\u9501\u72b6\u6001<\/td>\n<td><code>takeoff_node.cpp<\/code>\u3001<code>vel_control_node.cpp<\/code>\u3001<code>circle_node.cpp<\/code>\u3001<code>fly_path.py<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>\/mavros\/local_position\/pose<\/code><\/td>\n<td><code>geometry_msgs\/PoseStamped<\/code><\/td>\n<td>\u8ba2\u9605<\/td>\n<td>\u98de\u63a7\u5c40\u90e8\u4f4d\u59ff<\/td>\n<td><code>takeoff_node.cpp<\/code>\u3001<code>vel_control_node.cpp<\/code>\u3001<code>circle_node.cpp<\/code>\u3001<code>fly_path.py<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>\/mavros\/local_position\/odom<\/code><\/td>\n<td><code>nav_msgs\/Odometry<\/code><\/td>\n<td>\u8ba2\u9605<\/td>\n<td>\u98de\u63a7\u5c40\u90e8\u91cc\u7a0b\u8ba1<\/td>\n<td><code>ego_planner.launch<\/code> \u4e2d\u914d\u7f6e\u4e86\u8be5\u8f93\u5165<\/td>\n<\/tr>\n<tr>\n<td><code>\/mavros\/local_position\/velocity_local<\/code><\/td>\n<td><code>geometry_msgs\/TwistStamped<\/code><\/td>\n<td>\u8ba2\u9605<\/td>\n<td>\u5c40\u90e8\u53c2\u8003\u4e0b\u7684\u901f\u5ea6<\/td>\n<td>\u5f53\u524d\u6837\u4f8b\u672a\u76f4\u63a5\u8bfb\u53d6<\/td>\n<\/tr>\n<tr>\n<td><code>\/mavros\/battery<\/code><\/td>\n<td><code>sensor_msgs\/BatteryState<\/code><\/td>\n<td>\u8ba2\u9605<\/td>\n<td>\u7535\u6c60\u4fe1\u606f<\/td>\n<td>\u5f53\u524d\u6837\u4f8b\u672a\u76f4\u63a5\u8bfb\u53d6<\/td>\n<\/tr>\n<tr>\n<td><code>\/mavros\/extended_state<\/code><\/td>\n<td><code>mavros_msgs\/ExtendedState<\/code><\/td>\n<td>\u8ba2\u9605<\/td>\n<td>\u5305\u62ec\u7740\u9646\u72b6\u6001\u7684\u6269\u5c55\u72b6\u6001<\/td>\n<td>\u5f53\u524d\u6837\u4f8b\u672a\u76f4\u63a5\u8bfb\u53d6<\/td>\n<\/tr>\n<tr>\n<td><code>\/mavros\/setpoint_position\/local<\/code><\/td>\n<td><code>geometry_msgs\/PoseStamped<\/code><\/td>\n<td>\u53d1\u5e03<\/td>\n<td>\u4f4d\u7f6e\u4e0e\u822a\u5411\u8bbe\u5b9a\u503c<\/td>\n<td><code>fly_path.py<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>\/mavros\/setpoint_velocity\/cmd_vel<\/code><\/td>\n<td><code>geometry_msgs\/TwistStamped<\/code><\/td>\n<td>\u53d1\u5e03<\/td>\n<td>\u901f\u5ea6\u4e0e\u504f\u822a\u89d2\u901f\u5ea6\u8bbe\u5b9a\u503c<\/td>\n<td><code>takeoff_node.cpp<\/code>\u3001<code>vel_control_node.cpp<\/code>\u3001<code>circle_node.cpp<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>\/mavros\/setpoint_raw\/local<\/code><\/td>\n<td><code>mavros_msgs\/PositionTarget<\/code><\/td>\n<td>\u53d1\u5e03<\/td>\n<td>\u6309\u63a9\u7801\u7ec4\u5408\u7684\u539f\u59cb\u5c40\u90e8\u8bbe\u5b9a\u503c<\/td>\n<td><code>ego_planner_gate.py<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>\/mavros\/vision_pose\/pose<\/code><\/td>\n<td><code>geometry_msgs\/PoseStamped<\/code><\/td>\n<td>\u53d1\u5e03<\/td>\n<td>\u5916\u90e8\u4f4d\u59ff\u8f93\u5165<\/td>\n<td><code>odom_forward_node.cpp<\/code>\uff1b<code>fly_path.py<\/code> \u4e2d\u4e5f\u8ba2\u9605\u4e86\u8be5\u63a5\u53e3<\/td>\n<\/tr>\n<tr>\n<td><code>\/mavros\/set_mode<\/code><\/td>\n<td><code>mavros_msgs\/SetMode<\/code><\/td>\n<td>\u8c03\u7528\u670d\u52a1<\/td>\n<td>\u8bf7\u6c42\u98de\u884c\u6a21\u5f0f<\/td>\n<td><code>takeoff_node.cpp<\/code>\u3001<code>vel_control_node.cpp<\/code>\u3001<code>circle_node.cpp<\/code>\u3001<code>fly_path.py<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>\/mavros\/cmd\/arming<\/code><\/td>\n<td><code>mavros_msgs\/CommandBool<\/code><\/td>\n<td>\u8c03\u7528\u670d\u52a1<\/td>\n<td>\u8bf7\u6c42\u89e3\u9501\u6216\u4e0a\u9501<\/td>\n<td><code>takeoff_node.cpp<\/code>\u3001<code>vel_control_node.cpp<\/code>\u3001<code>circle_node.cpp<\/code>\u3001<code>fly_path.py<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>\u6837\u4f8b\u6587\u4ef6\u4f4d\u7f6e\uff1a<\/strong><\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u6587\u4ef6<\/th>\n<th>\u4e0a\u4f4d\u673a\u7edd\u5bf9\u8def\u5f84<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>takeoff_node.cpp<\/code><\/td>\n<td><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_basic\/src\/takeoff_node.cpp<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>vel_control_node.cpp<\/code><\/td>\n<td><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_basic\/src\/vel_control_node.cpp<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>circle_node.cpp<\/code><\/td>\n<td><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_basic\/src\/circle_node.cpp<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>fly_path.py<\/code><\/td>\n<td><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_basic\/scripts\/fly_path.py<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>odom_forward_node.cpp<\/code><\/td>\n<td><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_navigation\/src\/odom_forward_node.cpp<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>ego_planner_gate.py<\/code><\/td>\n<td><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_navigation\/scripts\/ego_planner_gate.py<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>ego_planner.launch<\/code><\/td>\n<td><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_navigation\/launch\/ego_planner.launch<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u4ee5\u4e0a\u53ea\u7d22\u5f15\u63a5\u53e3\u7684\u4f7f\u7528\u6587\u4ef6\uff0c\u4e0d\u5c55\u5f00\u4efb\u52a1\u7a0b\u5e8f\u7684\u5185\u90e8\u6d41\u7a0b\u3002<\/p>\n<h3 id=\"5-2-%e7%8a%b6%e6%80%81%e4%b8%8e%e9%81%a5%e6%b5%8b\">5.2 \u72b6\u6001\u4e0e\u9065\u6d4b<\/h3>\n<h4 id=\"mavros-state\"><code>\/mavros\/state<\/code><\/h4>\n<p>\u6d88\u606f\u7c7b\u578b\uff1a<code>mavros_msgs\/State<\/code>\u3002<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u5b57\u6bb5<\/th>\n<th>\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>connected<\/code><\/td>\n<td>MAVROS \u4e0e FCU \u7684\u8fde\u63a5\u72b6\u6001<\/td>\n<\/tr>\n<tr>\n<td><code>armed<\/code><\/td>\n<td>\u98de\u63a7\u89e3\u9501\u72b6\u6001<\/td>\n<\/tr>\n<tr>\n<td><code>mode<\/code><\/td>\n<td>\u5f53\u524d\u98de\u884c\u6a21\u5f0f\u5b57\u7b26\u4e32<\/td>\n<\/tr>\n<tr>\n<td><code>system_status<\/code><\/td>\n<td>MAVLink \u7cfb\u7edf\u72b6\u6001\u503c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u6837\u4f8b\u6587\u4ef6\uff1a<code>takeoff_node.cpp<\/code>\u3001<code>vel_control_node.cpp<\/code>\u3001<code>circle_node.cpp<\/code>\u3001<code>fly_path.py<\/code>\u3002<\/p>\n<h4 id=\"%e5%b1%80%e9%83%a8%e4%bd%8d%e5%a7%bf%e4%b8%8e%e9%80%9f%e5%ba%a6\">\u5c40\u90e8\u4f4d\u59ff\u4e0e\u901f\u5ea6<\/h4>\n<ul>\n<li><code>header.stamp<\/code> \u662f\u6570\u636e\u65f6\u95f4\u6233\uff0c<code>header.frame_id<\/code> \u63cf\u8ff0\u53c2\u8003\u5e27\u3002<\/li>\n<li><code>PoseStamped.pose.position<\/code> \u5355\u4f4d\u4e3a m\uff0c\u59ff\u6001\u4e3a\u56db\u5143\u6570\u3002<\/li>\n<li><code>Odometry<\/code> \u7684\u4f4d\u59ff\u53c2\u8003 <code>header.frame_id<\/code>\uff0c\u901f\u5ea6\u53c2\u8003 <code>child_frame_id<\/code>\u3002<\/li>\n<li><code>TwistStamped.twist.linear<\/code> \u5355\u4f4d\u4e3a m\/s\uff0c<code>twist.angular<\/code> \u5355\u4f4d\u4e3a rad\/s\u3002<\/li>\n<\/ul>\n<p><code>vel_control_node.cpp<\/code> \u4f7f\u7528 <code>\/mavros\/local_position\/pose<\/code> \u83b7\u53d6\u5f53\u524d\u4f4d\u7f6e\uff0c\u5e76\u4f9d\u636e\u4f4d\u7f6e\u8bef\u5dee\u8ba1\u7b97\u901f\u5ea6\u8bbe\u5b9a\u503c\u3002<\/p>\n<h4 id=\"%e7%94%b5%e6%b1%a0%e4%b8%8e%e7%9d%80%e9%99%86%e7%8a%b6%e6%80%81\">\u7535\u6c60\u4e0e\u7740\u9646\u72b6\u6001<\/h4>\n<p><code>BatteryState.voltage<\/code> \u5355\u4f4d\u4e3a V\uff1b\u82e5\u6709\u6709\u6548\u7684 <code>percentage<\/code>\uff0c\u5176\u8303\u56f4\u901a\u5e38\u4e3a 0\uff5e1\u3002<\/p>\n<p><code>\/mavros\/extended_state<\/code> \u4f7f\u7528 <code>mavros_msgs\/ExtendedState<\/code>\uff0c\u5176\u4e2d <code>landed_state<\/code> \u8868\u793a\u98de\u63a7\u62a5\u544a\u7684\u7740\u9646\u72b6\u6001\u3002<\/p>\n<h3 id=\"5-3-%e6%a8%a1%e5%bc%8f%e5%88%87%e6%8d%a2%e4%b8%8e%e8%a7%a3%e9%94%81-%e4%b8%8a%e9%94%81\">5.3 \u6a21\u5f0f\u5207\u6362\u4e0e\u89e3\u9501\/\u4e0a\u9501<\/h3>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u670d\u52a1<\/th>\n<th>\u4e3b\u8981\u8bf7\u6c42\u5b57\u6bb5<\/th>\n<th>\u4e3b\u8981\u54cd\u5e94\u5b57\u6bb5<\/th>\n<th>\u5bf9\u5e94\u72b6\u6001\u5b57\u6bb5<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\/mavros\/set_mode<\/code><\/td>\n<td><code>base_mode<\/code>\u3001<code>custom_mode<\/code><\/td>\n<td><code>mode_sent<\/code><\/td>\n<td><code>\/mavros\/state<\/code> \u7684 <code>mode<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>\/mavros\/cmd\/arming<\/code><\/td>\n<td><code>value<\/code>\uff1a<code>true<\/code> \u89e3\u9501\uff0c<code>false<\/code> \u4e0a\u9501<\/td>\n<td><code>success<\/code>\u3001<code>result<\/code><\/td>\n<td><code>\/mavros\/state<\/code> \u7684 <code>armed<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u4f7f\u7528\u81ea\u5b9a\u4e49\u6a21\u5f0f\u5b57\u7b26\u4e32\u65f6\uff0c\u5e38\u89c1\u8bf7\u6c42\u4e3a <code>base_mode=0<\/code>\u3001<code>custom_mode=\"OFFBOARD\"<\/code>\u3002\u964d\u843d\u6a21\u5f0f\u5b57\u7b26\u4e32\u4e3a <code>AUTO.LAND<\/code>\u3002<\/p>\n<p><code>mode_sent<\/code> \u63cf\u8ff0\u6a21\u5f0f\u8bf7\u6c42\u7684\u53d1\u9001\u7ed3\u679c\uff1b\u6a21\u5f0f\u751f\u6548\u72b6\u6001\u901a\u8fc7 <code>State.mode<\/code> \u8bfb\u53d6\u3002\u89e3\u9501\u670d\u52a1\u8fd4\u56de\u8bf7\u6c42\u7ed3\u679c\uff0c\u5f53\u524d\u89e3\u9501\u72b6\u6001\u901a\u8fc7 <code>State.armed<\/code> \u8bfb\u53d6\u3002<\/p>\n<p>\u6837\u4f8b\u6587\u4ef6\uff1a<code>takeoff_node.cpp<\/code>\u3001<code>vel_control_node.cpp<\/code>\u3001<code>circle_node.cpp<\/code>\u3001<code>fly_path.py<\/code>\u3002<\/p>\n<h3 id=\"5-4-%e4%bd%8d%e7%bd%ae%e3%80%81%e9%80%9f%e5%ba%a6%e4%b8%8e%e8%88%aa%e5%90%91%e6%8e%a7%e5%88%b6\">5.4 \u4f4d\u7f6e\u3001\u901f\u5ea6\u4e0e\u822a\u5411\u63a7\u5236<\/h3>\n<h4 id=\"%e5%b1%80%e9%83%a8%e4%bd%8d%e7%bd%ae%e6%8e%a5%e5%8f%a3\">\u5c40\u90e8\u4f4d\u7f6e\u63a5\u53e3<\/h4>\n<p><code>\/mavros\/setpoint_position\/local<\/code> \u4f7f\u7528 <code>geometry_msgs\/PoseStamped<\/code>\uff1a<\/p>\n<ul>\n<li><code>position.x\/y\/z<\/code>\uff1a\u5c40\u90e8\u53c2\u8003\u4e0b\u7684\u4f4d\u7f6e\uff0c\u5355\u4f4d m\u3002<\/li>\n<li><code>orientation<\/code>\uff1a\u5305\u542b\u671f\u671b\u822a\u5411\u7684\u6709\u6548\u56db\u5143\u6570\u3002\u7eaf\u504f\u822a\u89d2 <code>\u03c8<\/code> \u53ef\u5199\u4e3a <code>(0, 0, sin(\u03c8\/2), cos(\u03c8\/2))<\/code>\u3002<\/li>\n<li><code>header.stamp<\/code>\uff1a\u5f53\u524d\u65f6\u95f4\uff0c\u968f\u8bbe\u5b9a\u503c\u66f4\u65b0\u3002<\/li>\n<\/ul>\n<p>\u8be5\u63a5\u53e3\u7528\u4e8e\u4f4d\u7f6e\u4e0e\u822a\u5411\u63a7\u5236\u3002\u5e94\u7528\u63d0\u4f9b\u5df2\u7ecf\u5904\u4e8e\u5bf9\u5e94\u53c2\u8003\u5e27\u4e0b\u7684\u6570\u636e\uff0c<code>header.frame_id<\/code> \u4ec5\u4e3a\u6d88\u606f\u5e27\u6807\u7b7e\u3002<\/p>\n<p>\u6837\u4f8b\u6587\u4ef6\uff1a<code>fly_path.py<\/code>\u3002<\/p>\n<h4 id=\"%e5%b1%80%e9%83%a8%e9%80%9f%e5%ba%a6%e6%8e%a5%e5%8f%a3\">\u5c40\u90e8\u901f\u5ea6\u63a5\u53e3<\/h4>\n<p><code>\/mavros\/setpoint_velocity\/cmd_vel<\/code> \u4f7f\u7528 <code>geometry_msgs\/TwistStamped<\/code>\uff1a<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u5b57\u6bb5<\/th>\n<th>\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>twist.linear.x\/y\/z<\/code><\/td>\n<td>\u4e09\u8f74\u7ebf\u901f\u5ea6\uff0cm\/s<\/td>\n<\/tr>\n<tr>\n<td><code>twist.angular.z<\/code><\/td>\n<td>\u504f\u822a\u89d2\u901f\u5ea6\uff0crad\/s<\/td>\n<\/tr>\n<tr>\n<td><code>twist.angular.x\/y<\/code><\/td>\n<td>\u5f53\u524d\u901f\u5ea6\u63d2\u4ef6\u4e0d\u7528\u4e8e\u6eda\u8f6c\/\u4fef\u4ef0\u63a7\u5236<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>ROS 1 MAVROS \u7684\u901f\u5ea6\u63d2\u4ef6\u6839\u636e <code>setpoint_velocity\/mav_frame<\/code> \u9009\u62e9\u5c40\u90e8\u6216\u673a\u4f53\u89e3\u91ca\u65b9\u5f0f\u3002\u5728\u9ed8\u8ba4\u5c40\u90e8\u914d\u7f6e\u4e0b\uff0c\u8f93\u5165\u4e3a ROS ENU\uff0c\u63d2\u4ef6\u8f6c\u4e3a\u98de\u63a7\u6240\u9700\u683c\u5f0f\u3002\u63d2\u4ef6\u5b9e\u73b0\u53c2\u8003 <a href=\"https:\/\/github.com\/mavlink\/mavros\/blob\/1.20.0\/mavros\/src\/plugins\/setpoint_velocity.cpp\">MAVROS \u901f\u5ea6\u63d2\u4ef6<\/a>\u3002<\/p>\n<p>\u8fd0\u884c\u53c2\u6570\u4f4d\u7f6e\uff1a<\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">rosparam get \/mavros\/setpoint_velocity\/mav_frame\n<\/code><\/pre>\n<p>\u4f8b\u5982\uff0c\u8bbe\u7f6e <code>linear.z=0.4<\/code> \u8868\u793a\u6cbf\u5f53\u524d\u5c40\u90e8\u53c2\u8003\u7684 Z \u6b63\u65b9\u5411\u53d1\u9001 <code>0.4 m\/s<\/code> \u901f\u5ea6\u76ee\u6807\uff1b\u8bbe\u7f6e <code>angular.z=0.2<\/code> \u8868\u793a\u53d1\u9001 <code>0.2 rad\/s<\/code> \u7684\u504f\u822a\u89d2\u901f\u5ea6\u76ee\u6807\u3002<\/p>\n<p>\u6837\u4f8b\u6587\u4ef6\uff1a<code>takeoff_node.cpp<\/code>\u3001<code>vel_control_node.cpp<\/code>\u3001<code>circle_node.cpp<\/code>\u3002<\/p>\n<h4 id=\"%e5%8e%9f%e5%a7%8b%e5%b1%80%e9%83%a8%e8%ae%be%e5%ae%9a%e5%80%bc%e6%8e%a5%e5%8f%a3\">\u539f\u59cb\u5c40\u90e8\u8bbe\u5b9a\u503c\u63a5\u53e3<\/h4>\n<p><code>\/mavros\/setpoint_raw\/local<\/code> \u4f7f\u7528 <code>mavros_msgs\/PositionTarget<\/code>\uff1a<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u5b57\u6bb5<\/th>\n<th>\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>coordinate_frame<\/code><\/td>\n<td>\u63a7\u5236\u91cf\u4f7f\u7528\u7684 MAVLink \u5750\u6807\u5e27\u679a\u4e3e<\/td>\n<\/tr>\n<tr>\n<td><code>type_mask<\/code><\/td>\n<td>\u6307\u5b9a\u88ab\u5ffd\u7565\u7684\u5b57\u6bb5\uff0c\u672a\u88ab\u5ffd\u7565\u7684\u5b57\u6bb5\u53c2\u4e0e\u63a7\u5236<\/td>\n<\/tr>\n<tr>\n<td><code>position<\/code><\/td>\n<td>\u4f4d\u7f6e\uff0cm<\/td>\n<\/tr>\n<tr>\n<td><code>velocity<\/code><\/td>\n<td>\u901f\u5ea6\uff0cm\/s<\/td>\n<\/tr>\n<tr>\n<td><code>acceleration_or_force<\/code><\/td>\n<td>\u52a0\u901f\u5ea6\u6216\u529b\uff0c\u89e3\u91ca\u65b9\u5f0f\u7531\u63a9\u7801\u51b3\u5b9a<\/td>\n<\/tr>\n<tr>\n<td><code>yaw<\/code><\/td>\n<td>\u822a\u5411\u89d2\uff0crad<\/td>\n<\/tr>\n<tr>\n<td><code>yaw_rate<\/code><\/td>\n<td>\u822a\u5411\u89d2\u901f\u5ea6\uff0crad\/s<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><code>type_mask=0<\/code> \u8868\u793a\u76f8\u5173\u5b57\u6bb5\u5747\u672a\u88ab\u63a9\u7801\u5ffd\u7565\u3002\u7ec4\u5408\u8bbe\u5b9a\u503c\u65f6\u6309\u6240\u9700\u63a7\u5236\u91cf\u8bbe\u7f6e\u63a9\u7801\u3002<\/p>\n<p>ROS 1 MAVROS \u5728\u5c40\u90e8\u56de\u8c03\u4e2d\u6267\u884c\u5bf9\u5e94\u7684 ENU\/NED \u8f6c\u6362\uff0c\u5177\u4f53\u884c\u4e3a\u89c1 <a href=\"https:\/\/github.com\/mavlink\/mavros\/blob\/1.20.0\/mavros\/src\/plugins\/setpoint_raw.cpp\">MAVROS \u539f\u59cb\u8bbe\u5b9a\u503c\u63d2\u4ef6<\/a>\u3002<\/p>\n<p>\u6837\u4f8b\u6587\u4ef6\uff1a<code>ego_planner_gate.py<\/code>\u3002<\/p>\n<h3 id=\"5-5-offboard-%e6%8e%a7%e5%88%b6%e6%b5%81%e7%a8%8b\">5.5 OFFBOARD \u63a7\u5236\u6d41\u7a0b<\/h3>\n<p><a href=\"https:\/\/docs.px4.io\/v1.16\/en\/flight_modes\/offboard.html\">PX4 OFFBOARD \u6587\u6863<\/a>\u7ed9\u51fa\u7684\u6a21\u5f0f\u8fdb\u5165\u6761\u4ef6\u5305\u62ec\uff1a\u8fdb\u5165\u6a21\u5f0f\u524d\u6301\u7eed\u63d0\u4f9b\u8bbe\u5b9a\u503c\u81f3\u5c11\u7ea6 1 \u79d2\uff0c\u8fd0\u884c\u671f\u95f4\u4fdd\u6301\u9ad8\u4e8e 2 Hz \u7684\u63a7\u5236\u5b58\u6d3b\u4fe1\u53f7\u3002\u5f53\u524d\u57fa\u7840 C++ \u793a\u4f8b\u91c7\u7528 20 Hz \u63a7\u5236\u5faa\u73af\u3002<\/p>\n<p><img decoding=\"async\" style=\"max-width: 100%; height: auto;\" src=\"https:\/\/docs.liuyaorobot.com\/wp-content\/uploads\/2026\/09\/offboard.png\" alt=\"OFFBOARD \u63a7\u5236\u6d41\u7a0b\"><\/p>\n<p>\u56fe\u4e2d\u7684 <code>mode<\/code> \u548c <code>armed<\/code> \u5747\u4e3a <code>\/mavros\/state<\/code> \u6d88\u606f\u7684\u5b57\u6bb5\u3002\u6a21\u5f0f\u548c\u89e3\u9501\u8bf7\u6c42\u5206\u522b\u901a\u8fc7 <code>\/mavros\/set_mode<\/code> \u4e0e <code>\/mavros\/cmd\/arming<\/code> \u53d1\u9001\uff0c\u4f4d\u7f6e\u6216\u901f\u5ea6\u76ee\u6807\u901a\u8fc7\u5bf9\u5e94\u8bbe\u5b9a\u503c Topic \u6301\u7eed\u53d1\u5e03\u3002<\/p>\n<hr>\n<h2 id=\"device-api\">6. \u4f20\u611f\u5668\u4e0e\u6295\u653e\u88c5\u7f6e\u63a5\u53e3<\/h2>\n<h3 id=\"6-1-mid-360-mid-360s%ef%bc%9a%e7%82%b9%e4%ba%91%e4%b8%8e-imu\">6.1 MID-360 \/ MID-360s\uff1a\u70b9\u4e91\u4e0e IMU<\/h3>\n<p>\u968f\u9644 MID-360 \u9a71\u52a8\u5165\u53e3\u7684\u4e3b\u8981\u914d\u7f6e\u5982\u4e0b\uff1bMID-360s \u4f7f\u7528\u5176\u914d\u5957\u5165\u53e3\u548c\u578b\u53f7\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>Launch \u53c2\u6570<\/th>\n<th>\u914d\u7f6e\u503c<\/th>\n<th>\u8bf4\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>xfer_format<\/code><\/td>\n<td><code>1<\/code><\/td>\n<td>Livox \u81ea\u5b9a\u4e49\u70b9\u4e91\u6d88\u606f\u683c\u5f0f<\/td>\n<\/tr>\n<tr>\n<td><code>multi_topic<\/code><\/td>\n<td><code>0<\/code><\/td>\n<td>\u5f53\u524d\u516c\u5171\u8bdd\u9898\u7ec4\u7ec7\u65b9\u5f0f<\/td>\n<\/tr>\n<tr>\n<td><code>publish_freq<\/code><\/td>\n<td><code>10.0<\/code><\/td>\n<td>\u70b9\u4e91\u53d1\u5e03\u9891\u7387\u53c2\u6570\uff0cHz<\/td>\n<\/tr>\n<tr>\n<td><code>msg_frame_id<\/code><\/td>\n<td><code>livox_frame<\/code><\/td>\n<td>\u70b9\u4e91\u7b49\u6d88\u606f\u4f7f\u7528\u7684\u9ed8\u8ba4\u5e27\u540d<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u4e3b\u8981\u6570\u636e\u63a5\u53e3\uff1a<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>Topic<\/th>\n<th>\u7c7b\u578b<\/th>\n<th>\u7528\u9014<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\/livox\/lidar<\/code><\/td>\n<td><code>livox_ros_driver2\/CustomMsg<\/code><\/td>\n<td>\u5e26\u9010\u70b9\u9644\u52a0\u4fe1\u606f\u7684\u70b9\u4e91<\/td>\n<\/tr>\n<tr>\n<td><code>\/livox\/imu<\/code><\/td>\n<td><code>sensor_msgs\/Imu<\/code><\/td>\n<td>\u89d2\u901f\u5ea6\u3001\u52a0\u901f\u5ea6\u7b49\u60ef\u6027\u6570\u636e<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><code>CustomMsg<\/code> \u7684\u4e3b\u8981\u5b57\u6bb5\uff1a<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u5b57\u6bb5<\/th>\n<th>\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>header<\/code><\/td>\n<td>ROS \u65f6\u95f4\u6233\u4e0e\u5e27\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td><code>timebase<\/code><\/td>\n<td>\u9996\u70b9\u65f6\u95f4\u57fa\u51c6\uff0c\u65f6\u95f4\u57df\u548c\u5355\u4f4d\u6309\u5f53\u524d\u9a71\u52a8\u5b9e\u73b0\u5b9a\u4e49<\/td>\n<\/tr>\n<tr>\n<td><code>point_num<\/code><\/td>\n<td>\u70b9\u6570<\/td>\n<\/tr>\n<tr>\n<td><code>lidar_id<\/code><\/td>\n<td>\u8bbe\u5907\u6807\u8bc6<\/td>\n<\/tr>\n<tr>\n<td><code>points[]<\/code><\/td>\n<td>\u70b9\u6570\u7ec4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><code>CustomPoint<\/code> \u4e2d\u7684 <code>x\/y\/z<\/code> \u5355\u4f4d\u4e3a m\uff0c<code>reflectivity<\/code> \u4e3a 0\uff5e255 \u7684\u53cd\u5c04\u5f3a\u5ea6\uff0c\u53e6\u5305\u542b <code>offset_time<\/code>\u3001<code>tag<\/code>\u3001<code>line<\/code>\u3002\u9010\u70b9\u65f6\u95f4\u4fe1\u606f\u7528\u4e8e\u8fd0\u52a8\u53bb\u7578\u53d8\u7b49\u5904\u7406\u3002<\/p>\n<p>IMU \u7684\u89d2\u901f\u5ea6\u5355\u4f4d\u4e3a rad\/s\uff0c\u52a0\u901f\u5ea6\u5355\u4f4d\u4e3a m\/s\u00b2\uff1b\u59ff\u6001\u5b57\u6bb5\u53ca\u534f\u65b9\u5dee\u7684\u542b\u4e49\u7531\u9a71\u52a8\u8f93\u51fa\u5b9a\u4e49\u3002<\/p>\n<p>\u6807\u51c6\u70b9\u4e91\u8f6c\u6362\u5165\u53e3\uff1a<\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">rosrun tutorial_navigation custom_to_pc2.py\n<\/code><\/pre>\n<p>\u5bf9\u5e94\u6587\u4ef6\u4e3a <code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_navigation\/scripts\/custom_to_pc2.py<\/code>\u3002\u5b83\u628a <code>\/livox\/lidar<\/code> \u8f6c\u4e3a <code>\/livox\/pointcloud2<\/code>\uff0c\u7c7b\u578b\u4e3a <code>sensor_msgs\/PointCloud2<\/code>\u3002<\/p>\n<p>\u8be5\u811a\u672c\u4fdd\u7559 Header\uff0c\u4e0d\u8fdb\u884c\u5750\u6807\u53d8\u6362\u6216\u53bb\u7578\u53d8\uff1b\u9ed8\u8ba4\u8f93\u51fa XYZ \u548c <code>uint8<\/code> \u7c7b\u578b\u7684\u5f3a\u5ea6\uff0c\u9010\u70b9\u65f6\u95f4\u3001tag \u548c line \u9ed8\u8ba4\u4e0d\u8f93\u51fa\u3002\u5f53\u524d FAST-LIO \u914d\u7f6e\u4f7f\u7528\u539f\u59cb <code>CustomMsg<\/code>\u3002<\/p>\n<h3 id=\"6-2-%e6%a0%87%e5%ae%9a%e4%b8%8e%e5%90%8c%e6%ad%a5%e5%8f%82%e6%95%b0\">6.2 \u6807\u5b9a\u4e0e\u540c\u6b65\u53c2\u6570<\/h3>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u4fe1\u606f<\/th>\n<th>\u4f5c\u7528<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u96f7\u8fbe\u4e0e IMU \u5916\u53c2<\/td>\n<td>\u70b9\u4e91\u53bb\u7578\u53d8\u548c\u6fc0\u5149\u60ef\u6027\u4f30\u8ba1<\/td>\n<\/tr>\n<tr>\n<td>\u4f20\u611f\u5668\/\u4f30\u8ba1\u4e3b\u4f53\u4e0e\u673a\u4f53\u5916\u53c2<\/td>\n<td>\u5c06\u5b9a\u4f4d\u6216\u89c2\u6d4b\u8f6c\u6362\u5230\u673a\u4f53\u53c2\u8003<\/td>\n<\/tr>\n<tr>\n<td>\u65f6\u95f4\u504f\u79fb\u548c\u540c\u6b65\u65b9\u5f0f<\/td>\n<td>\u4f7f\u4e0d\u540c\u6d4b\u91cf\u5bf9\u5e94\u5230\u76f8\u540c\u7684\u8fd0\u52a8\u65f6\u523b<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>FAST-LIO \u914d\u7f6e\u4e2d\u7684 <code>mapping\/extrinsic_T<\/code>\u3001<code>mapping\/extrinsic_R<\/code> \u63cf\u8ff0\u7b97\u6cd5\u4f7f\u7528\u7684\u96f7\u8fbe\u2014IMU \u5173\u7cfb\uff1b<code>body<\/code> \u4e0e <code>base_link<\/code> \u7684\u5173\u7cfb\u63cf\u8ff0\u4f30\u8ba1\u4e3b\u4f53\u4e0e\u673a\u4f53\u7684\u5173\u7cfb\u3002\u5bf9\u5e94\u914d\u7f6e\u89c1 4.3 \u548c 7.2 \u8282\u3002<\/p>\n<h3 id=\"6-3-%e6%8a%95%e6%94%be%e8%a3%85%e7%bd%ae%ef%bc%9a%e6%8e%a7%e5%88%b6%e5%8e%9f%e7%90%86%e4%b8%8e%e6%8e%a5%e5%8f%a3%e7%ae%80%e4%bb%8b\">6.3 \u6295\u653e\u88c5\u7f6e\uff1a\u63a7\u5236\u539f\u7406\u4e0e\u63a5\u53e3\u7b80\u4ecb<\/h3>\n<p>\u6295\u653e\u88c5\u7f6e\u901a\u8fc7\u5206\u7535\u677f\u4e0a\u7684 <strong>ATmega328P<\/strong> \u63a7\u5236\u8235\u673a\uff0c<strong>CH340<\/strong> \u63d0\u4f9b USB \u8f6c\u4e32\u53e3\uff0c\u5e76\u901a\u8fc7\u677f\u5185\u8d70\u7ebf\u8fde\u63a5\u5206\u7535\u677f\u5185\u7f6e\u7684 <strong>USB Hub<\/strong>\u3002Hub \u7684\u4e0a\u6e38\u7531\u5206\u7535\u677f\u5f15\u51fa\u7684 USB-A \u63a5\u5934\u63a5\u5165\u4e0a\u4f4d\u673a\u3002\u5b98\u65b9\u914d\u7f6e\u4f7f\u7528 <code>\/dev\/ttyUSB0<\/code>\uff0c\u901a\u8fc7 <code>rosserial<\/code> \u5c06\u4e0a\u4e0b\u4f4d\u673a\u8fde\u63a5\u5230 ROS\u3002<\/p>\n<p><code>catapult_driver<\/code> \u628a\u8235\u673a\u89d2\u5ea6\u5c01\u88c5\u4e3a\u4ed3\u95e8\u5f00\u5173\u547d\u4ee4\uff0c\u542f\u52a8\u65f6\u6267\u884c\u521d\u59cb\u5316\u53ca\u5173\u95e8\u52a8\u4f5c\uff1a<\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">roslaunch tutorial_catapult catapult_driver.launch\n<\/code><\/pre>\n<p>\u5e38\u7528\u63a5\u53e3\u5747\u4e3a <code>std_msgs\/Empty<\/code>\uff1a<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>Topic<\/th>\n<th>\u52a8\u4f5c<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\/servo\/front_left\/open<\/code>\u3001<code>\/servo\/front_left\/close<\/code><\/td>\n<td>\u5de6\u524d\u4ed3\u95e8\u5f00\/\u5173<\/td>\n<\/tr>\n<tr>\n<td><code>\/servo\/front_right\/open<\/code>\u3001<code>\/servo\/front_right\/close<\/code><\/td>\n<td>\u53f3\u524d\u4ed3\u95e8\u5f00\/\u5173<\/td>\n<\/tr>\n<tr>\n<td><code>\/servo\/back_left\/open<\/code>\u3001<code>\/servo\/back_left\/close<\/code><\/td>\n<td>\u5de6\u540e\u4ed3\u95e8\u5f00\/\u5173<\/td>\n<\/tr>\n<tr>\n<td><code>\/servo\/back_right\/open<\/code>\u3001<code>\/servo\/back_right\/close<\/code><\/td>\n<td>\u53f3\u540e\u4ed3\u95e8\u5f00\/\u5173<\/td>\n<\/tr>\n<tr>\n<td><code>\/servo\/all\/open<\/code>\u3001<code>\/servo\/all\/close<\/code><\/td>\n<td>\u5168\u90e8\u4ed3\u95e8\u5f00\/\u5173<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u53d1\u9001\u4e00\u6b21\u5de6\u524d\u4ed3\u95e8\u5f00\u542f\u547d\u4ee4\uff1a<\/p>\n<pre style=\"overflow-x: auto;\"><code class=\"language-bash\">rostopic pub -1 \/servo\/front_left\/open std_msgs\/Empty '{}'\n<\/code><\/pre>\n<p>\u9a71\u52a8\u6587\u4ef6\u4e3a <code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_catapult\/src\/catapult_driver.cpp<\/code>\uff0c\u542f\u52a8\u914d\u7f6e\u4e3a <code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_catapult\/launch\/catapult_driver.launch<\/code>\u3002\u5f53\u524d\u5f00\u5173\u547d\u4ee4\u91c7\u7528 Topic \u53d1\u5e03\u65b9\u5f0f\uff0c\u65e0\u670d\u52a1\u54cd\u5e94\u6216\u673a\u68b0\u5230\u4f4d\u53cd\u9988\u3002<\/p>\n<p>\u65b9\u5411\u3001\u884c\u7a0b\u3001\u8be6\u7ec6\u9a71\u52a8\u914d\u7f6e\u53ca\u4e0b\u4f4d\u673a\u70e7\u5f55\u6b65\u9aa4\u89c1<a href=\"https:\/\/docs.liuyaorobot.com\/?docs=%e6%8a%95%e6%94%be%e8%a3%85%e7%bd%ae%e7%9b%b8%e5%85%b3\/%e6%8a%95%e6%94%be%e8%a3%85%e7%bd%ae%e6%8e%a7%e5%88%b6%e5%8e%9f%e7%90%86%e4%b8%8e%e8%bd%af%e4%bb%b6\">\u300a\u6295\u653e\u88c5\u7f6e\u63a7\u5236\u539f\u7406\u4e0e\u8f6f\u4ef6\uff08Jetson Orin Nano\/NX\uff09\u300b<\/a>\u3002<\/p>\n<hr>\n<h2 id=\"localization\">7. \u6fc0\u5149\u5b9a\u4f4d\u4e0e\u5efa\u56fe<\/h2>\n<h3 id=\"7-1-%e5%ae%9a%e4%bd%8d%e9%93%be%e8%b7%af%e4%b8%8e%e6%95%b0%e6%8d%ae%e6%8e%a5%e5%8f%a3\">7.1 \u5b9a\u4f4d\u94fe\u8def\u4e0e\u6570\u636e\u63a5\u53e3<\/h3>\n<p><img decoding=\"async\" style=\"max-width: 100%; height: auto;\" src=\"https:\/\/docs.liuyaorobot.com\/wp-content\/uploads\/2026\/09\/localization.png\" alt=\"\u6fc0\u5149\u5b9a\u4f4d\u4e0e\u98de\u63a7\u6570\u636e\u94fe\u8def\"><\/p>\n<p>FAST-LIO \u4ea7\u751f\u5c40\u90e8\u8fd0\u52a8\u4f30\u8ba1\u548c\u70b9\u4e91\u5730\u56fe\uff1b\u8f6c\u53d1\u8282\u70b9\u5c06\u4f4d\u59ff\u9002\u914d\u5230 MAVROS \u8f93\u5165\uff1b\u98de\u63a7\u4f30\u8ba1\u5668\u878d\u5408\u5916\u90e8\u6d4b\u91cf\uff0c\u5e76\u901a\u8fc7 MAVROS \u8f93\u51fa\u5c40\u90e8\u72b6\u6001\u3002<\/p>\n<h3 id=\"7-2-mid-360-%e4%b8%8e-fast-lio\">7.2 MID-360 \u4e0e FAST-LIO<\/h3>\n<p>\u5f53\u524d\u5e94\u7528\u914d\u7f6e\u4f4d\u4e8e <code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_navigation\/config\/mid360.yaml<\/code>\u3002<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u53c2\u6570<\/th>\n<th>\u914d\u7f6e\u503c<\/th>\n<th>\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>common\/lid_topic<\/code><\/td>\n<td><code>\/livox\/lidar<\/code><\/td>\n<td>\u70b9\u4e91\u8f93\u5165<\/td>\n<\/tr>\n<tr>\n<td><code>common\/imu_topic<\/code><\/td>\n<td><code>\/livox\/imu<\/code><\/td>\n<td>IMU \u8f93\u5165<\/td>\n<\/tr>\n<tr>\n<td><code>common\/time_sync_en<\/code><\/td>\n<td><code>false<\/code><\/td>\n<td>\u5f53\u524d\u672a\u542f\u7528\u8be5\u5185\u90e8\u540c\u6b65\u9009\u9879<\/td>\n<\/tr>\n<tr>\n<td><code>common\/time_offset_lidar_to_imu<\/code><\/td>\n<td><code>0.0<\/code><\/td>\n<td>\u5f53\u524d\u989d\u5916\u65f6\u95f4\u504f\u79fb<\/td>\n<\/tr>\n<tr>\n<td><code>preprocess\/lidar_type<\/code><\/td>\n<td><code>1<\/code><\/td>\n<td>\u5f53\u524d Livox \u8f93\u5165\u7c7b\u578b<\/td>\n<\/tr>\n<tr>\n<td><code>preprocess\/blind<\/code><\/td>\n<td><code>0.25<\/code><\/td>\n<td>\u8fd1\u8ddd\u79bb\u8fc7\u6ee4\u53c2\u6570\uff0c\u5355\u4f4d m<\/td>\n<\/tr>\n<tr>\n<td><code>mapping\/extrinsic_est_en<\/code><\/td>\n<td><code>false<\/code><\/td>\n<td>\u5f53\u524d\u672a\u5f00\u542f\u5728\u7ebf\u5916\u53c2\u4f30\u8ba1<\/td>\n<\/tr>\n<tr>\n<td><code>mapping\/extrinsic_T<\/code>\u3001<code>extrinsic_R<\/code><\/td>\n<td>\u914d\u7f6e\u4e2d\u7684\u5e73\u79fb\u3001\u65cb\u8f6c<\/td>\n<td>\u96f7\u8fbe\u4e0e IMU \u7684\u5916\u53c2<\/td>\n<\/tr>\n<tr>\n<td><code>publish\/path_en<\/code><\/td>\n<td><code>false<\/code><\/td>\n<td>\u5f53\u524d\u9ed8\u8ba4\u4e0d\u53d1\u5e03\u8def\u5f84\u6d88\u606f<\/td>\n<\/tr>\n<tr>\n<td><code>pcd_save\/pcd_save_en<\/code><\/td>\n<td><code>false<\/code><\/td>\n<td>\u5f53\u524d\u9ed8\u8ba4\u4e0d\u4fdd\u5b58 PCD<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u4e3b\u8981\u8f93\u51fa\uff1a<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>Topic<\/th>\n<th>\u7c7b\u578b<\/th>\n<th>\u53c2\u8003\u5e27\/\u8bf4\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\/Odometry<\/code><\/td>\n<td><code>nav_msgs\/Odometry<\/code><\/td>\n<td><code>camera_init<\/code> \u2192 <code>body<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>\/cloud_registered<\/code><\/td>\n<td><code>sensor_msgs\/PointCloud2<\/code><\/td>\n<td>\u6ce8\u518c\u5230 <code>camera_init<\/code> \u7684\u70b9\u4e91<\/td>\n<\/tr>\n<tr>\n<td><code>\/cloud_registered_body<\/code><\/td>\n<td><code>sensor_msgs\/PointCloud2<\/code><\/td>\n<td><code>body<\/code> \u4e0b\u7684\u70b9\u4e91\uff0c\u53d6\u51b3\u4e8e\u53d1\u5e03\u914d\u7f6e<\/td>\n<\/tr>\n<tr>\n<td><code>\/path<\/code><\/td>\n<td><code>nav_msgs\/Path<\/code><\/td>\n<td>\u901a\u8fc7\u8def\u5f84\u53d1\u5e03\u53c2\u6570\u542f\u7528<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u5730\u56fe\u4fdd\u5b58\u7531 <code>pcd_save\/pcd_save_en<\/code> \u548c <code>pcd_save\/interval<\/code> \u63a7\u5236\uff0c\u5177\u4f53\u4fdd\u5b58\u4f4d\u7f6e\u7531\u6240\u5b89\u88c5 FAST-LIO \u7248\u672c\u5b9a\u4e49\u3002<\/p>\n<p>\u6837\u4f8b\u4f7f\u7528\u6587\u4ef6\uff1a<code>odom_forward_node.cpp<\/code> \u8ba2\u9605 <code>\/Odometry<\/code>\uff1b\u5176\u4e0a\u4f4d\u673a\u4f4d\u7f6e\u4e3a <code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_navigation\/src\/odom_forward_node.cpp<\/code>\u3002<\/p>\n<h3 id=\"7-3-%e5%a4%96%e9%83%a8%e5%ae%9a%e4%bd%8d%e6%8e%a5%e5%85%a5%e9%a3%9e%e6%8e%a7\">7.3 \u5916\u90e8\u5b9a\u4f4d\u63a5\u5165\u98de\u63a7<\/h3>\n<p><code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_navigation\/src\/odom_forward_node.cpp<\/code> \u7684\u63a5\u53e3\u4e3a\uff1a<\/p>\n<div style=\"overflow-x: auto;\">\n<table>\n<thead>\n<tr>\n<th>\u9879\u76ee<\/th>\n<th>\u5185\u5bb9<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u8f93\u5165<\/td>\n<td><code>nav_msgs\/Odometry<\/code>\uff1b\u9ed8\u8ba4 ROS \u76f8\u5bf9\u540d\u79f0 <code>Odometry<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u8f93\u51fa<\/td>\n<td><code>geometry_msgs\/PoseStamped<\/code>\uff1bROS \u76f8\u5bf9\u540d\u79f0 <code>mavros\/vision_pose\/pose<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u79c1\u6709\u53c2\u6570 <code>odometry_topic<\/code><\/td>\n<td>\u6307\u5b9a\u8f93\u5165 Topic\uff0c\u9ed8\u8ba4 <code>Odometry<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u79c1\u6709\u53c2\u6570 <code>frame_id<\/code><\/td>\n<td>\u9ed8\u8ba4\u7a7a\uff1b\u975e\u7a7a\u65f6\u66ff\u6362\u8f93\u51fa Header \u7684\u5e27\u6807\u7b7e<\/td>\n<\/tr>\n<tr>\n<td>\u65f6\u95f4<\/td>\n<td>\u590d\u5236\u8f93\u5165 Header<\/td>\n<\/tr>\n<tr>\n<td>\u6570\u636e<\/td>\n<td>\u590d\u5236 <code>pose.pose<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u5728\u6839\u547d\u540d\u7a7a\u95f4\u4e0b\uff0c\u8f93\u5165\u548c\u8f93\u51fa\u5206\u522b\u4e3a <code>\/Odometry<\/code> \u4e0e <code>\/mavros\/vision_pose\/pose<\/code>\u3002<\/p>\n<p>\u8be5\u8282\u70b9\u53ea\u8f6c\u53d1 Header \u548c\u4f4d\u59ff\u5b57\u6bb5\uff0c\u4e0d\u6267\u884c\u5750\u6807\u53d8\u6362\uff0c\u4e5f\u4e0d\u8f6c\u53d1\u539f\u59cb <code>Odometry<\/code> \u7684\u901f\u5ea6\u4e0e\u534f\u65b9\u5dee\u3002\u8f93\u51fa\u7684\u539f\u70b9\u3001\u671d\u5411\u548c\u65f6\u95f4\u8bed\u4e49\u6cbf\u7528\u8f93\u5165\u6570\u636e\uff0c<code>frame_id<\/code> \u53c2\u6570\u7528\u4e8e\u66ff\u6362\u5e27\u6807\u7b7e\u3002<\/p>\n<p>\u98de\u63a7\u901a\u8fc7 MAVROS \u63a5\u6536\u5916\u90e8\u4f4d\u59ff\uff0c\u5e76\u6309\u5176\u4f30\u8ba1\u5668\u914d\u7f6e\u8fdb\u884c\u878d\u5408\u3002\u878d\u5408\u540e\u7684\u5c40\u90e8\u4f4d\u59ff\u4ece <code>\/mavros\/local_position\/pose<\/code> \u8bfb\u53d6\uff0c\u5c40\u90e8\u91cc\u7a0b\u8ba1\u4ece <code>\/mavros\/local_position\/odom<\/code> \u8bfb\u53d6\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u624b\u518c\u4ecb\u7ecd Magpie360-5S \u7684\u8bbe\u5907\u8fde\u63a5\u3001\u98de\u884c\u63a7\u5236\u3001\u4f20\u611f\u5668\u6570\u636e\u3001\u6fc0\u5149\u5b9a\u4f4d\u53ca\u6295\u653e\u88c5\u7f6e\u63a5\u53e3\uff0c\u9762\u5411\u5177\u5907 Li [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","categories":[],"doc_label":[],"doc_tag":[],"class_list":["post-859","docs","type-docs","status-publish","format-standard","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=\/wp\/v2\/docs\/859","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=859"}],"version-history":[{"count":2,"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=\/wp\/v2\/docs\/859\/revisions"}],"predecessor-version":[{"id":861,"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=\/wp\/v2\/docs\/859\/revisions\/861"}],"wp:attachment":[{"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=859"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=859"},{"taxonomy":"doc_label","embeddable":true,"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdoc_label&post=859"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdoc_tag&post=859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}