智能小車——初步想法

需要參考輪趣的智能小車自己搭建一臺智能機器人,這里從底層控制開始逐步搭建。

控制模式

之后要自行搭建智能小車,所以將輪趣的底盤代碼進行學習,根據開發手冊先大致過一遍需要的內容。

有做很多個控制方法,包括了手柄、串口、CAN、ROS等,如下所示:
控制模式總結
如上圖所示,對于項目而宮,重要的是PS2控制(即迎控器控制),以及CAN控制(需要用到CAN通訊),串口控制(上位機算法的通訊),其余的關注一下就可以了。

速度單位

全部控制程序全部換算成國際單位制m/s,所以要將緝碼器的原始數據轉換為m/s。

這里涉及的就是輪子半徑、編碼器數據、控制頻率、編碼器精度,通過這幾個數據最終完成小車速度的換算。公式如下所示:
運動速度轉換關系式

串口控制

就是ROS與STM32的通訊,通過串口3來完成通訊。

這里需要自定義一個數據幀,通過這個數據幀來完成電機控制狀態的傳輸通訊。這里發送的數據包括:機器人使能;機器人三軸速度;IMU三軸加速度、角速度;電池電壓。還要加上串口通訊可以用作檢驗的幀頭幀尾和校驗位。

同時,串口發送一次只能發送8位,而目前數據為24位,所以數據需要拆成高8位和低8位來傳輸。這里就相當于自定義了一套encoder和decoder的密碼模式

這里可以借鑒他的編碼方式:幀頭固定0x7B,幀尾固定0x7D,用一位fag_stop表示是否使能,數據校驗通過BCC校驗(所有數據為異或)
具體的編碼方式,也就是串口一次所傳輸的數據是可以自定義的,這里就不展開了,在自己做項目的時候可能還要修改一下。

APP調參

可以通過藍牙/WIFI來完成控制,實質也是自定義數據,然后通過串口2來完成數據傳輸。

PS2控制

這里因為是專門的控制手柄,有自己做好的底層信號處理,對于應用層開發者而言,需要做的就是解析傳輸過來的信號,并完成對應的控制狀態選擇就可以了。

CAN控制

數據傳輸直接通過CAN總線來完成,需要先配置好CAN,然后自定義數據來完成傳輸,總體邏輯是類似的,只不過只需要關心具體的傳輸數據了,因為CAN是自帶數據校驗等的(CAN數據中自己就有校驗等等的位)。

OLED顯示

通過IIC總線來完成內容顯示。只需要通過OLED的通訊協議,來完成畫點就可以了。

陀螺儀零點漂移消除

IMU的數據存在零點漂移,需要設計一定的算法來完成濾波。

設置一定的延時,在剛上電的時候并不讀取角速度值,直到超過了這個時間,才會去讀取角速度值并將其作為漂移值。

運動學解算

這個就是兩輪差速小車、麥輪小車等的運動學模型,將電機與機器人的運動聯系起來。

這里之后的項目是需要四驅車模型,這里就記錄一下四驅車的運動模型。

四驅車模型
其中VA、VB、VC、VD分別為 A、B、C、D四個輪子的轉速,也就是電機的轉速;Vx為小車沿著X軸平移速度,w為小車沿Z軸的旋轉速度;a=D/2為小車輪距D的一半,b=H/2為小車軸距H的一半。

最終就可解算出如下的運動學公式,將機器人運動轉化為電機旋轉:
運動學公式

PID控制

這里直接就是一個速度閉環控制,只用PI就差不多了,增量式或者位置式PI都可以。

整體程序結構圖

整體流程

現根據運動學模型來選擇具體的計算公式,然后完成一系列外設的初始化,最后接到RTOS的任務接口,開始循環執行對應的任務。

對于遙控命令,都是通過串口/CAN的中斷來獲取。

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

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

相關文章

MySQL中的JOIN、LEFT JOIN、RIGHT JOIN講解

