在树莓派上ROS MAVROS的安装使用

2023-05-16

       首先,我购买的是树莓派3B+,比较新款,所以装不了太老的树莓派系统,安装的是树莓派官方提供的Raspbian Stretch系统。树莓派系统安装过程较为简单,且官网教程详细,这里不做累述。

       在PX4官网上,树莓派上安装mavros还写的是适用于Raspbian "JESSIE",这是Stretch的前一个版本。并且在官网上,并没有写ros可以支持Stretch系统。经本人测试,在Stretch上还是可以装上 ROS和MAVROS。

 

一、安装ROS

 

1.调整交换文件大小,主要是为了方便之后的安装,MAVROS同样需要这样的操作。

sudo vim /etc/dphys-swapfile
# 将100改为1024
CONF_SWAPSIZE=1024
# save and exit 
#开关一下,使之生效
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

       如果1024还不够,可以改成4028,注意,安装完后记得修改回100.

2.

在Raspbian Stretch中,有丢失包错误,我们需要首先通过安装“dirmngr”进行证书管理来修复它。

$ sudo apt-get install dirmngr

3.将ROS repo添加到apt列表

$ 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 421C365BD9FF1F717815A3895523BAEEB01FA116

4.更新Debian包:

$ sudo apt-get update
$ sudo apt-get upgrade

5.安装Bootstrap依赖项:

$ sudo apt-get install python-rosdep python-rosinstall-generator python -wstool python-rosinstall build-essential cmake

6.安装rosdep(包管理器):

$ sudo rosdep init
$ rosdep update

7.创建一个catkin工作区:

$ mkdir~ / ros_catkin_ws
$ cd~ / ros_catkin_ws

8.构建包和库:
我选择安装ROS-Comm以实现最小化安装。
ROS-Comm:ROS包,构建和通信库。没有GUI工具。

$ rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar> kinetic-ros_comm-wet.rosinstall 
$ wstool init -j8 src kinetic-ros_comm-wet.rosinstall

-j8”用于加快处理速度。

如果“wstool init”失败或被中断,您可以通过运行恢复下载(此步骤可能不是必需的):

$ wstool update -j4 -t src

确保安装了所有依赖项:

$ rosdep install --from-paths src --ignore-src --rosdistro kinetic -y

9.建立ROS:

$ sudo mkdir -p /opt/ros/kinetic
$ sudo chown pi:pi /opt/ros/kinetic
$ ./src/catkin/bin/catkin_make_isolated -j2 --install --install-space /opt/ros/kinetic -DCMAKE_BUILD_TYPE=Release

10.Source the new installation:

$ source /opt/ros/kinetic/setup.bash

检验ros环境

$ export | grep ROS

 

 

二、MAVROS  从源码安装

1.安装必要的依赖

sudo apt-get install python-catkin-tools python-rosinstall-generator
sudo apt-get install libgeographic-dev
sudo apt-get install geographiclib-tools
sudo apt install python-future

2.创建catkin工作区

mkdir - p ~/catkin_ws/src
cd catkin_ws
catkin init

3.安装mavlink和mavros

# Mavlink
rosinstall_generator --rosdistro kinetic mavlink | tee /tmp/mavros.rosinstall
#MAVROS
rosinstall_generator --upstream 
mavros | tee -a /tmp/mavros.rosinstall
wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src -j4
rosdep install --from-paths src --ignore-src -y

这个时候会遇到一些报错

类似于缺少依赖

ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
mavros: No definition of [geographic_msgs] for OS [debian]
mavros_extras: No definition of [tf] for OS [debian]
test_mavros: No definition of [control_toolbox] for OS [debian]
mavros_msgs: No definition of [geographic_msgs] for OS [debian]

一个个安装它们,你会发现环环相扣,安装好一些,又会有新的依赖缺少,只能一个个好好安装,大概感觉有50多个

安装依赖的命令为:

rosinstall_generator --rosdistro kinetic $XXX | tee -a /tmp/mavros.rosinstall

$XXX填入你要安装的依赖名

这里可以写一个脚本来进行安装,当然这也只是一部分。

.sh文件

for file_name in {geographic_msgs,uuid_msgs,nav_msgs,tf,control_toolbox,actionlib_msgs,realtime_tools,diagnostic_msgs,urdf,eigen_conversions,tf2_ros,dynamic_reconfigure,tf2_eigen,rosconsole_bridge,orocos_kdl,visualization_msgs,angles,tf2_py,tf2,tf2_msgs,urdf_parser_plugin,diagnostic_updater,control_msgs,trajectory_msgs,actionlib,rosbag_migration_rule}
do
   rosinstall_generator --rosdistro kinetic $file_name | tee -a /tmp/mavros.rosinstall
done

有的时候由于网络原因,安装会失败,得反复安装。

评论区中有朋友说下面一条命令可以解决所以依赖安装的问题,可以尝试一下:

rosinstall_generator --upstream mavros --deps | 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
catkin  build

 

还有一个可能的错误,Mavros_extra compile error

tf2_eigen/tf2_eigen.h: No such file or directory
 #include <tf2_eigen/tf2_eigen.h>

这个时候需要在CMakeList中添加tf2_eigen

find_package(catkin REQUIRED COMPONENTS
  mavros
  roscpp
  mavros_msgs
  sensor_msgs
  geometry_msgs
  std_msgs
  visualization_msgs
  urdf
  tf
  tf2_eigen
)

 

安装好后,我们来介绍树莓派连接pixhawk的实例

https://blog.csdn.net/Lin_QC/article/details/90373992

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在树莓派上ROS MAVROS的安装使用 的相关文章

