午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

APM開發(fā)閱讀

 云深無際 2022-02-07

我為什么要讀APM的源碼,一是為了學(xué)習(xí),想知道飛控和大型項目是如何組織的。二是為了移植的需要,項目的需要。額,最近幾年少兒編程大火,然后這些廠子也首當其沖的發(fā)布了一些產(chǎn)品,但是都是空心杯的產(chǎn)品,然后帶來的問題就是動力不足,接著就是這個東西本身的擴展性不夠。很多任務(wù)需要IO或者圖像識別的幫助。

所以我就在想,APM裁剪版的飛控+空心杯電機+樹莓派zero(可以是別的)可以使用ROS,Mavlink等東西組裝一個無人機。

只是一種想法而已,目前沒有可以參考的東西,我也在做。

F4的飛控,百來塊錢

10塊錢的電調(diào)

小槳葉

移植成功以后,其實使用便宜的MCU也可以,只是想利用已經(jīng)比較完善的生態(tài)罷了,我覺得300多一個無刷無人機也可以,將高性能引入少兒教育,怎么看都是一件比較有趣的事情。

如果非要便宜的話,ESP8266+MPU6050+4個MOS管,一共也不要20塊錢

https://ardupilot.org/dev/docs/ap-peripheral-landing-page.html

AP_Periph 是 ArduPilot Peripheral 的縮寫,即。基于現(xiàn)有 ArduPilot 自動駕駛儀代碼的 ArduPilot 外圍設(shè)備。它采用了 ArduPilot 的外圍設(shè)備驅(qū)動程序庫,并使其適應(yīng)運行在獨立的外圍設(shè)備上,這些外圍設(shè)備通過 CAN、MSP 或其他外圍總線協(xié)議與主飛控通信。我有點沒看懂,好像是就單主控+單傳感器的設(shè)置方案。

代碼的位置再Tools里面:

位置在此

也可以使用瀏覽器打開,看一些英文的注釋

這個APM可以使用make編譯,也可以使用一個叫WAF的東西編譯:其實就是Python的一個包,沒有使用新的語言什么的。

https://waf.io/book/

先走馬觀花的看下來,細節(jié)遇到再看:

這里是所有的構(gòu)建環(huán)境的安裝

Ubuntu下開發(fā)是個正經(jīng)事情:

Tools/environment_install/install-prereqs-ubuntu.sh -y

安裝

. ~/.profile

生效

./waf clean

構(gòu)建后可以使用這個清楚編譯的垃圾文件

接下來看看編譯步驟

先把庫拉下來:

git clone --recursive https://github.com/ArduPilot/ardupilot.gitcd ardupilot

waf應(yīng)該在APM的根目錄下運行,而且是每次都應(yīng)該這樣

./waf configure --board CubeBlack./waf copter

第一個命令一般就使用一次,選擇你要編譯的硬件

二是編譯一個直升飛機出來

./waf configure --board skyviper-v2450./waf copter

如果更改的話就是這樣

./waf configure --board bebop --static./waf copter

這個是編譯一共二進制的固件,使用一共參數(shù),靜態(tài)構(gòu)建

./waf list_boards

獲取支持的板子

./waf configure --board bebop --static # Bebop or Bebop2./waf configure --board edge           # emlid edge./waf configure --board fmuv3          # 3DR Pixhawk 2 boards./waf configure --board navio2         # emlid navio2./waf configure --board Pixhawk1       # Pixhawk1./waf configure --board CubeBlack      # Hex/ProfiCNC Cube Black (formerly known as Pixhawk 2.1)./waf configure --board Pixracer       # Pixracer./waf configure --board skyviper-v2450 # SkyRocket's SkyViper GPS drone using ChibiOS./waf configure --board sitl           # software-in-the-loop simulator./waf configure --board sitl --debug   # software-in-the-loop simulator with debug symbols

出現(xiàn)了這么多的板子

./waf configure --board satl            #軟件在環(huán)模擬器./waf configure --board satl --debug    #帶調(diào)試符號的軟件在環(huán)模擬器

未來我們主要看這個東西,在機器上面仿真

./waf copter                            # All multirotor types./waf heli                              # Helicopter types./waf plane                             # Fixed wing airplanes including VTOL./waf rover                             # Ground-based rovers and surface boats./waf sub                               # ROV and other submarines./waf antennatracker                    # Antenna trackers

可以構(gòu)建出來的項目類型。

清理構(gòu)建:

命令clean和distclean都可以用來清理 構(gòu)建,第一個會保留配置的信息,只是清理板子的對象,第二個比較徹底,要啥沒啥。一般來說別來執(zhí)行這東西,因為現(xiàn)在大多數(shù)的編譯系統(tǒng)都是增量編譯的,就是編譯前會檢查哪些內(nèi)容需要重新編譯,如果不需要就用以前的。學(xué)過c語言都知道源碼到成品,是需要經(jīng)過鏈接的,其實構(gòu)建系統(tǒng)就是在搞鏈接。

