<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ROS on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/ros/</link><description>Recent content in ROS on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Wed, 15 Mar 2017 00:00:00 +0800</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/ros/index.xml" rel="self" type="application/rss+xml"/><item><title>机器人 AI 资源与工具链：从嵌入式到 ROS 生态</title><link>https://liangweidonggood.github.io/p/ji-qi-ren-ai-zi-yuan-2017/</link><pubDate>Wed, 15 Mar 2017 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/ji-qi-ren-ai-zi-yuan-2017/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/ji-qi-ren-ai-zi-yuan-2017/image/cover.jpg" alt="Featured image of post 机器人 AI 资源与工具链：从嵌入式到 ROS 生态" /&gt;&lt;h2 id="软件编程资源"&gt;软件编程资源
&lt;/h2&gt;&lt;h3 id="python-数值计算"&gt;Python 数值计算
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NumPy&lt;/strong&gt;：向量、矩阵运算&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SciPy&lt;/strong&gt;：优化、积分、信号处理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Matplotlib&lt;/strong&gt;：可视化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SymPy&lt;/strong&gt;：符号计算&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pandas&lt;/strong&gt;：数据分析&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;np&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 矩阵乘法&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;B&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;C&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;B&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# [[19 22] [43 50]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 求逆&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;A_inv&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;linalg&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;inv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 特征值&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;eigenvalues&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;eigenvectors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;linalg&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;eig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="c-数值计算"&gt;C 数值计算
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 一维数组实现矩阵加法
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;matrix_add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="其他"&gt;其他
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;C++&lt;/strong&gt;：ROS 主力语言&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Java / Kotlin&lt;/strong&gt;：Android 机器人控制&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTML / JavaScript&lt;/strong&gt;：Web 监控界面&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PHP / Python&lt;/strong&gt;：后端&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="工具软件"&gt;工具软件
&lt;/h2&gt;&lt;h3 id="矢量绘图"&gt;矢量绘图
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Inkscape&lt;/strong&gt;（免费开源）—— 推荐，画机械示意图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adobe Illustrator&lt;/strong&gt;（商业）—— 设计稿&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Photoshop&lt;/strong&gt;（商业）—— 位图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Draw Freely&lt;/strong&gt;：在线矢量图&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3d-设计"&gt;3D 设计
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SolidWorks&lt;/strong&gt;（商业）—— 机械设计行业标准&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CAXA&lt;/strong&gt;（国产）—— 二维图纸&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fusion 360&lt;/strong&gt;（免费个人版）—— 入门级 CAD&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FreeCAD&lt;/strong&gt;（开源）—— 替代 SolidWorks&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="仿真"&gt;仿真
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MATLAB / Simulink&lt;/strong&gt;：控制算法、信号处理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ANSYS&lt;/strong&gt;：力学仿真（结构、流体）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adams&lt;/strong&gt;：多体动力学&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gazebo&lt;/strong&gt;（ROS 集成）：3D 物理仿真&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;V-REP / CoppeliaSim&lt;/strong&gt;：通用机器人仿真&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Webots&lt;/strong&gt;：跨平台&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MuJoCo&lt;/strong&gt;：强化学习物理仿真&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="操作系统"&gt;操作系统
&lt;/h2&gt;&lt;h3 id="主机操作系统ubuntu"&gt;主机操作系统：Ubuntu
&lt;/h3&gt;&lt;p&gt;机器人主机首选 &lt;strong&gt;Ubuntu 22.04 LTS / 24.04 LTS&lt;/strong&gt;（ROS 1/2 官方支持）。&lt;/p&gt;
&lt;h3 id="机器人操作系统-ros"&gt;机器人操作系统 ROS
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;ROS（Robot Operating System）&lt;/strong&gt; 是开源的机器人中间件，提供：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通信（话题 / 服务 / 动作）&lt;/li&gt;
&lt;li&gt;包管理&lt;/li&gt;
&lt;li&gt;工具链（RViz、rqt、rosbag）&lt;/li&gt;
&lt;li&gt;仿真（Gazebo）&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ros-noetic (Ubuntu 20.04)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ros-melodic (Ubuntu 18.04)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ros2-humble (Ubuntu 22.04)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ros2-jazzy (Ubuntu 24.04)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;核心概念&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Node&lt;/strong&gt;：一个独立进程&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Topic&lt;/strong&gt;：异步消息（pub/sub）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Service&lt;/strong&gt;：同步请求 / 响应&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt;：长任务 + 反馈&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bag&lt;/strong&gt;：录制与回放&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 写一个 ROS2 节点&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;rclpy&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;rclpy.node&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Node&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;std_msgs.msg&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Talker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Node&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;super&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;talker&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;publisher_&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create_publisher&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;chatter&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;timer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create_timer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;timer_callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;timer_callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Hello World&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;publisher_&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;publish&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rclpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;talker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Talker&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rclpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;spin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;talker&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rclpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shutdown&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="嵌入式-rtos"&gt;嵌入式 RTOS
&lt;/h3&gt;&lt;p&gt;机器人单片机上的实时操作系统：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;RTOS&lt;/th&gt;
					&lt;th&gt;特点&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;FreeRTOS&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;开源、最流行、商用友好&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;uCOS&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;老牌、教材丰富（μC/OS-II/III）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;VxWorks&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;商业、航空航天用&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;RT-Thread&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;国产、开源&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Zephyr&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Linux 基金会、开源&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;FreeRTOS 入门：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;#34;FreeRTOS.h&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;#34;task.h&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;vTaskBlink&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;pvParameters&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// 翻转 LED
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;vTaskDelay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;pdMS_TO_TICKS&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;xTaskCreate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vTaskBlink&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Blink&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;vTaskStartScheduler&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="硬件平台"&gt;硬件平台
&lt;/h2&gt;&lt;h3 id="嵌入式单板"&gt;嵌入式单板
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;STM32&lt;/strong&gt;：意法半导体，主流&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arduino&lt;/strong&gt;：开源、入门&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ESP32 / ESP8266&lt;/strong&gt;：WiFi/BLE&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Raspberry Pi&lt;/strong&gt;：Linux 单板机&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NVIDIA Jetson&lt;/strong&gt;：GPU 加速 AI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BeagleBone&lt;/strong&gt;：工业级&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="stm32-入门"&gt;STM32 入门
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;51 单片机&lt;/strong&gt;：最老、入门&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AVR&lt;/strong&gt;：Arduino 核心&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;STM32&lt;/strong&gt;：主流工业（f1 / f4 / h7 / g4 / u5 系列）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;STM32 关键能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通用定时器（输出 PWM / 输入捕获）&lt;/li&gt;
&lt;li&gt;UART（串口通信）&lt;/li&gt;
&lt;li&gt;SPI / I2C（传感器通信）&lt;/li&gt;
&lt;li&gt;CAN（车载通信）&lt;/li&gt;
&lt;li&gt;USB / Ethernet&lt;/li&gt;
&lt;li&gt;ADC / DAC&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="常用传感器"&gt;常用传感器
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;陀螺仪 / 加速度计&lt;/strong&gt;：MPU6050、LSM6DS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;码盘&lt;/strong&gt;：增量编码器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;红外 / 超声波&lt;/strong&gt;：避障&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LiDAR&lt;/strong&gt;：RPLIDAR、Velodyne&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;相机&lt;/strong&gt;：USB 相机、CSI 相机&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;深度相机&lt;/strong&gt;：Intel RealSense、Azure Kinect、ZED&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="通信协议"&gt;通信协议
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;协议&lt;/th&gt;
					&lt;th&gt;用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;UART&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;串口（最简单）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;SPI&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;高速外设（IMU、LCD）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;I2C&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;中速外设（EEPROM、传感器）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;CAN&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;汽车 / 工业&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;USB&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;PC 通信&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Ethernet&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;工业网络&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;WiFi / BLE&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;无线&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;LoRa&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;长距离低功耗&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;RS485&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;工业总线&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="写作与排版"&gt;写作与排版
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LaTeX&lt;/strong&gt;：学术写作黄金标准&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Markdown&lt;/strong&gt;：技术博客、README&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inkscape&lt;/strong&gt;：矢量图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;draw.io&lt;/strong&gt;：流程图、架构图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mermaid&lt;/strong&gt;：Markdown 图表&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="常用开发板"&gt;常用开发板
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;板子&lt;/th&gt;
					&lt;th&gt;价位&lt;/th&gt;
					&lt;th&gt;用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Arduino Uno&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;100&lt;/td&gt;
					&lt;td&gt;入门&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Arduino Mega&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;200&lt;/td&gt;
					&lt;td&gt;多 IO&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;STM32F103C8T6&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;30&lt;/td&gt;
					&lt;td&gt;工业入门&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;ESP32&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;50&lt;/td&gt;
					&lt;td&gt;WiFi/BLE&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Raspberry Pi 4&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;400&lt;/td&gt;
					&lt;td&gt;Linux SBC&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Raspberry Pi Pico&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;50&lt;/td&gt;
					&lt;td&gt;RP2040 双核&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Jetson Nano&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;1500&lt;/td&gt;
					&lt;td&gt;边缘 AI&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Jetson Orin&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;5000+&lt;/td&gt;
					&lt;td&gt;高级 AI&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;NUC&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;3000+&lt;/td&gt;
					&lt;td&gt;高性能&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="工具链"&gt;工具链
