# 使用 Ubuntu 服务器的 PilotPi

警告

RPi 4B 上的 Ubuntu 服务器消耗大量电流并产生大量热量。在使用该硬件时,应设计成散热更好、功耗更高的产品。

# 开发人员快速入门

# 操作系统图像

同时支持 armhf 和 arm64 arch。

# armhf

# arm64

# 最新操作系统

请参阅官方 cdimage (打开新窗口) 页面,了解任何新的更新。

# 第一次启动

首次设置 RaPi 的 WiFi 时,我们建议在家庭路由器和 RPi 之间使用有线以太网连接,并使用显示器和键盘。

# 启动前

将 SD 卡安装到电脑上并修改网络设置。请按照官方说明操作 这里 (打开新窗口).

现在将 SD 卡插入 Pi 并首次启动。确保可以通过 shell 访问 RPi - 可以通过有线以太网进行 SSH 连接,也可以使用键盘和显示器直接访问。

# WiFi 区域

首先安装所需软件包:

苏都 apt-get 安装 儿童权利公约关于儿童卷入上膛冲突问题的任择议定书》(儿童权利公约)

编辑文件 /etc/default/crda 以更改正确的 WiFi 区域。 参考目录 (打开新窗口)

苏都 纳米 /etc/default/crda

重启后,Pi 就能加入 WiFi 网络了。

# 主机名和 mDNS

首先设置主机名。

苏都 纳米 /etc/hostname

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

苏都 apt-get 更新
苏都 apt-get 安装 avahi-daemon

重新启动。

苏都 重新启动

完成上述操作后,通过 WiFi 连接恢复访问。

ssh ubuntu@pi_hostname.local

# 无密码验证(可选)

您可能需要设置 无密码授权 (打开新窗口) 也是如此。

# 设置操作系统

# config.txt

Ubuntu 中的相应文件是 /boot/firmware/usercfg.txt.

苏都 纳米 /boot/firmware/usercfg.txt

将文件替换为

# 启用 sc16is752 覆盖
dtoverlay=sc16is752-spi1
# 启用 I2C-1,并将频率设置为 400KHz
dtparam=i2c_arm=开,i2c_arm_波特率=400000
# 启用 spidev0.0
dtparam=脊柱=关于
# 启用 RC 输入
启用=1
# 启用 I2C-0
dtparam=i2c_vc=关于
# 将蓝牙切换为 miniuart
dtoverlay=miniuart-bt

# cmdline.txt

在 Ubuntu 服务器 20.04 上:

苏都 纳米 /boot/firmware/cmdline.txt

在 Ubuntu 服务器 18.04 或更早版本上、 nobtcmd.txtbtcmd.txt 都应修改。

苏都 纳米 /boot/firmware/nobtcmd.txt

查找 console=/dev/ttyAMA0,115200 并删除该部分,以禁用串行接口上的登录 shell。

附加 isolcpus=2 后。这样,整个文件看起来就像

net.ifnames=0 dwc_otg.lpm_enable=0 游戏机=tty1 根基=标签=可写 根类型=ext4 升降机=deadline rootwait fixrtc 隔离器=2

上面一行告诉 Linux 内核不要在 CPU 内核 2 上调度任何进程。我们稍后将在该内核上手动运行 PX4。

重启并以 SSH 方式登录 Pi。

检查 UART 接口:

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 操作系统中。

苏都 纳米 /etc/rc.local

将以下内容添加到文件中:

#!/bin/sh

回响 "25"; >; /sys/class/gpio/export
回响 "在"; >; /sys/class/gpio/gpio25/direction
如果 [ $( /sys/class/gpio/gpio25/value) -eq 1 ] ; 
        回响 启动 PX4";
        CD /home/ubuntu/px4 ;  taskset -c 2 ./bin/px4 -d -s pilotpi_mc.config 2 &>; 1 >; /home/ubuntu/px4/px4.log 及样品;
fi
回响 "25"; >; /sys/class/gpio/unexport

出口 0

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

苏都 chmod +x /etc/rc.local

备注

不需要时不要忘记关闭开关!

# 犯罪现场调查摄像机

警告

启用 CSI 摄像头后,I2C-0 上的任何工作都将停止。

苏都 纳米 /boot/firmware/usercfg.txt

在文件末尾添加以下一行:

start_x=1

# 编写代码

要获得 最新 在终端中输入以下命令:

Git 克隆 https://github.com/PX4/PX4-Autopilot.git --recursive

备注

您只需这样做,就能构建最新的代码。

# 设置 RPi 上传目标

设置 RPi 的 IP(或主机名):

出口 AUTOPILOT_HOST=192.168.X.X

出口 AUTOPILOT_HOST=pi_hostname.local

此外,我们还需要设置用户名:

出口 自动驾驶仪用户=乌托邦

# 为 armhf 目标构建

生成可执行文件

CD 固件
生产 scumaker_pilotpi_default

然后用

生产 scumaker_pilotpi_default 上传

# armhf 的替代构建方法(使用 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";

备注

docker 不支持 mDNS。每次上传时,你都必须指定正确的 IP 地址。

备注

如果您的集成开发环境不支持忍者构建、 no_ninja_build=1 选项会有帮助。您也可以不上传而直接编译。只需删除 上传 目标:

也可以直接用命令编译代码:

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

# 为 arm64 目标机构建

备注

这一步骤要求 aarch64-linux-gnu 安装工具链。

生成可执行文件

CD PX4-自动驾驶仪
生产 scumaker_pilotpi_arm64

然后用

生产 scumaker_pilotpi_arm64 上传

# arm64 的替代构建方法(使用 docker)

如果你是第一次使用 docker 进行编译,请参考 官方文件.

PX4-自动驾驶仪 文件夹:

./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";

备注

docker 不支持 mDNS。每次上传时,你都必须指定正确的 IP 地址。

备注

如果您的集成开发环境不支持忍者构建、 no_ninja_build=1 选项会有帮助。您也可以在不上传的情况下进行编译,只需移除 上传 目标:

也可以直接用命令编译代码:

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

# 手动运行 PX4

通过 SSH 连接并使用

CD px4
苏都 taskset -c 2 ./bin/px4 -s pilotpi_mc.config

现在,PX4 以多旋翼配置启动。

如果您遇到类似问题,请执行 bin/px4 在您的 Pi 上进行如下操作:

bin/px4:/lib/xxxx/xxxx:未找到版本 `GLIBC_2.29'(bin/px4 需要)

那么,你应该改用 docker 进行编译。

在进行下一步之前,首先要清理现有建筑:

rm -rf build/scumaker_pilotpi_*

然后回到上面相应的章节。

# 配置后

请参阅说明 这里