./waf --targets bin/arducopter --upload

上傳參數(shù)可以將構(gòu)建好的二進制文件傳到板子上面(PIxhawk和Linux的板子)

./waf configure --board <board> --rsync-dest <destination>

語法是這樣的

對Linux板子來說,還需要配置IP

./waf configure --board navio2 --rsync-dest root@192.168.1.2:/./waf --target bin/arducopter --upload

連起來就是這樣。

./waf copterDESTDIR=/my/temporary/location ./waf install

還可以進行安裝,到某個臨時目錄

# Quad frame of ArduCopter./waf --targets bin/arducopter
# unit test of our math functions./waf --targets tests/test_math

只構(gòu)建一個二進制文件

./waf -h

可以輸出所有的幫助文檔

# Configure the Linux board./waf configure --board=linux

用于配置板子的類型選項

# Build programs from bin group./waf
# Waf also accepts '-j' option to parallelize the build../waf -j8

waf = waf build,就使用waf就行。

j是并行編譯,j8(jb)真快。一般來講,不用你寡b的設(shè)置這個東西,自動就是加j了,如果想更快,哥們兒牛逼。

cd /usr/lib/ccachesudo ln -s /usr/bin/ccache arm-none-eabi-g++sudo ln -s /usr/bin/ccache arm-none-eabi-gcc

還可以使用ccahe,大幅度的提升編譯的速度,你要是真搞開發(fā),就不用用Windows,或者是遠程搞個Linux。

干說不練怎么行?我正好有WLS2,安裝一下:

git@github.com:yunswj/ardupilot.git

切到自己的分支,搞了下我的GT沒配置,算球了。

構(gòu)建完出現(xiàn)的文件類型

飛控板+Linux主機,這個Linux主機上面就是運行的我下面寫的這個庫,控制飛控板的運行.

https://dronekit-python.readthedocs.io/en/latest/

DroneKit-Python 2.x 可幫助您為無人機創(chuàng)建強大的應(yīng)用程序。這些應(yīng)用程序在無人機的配套計算機上運行,并通過執(zhí)行計算密集型和需要低延遲鏈接(例如計算機視覺)的任務(wù)來增強自動駕駛儀。我記得是Python2 的庫,emmmm

https://github.com/dronekit/dronekit-python

GitHub地址

一些簡單的描述

鏈接的時候,使用串口就行

或是這樣,PC->Pi  ,Pi->RC

需要上面的電臺,距離會很遠。

APM的代碼只有對直升飛機詳細解釋的,四軸的沒有,有的看就行。

就是這個Copter

這個構(gòu)架圖真好

其實讀源碼除了對細節(jié)的把控,更需要的是宏觀的理解。

硬件就是PX4和Linux的變形板

因為任務(wù)多,所以引入了操作系統(tǒng)

這是我們在意的東西,飛行代碼

  1. 抽象的硬件層

  2. 共享的庫,傳感器,EKF算法

  3. 一些特殊的代碼

飛控這么多的信息,比如電池電量,姿態(tài)等,使用MAVLink協(xié)議發(fā)送,接著就是給高層的應(yīng)用,地面站以及你加了機載的計算機。

對上面的一個總結(jié)

這是對上面層的

目錄里面的這個文件是說明當前的所有依賴

這個目錄里面的文件歸所有的頂層項目共有

這是核心庫

傳感器

其它庫

cd $ARDUPILOT_HOME # the top-level of an AruPilot repository./waf configure --board=Pixhawk1./waf build --target examples/INS_generic --upload

編譯的命令 ,先轉(zhuǎn)到庫的位置

然后編譯,后面是編譯的東西+上傳

cd $ARDUPILOT_HOME./waf list | grep 'examples'

這樣是可以輸出所有的例子,就用了個grep的函數(shù)

如果你安裝了MAVProxy,就可以執(zhí)行下面的命令來看輸出了。

https://ardupilot.org/mavproxy/docs/getting_started/download_and_installation.html#mavproxy-downloadinstallwindows

安裝位置在此

mavproxy.py --setup --master /dev/serial/by-id/usb-3D_Robotics_PX4_FMU_v2.x_0-if00

執(zhí)行的命令如上,使用 –setup 選項將 mavproxy 置于原始串口模式,而不是已處理的 MAVLink 模式。

cd $ARDUPILOT_HOME # the top-level of an AruPilot repository./waf configure --board sitl./waf build --target examples/RCProtocolDecoder

在環(huán)仿真用這個,這個是RC協(xié)議解碼

./build/sitl/examples/RCProtocolDecoder -M quad -C

開始運行。

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多