PilotPi 使用Ubuntu Server操作系统
WARNING
树莓派4B上的Ubuntu Server会消耗大量电流并产生大量热量。在使用此硬件时,需针对散热和高功耗进行设计。
开发者快速指南
操作系统映像
请从官方 cdimage 页面获取最新更新的操作系统。
armhf
- 适用于树莓派2的Ubuntu Server 18.04.5
- 适用于树莓派3的Ubuntu Server 18.04.5
- 适用于树莓派4的Ubuntu Server 18.04.5
- 适用于树莓派2/3/4的Ubuntu Server 20.04.1
arm64
最新操作系统
如需获取最新更新,请参考官方 cdimage 页面。
首次启动
首次设置树莓派的WiFi时,建议在家庭路由器和树莓派之间使用有线以太网连接,并配备显示器和键盘。
启动前
现在将SD卡插入树莓派并首次开机。请遵循此处的官方说明。
确保您可以通过SSH连接(通过有线以太网)或直接使用键盘和显示器访问树莓派的Shell。
WiFi区域
首先安装所需软件包:
sudo apt-get install crda
编辑文件/etc/default/crda
以更改正确的WiFi区域。参考列表
sudo nano /etc/default/crda
让我们先设置主机名。
主机名和mDNS
首先设置主机名:
sudo nano /etc/hostname
将主机名更改为您喜欢的名称。 然后安装mDNS所需的软件包:
sudo apt-get update
sudo apt-get install avahi-daemon
完成上述操作后,通过无线网络重新连接到树莓派:
sudo reboot
您也可以选择设置 无密码认证:
ssh ubuntu@pi_hostname.local
无密码认证(可选)
您可能还想设置无密码认证。
配置操作系统
config.txt
在Ubuntu中,对应的文件是/boot/firmware/usercfg.txt
。
sudo nano /boot/firmware/usercfg.txt
将文件内容替换为:
# 启用sc16is752覆盖
dtoverlay=sc16is752-spi1
# 启用I2C - 1并将频率设置为400KHz
dtparam=i2c_arm=on,i2c_arm_baudrate=400000
# 启用spidev0.0
dtparam=spi=on
# 启用RC输入
enable_uart=1
# 启用I2C - 0
dtparam=i2c_vc=on
# 将蓝牙切换到miniuart
dtoverlay=miniuart-bt
cmdline.txt
在Ubuntu Server 18.04或更早版本中,nobtcmd.txt
和btcmd.txt
都需要修改。
sudo nano /boot/firmware/cmdline.txt
在Ubuntu Server 18.04或更早版本中,应同时修改nobtcmd.txt
和btcmd.txt
:
sudo nano /boot/firmware/nobtcmd.txt
找到console=/dev/ttyAMA0,115200
并删除该部分,以禁用串口上的登录Shell。 在最后一个单词后添加isolcpus=2
。
net.ifnames=0 dwc_otg.lpm_enable=0 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc isolcpus=2
上述命令告知Linux内核不要在CPU核心2上调度任何进程。我们稍后将手动在该核心上运行PX4。
检查串口:
ls /dev/tty*
应该有/dev/ttyAMA0
、/dev/ttySC0
和/dev/ttySC1
。
检查I2C:
ls /dev/i2c*
应该有/dev/i2c - 0
和/dev/i2c - 1
。
检查SPI:
ls /dev/spidev*
应该有/dev/spidev0.0
。
rc.local
在本节中,我们将配置rc.local
中的自动启动脚本。请注意,由于全新的Ubuntu系统中不存在此文件,我们需要创建它。
sudo nano /etc/rc.local
在文件中添加以下内容:
#!/bin/sh
echo "25" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio25/direction
if [ $(cat /sys/class/gpio/gpio25/value) -eq 1 ] ; then
echo "Launching PX4"
cd /home/ubuntu/px4 ; nohup taskset -c 2./bin/px4 -d -s pilotpi_mc.config 2 &> 1 > /home/ubuntu/px4/px4.log &
fi
echo "25" > /sys/class/gpio/unexport
exit 0
保存并退出。 然后设置正确的权限:
sudo chmod +x /etc/rc.local
INFO
不需要时,别忘了关闭开关!
CSI相机
WARNING
启用CSI相机将导致I2C - 0上的任何设备无法工作。
sudo nano /boot/firmware/usercfg.txt
或者
start_x=1
构建代码
要在计算机上获取最新版本,在终端中输入以下命令:
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
INFO
这是构建最新代码所需的全部操作。
配置上传
然后上传:
export AUTOPILOT_HOST=192.168.X.X
或者
export AUTOPILOT_HOST=pi_hostname.local
在PX4 - Autopilot文件夹下执行:
export AUTOPILOT_USER=ubuntu
为armhf目标交叉编译
PX4已配置为使用多旋翼模型启动。
cd Firmware
make scumaker_pilotpi_default
然后使用以下命令上传:
make scumaker_pilotpi_default upload
备选armhf构建方法 (使用docker)
如果您是首次使用Docker进行编译,请参考官方文档。 如果您是首次使用Docker进行编译,请参考官方说明。
./Tools/docker_run.sh "export AUTOPILOT_HOST=192.168.X.X; export AUTOPILOT_USER=ubuntu; export NO_NINJA_BUILD=1; make scumaker_pilotpi_default upload"
INFO
Docker内部不支持mDNS。您也可以自行创建一个。
INFO
如果您的IDE不支持ninja构建,NO_NINJA_BUILD=1
选项会有所帮助。您也可以不进行上传操作,只需移除upload
目标。
也可以使用以下命令仅编译代码:
./Tools/docker_run.sh "make scumaker_pilotpi_default"
为arm64交叉编译
INFO
此步骤需要安装aarch64-linux-gnu
工具链。
PX4已配置为使用多旋翼模型启动。
cd PX4-Autopilot
make scumaker_pilotpi_arm64
然后使用以下命令上传:
make scumaker_pilotpi_arm64 upload
备选arm64构建方法 (使用docker)
如果您是首次使用Docker进行编译,请参考官方文档。 在PX4 - Autopilot文件夹中执行命令:
./Tools/docker_run.sh "export AUTOPILOT_HOST=192.168.X.X; export AUTOPILOT_USER=ubuntu; export NO_NINJA_BUILD=1; make scumaker_pilotpi_arm64 upload"
INFO
Docker内部不支持mDNS。您也可以自行创建一个。
INFO
如果您的IDE不支持ninja构建,NO_NINJA_BUILD=1
选项会有所帮助。您也可以不进行上传操作,只需移除upload
目标。
也可以使用以下命令仅编译代码:
./Tools/docker_run.sh "make scumaker_pilotpi_arm64"
手动运行PX4
通过SSH连接并使用以下命令运行:
cd px4
sudo taskset -c 2./bin/px4 -s pilotpi_mc.config
在执行下一步之前,先清除现有构建目录: 如果在树莓派上执行bin/px4
时遇到类似以下问题:
bin/px4: /lib/xxxx/xxxx: version `GLIBC_2.29' not found (required by bin/px4)
如果您是首次使用Docker进行编译,请参考官方说明。 在PX4 - Autopilot文件夹下执行:
rm -rf build/scumaker_pilotpi_*
然后返回上述相应章节。
后期配置
请参考此处的说明。