TASK01【datawhale組隊學習】地瓜機器人具身智能概述

https://github.com/datawhalechina/ai-hardware-robotics
參考資料地址

具身智能(Embodied AI) 具身智能 = 智能的大腦 + 行動的身體。
比例(Proportional)、積分(Integral)、微分(Derivative)

目錄

  • 具身智能概述
    • 重要三要素 身體 、大腦 、環境
    • 發展的脈絡
    • 面臨的挑戰
  • PID_control
    • 工作原理
      • c語言示例代碼
      • 舉例分析 matlab-simulink

具身智能,指的是能夠通過 物理身體(如機器人、自動駕駛汽車等)在真實世界中進行感知、交互和學習的智能系統。它強調智能體必須擁有一個“身體”(Body),并通過這個身體與環境互動,從而獲得對世界更深層次、更符合物理規律的理解。

具身智能概述

重要三要素 身體 、大腦 、環境

  • 身體(Body):智能體的物理形態,包括各種傳感器(如攝像頭、激光雷達、觸覺傳感器)用于感知,以及執行器(如電機、機械臂、輪子)用于行動。
  • 大腦(Brain):即智能算法的核心,負責處理來自傳感器的數據,進行思考、決策,并向執行器發出指令。這通常涉及到深度學習、強化學習、大語言模型等前沿AI技術。
  • 環境(Environment):智能體所處的物理世界。它是智能體學習和實踐的舞臺,充滿著不確定性、動態變化和復雜的物理規律。

發展的脈絡

第一階段(20 世紀中葉 - 20 世紀末)

  • 理論構想的提出與早期實體機器人的嘗試。控制論創始人等率先提出機器與環境交互的理念,為具身智能奠定理論基礎。
  • 標志性成果是世界首臺移動機器人 Shakey 的誕生,它首次實現了感知、推理和行動的系統整合,雖行動遲緩,但開啟了具身智能從概念到實體的探索。
    第二階段(21 世紀初 - 2020 年)
  • 深度學習技術推動機器人感知與學習能力的躍升。算力提升讓計算機視覺技術成熟,賦予機器人更敏銳的 “視覺”;強化學習使機器人能通過試錯自主學習復雜技能。
  • 突出成果體現在運動控制與平衡能力的飛躍,以波士頓動力為代表,其大狗機器人、Atlas 人形機器人等展現了具身智能在動態運動上的驚人水平。
    第三階段(2021 年 - 至今)
  • 大語言模型(LLM)成為具身智能的 “大腦”,帶來范式轉移。LLM 的通用理解和推理能力,讓機器人能理解復雜指令并分解為具體行動步驟。
  • 代表性突破包括谷歌 RT-2 模型實現 “視覺 - 語言 - 行動” 端到端控制、特斯拉 Optimus 依托自動駕駛技術打造通用人形機器人、Figure AI 與 OpenAI 合作整合對話推理能力,推動具身智能向通用化邁進。

面臨的挑戰

  • 核心挑戰:
    “Sim-to-Real”的鴻溝: 在模擬器中訓練好的模型,轉移到現實世界時往往會“水土不服”,因為現實世界充滿了模擬器無法窮盡的細節和意外。

  • 泛化能力: 如何讓機器人在面對從未見過的物體和環境時,依然能做出正確的決策和行動,這是實現“通用”的關鍵。

  • 數據稀缺: 與互聯網上取之不盡的文本和圖片數據不同,高質量的機器人交互數據既昂貴又難以獲取。

  • 安全性與倫理: 一個擁有強大物理能力的AI系統,如何確保其行為的安全、可控和符合人類倫理,是一個必須嚴肅對待的問題。

PID_control

  1. 首先學習 PID控制算法 掌握基礎控制原理
  2. 了解不同控制參數對系統響應的影響
  3. 嘗試調整PID參數以獲得最佳控制效果
  4. 進階學習高級控制算法(待更新)
  • PID控制算法是工業自動化中最常用的控制算法之一。
  • 什么是PID算法:PID通過計算當前輸出與期望輸出之間的誤差,并根據該誤差的比例(P)、積分(I)和微分(D)來調整控制輸入,從而實現對系統的精確控制。

工作原理

