BeagleBone Blue
WARNING
PX4并不生产此款(或任何一款)自动驾驶仪。 如需硬件支持或解决合规性问题,请联系制造商。
BeagleBone Blue是一款基于Linux的一体化计算机。尽管它针对机器人应用进行了优化,但这块紧凑且价格亲民的开发板具备飞行控制器所需的所有必要传感器和外设。本主题将展示如何通过librobotcontrol机器人套件,对该开发板进行设置以运行PX4。
操作系统镜像
可在以下位置找到 BeagleBone Blue 的镜像:
- 最新稳定版操作系统镜像。
- 测试版操作系统镜像(更新频繁)。
有关刷写操作系统镜像的信息,可在此页面找到。其他有用信息可在常见问题解答中查找。
TIP
你也可以选择更新到实时内核。若进行此操作,请再次检查 librobotcontrol 是否能与实时内核正常配合工作。
在撰写本文档时,最新的操作系统镜像是bone-debian-10.3-iot-armhf-2020-04-06-4gb.img.xz。
交叉编译构建(推荐)
为 BeagleBone Blue 构建PX4的推荐方法是在开发计算机上进行编译,然后将PX4可执行二进制文件直接上传到BeagleBone Blue。
TIP
由于部署速度和易用性,相较于本机构建,此方法更受推荐。
INFO
PX4的构建需要librobotcontrol,该库会在构建过程中自动包含(但如有需要,也可独立安装和测试)。
Beaglebone Blue无线网络设置
为方便访问开发板,你可以通过无线网络将其连接到家庭网络。 操作步骤如下(在开发板上执行):
sudo su
connmanctl
connmanctl>scan wifi
connmanctl>services
#(此时你应该能看到你的网络SSID出现。)
connmanctl>agent on
connmanctl>connect <SSID>
输入密码
connmanctl>quit
INFO
上述 <SSID>
的格式通常是文本“wifi”,后面跟着一串其他字符。输入命令后,系统会提示你输入无线网络密码。
Beaglebone上的SSH root登录
可通过以下命令在开发板上启用root登录:
sudo su
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config && systemctl restart sshd
交叉编译器设置
- 首先设置 rsync(用于通过网络 - 无线网络或以太网,将文件从开发计算机传输到目标开发板)。 对于通过SSH进行密钥认证的 rsync,请按照以下步骤在开发机器上操作:
- 如果之前未生成过SSH密钥,则生成一个:
ssh-keygen -t rsa
- 回车 //不设置密码
- 回车
- 回车
- 在 /etc/hosts 中将BeagleBone Blue开发板定义为
beaglebone
,并将公共SSH密钥复制到开发板,以实现无密码SSH访问:ssh-copy-id debian@beaglebone
- 或者,你也可以直接使用BeagleBone的IP地址:
ssh-copy-id debian@<IP>
- 当提示是否信任时:输入yes
- 输入root密码
- 如果之前未生成过SSH密钥,则生成一个:
- 交叉编译设置:
- 工具链下载:
- 首先将工具链安装到 /opt/bbblue_toolchain/gcc-arm-linux-gnueabihf 目录。 以下是一个使用软链接选择所需工具链版本的示例:sh可在Linaro工具链二进制文件网站找到适用于 BeagleBone Blue 的ARM交叉编译器。
mkdir -p /opt/bbblue_toolchain/gcc-arm-linux-gnueabihf chmod -R 777 /opt/bbblue_toolchain cd /opt/bbblue_toolchain/gcc-arm-linux-gnueabihf
TIP
工具链中的GCC版本应与 BeagleBone Blue 中的内核兼容。 一般原则是选择GCC版本不高于 BeagleBone Blue 操作系统镜像所带GCC版本的工具链。
- 首先将工具链安装到 /opt/bbblue_toolchain/gcc-arm-linux-gnueabihf 目录。 以下是一个使用软链接选择所需工具链版本的示例:
- 工具链下载:
::: 下载并解压gcc-linaro-13.0.0-2022.06-x86_64_arm-linux-gnueabihf.tar.xz到bbblue_toolchain文件夹。 不同版本的适用于 BeagleBone Blue 的ARM交叉编译器可在Linaro工具链二进制文件网站找到。 sh wget https://snapshots.linaro.org/gnu-toolchain/13.0-2022.06-1/arm-linux-gnueabihf/gcc-linaro-13.0.0-2022.06-x86_64_arm-linux-gnueabihf.tar.xz tar -xf gcc-linaro-13.0.0-2022.06-x86_64_arm-linux-gnueabihf.tar.xz
:::tip 工具链的GCC版本应与 BeagleBone Blue 中的内核兼容。 ::: 一般原则是选择GCC版本不高于 BeagleBone Blue 操作系统镜像所带GCC版本的工具链。 2. 如下所示,将其添加到 ~/.profile 的PATH中: sh export PATH=$PATH:/opt/bbblue_toolchain/gcc-arm-linux-gnueabihf/gcc-linaro-13.0.0-2022.06-x86_64_arm-linux-gnueabihf/bin
::: info 注销并重新登录以应用更改,或者在当前shell中执行同一行命令。 ::: 3. 通过下载PX4源代码并运行设置脚本,安装其他依赖项: git clone https://github.com/PX4/PX4-Autopilot.git --recursive cd PX4-Autopilot ./Tools/setup/ubuntu.sh --no-nuttx
你可能需要编辑上传目标,以匹配你的设置: sh nano PX4-Autopilot/boards/beaglebone/blue/cmake/upload.cmake # 在第37行,将debian@beaglebone.lan更改为root@beaglebone(或root@<IP>)
更多信息请参考开发环境设置说明。
交叉编译和上传
编译并上传:
make beaglebone_blue_default upload
INFO
若不使用upload参数,文件将存储在本地的构建文件夹中。
要测试上传的文件,在 BeagleBone Blue 开发板上运行以下命令:
cd /home/debian/px4
sudo./bin/px4 -s px4.config
INFO
目前 librobotcontrol 需要root权限。
本机构建(可选)
你也可以直接在BeagleBone Blue上进行PX4的本机构建。 获取预构建库后:
- 选择 librobotcontrol 安装目录,并将其设置在
LIBROBOTCONTROL_INSTALL_DIR
环境变量中,这样就不会包含其他不需要的头文件。 - 将 robotcontrol.h 和 rc/* 安装到
$LIBROBOTCONTROL_INSTALL_DIR/include
目录。 - 将预构建的本地(ARM)版本的librobotcontrol.* 安装到
$LIBROBOTCONTROL_INSTALL_DIR/lib
目录。
在BeagleBone Blue上(例如通过SSH)运行以下命令:
- 安装依赖项:sh
sudo apt-get update sudo apt-get install cmake python3-empy=3.3.4-2
- 将PX4固件直接克隆到BeagleBone Blue上。
- 继续按照标准构建系统安装说明操作。
配置更改
所有更改都可直接在BeagleBone上的px4.config文件中进行。例如,你可以将WIFI更改为wlan。
INFO
如果你想永久更改,必须在构建前在构建机器上修改 PX4 - Autopilot/posix - configs/bbblue/px4.config 文件。
引导期间自动启动
以下是一个 [/etc/rc.local] 的示例:
#!/bin/sh -e
#
# rc.local
#
# 此脚本在每个多用户运行级别结束时执行。
# 确保脚本在成功时“exit 0”,或在出错时返回其他任何值。
#
# 要启用或禁用此脚本,只需更改执行权限。
#
# 默认情况下,此脚本不执行任何操作。
# 等待服务启动
/bin/sleep 25
cd /home/debian/px4
/home/debian/px4/bin/px4 -d -s /home/debian/px4/px4.config > /home/debian/px4/PX4.log &
exit 0
以下是一个 systemd 服务示例 [/lib/systemd/system/px4 - quad - copter.service]:
[Unit]
Description=PX4四轴飞行器服务
After=networking.service network-online.target
StartLimitIntervalSec=0
Conflicts=px4-fixed-wing.service
[Service]
WorkingDirectory=/home/debian/px4
User=root
ExecStart=/home/debian/px4/bin/px4 -d -s /home/debian/px4/px4.config
Restart=on-failure
RestartSec=1
[Install]
WantedBy=multi-user.target
其它选项
动力伺服导轨
PX4启动时,会自动为伺服电机供电。
特殊功能
BeagleBone Blue具有一些独特功能,如多种WiFi接口和电源选项。有关这些功能的使用,请参考 /home/debian/px4/px4.config 中的注释。
SBUS信号转换器
来自接收机(如FrSky X8R)的SBUS信号是一个反相信号。BeagleBone Blue上的UART只能处理非反相的3.3V电平信号。本教程包含一个SBUS信号反相器电路。
典型连接
对于配备GPS和SBUS接收机的四轴飞行器,典型连接如下:
- 将电机1、2、3和4的电调分别连接到BeagleBone Blue上的伺服输出通道1、2、3和4。 如果你的电调连接器包含电源输出引脚,将其移除,不要将其连接到BeagleBone Blue上伺服通道的电源输出引脚。
- 如果有匹配的dsm2连接器,将上述转换后的SBUS信号连接到dsm2端口;否则,将其连接到任何其他可用的UART端口,并相应地更改 /home/debian/px4/px4.config 中的对应端口。
- 将GPS模块的信号连接到BeagleBone Blue上的GPS端口。 请注意,BeagleBone Blue上GPS端口的信号引脚仅支持3.3V电压,因此请相应地选择GPS模块。