&lt;/h2&gt;&lt;h3 id="编译--构建"&gt;编译 / 构建
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CMake&lt;/strong&gt;：跨平台构建&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;catkin / colcon&lt;/strong&gt;：ROS 构建&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Make / Ninja&lt;/strong&gt;：Linux 经典&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PlatformIO&lt;/strong&gt;：嵌入式跨平台&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="调试"&gt;调试
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GDB&lt;/strong&gt;：命令行调试&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VSCode + 插件&lt;/strong&gt;：图形化调试&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenOCD / J-Link&lt;/strong&gt;：JTAG 调试&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;串口助手&lt;/strong&gt;：PuTTY、minicom、MobaXterm&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="版本控制"&gt;版本控制
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Git&lt;/strong&gt;：必备&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Git LFS&lt;/strong&gt;：大文件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DVC&lt;/strong&gt;：数据版本控制&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="在线学习资源"&gt;在线学习资源
&lt;/h2&gt;&lt;h3 id="课程"&gt;课程
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Coursera&lt;/strong&gt;：&lt;a class="link" href="https://www.coursera.org/specializations/modernrobotics" target="_blank" rel="noopener"
 &gt;Robotics Specialization (UPenn)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;edX&lt;/strong&gt;：MIT 6.832 机器人运动学&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中国大学 MOOC&lt;/strong&gt;：机器人学（中南大学）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bilibili&lt;/strong&gt;（中文免费）：ROS 教程、古月居&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Udacity&lt;/strong&gt;：Self-Driving Car Nanodegree&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="社区"&gt;社区
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ROS Discourse&lt;/strong&gt;：https://discourse.ros.org/&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ROS Answers&lt;/strong&gt;：https://answers.ros.org/&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Awesome Robotics&lt;/strong&gt;：https://github.com/jslee02/awesome-robotics&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;古月居&lt;/strong&gt;（中文）：https://www.guyuehome.com/&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ROSClub&lt;/strong&gt;（中文）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知乎机器人话题&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="论文--文献"&gt;论文 / 文献
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;arXiv Robotics&lt;/strong&gt;：https://arxiv.org/list/cs.RO/recent&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IEEE Robotics and Automation&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ICRA / IROS / RSS&lt;/strong&gt;：顶会&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="实践项目路径"&gt;实践项目路径
&lt;/h2&gt;&lt;h3 id="level-1单片机基础"&gt;Level 1：单片机基础
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Arduino 流水灯&lt;/li&gt;
&lt;li&gt;STM32 GPIO / 定时器&lt;/li&gt;
&lt;li&gt;UART 串口通信&lt;/li&gt;
&lt;li&gt;PWM 控制舵机&lt;/li&gt;
&lt;li&gt;I2C 读 MPU6050&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="level-2移动机器人"&gt;Level 2：移动机器人
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;4 轮小车驱动&lt;/li&gt;
&lt;li&gt;编码器测速&lt;/li&gt;
&lt;li&gt;PID 巡线&lt;/li&gt;
&lt;li&gt;IMU 姿态估计&lt;/li&gt;
&lt;li&gt;ROS 集成&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="level-3自主导航"&gt;Level 3：自主导航
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;SLAM 建图（gmapping / cartographer）&lt;/li&gt;
&lt;li&gt;路径规划（move_base / nav2）&lt;/li&gt;
&lt;li&gt;自主避障&lt;/li&gt;
&lt;li&gt;多传感器融合（激光 + 视觉）&lt;/li&gt;
&lt;li&gt;ROS2 迁移&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="level-4机械臂--无人机"&gt;Level 4：机械臂 / 无人机
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;机械臂 DH 参数建模&lt;/li&gt;
&lt;li&gt;正逆运动学&lt;/li&gt;
&lt;li&gt;MoveIt 运动规划&lt;/li&gt;
&lt;li&gt;视觉抓取&lt;/li&gt;
&lt;li&gt;多机协同&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="2017-vs-2024-视角工具链--stm32-库版本"&gt;2017 vs 2024 视角：工具链 &amp;amp; STM32 库版本
&lt;/h2&gt;&lt;p&gt;本文写于 2017 年（ROS Kinetic、STM32 HAL 刚发布、FreeRTOS 还是 Richard Barry 一个人在维护）。7 年后（2024）回望，机器人开发栈已经发生显著变化。下面是&lt;strong&gt;当前可用的版本与替代方案&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="1-ros--ros-2-版本对照2024"&gt;1. ROS / ROS 2 版本对照（2024）
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;版本&lt;/th&gt;
					&lt;th&gt;时间&lt;/th&gt;
					&lt;th&gt;状态（2024+）&lt;/th&gt;
					&lt;th&gt;配套 Ubuntu&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;ROS Kinetic&lt;/td&gt;
					&lt;td&gt;2016-2021&lt;/td&gt;
					&lt;td&gt;已 EOL&lt;/td&gt;
					&lt;td&gt;Ubuntu 16.04&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;ROS Melodic&lt;/td&gt;
					&lt;td&gt;2018-2023&lt;/td&gt;
					&lt;td&gt;已 EOL&lt;/td&gt;
					&lt;td&gt;Ubuntu 18.04&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;ROS Noetic&lt;/td&gt;
					&lt;td&gt;2020-&lt;strong&gt;2025-05&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;即将 EOL&lt;/strong&gt;（最后 ROS 1 LTS）&lt;/td&gt;
					&lt;td&gt;Ubuntu 20.04&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;ROS 2 Humble&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;2022-&lt;strong&gt;2027-05&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;当前推荐 LTS&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Ubuntu 22.04&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;ROS 2 Jazzy&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;2024-&lt;strong&gt;2029-05&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;2024 新 LTS&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Ubuntu 24.04&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;2024+ 新项目必须用 ROS 2 Humble 或 Jazzy&lt;/strong&gt;。ROS 1 Noetic 还有 1 年寿命，不要再开新坑。&lt;/p&gt;