在 MySQL 中,JOIN 是一種非常強大的功能,它允許你將兩個或多個表中的行結合起來,基于兩個表之間的共同字段。這種操作在數據庫查詢中非常常見,特別是在處理關系型數據庫時。下面我將分別解釋 JOIN、LEFT JOIN(也稱為 L…

uin-app微信小程序自定義tabBar底部菜單實現簡單示例(工作筆記)

在微信小程序中實現自定義 tabBar 可以為你的應用提供更加靈活和個性化的底部導航菜單。由于微信小程序的官方 tabBar 配置功能有限,自定義 tabBar 成為了很多開發者實現復雜底部導航的選擇。以下是一個簡單的示例,說明如何在小程序中實現自定義 tabBar。…

Linux下常見壓縮文件tar.xz、tar.bz2、tar.gz的區別和詳解

文章目錄 tar.xz tar.bz2 tar.gz 的區別三種文件的解壓方式tar.xz的解壓三種壓縮文件的創建方式 tar.xz tar.bz2 tar.gz 的區別 這三個文件擴展名都表示壓縮后的檔案文件,但它們使用不同的壓縮算法。 tar.xz: tar 代表 Tape Archive,它是一種將多個文件…

House holder reflections and Givens rotations

House holder reflections and Givens rotations Householder反射和Givens旋轉是兩種常見的線性代數方法,用于將一個矩陣分解為正交矩陣(Q)和上三角矩陣,即QR分解。它們在數值線性代數中非常重要,特別是在求解線性方程組和特征值問題中。以下…

【若依管理系統】注意事項

1.前端字段必填 rules: {sceneName: [{ required: true, message: "場景名稱不能為空", trigger: "blur" }],orderNum: [{ required: true, message: "顯示排序不能為空", trigger: "blur" }], }, 2.IDEA,默認以debug模式…

python | pyvips,一個神奇的 Python 庫

本文來源公眾號“python”,僅用于學術分享,侵權刪,干貨滿滿。 原文鏈接:pyvips,一個神奇的 Python 庫! 大家好,今天為大家分享一個神奇的 Python 庫 - pyvips。 Github地址:https…

Agents 要點

一、Agents概念 人類是這個星球上最強大的 Agent。Agent是一個能感知并自主地采取行動的實體,這里的自主性極其關鍵,Agent要能夠實現設定的目標,其中包括具備學習和獲取知識的能力以提高自身性能。 關鍵點:感知環境、自主決策、具…

前端項目筆記經驗-001

做項目有一段時間了,利用下班或者零碎時間的功夫,想分享一些個人心得和感受。與君共勉。 前端應該具備的幾個能力: (1)準備假數據(模擬數據)的能力,因為后端有時候接口沒有準備好&…

element plus 實現跨頁面+跨tab欄多選

文章目錄 element plus 層面數據層面 菜鳥好久沒寫博客了,主要是沒遇見什么很難的問題,今天碰見了一個沒有思路的問題,解決后立馬來和大家伙分享了! 菜鳥今天要實現一個需求,就是:實現跨頁面跨 tab欄 多選…

力學篤行(四)Qt 線程與信號槽

線程與信號槽 1. 主窗口(MainWindow)主線程2. 線程2.1 QThread2.2 QtConcurrent::run()2.3 thread 的調用方式 3. 信號槽3.1 connect3.2 元對象系統中注冊自定義數據類型 附錄一 信號槽機制與主線程進行通信示例 1. 主窗口(MainWindow&#x…

MySQL聯合索引最左匹配原則

MySQL中的聯合索引(也叫組合索引)遵循最左匹配原則,即在創建聯合索引時,查詢條件必須從索引的最左邊開始,否則索引不會被使用。在聯合索引的情況下,數據是按照索引第一列排序,第一列數據相同時才會按照第二列排序。 例…

CVE-2024-27292:Docassemble任意文件讀取漏洞復現 [附POC]

文章目錄 CVE-2024-27292:Docassemble任意文件讀取漏洞復現 [附POC]0x01 前言0x02 漏洞描述0x03 影響版本0x04 漏洞環境0x05 漏洞復現1.訪問漏洞環境2.構造POC3.復現 0x06 修復建議 CVE-2024-27292:Docassemble任意文件讀取漏洞復現 [附POC] 0x01 前言 …

冒泡排序與其C語言通用連續類型排序代碼

冒泡排序與其C語言通用連續類型排序代碼 冒泡排序冒泡排序為交換排序的一種:動圖展示:冒泡排序的特性總結:冒泡排序排整型數據參考代碼(VS2022C語言環境): 冒泡排序C語言通用連續類型排序代碼對比較的方式更…

法律行業守護神:知識庫+AI大模型,解鎖企業知識全周期管理

在法律行業中,搭建一個有效的知識庫并進行企業知識全生命周期管理確實是一項不小的挑戰。法律環境的復雜性和不斷變化的法規要求企業必須持續更新和維護其知識庫,以確保所有信息的準確性和實時性。 這種系統化的信息管理不僅有助于提高律師和法律顧問的…

打卡第9天-----字符串

我在自學的時候,看了卡爾的算法公開課了,有些題目我就照葫蘆畫瓢寫了一遍js代碼,差不多都寫出來了,有暴力解法,有卡爾推薦的思路和方法。話不多說,直接上題上代碼吧: 一、翻轉字符串里的單詞 leetcode題目鏈接:151. 反轉字符串中的單詞 題目描述: 給你一個字符串 s…

5個自動化面試題,助你過關斬將!

面試時,自動化是軟件測試高頻面試內容,通過學習和準備面試題,你會對可能遇到的問題有所準備,從而減輕面試時的緊張感,讓你在面試中穩操勝券! 今天,分享一些在面試中可能會遇到的自動化測試面試…

軟件架構之測評方法

軟件架構之測評方法 第 11 章:測試評審方法11.1 測試方法11.1.1 軟件測試階段11.1.2 白盒測試和黑盒測試11.1.3 缺陷的分類和級別11.1.4 調試 11.2 評審方法11.3 驗證與確認11.4 測試自動化11.5 面向對象的測試 第 11 章:測試評審方法 軟件測試與評審是…

大學生暑假“三下鄉”社會實踐工作新聞投稿指南請查收!

近年來,大學生暑期“三下鄉”社會實踐工作方興未艾,越來越多的大學生通過參與“三下鄉”實踐工作,走出校園,深入基層,體驗農村生活,服務農民,促進農村經濟社會發展,實現了理論與實踐…

算能科技,致力于成為全球領先的通用算力供應商

算能致力于成為全球領先的定制算力提供商,專注于RISC-V、TPU處理器等算力產品的研發和推廣應用。公司遵循全面開源開放的生態理念,攜手行業伙伴推動RISC-V高性能通用計算產業落地;打造覆蓋“云、邊、端”的全場景產品矩陣,為數據中…

【eNSP模擬實驗】三層交換機實現VLAN通信

實驗需求 讓PC1和PC2能夠互相通訊&#xff0c;其中PC1在vlan10中&#xff0c;PC2在vlan20中。 實驗操作 首先把PC1和PC2都配置好ip&#xff0c;配置好之后&#xff0c;點擊右下角的應用 然后&#xff0c;在S2交換機&#xff08;S3700&#xff09;上做如下配置 #進入系統 <…