0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于RT-Thread的開源飛控StarryPilot解決方案

lPCU_elecfans ? 來源:未知 ? 作者:工程師陳翠 ? 2018-07-22 11:33 ? 次閱讀

背景描述

近年來無人機(jī)應(yīng)用市場日趨火熱,無人機(jī)開始被應(yīng)用在多個領(lǐng)域之中,比如航拍,植保,運(yùn)輸,安防等。隨著應(yīng)用場景的增加,對于無人機(jī)的大腦一飛控,的性能和功能要求也變得越來越高。國內(nèi)具有一大批優(yōu)質(zhì)的無人機(jī)企業(yè),如DJI,零度,億航,極飛等??墒沁@些企業(yè)的飛控系統(tǒng)并不開源,而開源飛控市場卻基本被國外所壟斷,比如APM, PX4, Autoquad等,國內(nèi)目前還沒有一款開源飛控可以與之抗衡,在國際上也沒有令人熟知的“國產(chǎn)”開源飛控。正是基于開發(fā)出一款世界知名的中國的開源飛控,我從2016年開始了StarryPilot這個項目。飛控的設(shè)計理念是一款輕量,功能強(qiáng)大的飛控,主要面向科研和無人機(jī)行業(yè)應(yīng)用,使得無人機(jī)開發(fā)技術(shù)更加普及,也更容易將無人機(jī)技術(shù)應(yīng)用到各個行業(yè)。

無人機(jī)整機(jī)

Pixhawk

室外定高飛行

Gazebo HITL(硬件在環(huán))仿真

Msh shell系統(tǒng)

開發(fā)環(huán)境

主控:STM32F427 + STM32F100(從控制器)

編譯環(huán)境: Keil MDK5.23

RT-Thread版本: RTT-2.1.0

硬件設(shè)計