&lt;h3 id="2-stm32-库版本2024-视角"&gt;2. STM32 库版本（2024 视角）
&lt;/h3&gt;&lt;p&gt;本文 2017 写时 STM32 HAL 还很新。今天的状态：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;库&lt;/th&gt;
					&lt;th&gt;2017 状态&lt;/th&gt;
					&lt;th&gt;2024 状态&lt;/th&gt;
					&lt;th&gt;选哪个&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;标准外设库（StdPeriph）&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;主流&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;2017 已 ST 官方弃用&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;❌ 不要再用&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;HAL&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;刚发布&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;当前主流&lt;/strong&gt;，覆盖全系列&lt;/td&gt;
					&lt;td&gt;✅ 大多数项目&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;LL（Low-Layer）&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;刚发布&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;性能敏感场景首选&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;✅ 电机控制、高速 ADC&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;CMSIS Driver&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;雏形&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;统一驱动接口&lt;/strong&gt;，可移植性强&lt;/td&gt;
					&lt;td&gt;✅ 跨平台项目&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;TouchGFX&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;收购&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;ST 官方 GUI 框架&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;✅ STM32H7 带屏项目&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;STM32CubeIDE&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;收购 Atollic&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;ST 官方 IDE&lt;/strong&gt;（替代 TrueSTUDIO）&lt;/td&gt;
					&lt;td&gt;✅ 替代 Eclipse 工程&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;实战建议（2024）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;新项目&lt;/strong&gt;：CubeMX 生成 HAL 工程，IDE 用 STM32CubeIDE（免费）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能关键路径&lt;/strong&gt;：用 LL（Low-Layer）替代 HAL（开销小 10~30 倍）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;电机控制 / 电源&lt;/strong&gt;：用 HAL + LL 混编（启动用 HAL，高频中断用 LL）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GUI&lt;/strong&gt;：TouchGFX（替代 emWin）+ LTDC 控制器&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ST 主流 MCU 系列（2024 现状）&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;系列&lt;/th&gt;
					&lt;th&gt;性能&lt;/th&gt;
					&lt;th&gt;典型应用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;STM32F0 / G0&lt;/td&gt;
					&lt;td&gt;入门&lt;/td&gt;
					&lt;td&gt;GPIO、UART、简单控制&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;STM32F1 / F3&lt;/td&gt;
					&lt;td&gt;经典&lt;/td&gt;
					&lt;td&gt;工业控制、电机驱动&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;STM32F4 / H7&lt;/td&gt;
					&lt;td&gt;高性能&lt;/td&gt;
					&lt;td&gt;图像处理、复杂算法&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;STM32G4&lt;/td&gt;
					&lt;td&gt;电机控制专用&lt;/td&gt;
					&lt;td&gt;数字电源、BLDC/PMSM&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;STM32H5 / H7&lt;/td&gt;
					&lt;td&gt;高安全 / 高速&lt;/td&gt;
					&lt;td&gt;汽车、工业网关&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;STM32U5&lt;/td&gt;
					&lt;td&gt;超低功耗&lt;/td&gt;
					&lt;td&gt;IoT、电池设备&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;STM32MP1&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Cortex-A7 + M4 双核&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Linux + RTOS 协同&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;STM32N6&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;2024 新品，NPU 加速&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;边缘 AI 推理&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="3-freertos-现状2024"&gt;3. FreeRTOS 现状（2024）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;FreeRTOS&lt;/strong&gt; 仍由 &lt;strong&gt;Amazon&lt;/strong&gt; 维护（2017 年被 AWS 收购后持续投入）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FreeRTOS Kernel V10 / V11&lt;/strong&gt;：现代 API，支持 SMP（多核对称）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FreeRTOS + TCP&lt;/strong&gt;：自带 TCP/IP 协议栈（替代 lwIP 的轻量场景）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zephyr&lt;/strong&gt;（Linux 基金会）：FreeRTOS 的强劲对手，&lt;strong&gt;2024 设备数已经超过 FreeRTOS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NuttX&lt;/strong&gt;：POSIX 兼容，PX4 / Sony Spresense 用它&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RT-Thread&lt;/strong&gt;（国产）：国内嵌入式 RTOS 事实标准&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;选择建议&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;单芯片低功耗 → &lt;strong&gt;FreeRTOS&lt;/strong&gt;（成熟 + 文档多）&lt;/li&gt;