PID控制器通過以下三個基本組件來計算控制輸入:

  • 比例(P):【快速相應誤差】直接對誤差進行比例放大,可以迅速減少誤差,但可能導致系統不穩定。
    • 舉例:如果當前溫度 20℃(誤差 5℃),P 環節會讓空調加大制熱功率(比如開 50% 功率);如果誤差減小到 1℃,功率就降低到 10%。
    • 特點:能快速縮小誤差,但單獨使用時,可能因為 “慣性” 導致系統在目標值附近波動(比如溫度超過 25℃后,空調才開始減小功率),難以完全消除誤差(稱為 “穩態誤差”)。
  • 積分(I):【消除累積誤差】對誤差進行積分,可以消除系統的靜態誤差,但可能導致系統響應變慢。根據誤差的 “累積時間” 調整 —— 如果誤差長期存在(比如溫度一直差 1℃),積分環節會逐漸加大控制力度,直到誤差徹底消除。
    • 舉例:如果溫度穩定在 24℃(誤差 1℃),P 環節可能認為誤差小而停止調整,但 I 環節會累計這個 1℃的誤差(比如累計 10 分鐘后),驅動空調略微加大功率,最終讓溫度達到 25℃。
    • 特點:解決 P 環節的 “穩態誤差”,但響應較慢,單獨使用可能導致系統超調(比如溫度超過 25℃后還在加熱)。
  • 微分(D):【預測誤差變化趨勢】對誤差的導數進行預測,可以預測誤差的變化趨勢,從而提前進行調整,提高系統的響應速度和穩定性。
    • 舉例:如果溫度從 20℃快速升到 24℃(1 分鐘內升了 4℃),D 環節會預測 “可能很快超過 25℃”,提前讓空調減小制熱功率,避免溫度過高。
    • 作用:根據誤差的 “變化速度” 調整 —— 如果誤差突然變大(或變小),D 環節會提前輸出反向控制信號,抑制系統的劇烈變化。

e(t)e(t)e(t) 是當前誤差,即期望輸出與實際輸出之間的差值。

  • KpK_pKp? 是比例系數。
  • KiK_iKi? 是積分系數。
  • KdK_dKd? 是微分系數。

實現步驟

  • 計算誤差:計算當前輸出與期望輸出之間的誤差。
    • 比例項:根據比例系數和誤差計算比例項。
    • 積分項:對誤差進行積分,并根據積分系數計算積分項。
    • 微分項:計算誤差的導數,并根據微分系數計算微分項。
  • 計算控制輸入:將比例項、積分項和微分項相加,得到控制輸入。
  • 應用控制輸入:將控制輸入應用于被控系統。

整體公式:
u(t)=Kp?e(t)+Ki∫0te(τ)dτ+Kd?de(t)dtu(t) = K_p \cdot e(t) + K_i \int_{0}^{t} e(\tau) \, d\tau + K_d \cdot \frac{de(t)}{dt}u(t)=Kp??e(t)+Ki?0t?e(τ)dτ+Kd??dtde(t)?

  • 一般情況下,我們是通過波形圖的穩定以及響應來判定PID算法的效果的。
  • 一般情況下,我們可以先設置一個較大的比例系數,然后逐漸減小比例系數,直到系統的響應變得平滑。
  • 積分項的作用是消除系統的靜態誤差,但是積分項的引入會使系統的響應變慢。
  • 微分項的作用是預測誤差的變化趨勢,從而提前進行調整,提高系統的響應速度和穩定性。

一般來說,位置PID控制算法可以穩定大部分的控制,但是根據不同的應用情景,也有不同的優化算法

  1. 積分分離PID
    u(k)=KPe(k)+βKI∑i=0ke(i)+KD[e(k)?e(k?1)]u(k) = K_P e(k) + \beta K_I \sum_{i=0}^{k} e(i) + K_D \left[ e(k) - e(k - 1) \right]u(k)=KP?e(k)+βKI?i=0k?e(i)+KD?[e(k)?e(k?1)]
  2. 變速積分的PID控制
    u(k)=KPe(k)+KI∑i=0kαe(i)+KD[e(k)?e(k?1)]u(k) = K_P e(k) + K_I \sum_{i=0}^{k} \alpha e(i) + K_D \left[ e(k) - e(k - 1) \right]u(k)=KP?e(k)+KI?i=0k?αe(i)+KD?[e(k)?e(k?1)]
  3. 不完全微分PID控制
    uD(k)=KD(1?α)[e(k)?e(k?1)]+αuD(k?1)u_D (k) = K_D (1 - \alpha) \left[ e(k) - e(k - 1) \right] + \alpha u_D (k - 1)uD?(k)=KD?(1?α)[e(k)?e(k?1)]+αuD?(k?1)
    示例代碼:
class PID:# pid的初始化賦值def __init__(self, Kp, Ki, Kd, setpoint=0, sample_time=0.01):self.Kp = Kpself.Ki = Kiself.Kd = Kdself.setpoint = setpointself.sample_time = sample_timeself.prev_error = 0self.integral = 0# pid的cal_processdef update(self, measured_value):error = self.setpoint - measured_value # 計算誤差self.integral += error * self.sample_time # 積分derivative = (error - self.prev_error) / self. sample_time # 微分output = self.Kp * error + self.Ki * self.integral + self.Kd * derivative # 計算控制輸入self.prev_error = error # 保存誤差return outputpid = PID(Kp=1.0, Ki=0.1, Kd=0.01, setpoint=100)
measured_value = 90  # 假設的當前測量值
control_input = pid.update(measured_value)print(f"Control Input: {control_input}")

c語言示例代碼

void pid_init(pid_type_def *pid,uint8_t mode,float max_output,float max_iout,const float PID[3])
{pid->mode=mode;pid->max_output=max_output;pid->max_ioutput=max_iout;pid->Dbuf[0]=pid->Dbuf[1]=pid->Dbuf[2];pid->error[0]=pid->error[1]=pid->error[2]=pid->pout=pid->iout=pid->dout=0.0f;
}float PID_calc(pid_type_def *pid,float ref,float set,float PID[3])
{pid->kp=PID[0];pid->ki=PID[1];pid->kd=PID[2];pid->error[2]=pid->error[1];pid->error[1]=pid->error[0];pid->set=set;pid->cur=ref;pid->error[0]=set-ref;if (pid->mode ==PID_POSITION){pid->pout=pid->kp*pid->error[0];pid->iout+=pid->ki*pid->error[0];pid->Dbuf[2]=pid->Dbuf[1];pid->Dbuf[1]=pid->Dbuf[0];pid->Dbuf[0]=pid->error[0]-pid->error[1];if (pid->iout>pid->max_ioutput){pid->iout=pid->max_ioutput;}else if (pid->iout<-pid->max_ioutput){pid->iout=-pid->max_ioutput;}if (pid->iout*pid->error[0]<0){pid->iout=0;}if (pid->cur>0.707*pid->set || pid->cur<0.707*pid->set){pid->dout=pid->kd*pid->Dbuf[0];}else{pid->dout=0;}pid->output=pid->pout+pid->iout+pid->dout;if (pid->output>pid->max_output){pid->output=pid->max_output;}}else if (pid->mode==PID_DELTA){pid->pout=pid->kp*(pid->error[0]-pid->error[1]);pid->iout=pid->ki*pid->error[0];if (pid->iout>pid->max_ioutput){pid->iout=pid->max_ioutput;}		else if (pid->iout<-pid->max_ioutput){pid->iout=-pid->max_ioutput;}if (pid->iout*pid->error[0]<0){pid->iout=0;}pid->Dbuf[2]=pid->Dbuf[1];pid->Dbuf[1]=pid->Dbuf[0];pid->Dbuf[0]=pid->error[0]-2.0f*pid->error[1]+pid->error[2];if (pid->cur>0.707*pid->set || pid->cur<0.707*pid->set){pid->dout=pid->kd*pid->Dbuf[0];}else{pid->dout=0;}pid->output+=pid->pout+pid->iout+pid->dout;if (pid->output>pid->max_output){pid->output=pid->max_output;}}return pid->output;
}

舉例分析 matlab-simulink

這是當P是10,I是0.001,D是0.01的時候matlab的simulink仿真圖以及他的效果圖,采樣周期T是200.
在這里插入圖片描述
說明存在穩態誤差,這個時候要增加i,使得不存在穩態誤差
在這里插入圖片描述
增加I的數值以后,發現超調,準備增加D

在這里插入圖片描述
最好的效果如下
在這里插入圖片描述
優化以及其他情況的PID計算:

            參數整定找最佳, 從小到大順序查。先是比例后積分, 最后再把微分加。曲線振蕩很頻繁, 比例度盤要放大。曲線漂浮繞大彎, 比例度盤往小扳。曲線偏離回復慢, 積分時間往下降。曲線波動周期長, 積分時間再加長。曲線振蕩頻率快, 先把微分降下來。動差大來波動慢, 微分時間應加長。理想曲線兩個波, 前高后低四比一。一看二調多分析, 調節質量不會低。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89177.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89177.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89177.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uni-app 配置華為離線推送流程

