ardupliot(APM)搭建编译环境与eclipse配置

本文围绕飞控开发环境配置展开,介绍了可参考文档,安装git工具的方法。还针对使用sudo apt install命令安装软件出错、cmake安装报错等问题进行分析,给出解决办法,如终止apt进程、删除锁定文件、安装gcc和gcc - c++编译器等,此外还提及工具链和JDK环境变量配置。

飞控开发环境配置

make好像不支持了,所以好像没用了,我也很苦恼

笔者重新用waf   https://blog.youkuaiyun.com/Jonelly/article/details/99702165

可参考文档 http://ardupilot.org/dev/docs/building-the-code.html

http://ardupilot.org/dev/docs/building-setup-linux.html

2.安装git工具

打开终端命令行窗口使用快捷命令 Ctrl+Alt+t

为了避免权限问题,请每次打开终端后切换到root账户

sudo su  切换root用户

提出问题
当使用 sudo apt install xxxxx 命令安装软件的时候,出错了。例如:

tecmint@TecMint:~$ sudo apt install neofetch
[sudo] password for tecmint:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg), is another process using it?

learner@ubt:~$ sudo apt install ipython
[sudo] learner 的密码: 
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
原因:刚装好的Ubantu系统,内部缺少很多软件源,这时,系统会自动启动软件源更新进程“apt-get”,并且它会一直存活。由于它在运行时,会占用软件源更新时的系统锁(以下称“系统更新锁”,此锁文件在“/var/lib/apt/lists/”目录下),而当有新的apt-get进程生成时,就会因为得不到系统更新锁而出现"E: 无法获得锁 /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)"错误提示!因此,我们只要将原先的apt-get进程杀死,从新激活新的apt-get进程,就可以让新立德软件管理器正常工作了!
解决问题
方法一:查找并终止所有和 apt 有关的进程
方法二:删除锁定文件
 https://www.sogou.com/link?url=hedJjaC291OB0PrGj_c3jOS24FTL045hb0OonmsHBGRomuBEhdSpHkUUZED5fr2ONtcBX0UQ39xSj3w-WsG0SA.

https://www.tecmint.com/fix-unable-to-lock-the-administration-directory-var-lib-dpkg-lock/

2、cmake安装过程:  
tar xvf cmake-2.8.10.2.tar.gz   
cd cmake-2.8.10.2  
./bootstrap
---------------------------------------------  
CMake 2.8.10.2, Copyright 2000-2012 Kitware, Inc.
 --------------------------------------------- 
Error when bootstrapping CMake:  Cannot find appropriate C compiler on this system. Please specify one using environment variable CC. See cmake_bootstrap.log for compilers attempted.   
---------------------------------------------  
Log of errors: /root/cmake-2.8.10.2/Bootstrap.cmk/cmake_bootstrap.log 

---------------------------------------------   
报错:缺少C的编译器 解决办法:安装gcc 和 gcc-c++编译器    

---------------------------------------------  
CMake 2.8.10.2, Copyright 2000-2012 Kitware, Inc.
Found GNU toolchain
C compiler on this system is: gcc 
C++ compiler on this system is: g++ Error when bootstrapping CMake:
Cannot find appropriate Makefile processor on this system.
Please specify one using environment variable MAKE.

---------------------------------------------
---------------------------------------------
Log of errors: /root/cmake-2.8.10.2/Bootstrap.cmk/cmake_bootstrap.log

报错:缺少make  
 make

 make install 
安装成功!

è¿éåå¾çæè¿°

先解压安装包

1.终端输入:sudo gedit /etc/profile,然后在打开的界面中输入: 
export PATH=$PATH:“/安装包解压路径/gcc-arm-none-eabi-5_4-2016q3/bin“, 
举个例子: 
export PATH=$PATH:/home/下载/gcc-arm-none-eabi-5_4-2016q3/bin 这样保存就可以。 
èªå·±ç路就

然后终端输入:source   /etc/profile,这里的命令是使能路径。 
2.检验版本的有效性: 
终端输入:arm-non 
点击Tab看看系统是否自动补全为:arm-none-eabi- 
如果补全了,那么说明我们已经设置成功了,我们此时可以直接键入指令来调用工具链的程序。如果没有,说明你上面的环境变量设置步骤有误请重新检查自己的操作。 
双击两下Tab则会吧所有的工具链工具显示出来。 
然后重启ubuntu就可以,这里直接采用命令重启:sudo reboot

四.在系统中配置JDK环境变量
我们知道,eclipse运行过程中,要调用JDK,但eclipse怎么找到JDK呢?就是通过环境变量。所以我们要在Ubuntu系统中配置一下环境变量,来告诉系统JDK的信息。
输入命令:

vim ~/.bashrc

打开配置文件.bashrc,并在结尾添加如下代码:

                   export JAVA_HOME=/usr/Software/jdk1.8.0_211

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

注:jdk1.8.0_211是JDK软件包解压后的文件夹名;
保存退出,然后输入下面的命令来使之生效:

source ~/.bashrc

 

sudo nautilus。

