PX4
PX4是Dronecode Project的一部分,該項目是一個 為無人機(UAV)提供完整端到端平台的共享和協作式開源專案。
本篇筆記僅紀錄環境建立的過程與經歷
環境
- OS: ubuntu mate 16.04 LTS
clone專案
從 GitHub Clone 一份下來。
git clone https://github.com/PX4/Firmware
切換到目錄中。
cd Fireware
安裝Toolchain
編譯環境
sudo apt-get update
sudo apt-get install genromfs python-jinja2 python-empy python-pip
pip install --upgrade pip
sudo ldconfig
pip install numpy toml
燒錄環境
sudo apt-get install python-serial openocd \
flex bison libncurses5-dev autoconf texinfo build-essential \
libftdi-dev libtool zlib1g-dev -y
移除modemmanger
modemmanger會影響燒錄器的功能,目前已知此套件將讓燒錄工作進行時產生錯誤,移除後可以解決,並沒有去追蹤這個套件再哪些方面影響PX4的燒錄工作。
sudo apt-get remove modemmanager
調整使用者權限
沒有將使用者加入群組可能會讓部份操作陷入權限不足的問題,如果使用sudo
來處理此問題,可能會使問題擴大。
dialout
序列埠的群組是dialout
。
sudo usermod -a -G dialout $USER
USB
允許 jtag 裝置使用 USB。
cat > $HOME/rule.tmp <<_EOF
# All 3D Robotics (includes PX4) devices
SUBSYSTEM=="usb", ATTR{idVendor}=="26AC", GROUP="plugdev"
# FTDI (and Black Magic Probe) Devices
SUBSYSTEM=="usb", ATTR{idVendor}=="0483", GROUP="plugdev"
# Olimex Devices
SUBSYSTEM=="usb", ATTR{idVendor}=="15ba", GROUP="plugdev"
_EOF
sudo mv $HOME/rule.tmp /etc/udev/rules.d/10-px4.rules
sudo /etc/init.d/udev restart
plugdev
sudo usermod -a -G plugdev $USER
開始編譯
編譯錢請先確定目錄是在Fireware下
pwd
/tmp/Fireware
開始編譯吧! 這次目標是要編譯 stm32f4-discovery 這塊版子。
make px4-stm32f4discovery_default
編譯結束後會像這個樣子
[100%] Creating /tmp/Firmware/build/nuttx_px4-stm32f4discovery_default/px4-stm32f4discovery_default.px4
[100%] Built target px4
燒錄到板子上
make px4-stm32f4discovery_default upload