树莓派控制无人机实现定点降落(二)——树莓派或ubuntu安装mavros

树莓派控制无人机实现定点降落(二)——树莓派或ubuntu安装mavros

这篇文章介绍源码安装mavros的方法,ubuntu和树莓派基本相同,如下:

1、安装依赖

sudo apt-get install python-catkin-tools python-rosinstall-generator -y

2、创建工作空间

mkdir -p ~/mavros_ws/src
cd ~/mavros_ws
catkin init
wstool init src

3、安装mavlink和mavros

rosinstall_generator --rosdistro kinetic mavlink | tee /tmp/mavros.rosinstall
rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall

4、设置工作空间并安装

wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src -j4
rosdep install --from-paths src --ignore-src -y

在这个过程中会出现一些问题:

(1)问题

在这里插入图片描述
这个问题就是还没安全包,继续执行:

rosinstall_generator --rosdistro kinetic "所缺的包" | tee -a /tmp/mavros.rosinstall

其中"所缺的包"由报错里中括号里的包替换,如上图中的trajectory_msgs、tf2_eigen等。安装完后重新执行:

wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src -j4
rosdep install --from-paths src --ignore-src -y

可能还会出现上述错误,就是还有新的包没安装,再去安装,重复执行直到没有报错即可。

(2)connection refused

安装出错,总是连不上,返回connection refused。
这个错误一般重新安装即可,但是可能会一直连不上,试成千上万次试到自闭,这里改一下本地hosts文件来提速:

sudo vim /etc/hosts

在该文件最后添加:

192.30.253.112 github.com
192.30.253.118 gist.github.com
151.101.112.133 assets-cdn.github.com
151.101.184.133 raw.githubusercontent.com

然后重启网络服务:

sudo /etc/init.d/networking restart

之后再重新安装,发现不会发生连不上的问题了hhhh

5、安装GeographicLib datasets

(这个用时可能会比较长,耐心等)

sudo ./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

6、catkin编译

在编译前应把交换文件大小调大,防止编译时出现交换空间不足的错误:
打开文件/etc/dphys-swapfile,将CONF_SWAPSIZE改为1024或2048(原来是100),然后保存退出,执行下面的命令让它生效:

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

之后再进行编译

catkin build

在catkin build时,可能会出现各种各样的错误,下面列举我出现的错误以及解决方案:

(1)出现找不到python解释器的错误

如图:
在这里插入图片描述
原因在于src/mavlink/CMakeLists里第27行:

find_package(Python${Py_VERSION} COMPONENTS Interpretator)

这里找的包名称为Python${Py_VERSION},而打开/usr/bin可以发现我的python解释器只有python、python2、python2.7,解决方案有两种,一是再建一个名为Python2的软链接,二是把这里的P改成小写:

find_package(python${Py_VERSION} COMPONENTS Interpretator)

编译成功

(2)“logError not in the scope”,“logWarn not in the scope”等错误

这是因为缺少logError等的宏定义导致的,直接在该文件下添加宏定义即可:
文件:/usr/include/console_bridge/console.h
添加:

#define logWarn CONSOLE_BRIDGE_logWarn
#define logError CONSOLE_BRIDGE_logError
#define logDebug CONSOLE_BRIDGE_logDebug
#define logInform CONSOLE_BRIDGE_logInform

重新编译,编译成功

(3)出现如下图所示错误:

在这里插入图片描述
这是因为新版的boost不允许部分函数在传参的时候进行自动类型转换,所以我们要手动进行类型转换。打开出错文件,将参数强制转换为long型,在这里我打开/home/pi/mavros_ws/src/actionlib/src/connection_monitor.cpp,将278行对应部分改为:

boost::posix_time::milliseconds((long)(time_left.toSec() * 1000.0f)));

编译成功

### 如何在树莓派 Ubuntu安装配置 MavROS #### 准备工作 确保已经选择了合适的树莓派型号,建议选用带有 Wi-Fi 和 eMMC 的 CM4 版本。此版本便于通过 rpiboot 工具刷入系统,并能稳定运行所需的操作系统环境[^2]。 #### 安装 Ubuntu Server 20.04 下载适用于 ARM 架构的 Ubuntu Server 20.04 镜像文件并按照官方指南完成烧录过程。完成后设置好网络连接和其他基础配置项。 #### 创建交换空间 由于树莓派内存有限,在编译大型项目时可能会遇到性能瓶颈。为此可以在根目录下创建一个大小适中的交换分区来缓解这一情况: ```bash sudo mkdir -p /swap cd /swap sudo dd if=/dev/zero of=swapfile bs=1K count=2G sudo chmod 600 swapfile sudo mkswap swapfile echo '/swap/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab sudo swapon -a ``` 上述命令会建立一个2GB容量的虚拟内存区域[^4]。 #### 更新软件源列表 为了获取最新的软件包以及依赖关系,更新系统的APT仓库地址非常重要: ```bash sudo apt update && sudo apt upgrade -y ``` #### ROS Noetic 安装 MavROS 是作为 ROS 软件套件的一部分发布的,因此先要安装整个 ROS 发行版。这里选择的是Noetic版本,它兼容Ubuntu Focal: ```bash sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update sudo apt install ros-noetic-desktop-full python3-rosdep python3-rosinstall python3-wstool build-essential -y source /opt/ros/noetic/setup.bash echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc sudo rosdep init rosdep update ``` #### MAVROS 及其扩展模块安装 最后一步就是直接利用 APT 包管理器快速部署 MavROS程序及其附加功能组件: ```bash sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras -y ``` 此时应该已经在树莓派上的 Ubuntu 中成功集成了完整的 MavROS 开发平台[^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值