# 使用 Ubuntu 服务器的 PilotPi
警告
RPi 4B 上的 Ubuntu 服务器消耗大量电流并产生大量热量。在使用该硬件时,应设计成散热更好、功耗更高的产品。
# 开发人员快速入门
# 操作系统图像
同时支持 armhf 和 arm64 arch。
# armhf
- 适用于 RPi2 的 Ubuntu 服务器 18.04.5 (打开新窗口)
- 适用于 RPi3 的 Ubuntu 服务器 18.04.5 (打开新窗口)
- 适用于 RPi4 的 Ubuntu 服务器 18.04.5 (打开新窗口)
- 适用于 RPi 2/3/4 的 Ubuntu 服务器 20.04.1 (打开新窗口)
# arm64
- 适用于 RPi3 的 Ubuntu 服务器 18.04.5 (打开新窗口)
- 适用于 RPi4 的 Ubuntu 服务器 18.04.5 (打开新窗口)
- 适用于 RPi 3/4 的 Ubuntu 服务器 20.04.1 (打开新窗口)
# 最新操作系统
请参阅官方 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.txt
和 btcmd.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_*
然后回到上面相应的章节。
# 配置后
请参阅说明 这里