随机推荐

  • dronekit 控制飞控 上/下/前/后/左/右 或是 上/下/东/西/南/北

    1 ardupilot平台 对于ardupilot平台 xff0c dronekit的python代码可以这样编写实现 上 下 前 后 左 右 from pymavlink import mavutil from dronekit impo
  • 树莓派安装使用 opencv c++版本

    安装相关依赖 sudo apt get install build essential sudo apt get install cmake libgtk2 0 dev pkg config libswscale dev sudo apt
  • 发生If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config错误的解决方式

    在某个树莓派安装opencv后的使用中 xff0c 我执行程序遇到了这样的错误 The function is not implemented Rebuild the library with Windows GTK 43 2 x or C
  • 树莓派4b 接7寸小显示器无法显示

    之前为树莓派3b 43 购置了一个外接的小显示器 xff0c 使用正常 可是换到最近用的4b上 xff0c 就无法显示了 经过自己尝试 发现是分辨率的设置问题 我看了一下自己买的显示器是 1024 X 768的 于是在 树莓派上进行了分辨率
  • 微软笔试题 回忆(回文方面)

    这道题当年我没有做出来 xff0c 今天微软笔试又碰到了类似的题目 狠心要将这一块吃透 主要还是对动态规划掌握的不够熟练 去年的题目 xff1a 最少射击几次 N个瓶子都有编号 xff0c 每次能射击1个或多个瓶子 xff0c 如果是回文的
  • CLICK模块路由器:代码中加入多线程函数 (报错解决:undefined reference “pthread_mutex_lock”)

    最近想在CLICK中编写读写锁的相关应用 xff0c 所以用到了 lt pthread h gt 下的函数 pthread mutex lock 等 但是当我 make Install 编译时 发生了报错 undefined referen
  • Leetcode 212. Word Search II (tries树 + DFS)

    题目 xff1a Given a 2D board and a list of words from the dictionary find all words in the board Each word must be construc
  • LINUX 安装 AODV协议

    介绍 xff1a AODV协议是无线自组网中主动路由协议的一种 xff0c 也是非常经典的一个协议 xff0c 但是 xff0c 在linux实际环境中却很难找到协议的实现 xff08 十几年前有一个 aodv uu 现在的内核已经不能用了
  • Leetcode 210. Course Schedule II (利用拓扑排序)

    一 题目 There are a total of n courses you have to take labeled from 0 to n 1 Some courses may have prerequisites for examp
  • 2018年,Java程序员转型大数据开发,是不是一个好选择?

    近日网上有一篇关于Java程序员职场生存现状的文章 2017年 Java 程序员 xff0c 风光背后的危机 xff0c 在Java程序员圈子里引起了广泛关注和热议 2017年 xff0c Java 程序员面临更加激烈的竞争 不得不承认 x
  • Leetcode 105 106 重构二叉树

    Leetcode上105 xff0c 106题很相似 xff0c 都是重构二叉树的题 题目 xff1a 105 Given preorder and inorder traversal of a tree construct the bin
  • LeetCode 查并集系列 朋友圈 冗余链接等

    网上有作者已经总结的很好 xff0c 这里转载一下 xff1a https www jianshu com p b81f6db6beaf 什么是并查集 一种数据结构 xff0c 用来描述集合 查 xff08 find xff09 xff1a
  • 记 7.24 阿里巴巴机试题

    题一 题目 xff1a 吃烧饼大赛 有n个盘子 xff0c 每个盘子内有s i 个烧饼 每次选取一个 x xff08 1 x n xff09 xff0c 可以吃到1 xff5e x 号盘子里的一个烧饼 若这1 xff5e x个盘子中有空盘时
  • C++ 智能指针学习

    网上找了一篇很棒的文章 转载自 xff1a https www jianshu com p bf8de014e5c2 C Java python和go等语言中都有垃圾自动回收机制 xff0c 在对象失去引用的时候自动回收 xff0c 而且基
  • 记面试遇到的一个智力题:追击问题

    一个带环的单链表 xff0c 一个快指针 xff08 每次走三步 xff09 xff0c 一个慢指针 xff08 每次走一步 xff09 xff0c 请问这两个指针可能无法相遇吗 xff1f 解 xff1a 假设慢指针入环时 xff0c 快
  • 面试经典题 手撸LRU

    1 C与C 43 43 混搭写法 struct LRUCacheNode int key int value LRUCacheNode prev LRUCacheNode next LRUCacheNode key 0 value 0 pr
  • 腾讯8.23号笔试 刷木板题 DP

    作者 xff1a 夜 xffe3 太美 链接 xff1a https www nowcoder com discuss 486642 type 61 2 来源 xff1a 牛客网 题意 有n xff08 n在5000内 xff09 块木板
  • 京东2018笔试题 神奇数

    题目 东东在一本古籍上看到有一种神奇数 如果能够将一个数的数字分成两组 其中一组数字的和等于另一组数字的和 我们就将这个数称为神奇数 例如242就是一个神奇数 我们能够将这个数的数字分成两组 分别是 2 2 以及 4 而且这两组数的和都是4
  • 绑定mac地址与网卡驱动wlan

    按照之前博客https blog csdn net Lin QC article details 90717218的配置 xff0c 我们可以在树莓派上实现双网卡 xff0c 但是再多次试验中发现 xff0c 每次重启后 xff0c 网卡的
  • 在树莓派上ROS MAVROS的安装使用

    首先 xff0c 我购买的是树莓派3B 43 xff0c 比较新款 xff0c 所以装不了太老的树莓派系统 xff0c 安装的是树莓派官方提供的Raspbian Stretch系统 树莓派系统安装过程较为简单 xff0c 且官网教程详细 x