&lt;li&gt;复杂产品 + 多协议 → &lt;strong&gt;Zephyr&lt;/strong&gt;（蓝牙 / LoRa / CAN 全栈）&lt;/li&gt;
&lt;li&gt;国产化 / 国内项目 → &lt;strong&gt;RT-Thread&lt;/strong&gt;（本土生态、中文文档）&lt;/li&gt;
&lt;li&gt;飞控 / 无人机 → &lt;strong&gt;PX4 + NuttX&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-esp32-现状2024"&gt;4. ESP32 现状（2024）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ESP32-S3&lt;/strong&gt;（2022）：Xtensa LX7 双核 + AI 加速，主力&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ESP32-C3&lt;/strong&gt;（2020）：RISC-V 单核，WiFi + BLE5&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ESP32-C6&lt;/strong&gt;（2023）：&lt;strong&gt;WiFi 6 + BLE5 + 802.15.4（Thread/Zigbee）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ESP32-H2&lt;/strong&gt;（2023）：&lt;strong&gt;802.15.4 + BLE5，专攻 Thread/Zigbee&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ESP32-P4&lt;/strong&gt;（2024 预告）：高性能双核 RISC-V&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ESP-IDF 5.x&lt;/strong&gt;（2024）：基于 &lt;strong&gt;CMake + Ninja + idf.py&lt;/strong&gt;，告别老旧 make&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Matter 协议&lt;/strong&gt;（CSA 联盟）：智能家居统一标准，ESP32 全系支持&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="5-ai-训练--推理框架"&gt;5. AI 训练 / 推理框架
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;用途&lt;/th&gt;
					&lt;th&gt;2017 主流&lt;/th&gt;
					&lt;th&gt;2024 主流&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;深度学习框架&lt;/td&gt;
					&lt;td&gt;Caffe / TensorFlow 1.x / PyTorch 0.1&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;PyTorch 2.x&lt;/strong&gt;（事实标准） / &lt;strong&gt;JAX&lt;/strong&gt;（Google） / TensorFlow 2.x（衰退）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;强化学习&lt;/td&gt;
					&lt;td&gt;TensorFlow + OpenAI Gym&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Stable-Baselines3&lt;/strong&gt; / &lt;strong&gt;RLlib&lt;/strong&gt; / &lt;strong&gt;Isaac Gym&lt;/strong&gt;（NVIDIA）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;边缘推理&lt;/td&gt;
					&lt;td&gt;TensorFlow Lite（刚发布）&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;TensorRT&lt;/strong&gt; / &lt;strong&gt;ONNX Runtime&lt;/strong&gt; / &lt;strong&gt;TVM&lt;/strong&gt; / &lt;strong&gt;OpenVINO&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;机器人策略&lt;/td&gt;
					&lt;td&gt;ROS + 传统控制&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Octo&lt;/strong&gt; / &lt;strong&gt;OpenVLA&lt;/strong&gt; / &lt;strong&gt;π0&lt;/strong&gt; 等具身基础模型&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="6-中国机器人大赛现状2024"&gt;6. 中国机器人大赛现状（2024）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;原&amp;quot;全国大学生机器人大赛 Robocon&amp;quot;和&amp;quot;RoboMaster&amp;quot;&lt;strong&gt;仍然活跃&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RoboMaster 2024&lt;/strong&gt;（机甲大师赛）：由大疆赞助，参赛队伍 300+ 高校&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RoboMaster 2024 高中组&lt;/strong&gt;：新增高中组&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ICRA / IROS / RSS&lt;/strong&gt;：仍是机器人顶会&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;国内新赛事&lt;/strong&gt;：中国机器人及人工智能大赛、全国大学生智能车竞赛&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="7-2024-学习路径建议"&gt;7. 2024 学习路径建议
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;基础&lt;/strong&gt;：C / C++ / Python + ROS 2（Humble/Jazzy）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;嵌入式&lt;/strong&gt;：STM32CubeMX + HAL/LL（替代老旧 StdPeriph）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;感知&lt;/strong&gt;：OpenCV 4.x + PCL + ORB-SLAM3&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;控制&lt;/strong&gt;：ROS 2 Control + ros2_control + MoveIt 2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 入门&lt;/strong&gt;：PyTorch 2.x + Hugging Face Transformers&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;前沿&lt;/strong&gt;：Octo / OpenVLA 具身基础模型 + Isaac Sim&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="8-一句话总结"&gt;8. 一句话总结
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;2017 年是 &lt;strong&gt;ROS Kinetic + StdPeriph + Caffe + 传统 PID&lt;/strong&gt; 的时代；
2024 年是 &lt;strong&gt;ROS 2 Jazzy + HAL/LL + PyTorch + 具身基础模型 + 国产硬件白菜价&lt;/strong&gt; 的时代。&lt;/p&gt;
&lt;p&gt;入门门槛没变（数学 + 编程 + 动手），但工具栈&lt;strong&gt;完全换代&lt;/strong&gt;了。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="下一步"&gt;下一步
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;机器人核心技术与学习路径，看 2015-11-15《机器人核心技术与学习路径》&lt;/li&gt;
&lt;li&gt;嵌入式开发，看对应 STM32 HAL / FreeRTOS 教程（&lt;strong&gt;注意：已从 StdPeriph 升级到 HAL/LL&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;ROS 2 实战，看 &lt;a class="link" href="https://docs.ros.org/en/humble/Tutorials.html" target="_blank" rel="noopener"
 &gt;ROS 2 Humble 官方教程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;ROS 官方：https://www.ros.org/&lt;/li&gt;
&lt;li&gt;ROS 2 Jazzy 官方：https://docs.ros.org/en/jazzy/&lt;/li&gt;
&lt;li&gt;STM32 HAL 文档：https://www.st.com/en/embedded-software/stm32cube-mcu-mpu-packages.html&lt;/li&gt;
&lt;li&gt;FreeRTOS 官方：https://www.freertos.org/&lt;/li&gt;
&lt;li&gt;Zephyr 官方：https://zephyrproject.org/&lt;/li&gt;
&lt;li&gt;RT-Thread 官方：https://www.rt-thread.org/&lt;/li&gt;
&lt;li&gt;NumPy 官方：https://numpy.org/&lt;/li&gt;
&lt;li&gt;OpenCV 官方：https://opencv.org/&lt;/li&gt;
&lt;li&gt;PyTorch 官方：https://pytorch.org/&lt;/li&gt;
&lt;li&gt;Awesome Robotics：https://github.com/jslee02/awesome-robotics&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>