{"id":503,"date":"2026-03-09T15:26:27","date_gmt":"2026-03-09T07:26:27","guid":{"rendered":"https:\/\/docs.liuyaorobot.com\/?post_type=docs&#038;p=503"},"modified":"2026-03-09T15:35:15","modified_gmt":"2026-03-09T07:35:15","slug":"%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","status":"publish","type":"docs","link":"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","title":{"rendered":"\u63a7\u5236\u539f\u7406\u4e0e\u8f6f\u4ef6\uff08Jetson Orin Nano\/NX\uff09"},"content":{"rendered":"\n<p><strong>\u6295\u653e\u88c5\u7f6e\u63a7\u5236\u539f\u7406\uff1a<\/strong><br>\u98de\u673a\u4e2d\u5fc3\u5206\u7535\u677f\u4e0a\u642d\u8f7d\u4e00\u5757 <code>ATmega328P<\/code> \u82af\u7247\uff08\u540e\u79f0\u4e0b\u4f4d\u673a\uff09\u4e0e <code>CH340<\/code> USB\u8f6c\u4e32\u53e3\u82af\u7247\u3002\u5176\u4e2d <code>ATmega328P<\/code> \u82af\u7247\u76845\u30016\u30019\u300110\u30013\u53f7\u5f15\u811a\u5206\u522b\u8fde\u63a51\u52305\u53f7PWM\u8235\u673a\u63a7\u5236\u53e3\u7684\u4fe1\u53f7\u7ebf\uff0c\u4e32\u53e3\u82af\u7247\u4e0e\u5206\u7535\u677f\u5185\u7f6eUSBHUB\u76f8\u8fde\uff0c\u4f5c\u4e3aUSB\u4ece\u8bbe\u5907\u3002<\/p>\n\n\n\n<p>\u4f7f\u7528\u98de\u673a\u4e2d\u5fc3\u5206\u7535\u677f\u4e2d\u5f15\u51fa\u7684<code>USB-A<\/code>\u63a5\u5934\u8fde\u63a5\u4e0a\u4f4d\u673a\uff08\u5373\u673a\u8f7d\u7535\u8111\uff09\uff0c\u6b64\u65f6\u4e0a\u4f4d\u673a\u53ef\u901a\u8fc7\u4e32\u53e3\uff08\u5728\u4e0a\u4f4d\u673a\u4e2d<code>\/dev\/ttyUSB0<\/code>\uff09\u4e0e\u4e0b\u4f4d\u673a\u901a\u4fe1\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/static.simuro.liuyaorobot.com\/archive\/tutorial2025\/img\/catapult8.png\" alt=\"alt text\"\/><\/figure>\n\n\n\n<p>\u4e0a\u4f4d\u673a\u4e0e\u4e0b\u4f4d\u673a\u901a\u8fc7<code>rosserial<\/code>\u5e93\u5b9e\u73b0\u4f7f\u7528<code>ros<\/code>\u8bdd\u9898\u4e92\u76f8\u901a\u4fe1\u3002<\/p>\n\n\n\n<p><strong>\u6295\u653e\u88c5\u7f6e\u9a71\u52a8launch\u6587\u4ef6\u89e3\u6790\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;?xml version=\"1.0\"?&gt;&lt;launch&gt; &nbsp; &nbsp;&lt;!-- Servo angle parameters --&gt; &nbsp; &nbsp;&lt;arg name=\"back_right_open_angle\" default=\"180\"\/&gt; &nbsp; &nbsp;&lt;arg name=\"back_right_close_angle\" default=\"30\"\/&gt;\n &nbsp; &nbsp;&lt;arg name=\"back_left_open_angle\" default=\"0\"\/&gt; &nbsp; &nbsp;&lt;arg name=\"back_left_close_angle\" default=\"149\"\/&gt;\n &nbsp; &nbsp;&lt;arg name=\"front_right_open_angle\" default=\"0\"\/&gt; &nbsp; &nbsp;&lt;arg name=\"front_right_close_angle\" default=\"149\"\/&gt;\n &nbsp; &nbsp;&lt;arg name=\"front_left_open_angle\" default=\"180\"\/&gt; &nbsp; &nbsp;&lt;arg name=\"front_left_close_angle\" default=\"30\"\/&gt;\n &nbsp; &nbsp;&lt;!-- Serial connection to Arduino --&gt; &nbsp; &nbsp;&lt;node pkg=\"rosserial_python\" type=\"serial_node.py\" name=\"serial_node\" required=\"true\"&gt; &nbsp; &nbsp; &nbsp; &nbsp;&lt;param name=\"port\" value=\"\/dev\/ttyUSB0\"\/&gt; &nbsp; &nbsp; &nbsp; &nbsp;&lt;param name=\"baud\" value=\"57600\"\/&gt; &nbsp; &nbsp;&lt;\/node&gt;\n &nbsp; &nbsp;&lt;node pkg=\"tutorial_catapult\" type=\"catapult_driver\" name=\"catapult_driver\" output=\"screen\"&gt; &nbsp; &nbsp; &nbsp; &nbsp;&lt;param name=\"back_right_open_angle\" value=\"$(arg back_right_open_angle)\"\/&gt; &nbsp; &nbsp; &nbsp; &nbsp;&lt;param name=\"back_right_close_angle\" value=\"$(arg back_right_close_angle)\"\/&gt;\n &nbsp; &nbsp; &nbsp; &nbsp;&lt;param name=\"back_left_open_angle\" value=\"$(arg back_left_open_angle)\"\/&gt; &nbsp; &nbsp; &nbsp; &nbsp;&lt;param name=\"back_left_close_angle\" value=\"$(arg back_left_close_angle)\"\/&gt;\n &nbsp; &nbsp; &nbsp; &nbsp;&lt;param name=\"front_right_open_angle\" value=\"$(arg front_right_open_angle)\"\/&gt; &nbsp; &nbsp; &nbsp; &nbsp;&lt;param name=\"front_right_close_angle\" value=\"$(arg front_right_close_angle)\"\/&gt;\n &nbsp; &nbsp; &nbsp; &nbsp;&lt;param name=\"front_left_open_angle\" value=\"$(arg front_left_open_angle)\"\/&gt; &nbsp; &nbsp; &nbsp; &nbsp;&lt;param name=\"front_left_close_angle\" value=\"$(arg front_left_close_angle)\"\/&gt; &nbsp; &nbsp;&lt;\/node&gt;&lt;\/launch&gt;<\/pre>\n\n\n\n<p>\u53c2\u6570\u89e3\u8bfb\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>back_right_open_angle\uff1a\u53f3\u540e\u4ed3\u95e8\u5f00\u542f\u89d2\u5ea6\uff0c\u9ed8\u8ba4\u4e3a180\u5ea6<\/li>\n\n\n\n<li>back_right_close_angle\uff1a\u53f3\u540e\u4ed3\u95e8\u5173\u95ed\u89d2\u5ea6\uff0c\u9ed8\u8ba4\u4e3a30\u5ea6<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<ul class=\"wp-block-list\">\n<li>back_left_open_angle\uff1a\u5de6\u540e\u4ed3\u95e8\u5f00\u542f\u89d2\u5ea6\uff0c\u9ed8\u8ba4\u4e3a0\u5ea6<\/li>\n\n\n\n<li>back_left_close_angle\uff1a\u5de6\u540e\u4ed3\u95e8\u5173\u95ed\u89d2\u5ea6\uff0c\u9ed8\u8ba4\u4e3a149\u5ea6<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<ul class=\"wp-block-list\">\n<li>front_right_open_angle\uff1a\u53f3\u524d\u4ed3\u95e8\u5f00\u542f\u89d2\u5ea6\uff0c\u9ed8\u8ba4\u4e3a0\u5ea6<\/li>\n\n\n\n<li>front_right_close_angle\uff1a\u53f3\u524d\u4ed3\u95e8\u5173\u95ed\u89d2\u5ea6\uff0c\u9ed8\u8ba4\u4e3a149\u5ea6<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<ul class=\"wp-block-list\">\n<li>front_left_open_angle\uff1a\u5de6\u524d\u4ed3\u95e8\u5f00\u542f\u89d2\u5ea6\uff0c\u9ed8\u8ba4\u4e3a180\u5ea6<\/li>\n\n\n\n<li>front_left_close_angle\uff1a\u5de6\u524d\u4ed3\u95e8\u5173\u95ed\u89d2\u5ea6\uff0c\u9ed8\u8ba4\u4e3a30\u5ea6<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u8282\u70b9\u89e3\u8bfb\uff1a \u5728\u542f\u52a8<code>serial_node<\/code>\u8282\u70b9\u540e\uff0c\u8be5\u8282\u70b9\u53d1\u5e03\u63a7\u5236\u4ed3\u95e8\u89d2\u5ea6\u7684\u8282\u70b9\uff1b\u542f\u52a8<code>catapult_driver<\/code>\u8282\u70b9\u540e\uff0c\u8282\u70b9\u5c06\u4ed3\u95e8\u89d2\u5ea6\u4e8c\u6b21\u5305\u88c5\uff0c\u53d1\u5e03\u63a7\u5236\u4ed3\u95e8\u5f00\u5173\u7684\u8282\u70b9\uff0c\u5c06\u89d2\u5ea6\u63a7\u5236\u7ec6\u8282\u9690\u85cf\u3002<\/p>\n\n\n\n<p><strong>\u4e0b\u4f4d\u673a\u56fa\u4ef6\u70e7\u5f55\u65b9\u6cd5\uff1a<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5728\u7535\u8111\u4e2d\uff08\u540e\u79f0\u70e7\u5f55\u673a\uff09\u4e0b\u8f7d<code>Arduino IDE<\/code>\uff08Windows\u3001Linux\u3001macOS\u5747\u652f\u6301\uff0c\u4f46\u98de\u673a\u4e0a\u4f4d\u673a\u65e0\u6cd5\u5b89\u88c5\uff09\u5e76\u5b89\u88c5<\/li>\n\n\n\n<li>\u5b89\u88c5<code>rosserial 0.7.9<\/code>\u5e93<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/static.simuro.liuyaorobot.com\/archive\/tutorial2025\/img\/catapult9.png\" alt=\"alt text\"\/><\/figure>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u5c06\u4e0a\u4f4d\u673a\u7cfb\u7edf\u4e2d<code>\/home\/jetson\/catkin_ws\/src\/tutorials\/tutorial_catapult\/catapult_firmware<\/code>\u76ee\u5f55\u62f7\u8d1d\u5230\u70e7\u5f55\u673a\u4e2d\uff0c\u4f7f\u7528<code>Arduino IDE<\/code>\u6253\u5f00\u5176\u4e2d<code>catapult_firmware.ino<\/code>\u6587\u4ef6<\/li>\n\n\n\n<li>\u5c06\u98de\u673a\u4e2d\u5fc3\u5206\u7535\u677f\u4e2d\u5f15\u51fa\u7684USB-A\u63a5\u53e3\u63d2\u5165\u70e7\u5f55\u673a<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/static.simuro.liuyaorobot.com\/archive\/tutorial2025\/img\/catapult14.png\" alt=\"alt text\"\/><\/figure>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>\u5728\u5de6\u4e0a\u89d2\u9009\u62e9\u5bf9\u5e94\u4e32\u53e3\uff0c\u5982\u4e0d\u786e\u5b9a\u662f\u54ea\u4e2a\uff0c\u53ef\u5148\u70b9\u5f00\u4e0b\u62c9\u6846\uff0c\u5e76\u63d2\u62d4USB-A\u63a5\u5934\uff0c\u67e5\u770b\u54ea\u4e2a\u9009\u9879\u4e3a\u65b0\u51fa\u73b0\u7684\u63a5\u53e3\uff08\u5982\u679c\u662fWindows\uff0c\u53ef\u80fd\u4f1a\u51fa\u73b02\u4e2aCOM\u53e3\uff0c\u9009\u62e9\u7f16\u53f7\u5927\u7684\u90a3\u4e2a\uff09<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/static.simuro.liuyaorobot.com\/archive\/tutorial2025\/img\/catapult10.png\" alt=\"alt text\"\/><\/figure>\n\n\n\n<ol start=\"6\" class=\"wp-block-list\">\n<li>\u9009\u62e9\u5355\u7247\u673a\u578b\u53f7\u4e3a<code>Arduino Uno<\/code><\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/static.simuro.liuyaorobot.com\/archive\/tutorial2025\/img\/catapult11.png\" alt=\"alt text\"\/><\/figure>\n\n\n\n<ol start=\"7\" class=\"wp-block-list\">\n<li>\u70b9\u51fb\u4e0a\u4f20\u6309\u94ae\uff0c\u4e0a\u4f20\u7a0b\u5e8f\u5230\u4e0b\u4f4d\u673a<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/static.simuro.liuyaorobot.com\/archive\/tutorial2025\/img\/catapult12.png\" alt=\"alt text\"\/><\/figure>\n\n\n\n<ol start=\"8\" class=\"wp-block-list\">\n<li>\u53f3\u4e0b\u89d2\u51fa\u73b0\u4e0a\u4f20\u5b8c\u6210\u7684\u63d0\u793a\u6846\u5219\u70e7\u5f55\u5b8c\u6210<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/static.simuro.liuyaorobot.com\/archive\/tutorial2025\/img\/catapult13.png\" alt=\"alt text\"\/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u6295\u653e\u88c5\u7f6e\u63a7\u5236\u539f\u7406\uff1a\u98de\u673a\u4e2d\u5fc3\u5206\u7535\u677f\u4e0a\u642d\u8f7d\u4e00\u5757 ATmega328P \u82af\u7247\uff08\u540e\u79f0\u4e0b\u4f4d\u673a\uff09\u4e0e CH340 USB\u8f6c\u4e32 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"parent":499,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","categories":[],"doc_label":[],"doc_tag":[],"class_list":["post-503","docs","type-docs","status-publish","format-standard","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=\/wp\/v2\/docs\/503","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\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=503"}],"version-history":[{"count":3,"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=\/wp\/v2\/docs\/503\/revisions"}],"predecessor-version":[{"id":516,"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=\/wp\/v2\/docs\/503\/revisions\/516"}],"up":[{"embeddable":true,"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=\/wp\/v2\/docs\/499"}],"wp:attachment":[{"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=503"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=503"},{"taxonomy":"doc_label","embeddable":true,"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdoc_label&post=503"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/docs.liuyaorobot.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdoc_tag&post=503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}