px4編譯環境
① 如何用開源飛控Pixhawk進行二次開發
以下所描述的都是針對px4原生固件,此外,由於固件更新過於頻繁,本文描述的是15年7月的固件,主要是舉例,有改動的話,自己再研究研究吧(後面換cmake編譯方式了,改動蠻大)。
既然要做開發,第一步就是搭好開發環境,根據我的經驗,最好是在linux環境下編譯,這樣效率會很快,以前在windows下編譯,經常40分鍾以上,這樣就太影響開發了;
第二步,大概了解下固件的架構,
如果只涉及應用層的開發,那底層的nuttx系統就可以繞過去了,一般,最好先把uorb模塊的機制整明白就好了,從uorb入手,了解每個話題的來源以及作用,整理數據流,清楚每個模塊之間的關系即可,比如,要實現手動模式,哪些模塊互相交互,auto模式,又有哪些模塊起作用,
如果涉及相應演算法的開發,要學會定位到相應的演算法模塊,甚至具體到哪些代碼,比如,你想試驗你的姿態估計演算法,那你就將姿態估計模塊替換掉即可,不過相應的介面仍需要和px4環境一樣,以姿態估計為例,最後要發布你的vehicle_attitude話題,不然無法與其他模塊交互;
另外,不要試圖在代碼中找main函數,那是單片機思維,你只需看啟動腳本即可,\ROMFS\px4fmu_common\init.d\rcs;
第三步,針對你的具體情況,定位相應的模塊,進行精讀研究,雖然模塊基本是用C++寫的,但是不會C++也沒關系,畢竟又不是讓你寫,本人倒目前為止,也不會C++,配合注釋,看明白就好了,比如,整理下mavlink的控制流程;
px4原生固件模塊列表:
系統命令程序
mavlink –通過串口發送和接收mavlink信息
sdlog2 –保存系統日誌/飛行數據到SD卡
tests –測試系統中的測試程序
top –列出當前的進程和CPU負載
uORB – 微對象請求代理器-分發其他應用程序之間的信息
驅動
mkblctrl–blctrl電子模塊驅動
esc_calib –ESC的校準工具
fmu –FMU引腳輸入輸出定義
gpio_led –GPIOLED驅動
gps –GPS接收器驅動
pwm –PWM的更新速率命令
sensors –感測器應用
px4io –px4io驅動
uavcan –uavcan驅動
飛行控制的程序
飛行安全和導航
commander –主要飛行安全狀態機
navigator –任務,失效保護和RTL導航儀
估計姿態和位置
attitude_estimator_ekf –基於EKF的姿態估計
ekf_att_pos_estimator –基於EKF的姿態和位置估計
position_estimator_inav–慣性導航的位置估計
multirotor姿態和位置控制器
mc_att_control–multirotor姿態控制器
mc_pos_control –multirotor位置控制器
fixedwing姿態和位置控制器
fw_att_control –固定翼飛機的姿態控制
fw_pos_control_l1 –固定翼位置控制器
垂直起降姿態控制器
vtol_att_control –垂直起降姿態控制器
最後提一句,多看看官網的說明,另外根據本人的經驗來看,由於大框架,代碼人家都寫好了,通常你要加功能,所修改的也就幾行代碼而已,舉例說明,比如px4固件只能在手動模式解鎖,假如我要修改成定高模式解鎖
② pixhawk 開發環境要安裝ubuntu嗎
1.首先安裝Ubuntu 14.04 LTS,一路默認安裝就可以了,具體的過程可以自己上網查詢,64位與32位沒有區別。Linux下是區分大小寫的,在使用過程中一定注意大小寫字母,安裝過程中分多次要求輸入密碼!
安裝可選軟體:(終端啟用鍵Ctrl+Alt+T)
安裝五筆輸入法軟體
sudo apt-get install ibus-table-wubi
安裝NotePad++,查看源碼工具,我是在Linux下查看代碼用的,你可以自己選擇其它的
sudo add-apt-repository ppa:notepadqq-team/notepadqq
sudo apt-get update
sudo apt-get install notepadqq
NotePad++的卸載方法:
sudo apt-get remove notepadqq
sudo add-apt-repository --removeppa:notepadqq-team/notepadqq
其它軟體根據自己的情況自己安裝。
2.將當前用戶添加進dialout組中,應該是獲取一定的許可權
sudo usermod -a -G dialout $USER
3.git源碼到本地
首先安裝git軟體
sudo apt-get install git
創建源碼目錄
mkdir -p~/src
cd ~/src
git軟體源碼
cd Firmware
git submole update --init--recursive
cd ..
4.安裝cmake,這個很重要,安裝完成後可以使用cmake -v來查看是否成功!
sudo add-apt-repository ppa:george-edison55/cmake-3.x -y
sudo apt-get update
sudo apt-get install cmake
5.安裝python相關,注意「\」是續行符號,與下一行是一個命令
sudo apt-get install python-argparse git-core wget zip \
python-empy qtcreator cmake build-essential -y
6.刪除串口模式管理器
sudo apt-get remove modemmanager
7.更新軟體包
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded -y
sudo apt-get update
注意:下在這些是一個命令,「\」是續行符號,與下一行是一個命令,千萬不能分開,復制命令時可以不復制 \,自己手工加上\
sudo apt-get install python-serial openocd \
flex bison libncurses5-dev autoconf texinfobuild-essential \
libftdi-dev libtool zlib1g-dev genromfs \
python-empy
8.安裝對應的GCC
Ubuntu 14.04 (Trusty) and 14.10,執行以下命令,其它版本暫時不了解,自己Bai吧
sudo apt-get install gcc-arm-none-eabi -y
編譯源碼,V2是指的Pixhawk
cdFirmware
makepx4fmu-v2_default
首先編譯需要時間20分鍾,網速決定!
顯示以下為編譯成功:
LinkingCXX executable firmware_nuttx
[100%]Built target firmware_nuttx
Scanningdependencies of target build_firmware_px4fmu-v2
[100%]Generating nuttx-px4fmu-v2-default.px4
[100%]Built target build_firmware_px4fmu-v2
執行make px4fmu-v2_default 進行編譯,過程中會自動git需要的文件。
備注,下面命令與此編譯無關
安裝交叉編譯環境
sudo apt-get install rpm
sudo apt-get install gdb
sudo apt-get install genromfs
③ 自己畫的px4需要刷bootloader嗎
在這里我不特別區分 APM, ArCopter, pixhawk, PX4, PIX。
實際上 pixhawk可以在 Windows, Linux, MAC上編譯。這里選擇 xubuntu作為開發環境為個人意願,個人比較鍾情與 Linux中簡單而高效的命令行。有人做過測試,MAC編譯代碼只需幾分鍾,但是我畢竟沒有 MAC也就只好退而求其次。
但其實我編譯源碼使用的也只是虛擬機而已。但即便是虛擬機也比在 Windows編譯要高效得多。
④ 關於linux系統搭建飛控系統時遇到的一堆紅字報錯的問題
你用的是python2.7?
這個報錯是安裝的時候請求超時
建議下載離線包 安裝
希望可以幫助你 請採納
⑤ 怎樣用eclipse編譯 pixhawk px4飛控源碼
在window->proferences的設置對 project不起作用需要在 project-> properties 中對 c/c++ make project 的 binary parse 進行設置到 win 下。
⑥ 如何升級px4-toolchin中的arm-none-eabi
eabi是arm新的二進制文件介面的標准,elf是二進制目標文件的格式,而名稱為arm-elf的編譯器一般是老的OABI介面,裸奔程序到影響不大,在嵌入式linux中,要注意系統的介面,是老的oabi還是eabi,新的內核一般是eabi介面,但編譯內核時會有兼用oabi介面的選項,默認是沒選擇的,需要的話編譯時需要手動選上
⑦ 關於上位機如何控制pixhawk
商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
鏈接:
來源:知乎
以下所描述的都是針對px4原生固件,此外,由於固件更新過於頻繁,本文描述的是15年7月的固件,主要是舉例,有改動的話,自己再研究研究吧(後面換cmake編譯方式了,改動蠻大)。
既然要做開發,第一步就是搭好開發環境,根據我的經驗,最好是在linux環境下編譯,這樣效率會很快,以前在windows下編譯,經常40分鍾以上,這樣就太影響開發了;
第二步,大概了解下固件的架構,
如果只涉及應用層的開發,那底層的nuttx系統就可以繞過去了,一般,最好先把uorb模塊的機制整明白就好了,從uorb入手,了解每個話題的來源以及作用,整理數據流,清楚每個模塊之間的關系即可,比如,要實現手動模式,哪些模塊互相交互,auto模式,又有哪些模塊起作用,
如果涉及相應演算法的開發,要學會定位到相應的演算法模塊,甚至具體到哪些代碼,比如,你想試驗你的姿態估計演算法,那你就將姿態估計模塊替換掉即可,不過相應的介面仍需要和px4環境一樣,以姿態估計為例,最後要發布你的vehicle_attitude話題,不然無法與其他模塊交互;
另外,不要試圖在代碼中找main函數,那是單片機思維,你只需看啟動腳本即可,\ROMFS\px4fmu_common\init.d\rcs;
第三步,針對你的具體情況,定位相應的模塊,進行精讀研究,雖然模塊基本是用C++寫的,但是不會C++也沒關系,畢竟又不是讓你寫,本人倒目前為止,也不會C++,配合注釋,看明白就好了,比如,整理下mavlink的控制流程;
px4原生固件模塊列表:
系統命令程序
mavlink –通過串口發送和接收mavlink信息
sdlog2 –保存系統日誌/飛行數據到SD卡
tests –測試系統中的測試程序
top –列出當前的進程和CPU負載
uORB – 微對象請求代理器-分發其他應用程序之間的信息
驅動
mkblctrl–blctrl電子模塊驅動
esc_calib –ESC的校準工具
fmu –FMU引腳輸入輸出定義
gpio_led –GPIOLED驅動
gps –GPS接收器驅動
pwm –PWM的更新速率命令
sensors –感測器應用
px4io –px4io驅動
uavcan –uavcan驅動
飛行控制的程序
飛行安全和導航
commander –主要飛行安全狀態機
navigator –任務,失效保護和RTL導航儀
估計姿態和位置
attitude_estimator_ekf –基於EKF的姿態估計
ekf_att_pos_estimator –基於EKF的姿態和位置估計
position_estimator_inav–慣性導航的位置估計
multirotor姿態和位置控制器
mc_att_control–multirotor姿態控制器
mc_pos_control –multirotor位置控制器
fixedwing姿態和位置控制器
fw_att_control –固定翼飛機的姿態控制
fw_pos_control_l1 –固定翼位置控制器
垂直起降姿態控制器
vtol_att_control –垂直起降姿態控制器
最後提一句,多看看官網的說明,另外根據本人的經驗來看,由於大框架,代碼人家都寫好了,通常你要加功能,所修改的也就幾行代碼而已,舉例說明,比如px4固件只能在手動模式解鎖,假如我要修改成定高模式解鎖
希望可以幫助你,歡迎採納
⑧ ubuntu 環境下怎樣編譯pixhawk px4源碼
Ubuntu環境下Pixhawk原生固件PX4的編譯
分類:無人機ubuntu代碼編譯Pixhawk
(3946) (6)
Ubuntu下Pixhawk原生固件PX4的編譯這個問題困擾了兩天時間,可能是博主腦力不夠,主要是環境搭建不起來,主要原因應該是路徑的原因,最後在大師傅的幫助下還好成功將路徑搭建好,成功編譯。
下面就跟大家分享一下環境搭建的過程。
1.操作環境
每次寫文章,環境一定要介紹的,不同的環境總會出現不同的問題
我的環境是Windows下面安裝虛擬機,虛擬機跑Ubuntu
Windows:win10 64位
虛擬機:VMware Workstation 12 Pro 12.1.0 build-3272444
Ubuntu:Ubuntu15.10
2.編譯環境搭建
(1)許可權設置
官方提示:
Warning Never ever fix permission problems by using 'sudo'. It will create more permission problems in the process and require a system reinstallation to fix them.
意思是你會遇到許可權問題,不要用sudo解決,那樣會帶來更多問題,但是我沒聽他的,我沒用,最後也是實現了
官方提供指令
[plain] view plain
然後注銷,重新登錄生效
(2)安裝
更新包列表,安裝下面編譯PX4的依賴包。PX4主要支持的系列:
NuttX based hardware: Pixhawk, Pixfalcon
Snapdragon Flight hardware: Snapdragon
Raspberry Pi hardware: Raspberry Pi 2
Host simulation: jMAVSim SITL and Gazebo SITL
注意:安裝Ninja Build System可以比make更快進行編譯。如果安裝了它就會自動選擇使用它進行編譯。
[plain] view plain
卸載模式管理器
[plain] view plain
更新包列表和安裝下面的依賴包。務必安裝指定的版本的包
[plain] view plain
上面代碼中紅色部分大家需要一高警惕,gcc-arm-none-eabi版本導致PX4/Firmware編譯錯誤,現在apt-get安裝的gcc-arm-none-eabi基本上是4.9的版本,但是這個固件需要gcc-arm-none-eabi 4.8de 版本,所以最後安裝好以後,查看你的gcc-arm-none-eabi版本,如果是4.9需要手動安裝4.8的版本,安裝gcc-arm-none-eabi 4.8的版本的方法如下:
[plain] view plain
【Warning】上面紅色的路徑一定要添加正確,不然問題很多,我第一次就輸入錯誤,結果結果開不了機了,反復輸入密碼。博主裝的是Ubuntu 64位系統,而上述arm-none-eabi是直接下載的編譯好的32位,還需要安裝一個東西
[plain] view plain
可以檢查arm-none-eabi 4.8.4是否安裝成功,輸入以下指令:
[plain] view plain
如果出現如上信息,交叉編譯環境搭建就搭建成功了
(3)代碼編譯
根據PX4中文維基官網教程。
安裝Git
[plain] view plain
下載代碼
[plain] view plain
初始化
先進入Firmware文件夾,進而進行初始化、更新子模塊操作,耐心的等待……
[plain] view plain
許可權
編譯時會遇到許可權問題,執行指令
[plain] view plain
-R 是對文件下麵包含的子文件許可權問題,* 是對所有文件的許可權問題
編譯
[plain] view plain
注意到「make」是一個字元命令編譯工具,「px4fmu-v2」是硬體版本,「default」是默認配置,所有的PX4編譯目標遵循這個規則。
最後附一張編譯成功的代碼,如果這樣你還有問題,請給我留言。
[plain] view plain
-- nuttx-px4fmu-v2-default
-- The ASM compiler identification is GNU
-- Found assembler: /opt/gcc-arm-none-eabi-4_8-2014q3/bin/arm-none-eabi-gcc
-- Found PythonInterp: /usr/bin/python (found version "2.7.10")
-- Using C++03
-- Release build type: RelWithDebInfo
-- Adding UAVCAN STM32 platform driver
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lihongwei/Documents/Firmware/build_px4fmu-v2_default
#+@Tools/check_submoles.sh
PX4 CONFIG: px4fmu-v2_default
Scanning dependencies of target git_mavlink
Scanning dependencies of target git_uavcan
Scanning dependencies of target git_gencpp
Scanning dependencies of target git_genmsg
[ 0%] Generating git_init_mavlink_include_mavlink_v1.0.stamp
[ 0%] Generating git_init_src_moles_uavcan_libuavcan.stamp
[ 0%] Generating git_init_Tools_genmsg.stamp
[ 0%] Generating git_init_Tools_gencpp.stamp
[ 0%] Built target git_uavcan
[ 0%] Built target git_mavlink
[ 0%] Built target git_genmsg
[ 0%] Built target git_gencpp
⑨ linux程序編譯px4,怎麼找原因
大部分linux系統都安裝了g++(gcc) 可以在linux命令行模式下用g++ 的方法編譯 其實有很多跨平台的IDE如codeblocks,還有一些強大的文本編輯器如gvim都可以在linux下輸入,編譯,調試 linux是許多oier的選擇
⑩ 怎麼將編譯過的px4固件還原成原生固件
按以下步驟可以恢復: ①抬起列印頭 ②按〈i〉鍵,等待蜂鳴聲 ③快速按以下鍵〈▼〉→〈▲/ESC〉→〈▲/ESC〉→〈 〉 ④此時將顯示以下信息:FACTEOY DEFOULT?(出廠默認值) ENTER=YES ESC=NO (ENTER=是,ESC=否) ⑤在10秒鍾內按〈ENTER〉可以將列印機重置為出廠默認值,參數將被重置,列印機將正常啟動。 如果按了 〈▲/ESC〉,或等到10秒超時以過,則正常啟動將繼續,而不進行重置。 注意:出廠默認值將刪除所有用於存儲設置的文件,刪除文件時他不會重置已讀取的設置。這表示EASY LAN、WIRE—LESS設置(SSID,密碼等)會保持其上次啟動時的值。但是下次重新引導時會將它們重置為出廠默認值。 其他問題找 深圳萬盛澤電子公司可以幫您!