1、首先需要創建一個華為開發者賬號&#xff0c;我這個是個人開發賬號 申請開發者賬號 2、去AppGallery Connect登陸我們剛剛創建好的賬號&#xff0c;點擊頁面的APP進入到如下3 AppGallery Connect ????? ?3、在AppGallery Connect 網站中創建一個 Android應用、點擊…

當下主流攝像頭及其核心參數詳解

&#x1f4d6; 推薦閱讀&#xff1a;《Yocto項目實戰教程:高效定制嵌入式Linux系統》 &#x1f3a5; 更多學習視頻請關注 B 站&#xff1a;嵌入式Jerry 當下主流攝像頭及其核心參數詳解 一、攝像頭發展概述 攝像頭作為現代智能設備&#xff08;如手機、安防、車載、工業等&am…

下載了docker但是VirtualBox突然啟動不了了

今天下docker后發現 eNSP 路由器&#xff0c;防火墻啟動不了了去virtualbox檢查的時候發現無法啟動&#xff1a;報錯&#xff1a;不能為虛擬電腦 AR_Base 打開一個新任務.Raw-mode is unavailable courtesy of Hyper-V. (VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT).返回代碼: E_F…

C++11之lambda表達式與包裝器

lambda與包裝器lambda語法捕捉列表lambda的應用lambda的原理包裝器functionbindlambda語法 lambda 表達式本質是?個匿名函數對象&#xff0c;跟普通函數不同的是他可以定義在函數內部。 lambda 表達式語法使?層??沒有類型&#xff0c;所以我們?般是?auto或者模板參數定義…

有痛呻吟!!!

XiTuJueJin:YYDS 分盤 有些平臺吃相太難看&#xff0c;同樣的文章&#xff0c;我還先選擇現在這里發布&#xff0c;TMD. 莫名其妙將我的文章設置為僅VIP可見&#xff0c;還是今天才發現&#xff0c;之前只是將一兩篇設置為僅VIP可見&#xff0c;今天突然發現這種標識的都自動…

2025年7-9月高含金量數學建模競賽清單

2025年7-9月高含金量數學建模競賽 ——“高教社杯”國賽 & “華為杯”研賽作為過來人&#xff0c;真心覺得參加數學建模比賽是我本科階段做的最值的事之一。 它鍛煉的那種把實際問題轉化成模型求解的思維&#xff0c;對做研究、寫論文甚至以后工作都幫助很大。我當時就是靠…

SpringBoot為什么使用new RuntimeException() 來獲取調用棧?

為什么不直接使用 Thread.currentThread().getStackTrace()&#xff1f;這確實看起來有點“奇怪”或者“繞”&#xff0c;但其實這是 Java 中一種非常常見、巧妙且合法的技巧&#xff0c;用于在運行時動態獲取當前代碼的調用棧信息。Spring 選擇用 new RuntimeException().getS…

小白成長之路-haproxy負載均衡

文章目錄一、概述1、HAProxy簡介2、HAProxy特點和優點&#xff1a;3、HAProxy保持會話的三種解決方法4、HAProxy的balance 8種負載均衡算法1&#xff09;RR&#xff08;Round Robin&#xff09;2&#xff09;LC&#xff08;Least Connections&#xff09;3&#xff09;SH&#…

Kafka 與 RocketMQ 消息確認機制對比分析

目錄 生產者消息確認機制 Kafka 生產者 ACK 機制 RocketMQ 生產者確認機制 消費者消息確認機制 Kafka 消費者確認機制 RocketMQ 消費者確認機制 核心差異對比 選型建議 消息確認機制是分布式消息中間件的核心功能之一&#xff0c;它直接關系到消息傳遞的可靠性和系統性能…

C/C++---rdbuf()函數

在C中&#xff0c;rdbuf() 是I/O流庫中的一個核心成員函數&#xff0c;主要用于訪問和操作流對象的緩沖區。這個函數在底層數據處理、流重定向以及自定義流操作等場景中應用廣泛。下面將從多個方面詳細解析 rdbuf() 函數。 基本概念與函數原型 rdbuf() 是 std::basic_ios 類的成…

【LLM】從零到一構建一個小型LLM--MiniGPT