硬件采用國外開源的自駕儀Pixhawk(https://pixhawk.org/modules/pixhawk), 如下圖所示。Pixhawk也是目前世界上應(yīng)用最廣,支持的飛控系統(tǒng)最多的開源飛控硬件。

其主要性能參數(shù)如下:

168MHz / 256 MIPS Cortex M4F

14路 PWM/伺服 輸出

外擴(kuò)總線接口 (I2C,CAN,UART)

冗余電源輸入

外部安全開關(guān)

多色LED指示燈

外置microSD卡槽

傳感器

ST Micro L3GD20 16位陀螺儀

ST Micro LSM303D 16位加速度計/磁力計

Invensense MPU 6000 三軸加速度計/陀螺儀

MEAS MS5611 氣壓計

接口

5x UART, 2x CAN, I2C, SPI

DSM/DSM2/DSM-X 衛(wèi)星兼容輸入

PPWM, S-BUS

3.3 和 6.6V ADC輸入

microUSB

整個系統(tǒng)除了Pixhawk之外,還有一些外接的電子設(shè)備,如無刷電機(jī),GPS,電調(diào),數(shù)傳,RC接收機(jī),Lidar-Lite激光雷達(dá)等。整體的系統(tǒng)框架圖如下圖所示:

基于RT-Thread的開源飛控StarryPilot解決方案

軟件設(shè)計

軟件采用分層結(jié)構(gòu)設(shè)計,如下圖所示,從底層到上層分別是Driver層,RTOS(RTT + Fatfs),HAL硬件虛擬層,F(xiàn)ramework層和應(yīng)用層。

基于RT-Thread的開源飛控StarryPilot解決方案

一、Driver層

Driver層實(shí)現(xiàn)了Pixhawk板載的所有硬件設(shè)備的驅(qū)動,如傳感器設(shè)備(陀螺儀,加速度計,磁力計,氣壓計等),總線設(shè)備(UART, I2C, SPI等),USB,電機(jī)驅(qū)動,SD卡驅(qū)動,GPS驅(qū)動,LED燈以及一些板載設(shè)備的驅(qū)動。各個驅(qū)動以Device的形式向RTT進(jìn)行注冊,并且提供各自的init(), read(), write, ioctrl()函數(shù)供上層調(diào)用。這里僅以hmc5883磁力計的驅(qū)動舉例說明驅(qū)動程序的一般設(shè)計步驟。

- 設(shè)備初始化函數(shù)

如下為hmc5883的初始化函數(shù)。首先對設(shè)備的功能函數(shù)進(jìn)行函數(shù)指針賦值,這里定義了init(), read()和ioctrl()三個函數(shù)。然后向RTT注冊名為hmc5883的驅(qū)動設(shè)備,上層可以通過查找設(shè)備名的方式來獲取該驅(qū)動設(shè)備。接下來就是給hmc5883設(shè)置對應(yīng)的總線設(shè)備。這里 hmc5883使用的是i2c通信,所以初始化中會為其查找對應(yīng)的i2c設(shè)備。

基于RT-Thread的開源飛控StarryPilot解決方案

- init()函數(shù)

Init()函數(shù)主要做一些芯片的初始化的工作,包括寄存器配置等。

基于RT-Thread的開源飛控StarryPilot解決方案

- read()函數(shù)

read()函數(shù)實(shí)現(xiàn)設(shè)備數(shù)據(jù)讀取的功能,如原始磁場數(shù)據(jù)和標(biāo)定后的磁場數(shù)據(jù)讀取。

基于RT-Thread的開源飛控StarryPilot解決方案

- ioctrl()函數(shù)

Ioctrl()函數(shù)主要實(shí)現(xiàn)一些設(shè)備的配置功能,如設(shè)置測量磁場的范圍,采樣頻率等。

基于RT-Thread的開源飛控StarryPilot解決方案

二、RTOS層

RTOS采用RT-Thread嵌入式操作系統(tǒng),它的功能強(qiáng)大,除了提供基本的線程調(diào)度,內(nèi)存管理,同步等基本功能外,還提供了如msh的shell系統(tǒng),device設(shè)備驅(qū)動系統(tǒng),使得系統(tǒng)的整體架構(gòu)更加清晰,功能也更加完善。

三、HAL層

HAL層主要是對底層驅(qū)動設(shè)備進(jìn)行進(jìn)一步封裝,將具體的設(shè)備抽象為一個類別的設(shè)備。以串口設(shè)備為例,不同的硬件平臺,串口的底層驅(qū)動會有差異,通過HAL層,將串口設(shè)備封裝為統(tǒng)一的接口,這樣當(dāng)系統(tǒng)移植到不同平臺的時候,上層代碼不需要做任何改變,而只需要將對應(yīng)底層驅(qū)動進(jìn)行簡單替換就行。這將大大降低系統(tǒng)移植的復(fù)雜程度。

四、Framework層

Framework層實(shí)現(xiàn)了飛控設(shè)備的主要功能,如姿態(tài)估計,位置估計,控制器,通信,日志管理等等??梢哉f,這一層是整個系統(tǒng)的核心,大部分的功能模塊都在這一層來實(shí)現(xiàn)。

五、Application層

應(yīng)用層是將飛控的各個大的功能進(jìn)行分割,變成一個個小的功能。每個功能在系統(tǒng)中為一個單獨(dú)的線程,每個線程負(fù)責(zé)執(zhí)行自己的任務(wù),并且跟其他線程通過IPC進(jìn)行通信。Vehicle線程具有最高優(yōu)先級,執(zhí)行周期為1ms。其負(fù)責(zé)實(shí)現(xiàn)無人機(jī)飛行相關(guān)的所有功能,如狀態(tài)估計和電機(jī)的控制。

啟動流程

下面介紹一下系統(tǒng)的啟動流程. 啟動流程沿用RTT提供的原始結(jié)構(gòu)。首先在rtthread_startup()函數(shù)中進(jìn)行RTOS的一些初始化,然后進(jìn)入到rt_application_init()中。 在這個函數(shù)中會建立一個init的初始線程,在這個線程中,會對飛控各個模塊進(jìn)行初始化的工作。在初始化完成之后,會根據(jù)Application層的定義,建立各個線程,并喚醒,最后將init線程自己給銷毀掉,避免不必要的內(nèi)存消耗。

演示視頻

控制算法和飛行效果測試( ADRC vs PID )

項目特色

使用RT-Thread嵌入式操作系統(tǒng), Fatfs文件系統(tǒng),完整的系統(tǒng)功能支持(如跨進(jìn)程通信,文件管理,參數(shù)系統(tǒng)等)

基于Pixhawk硬件平臺開發(fā),完美支持Pixhawk硬件

ADRC控制和PID(串級)控制

支持Mavlink協(xié)議(QGC地面站)

支持Gazebo硬件在環(huán)(HITL)仿真

Msh指令系統(tǒng),提供豐富以及可擴(kuò)展的系統(tǒng)指令

Log日志系統(tǒng),方便抓取飛行日志信息,并提供相應(yīng)的日志查看工具。

基于最小二乘法的最優(yōu)橢球擬合校準(zhǔn)算法(可校準(zhǔn)零偏誤差,縮放誤差,非正交誤差),可用于磁力計和加速度計的校準(zhǔn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開源飛控
    +關(guān)注

    關(guān)注

    1

    文章

    7

    瀏覽量

    5296

原文標(biāo)題:【周四RTOS專欄】基于RT-Thread的開源飛控StarryPilot

文章出處:【微信號:elecfans,微信公眾號:電子發(fā)燒友網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    RT-Thread的C語言編碼規(guī)范

    這是一份 RT-Thread 開發(fā)人員的開發(fā)指引。RT-Thread 做為一份開源軟件,它需要由不同的人采用合作的方式完成,這份文檔是開發(fā)人員的一個指引。RT-Thread 的開發(fā)人員
    的頭像 發(fā)表于 02-21 16:50 ?2364次閱讀

    【資料】基于RT-Thread的四軸控項目匯總

    1、基于RT-Thread開源StarryPilot近年來無人機(jī)應(yīng)用市場日趨火熱,無人機(jī)開始被應(yīng)用在多個領(lǐng)域之中,比如航拍,植保,運(yùn)輸,安防等。隨著應(yīng)用場景的增加,對于無人機(jī)的大
    發(fā)表于 03-28 15:24

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發(fā)組(2015-03-31)。RT-Thread做為國內(nèi)有較大影響力的開源實(shí)時操作系統(tǒng),本文是RT
    發(fā)表于 11-26 16:06 ?0次下載

    RT-Thread AI kit開源:輕松實(shí)現(xiàn)一鍵部署AI模型至 RT-Thread

    RT-AK 是 RT-Thread 團(tuán)隊為 RT-Thread 實(shí)時操作系統(tǒng)所開發(fā)的 AI 套件,能夠一鍵將 AI 模型部署到 RT-Thread 項目中,讓用戶可以 在統(tǒng)一...
    發(fā)表于 01-25 18:18 ?3次下載
    <b class='flag-5'>RT-Thread</b> AI kit<b class='flag-5'>開源</b>:輕松實(shí)現(xiàn)一鍵部署AI模型至 <b class='flag-5'>RT-Thread</b>

    RT-Thread開源作品秀】基于RT-Thread的星務(wù)平臺研究

    本作品為了驗證星務(wù)軟件在RT-Thread系統(tǒng)運(yùn)行的可行性,底層是否能夠驅(qū)動星務(wù)軟件,同時擴(kuò)展RT-Thread應(yīng)用范圍。ART-Pi作為衛(wèi)星下位機(jī),...
    發(fā)表于 01-25 18:26 ?6次下載
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>開源</b>作品秀】基于<b class='flag-5'>RT-Thread</b>的星務(wù)平臺研究

    RT-Thread 編程風(fēng)格指南

    這是一份 RT-Thread 開發(fā)人員的開發(fā)指引。RT-Thread 做為一份開源軟件,它需要由不同 的人采用合作的方式完成,這份文檔是開發(fā)人員的一...
    發(fā)表于 01-26 17:04 ?18次下載
    <b class='flag-5'>RT-Thread</b> 編程風(fēng)格指南

    RT-Thread全球技術(shù)大會:RT-Thread開源重塑軟件發(fā)展新生態(tài)

    RT-Thread全球技術(shù)大會:RT-Thread開源重塑軟件發(fā)展新生態(tài),市場空間巨大,以開放的心態(tài)不斷提升技術(shù)水平,大膽創(chuàng)新,迎接挑戰(zhàn)! ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 10:47 ?1187次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會:<b class='flag-5'>RT-Thread</b><b class='flag-5'>開源</b>重塑軟件發(fā)展新生態(tài)

    RT-Thread全球技術(shù)大會:RT-Thread測試用例集合案例

    RT-Thread全球技術(shù)大會:RT-Thread測試用例集合案例 ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 16:34 ?2017次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會:<b class='flag-5'>RT-Thread</b>測試用例集合案例

    英飛凌加入RT-Thread開源共同體 為物聯(lián)網(wǎng)開發(fā)者提供系統(tǒng)級解決方案

    日前,全球半導(dǎo)體解決方案的領(lǐng)導(dǎo)者英飛凌科技(中國)有限公司(以下簡稱“英飛凌”)與知名物聯(lián)網(wǎng)操作系統(tǒng)廠商睿賽德科技( RT-Thread )簽署合作協(xié)議,成為 RT-Thread 開源
    發(fā)表于 07-01 14:24 ?859次閱讀

    RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述

    RT-Thread 簡介 作為一名 RTOS 的初學(xué)者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發(fā)現(xiàn) RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發(fā)表于 07-09 11:27 ?4397次閱讀
    <b class='flag-5'>RT-Thread</b>學(xué)習(xí)筆記 <b class='flag-5'>RT-Thread</b>的架構(gòu)概述

    RT-Thread 編程風(fēng)格

    作者:架構(gòu)師李肯 前言 最近博主在學(xué)習(xí) RT-Thread 這個開源項目,開始慢慢學(xué)習(xí)和理解它的開源代碼,慢慢開始接觸了它的代碼規(guī)范。 我個人認(rèn)為,參與一個開源項目的第一步,就是要好好
    的頭像 發(fā)表于 12-06 19:55 ?1039次閱讀

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發(fā)表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發(fā)表于 02-22 18:23 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    基于RT-Thread Studio學(xué)習(xí)

    前期準(zhǔn)備:從官網(wǎng)下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學(xué)習(xí)之旅。
    的頭像 發(fā)表于 05-15 11:00 ?3670次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學(xué)習(xí)