Skip to content

PilotPi 使用Ubuntu Server操作系统

WARNING

树莓派4B上的Ubuntu Server会消耗大量电流并产生大量热量。在使用此硬件时,需针对散热和高功耗进行设计。

开发者快速指南

操作系统映像

请从官方 cdimage 页面获取最新更新的操作系统。

armhf

arm64

最新操作系统

如需获取最新更新,请参考官方 cdimage 页面。

首次启动

首次设置树莓派的WiFi时,建议在家庭路由器和树莓派之间使用有线以太网连接,并配备显示器和键盘。

启动前

现在将SD卡插入树莓派并首次开机。请遵循此处的官方说明。

确保您可以通过SSH连接(通过有线以太网)或直接使用键盘和显示器访问树莓派的Shell。

WiFi区域

首先安装所需软件包:

sh
sudo apt-get install crda

编辑文件/etc/default/crda以更改正确的WiFi区域。参考列表

sh
sudo nano /etc/default/crda

让我们先设置主机名。

主机名和mDNS

首先设置主机名:

sh
sudo nano /etc/hostname

将主机名更改为您喜欢的名称。 然后安装mDNS所需的软件包:

sh
sudo apt-get update
sudo apt-get install avahi-daemon

完成上述操作后,通过无线网络重新连接到树莓派:

sh
sudo reboot

您也可以选择设置 无密码认证

sh
ssh ubuntu@pi_hostname.local

无密码认证(可选)

您可能还想设置无密码认证

配置操作系统

config.txt

在Ubuntu中,对应的文件是/boot/firmware/usercfg.txt

sh
sudo nano /boot/firmware/usercfg.txt

将文件内容替换为:

sh
# 启用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.txtbtcmd.txt都需要修改。

sh
sudo nano /boot/firmware/cmdline.txt

在Ubuntu Server 18.04或更早版本中,应同时修改nobtcmd.txtbtcmd.txt

sh
sudo nano /boot/firmware/nobtcmd.txt

找到console=/dev/ttyAMA0,115200并删除该部分,以禁用串口上的登录Shell。 在最后一个单词后添加isolcpus=2

sh
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。

检查串口:

sh
ls /dev/tty*

应该有/dev/ttyAMA0/dev/ttySC0/dev/ttySC1

检查I2C:

sh
ls /dev/i2c*

应该有/dev/i2c - 0/dev/i2c - 1

检查SPI:

sh
ls /dev/spidev*

应该有/dev/spidev0.0

rc.local

在本节中,我们将配置rc.local中的自动启动脚本。请注意,由于全新的Ubuntu系统中不存在此文件,我们需要创建它。

sh
sudo nano /etc/rc.local

在文件中添加以下内容:

sh
#!/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

保存并退出。 然后设置正确的权限:

sh
sudo chmod +x /etc/rc.local

INFO

不需要时,别忘了关闭开关!

CSI相机

WARNING

启用CSI相机将导致I2C - 0上的任何设备无法工作。

sh
sudo nano /boot/firmware/usercfg.txt

或者

sh
start_x=1

构建代码

要在计算机上获取最新版本,在终端中输入以下命令:

sh
git clone https://github.com/PX4/PX4-Autopilot.git --recursive

INFO

这是构建最新代码所需的全部操作。

配置上传

然后上传:

sh
export AUTOPILOT_HOST=192.168.X.X

或者

sh
export AUTOPILOT_HOST=pi_hostname.local

在PX4 - Autopilot文件夹下执行:

sh
export AUTOPILOT_USER=ubuntu

为armhf目标交叉编译

PX4已配置为使用多旋翼模型启动。

sh
cd Firmware
make scumaker_pilotpi_default

然后使用以下命令上传:

sh
make scumaker_pilotpi_default upload

备选armhf构建方法 (使用docker)

如果您是首次使用Docker进行编译,请参考官方文档。 如果您是首次使用Docker进行编译,请参考官方说明

sh
./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目标。

也可以使用以下命令仅编译代码:

sh
./Tools/docker_run.sh "make scumaker_pilotpi_default"

为arm64交叉编译

INFO

此步骤需要安装aarch64-linux-gnu工具链。

PX4已配置为使用多旋翼模型启动。

sh
cd PX4-Autopilot
make scumaker_pilotpi_arm64

然后使用以下命令上传:

sh
make scumaker_pilotpi_arm64 upload

备选arm64构建方法 (使用docker)

如果您是首次使用Docker进行编译,请参考官方文档。 在PX4 - Autopilot文件夹中执行命令:

sh
./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目标。

也可以使用以下命令仅编译代码:

sh
./Tools/docker_run.sh "make scumaker_pilotpi_arm64"

手动运行PX4

通过SSH连接并使用以下命令运行:

sh
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文件夹下执行:

sh
rm -rf build/scumaker_pilotpi_*

然后返回上述相应章节。

后期配置

请参考此处的说明。