<think>我们首先需要明确目标:在树莓派上安装Ubuntu,并配置APM固件的编译环境。 根据引用[2]和[3],APM固件是ArduPilot的一种,通常用于无人机飞控。树莓派作为机载电脑,可以运行Ubuntu和ROS,并通过MAVROS飞控通信。但这里用户要求的是配置APM固件的编译环境,意味着我们需要在树莓派上搭建能够编译APM固件的环境。 步骤分解: 1. 在树莓派上安装Ubuntu系统(注意:树莓派通常使用Ubuntu Server或Ubuntu Core,因为树莓派是ARM架构) 2. 配置APM固件编译环境(需要安装编译工具链和依赖库) 具体步骤: 第一步:安装Ubuntu到树莓派 - 下载适用于树莓派的Ubuntu镜像(如Ubuntu Server 20.04 LTS for Raspberry Pi) - 使用工具(如Raspberry Pi Imager)将镜像烧录到SD卡 - 将SD卡插入树莓派,启动并完成初始设置(网络、用户等) 第二步:配置APM固件编译环境 APM固件的编译需要特定的工具链和依赖库。根据ArduPilot官方文档,编译环境主要依赖于以下步骤: 1. 更新系统并安装必要的工具 ```bash sudo apt update sudo apt upgrade -y sudo apt install git -y ``` 2. 克隆ArduPilot源码 ```bash git clone https://github.com/ArduPilot/ardupilot.git cd ardupilot git submodule update --init --recursive ``` 3. 安装编译依赖 ArduPilot提供了一个脚本用于安装依赖,但该脚本通常针对x86架构的Ubuntu,而树莓派是ARM架构。因此,我们需要使用针对ARM的依赖安装脚本。 在ardupilot目录下,运行: ```bash Tools/environment_install/install-prereqs-ubuntu.sh -y ``` 注意:这个脚本可能会尝试安装一些在ARM上不可用的包,因此可能需要手动调整。 4. 设置环境变量 将以下行添加到~/.bashrc文件中: ```bash export PATH=$PATH:$HOME/ardupilot/Tools ``` 然后执行: ```bash source ~/.bashrc ``` 5. 编译固件(以Pixhawk为例) 进入目标飞控的目录,例如编译Pixhawk1的固件: ```bash cd ardupilot ./waf configure --board px4-v2 ./waf build ``` 注意:在树莓派上编译可能比较慢,而且需要确保内存足够(建议使用树莓派4B,至少2G内存)。 注意事项: - 树莓派上的Ubuntu是ARM架构,而APM固件通常是为飞控硬件(如STM32)编译,所以实际上我们是在树莓派上为飞控交叉编译固件。 - 在树莓派上编译大型固件(如ArduPlane)可能需要较长时间,建议使用更高性能的树莓派(如4B)并增加swap空间。 参考引用: [^2]提到树莓派配置,但未详细说明编译环境搭建。 [^3]提到树莓派作为机载电脑运行Ubuntu+ROS,但用户需求是配置APM编译环境。 因此,以上步骤基于ArduPilot官方文档和树莓派运行Ubuntu的一般方法。 相关问题: 1. 树莓派上编译APM固件遇到依赖问题如何解决? 2. 如何为特定的飞控硬件(如Pixhawk 4)编译APM固件? 3. 在树莓派上编译APM固件有哪些优化编译速度的方法?</think>### 在树莓派上安装Ubuntu并配置APM固件编译环境 以下是分步操作指南(基于树莓派4B/3B+等支持64位系统的型号): --- #### **1. 安装Ubuntu系统** 1. **下载Ubuntu镜像** 访问[Ubuntu Server官方下载页](https://ubuntu.com/download/raspberry-pi),选择**Ubuntu Server 20.04 LTS (64-bit)** 镜像。 ```bash wget https://cdimage.ubuntu.com/releases/20.04.5/release/ubuntu-20.04.5-preinstalled-server-arm64+raspi.img.xz ``` 2. **烧录镜像到SD卡** 使用工具如`Raspberry Pi Imager`或命令行: ```bash unxz ubuntu-20.04.5-preinstalled-server-arm64+raspi.img.xz sudo dd if=ubuntu-20.04.5-preinstalled-server-arm64+raspi.img of=/dev/sdX bs=4M status=progress ``` 3. **首次启动配置** 插入SD卡启动树莓派,通过SSH登录(默认用户`ubuntu`,密码`ubuntu`),按提示修改密码并更新系统: ```bash sudo apt update && sudo apt upgrade -y ``` --- #### **2. 配置APM编译环境** 1. **安装依赖工具链** ```bash sudo apt install -y git gcc-arm-none-eabi python3-dev python3-pip libssl-dev ``` 2. **克隆APM源码** ```bash git clone https://github.com/ArduPilot/ardupilot.git cd ardupilot git submodule update --init --recursive ``` 3. **安装Python依赖** ```bash pip3 install future pyserial empy pexpect ``` 4. **配置编译环境** ```bash ./Tools/scripts/install-prereqs-ubuntu.sh -y echo "export PATH=$PATH:$HOME/ardupilot/Tools" >> ~/.bashrc source ~/.bashrc ``` --- #### **3. 编译APM固件示例** 编译Pixhawk固件: ```bash cd ardupilot ./waf configure --board px4-v2 # 配置Pixhawk1目标板 ./waf build # 开始编译 ``` 编译后的固件位于`build/px4-v2/bin/arducopter.apj`,可通过Mission Planner烧录到飞控[^2]。 --- #### **注意事项** - **性能要求**:编译过程需约1-2小时(树莓派4B),建议增加交换空间: ```bash sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 sudo mkswap /swapfile && sudo swapon /swapfile ``` - **硬件兼容**:仅支持**64位Ubuntu**,树莓派Zero/1代需改用[Pi OS Lite](https://www.raspberrypi.com/software/)。 - **验证安装**: ```bash python3 -c "import dronekit; print('DroneKit安装成功')" arm-none-eabi-gcc --version # 应显示ARM工具链版本 ``` --- ### 相关问题 1. 如何将编译好的APM固件烧录到Pixhawk飞控? 2. 树莓派编译APM固件时遇到内存不足错误如何解决? 3. 如何在Ubuntu上配置MAVROS实现树莓派飞控通信[^3]? 4. APM固件PX4固件在树莓派开发中有哪些主要区别? > 提示:烧录固件时需通过USB连接Pixhawk,使用Mission Planner的`Install Firmware`功能[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值