從零到一構建一個小型LLM (Small Language Model)暫時起名為MiniGPT。這個模型將專注于因果語言建模 (Causal Language Modeling)&#xff0c;這是許多現代LLM&#xff08;如GPT系列&#xff09;的核心預訓練任務。模型設計&#xff1a; 我們設計的模型是一個僅包含解碼器 (Dec…

網絡安全威脅下的企業困境與破局技術實踐

前言&#xff1a;網絡安全威脅下的企業困境 在數字化轉型的浪潮中&#xff0c;企業對信息技術的依賴程度日益加深&#xff0c;但隨之而來的網絡安全威脅也愈發嚴峻。據統計&#xff0c;全球每年因網絡安全事件造成的經濟損失高達數萬億美元&#xff0c;其中中小企業更是成為了網…

[RAG system] 信息檢索器 | BM25 Vector | Pickle格式 | HybridRetriever重排序

第六章&#xff1a;信息檢索器 在上一章中&#xff0c;我們成功完成了知識庫攝入流程。這是巨大的進步~ 我們精心準備了文檔"塊"&#xff08;類似獨立的索引卡&#xff09;&#xff0c;并將其存儲在兩套智能歸檔系統中&#xff1a;向量數據庫&#xff08;用于基于含…

Android 高通平臺修改音頻參數效果文件-優化音頻效果

Android 高通平臺如何音頻效果 修改音頻參數效果文件-優化音頻效果 按如下方式修改。 開發云 - 一站式云服務平臺 diff --git a/vendor/qcom/proprietary/mm-audio/audcal/family-b/acdbdata//MTP/workspaceFile.qwsp b/vendor/qcom/proprietary/mm-audio/audcal/family-b/acdb…

Install Docker Engine on UbuntuMySQL

Install Docker Engine on Ubuntu&&MySQL安裝docker安裝mysql客戶端連接數據庫我真氣鼠了&#xff0c;今天得到一個血淚的教訓&#xff0c;以后一定看官方文檔&#xff01;&#xff01;&#xff01;學的課用的centos&#xff0c;指令全是yum&#xff0c;我這邊不通用&a…

智能人體感應模塊HC-SR501應用指南---使用esp32

人體熱釋電探頭紅外感應模塊 人體感應開關HC-SR501藍板新款 綠板-淘寶網 HC-SR501 人體紅外感應電子模塊傳感器熱釋電探頭感應開關RD-624-tmall.com天貓 模塊信息 HC-SR501人體感應開關是一種基于紅外線技術的自動控制模塊&#xff0c;廣泛應用于安防、智能家居和自動控制等領…

加速度傳感器方向校準方法

保持平板平放在桌面上&#xff0c;將后置攝像頭保持在平板的左上后方&#xff0c;或者右上后方&#xff0c;此為機器的正方向 1、以一臺重力方向正常的機器做測試&#xff0c;通過DeviceInfoHw這個軟件的加速度測試功能【Accelerometer Test】我們可以知道 X方向數據測試&#…

【OpenHarmonyOS應用開發】

OpenHarmonyOS應用開發1.OpenHarmonyOS應用開發環境安裝2.初始化項目3.連接潤和軟件的開發板套件1.OpenHarmonyOS應用開發環境安裝 進入HarmonyOS下載鴻蒙應用開發工具DevEco Studio 5.0.7.200版本。 雙擊打開下載好的可執行文件&#xff0c;點擊下一步。 如果已經安裝過&am…

50天50個小項目 (Vue3 + Tailwindcss V4) ? | AutoTextEffect(自動打字機)

&#x1f4c5; 我們繼續 50 個小項目挑戰&#xff01;—— AutoTextEffect組件 倉庫地址&#xff1a;https://github.com/SunACong/50-vue-projects 項目預覽地址&#xff1a;https://50-vue-projects.vercel.app/。 利用 Vue 3 的 Composition API 和一些簡單的 CSS 動畫來構…

[RAG] LLM 交互層 | 適配器模式 | 文檔解析器(`docling`庫, CNN, OCR, OpenCV)

第二章&#xff1a;LLM 交互層 在上一章中&#xff0c;我們學習了作為"項目總控"的管道協調器&#xff0c;它負責協調 RAG 系統中各個功能模塊。 其中最重要的協調對象之一&#xff0c;便是負責與大型語言模型&#xff08;LLM&#xff09;進行智能交互的LLM 交互層…