ROS安装和MAVROS以及PX4的安装

2023-05-16

只能说怀着沉重的心情,本来不想写的,但是又还是害怕后续出什么幺蛾子,就记录一下,希望自己永远没有机会在看这篇文章。


文章目录

  • ROS安装(ubuntu18.04安装melodic)
    • 1. Ubuntu 的软件与更新:
    • 2.设置安装源:
    • 3.设置密钥:
    • 4.安装ros:
    • 5.配置环境变量:
    • 6.安装依赖项:
    • 7.初始化rosdep:
    • 8.判读是否安装成功:
  • Mavros 安装
  • PX4安装

ROS安装(ubuntu18.04安装melodic)


1. Ubuntu 的软件与更新:

请添加图片描述

2.设置安装源:

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

3.设置密钥:

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

4.安装ros:

4.1

sudo apt update

4.2(这里有多个版本,可以自己去查,一般安装下面这个最完整)

sudo apt install ros-melodic-desktop-full

5.配置环境变量:

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

6.安装依赖项:

sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

7.初始化rosdep:

sudo apt install python-rosdep
sudo rosdep init

这里需要注意的是:第二条命令容易出错。
根据我多次的经验,先多试几次第二条命令,多试几次就会好。如何不行,就去查查吧,记得好像可以手动添加这步下载的文件。
当第二条通过后,先修改以下文件:

cd /etc/ros/rosdep/sources.list.d
sudo gedit 20-default.list 

运行上述命令,打开一个文件,替换内容如下:

# os-specific listings first rosdep update
yaml https://gitee.com/wybros/rosdistro/raw/master/rosdep/osx-homebrew.yaml osx
# generic
yaml https://gitee.com/wybros/rosdistro/raw/master/rosdep/base.yaml
yaml https://gitee.com/wybros/rosdistro/raw/master/rosdep/python.yaml
yaml https://gitee.com/wybros/rosdistro/raw/master/rosdep/ruby.yaml
gbpdistro https://gitee.com/wybros/rosdistro/raw/master/releases/fuerte.yaml fuerte

cd /usr/lib/python2.7/dist-packages/rosdep2/
sudo gedit gbpdistro_support.py

替换 FUERTE_GBPDISTRO_URL 如下:

FUERTE_GBPDISTRO_URL = 'https://gitee.com/wybros/rosdistro/raw/' \
    'master/releases/fuerte.yaml'

cd /usr/lib/python2.7/dist-packages/rosdep2/
sudo gedit rep3.py

替换 REP3_TARGETS_URL 如下:

REP3_TARGETS_URL = 'https://gitee.com/wybros/rosdistro/raw/master/releases/targets.yaml'


cd /usr/lib/python2.7/dist-packages/rosdep2/
sudo gedit sources_list.py

替换 DEFAULT_SOURCES_LIST_URL 如下:


DEFAULT_SOURCES_LIST_URL = 'https://gitee.com/wybros/rosdistro/raw/master/rosdep/sources.list.d/20-default.list'


cd /usr/lib/python2.7/dist-packages/rosdistro/
sudo gedit __init__.py

替换 DEFAULT_INDEX_URL 如下:


DEFAULT_INDEX_URL = 'https://gitee.com/wybros/rosdistro/raw/master/index-v4.yaml'

最后执行:

rosdep update

注意:上述所有命令一定要保证全部成功,不然可能会在后期出一些问题。

8.判读是否安装成功:

//打开一个终端:
roscore
//打开第二个终端(上面终端别关)
rosrun turtlesim turtlesim_node
//打开第三个终端
rosrun turtlesim turtle_teleop_key

如下图就算成功了。
在这里插入图片描述


Mavros 安装


主要有两种安装方式,但是我要和PX4结合起来用。就源码安装(安装包就不在我们自己建的工作空间)

sudo apt install ros-melodic-mavros ros-melodic-mavros-extras
roscd mavros
sudo wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh 

注意:一定要有耐心,出错,就多试几次。直到成功。


PX4安装


git clone https://gitee.com/robin_shaun/PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.11.0-beta1
bash ./Tools/setup/ubuntu.sh  //--no-nuttx --no-sim-tools

替换PX4_Firware目录下的 .gitmodules 如下:

[submodule "mavlink/include/mavlink/v2.0"]
	path = mavlink/include/mavlink/v2.0
	url = https://gitee.com/robin_shaun/c_library_v2.git
	branch = master
[submodule "src/drivers/uavcan/libuavcan"]
	path = src/drivers/uavcan/libuavcan
	url = https://gitee.com/robin_shaun/uavcan.git
	branch = px4
[submodule "Tools/jMAVSim"]
	path = Tools/jMAVSim
	url = https://gitee.com/robin_shaun/jMAVSim.git
	branch = master
[submodule "Tools/sitl_gazebo"]
	path = Tools/sitl_gazebo
	url = https://gitee.com/robin_shaun/sitl_gazebo.git
	branch = master
[submodule "src/lib/matrix"]
	path = src/lib/matrix
	url = https://gitee.com/robin_shaun/Matrix.git
	branch = master
[submodule "src/lib/ecl"]
	path = src/lib/ecl
	url = https://gitee.com/robin_shaun/ecl.git
	branch = master
[submodule "boards/atlflight/cmake_hexagon"]
	path = boards/atlflight/cmake_hexagon
	url = https://gitee.com/robin_shaun/cmake_hexagon.git
	branch = px4
[submodule "src/drivers/gps/devices"]
	path = src/drivers/gps/devices
	url = https://gitee.com/robin_shaun/GpsDrivers.git
	branch = master
[submodule "src/modules/micrortps_bridge/micro-CDR"]
	path = src/modules/micrortps_bridge/micro-CDR
	url = https://gitee.com/robin_shaun/micro-CDR.git
	branch = px4
[submodule "platforms/nuttx/NuttX/nuttx"]
	path = platforms/nuttx/NuttX/nuttx
	url = https://gitee.com/robin_shaun/NuttX.git
	branch = px4_firmware_nuttx-9.1.0+
[submodule "platforms/nuttx/NuttX/apps"]
	path = platforms/nuttx/NuttX/apps
	url = https://gitee.com/robin_shaun/NuttX-apps.git
	branch = px4_firmware_nuttx-9.1.0+
[submodule "platforms/qurt/dspal"]
	path = platforms/qurt/dspal
	url = https://gitee.com/robin_shaun/dspal.git
[submodule "Tools/flightgear_bridge"]
	path = Tools/flightgear_bridge
	url = https://gitee.com/robin_shaun/PX4-FlightGear-Bridge.git
	branch = master 
[submodule "Tools/jsbsim_bridge"]
	path = Tools/jsbsim_bridge
	url = https://gitee.com/robin_shaun/px4-jsbsim-bridge.git
[submodule "src/examples/gyro_fft/CMSIS_5"]
	path = src/examples/gyro_fft/CMSIS_5
	url = https://gitee.com/mirrors/CMSIS_5

执行如下操作:

git submodule update --init --recursive

注意:这个命令可能也会出错,也是多试几次,网上有需要修改子目录文件的方法或者自己下载相应的文件夹,但是,虽然那样操作,这个命令可以通过,但是,到最后就一直有问题。经过我数十次的安装,就一直在这里执行,直到成功(可能晚上成功率高?)。

编译:

make px4_sitl_default gazebo
//or
make px4_fmu-v5_default gazebo
//上面的v5可以是其他,看自己固件版本,如果只是仿真,就第一句吧。

关于gazebo的错误,可以去查一下,若报参数无效,就在.bashrc文件最后添加

export SVGA_VGPU10=0

打开主目录下的 .bashrc文件,在最后添加如下语句:

source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo

运行下面launch文件:

roslaunch px4 mavros_posix_sitl.launch

如果顺利打开,先别急高兴,看一看有没有红色error,有的话,就麻烦了。
如果没有,在终端内,按回车,出现pxh> 输入 commander takeoff 观察gazebo的飞机会不会起飞。

再打开一个终端,

rostopic list
//正常应该有好多话题
rostopic echo /mavros/state
//这句执行完,出现如下,就算成功了

在这里插入图片描述
到这就算结束了。为什么会写这个网上都有的教程呢,主要还是某一天早上发现我的px4突然打开就报错了,就各种操作都不好,一直断断续续从早上10点吧,到第二天早上3点多才好,期间按照各种教程安装了可能数十次吧,就一模一样的操作,但是就是最后有问题,要么make编译不能通过,要么就是最后的launch文件运行,报各种错误。最后重新安装了一个ubuntu18.04,重新一步一步安装了ros,mavros,px4才好,但是也还是心情沉重吧,毕竟我不知道它原来是为什么会出问题的,就还是害怕后续会突然坏了。希望好运。

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

ROS安装和MAVROS以及PX4的安装 的相关文章

  • 使用WTGAHRS2(JY-GPSIMU)在ROS中读取数据并发布话题

    目录 IMU简介 驱动程序 IMU串口通信协议 程序 效果 IMU简介 十轴惯性导航传感器WTGAHRS2传感器集成高精度的陀螺仪 加速度计 地磁场传感器 GPS 模块 采用高性能的微处理器和先进的动力学解算与卡尔曼动态滤波算法 能够快速求
  • ROS之QtCreator开发环境搭建

    文章目录 系统环境 官方教程 安装 卸载 使用 导入工作空间 构建与运行 编写测试程序 系统环境 操作系统 Ubuntu20 04 ROS版本 Noetic 官方教程 按照官方教程或者下面笔记中的内容均能进行环境搭建 笔记中另外做了部分补充
  • gazebo通过sdf搭建仿真环境和机器人Husky

    具体格式要求可参考 http sdformat org spec ver 1 6 elem sdf
  • ROS系统基本功能的使用详解(基本指令/节点/服务/启动文件/动态参数)

    ROS系统基本功能的使用详解 一 创建工作空间 二 创建与编译ROS功能包 三 ROS的基本命令 3 1 节点 3 2 主题 3 3 服务 3 4 参数服务器 四 节点的创建与运行 4 1 创建源文件 4 2 修改CMakeLists tx
  • ros+arduino学习(六):重构ros_lib库文件

    前言 ros lib是arduino程序和ros连接的库文件 通过使用这些库文件和相关函数 可以在arduino上通过编程使得arduino硬件开ros节点程序 这样arduino硬件就可以与上位机通过话题进行通讯 从而把arduino从传
  • ROS诸多调试工具总结1

    ROS有许多调试工具来为ROS调试你的工具 1 rosnode 参数 用法 作用 list rosnode list 查看当前运行了哪些节点 info rosnode info node name 查看该节点发布 接受哪些话题以及服务 ki
  • rosrun 和 roslaunch 的时候 TAB 的自动补全出现问题

    rosrun 和 roslaunch 的时候 TAB 的自动补全出现问题 rospack Warning error while crawling home sun boost filesystem status Permission de
  • 线速度和角速度

    转自 https baike baidu com item E7 BA BF E9 80 9F E5 BA A6 1532652 fr aladdin https baike baidu com item E8 A7 92 E9 80 9F
  • Ubuntu16.04安装ROS Kinetic详细步骤

    文章目录 ROS安装 配置Ubuntu软件仓库 设置sources list 设置密钥 更新Debian软件包索引 安装ROS 初始化 rosdep 环境配置 构建工厂依赖 测试安装 开发环境 ROS安装 ROS Kinetic只支持Wil
  • ROS 笔记(01)— Ubuntu 20.04 ROS 环境搭建

    ROS 官网 https www ros org ROS 中文官网 http wiki ros org cn 1 系统和 ROS 版本 不同的 ROS 版本所需的 ubuntu 版本不同 每一版 ROS 都有其对应版本的 Ubuntu 切记
  • Ubuntu18.04配置Seetaface6

    目录 一 下载安装Qt软件 1 安装包下载 2 安装Qt 3 配置 二 下载源码 三 编译工具 四 编译 1 编译OpenRoleZoo 2 编译SeetaAuthorize 3 编译TenniS 五 运行 1 修改lib路径 2 buil
  • 局域网下ROS多机通信的网络连接配置

    1 在路由器设置中固定各机器IP地址 在浏览器中输入路由器的IP地址 例如TP LINK路由器的IP为 192 168 1 1 进入登录页面后 输入用户名和密码登录 用户名一般为admin 密码为自定义 在 基本设置 gt LAN设置 gt
  • 如何将视频或图像序列转换为包文件?

    我是 ROS 新手 我需要转换预先存在的视频文件 或者large可以连接到视频流中的图像数量 bagROS 中的文件 我在网上找到了这段代码 http answers ros org question 11537 creating a ba
  • 将 CUDA 添加到 ROS 包

    我想在 ros 包中使用 cuda 有人给我一个简单的例子吗 我尝试使用 cuda 函数构建一个静态库并将该库添加到我的包中 但总是出现链接错误 未定义的引用 cuda 我已经构建了一个可执行文件而不是库并且它可以工作 请帮忙 我自己找到了
  • 错误状态:平台不允许不安全的 HTTP:http://0.0.0.0:9090

    我正在尝试从我的 flutter 应用程序连接到 ws local host 9090 使用 rosbridge 运行 的 Ros WebSocket 服务 但我在 Flutter 中收到以下错误 错误状态 平台不允许不安全的 HTTP h
  • catkin_make后找不到ROS包

    我根据 ROS 的 Wiki 页面创建了一个 ROS 工作区 我还使用创建了一个包catkin create pkg在我刚刚创建的工作区下 然后 按照 ROS Wiki 中的步骤使用以下命令构建包catkin make 构建包后 我插入命令
  • 在 ROS - Python 中使用来自多个主题的数据

    我能够显示来自两个主题的数据 但无法在 ROS 中实时使用和计算这两个主题的数据 用 Python 代码编写 您有想法存储这些数据并实时计算吗 谢谢 usr bin env python import rospy import string
  • ROS 从 python 节点发布数组

    我是 ros python 的新手 我正在尝试从 python ros 节点发布一个一维数组 我使用 Int32MultiArray 但我无法理解多数组中布局的概念 谁能给我解释一下吗 或者还有其他方式发布数组吗 Thanks usr bi
  • 如何使用 PyQT5 连接和分离外部应用程序或对接外部应用程序?

    我正在使用 ROS 为多机器人系统开发 GUI 但我对界面中最不想做的事情感到困惑 在我的应用程序中嵌入 RVIZ GMAPPING 或其他屏幕 我已经在界面中放置了一个终端 但我无法解决如何向我的应用程序添加外部应用程序窗口的问题 我知道
  • 如何在Windows上安装机器人操作系统ROSJava?

    ROS 的文档很糟糕 一个很大的讽刺是 ROS 的 Groovy 和 ROSJava 版本的创建是为了让 Windows 等平台上的开发人员能够利用出色的机器人 SDK 而所有安装说明仍然面向 Linux ubuntu 用户 The ROS

随机推荐

  • mysql基础常用语句

    mysql基础常用语句 数据表的增删改 数据表的新建 数据库只能有一个主键 但是可以存在联合主键 主键值必须唯一 即 xff0c 表中的每个行必须具有唯一的主键值 如果主键使用单个列 xff0c 则它的值必须唯一 如果使用多个列 xff0c
  • 基本数据类型的精度和范围

    Java中的数据类型分为 xff1a 基本数据类型和引用数据类型 如下图所示 xff1a 下面主要要讨论的是基本数据类型的数据表示范围是如何得到的 1 首先应该对计算机的存储单元有一定的了解 在计算机里无论是内存还是硬盘 xff0c 计算机
  • java中构造方法和普通方法的区别

    1 普通方法 xff1a 定义 xff1a 简单的说方法就是完成特定功能的代码块 普通方法定义格式 xff1a 修饰符 返回值类型 方法名 xff08 参数类型 参数名1 xff0c 参数类型 参数名2 xff0c xff09 函数体 xf
  • Microsoft.NET.Framework开机报错解决方法

    win10自动更新后每次开机都报错Microsoft NET Framework 如下图所示 xff1a 网上查了各种各样的方法折腾了好久 其中看到了这样一个回答 有两种可能 你电脑里的某个软件需要使用Microsoft NET Frame
  • 简述Ajax原理及实现步骤

    简述Ajax原理及实现步骤 1 Ajax简介 概念 Ajax 即 Asynchronous Javascript And XML xff08 异步 JavaScript 和 XML xff09 现在允许浏览器与务器通信而无须刷新当前页面的技
  • 计算机网络体系结构综述(上)

    首先附上原文链接 xff1a 计算机网络体系结构综述 xff08 上 xff09 摘要 xff1a 计算机网络体系结构标准的制定使得两台计算机能够像两个知心朋友那样能够互相准确理解对方的意思并做出优雅的回应 本文首先概述了计算机网络体系结构
  • java并发之通过线程工厂创建线程

    通过线程工厂创建线程 ThreadFactory接口的Thread newThread Runnable r 方法 package chapter1 import util Sleeper import java util concurre
  • C和 C ++ 的区别

    1 内联函数 xff1a 在函数的调用点 xff0c 把函数的代码全部展开 xff0c 编译阶段 xff08 一种更安全 xff08 进行类型检查 xff09 宏 xff09 宏 预编译阶段 xff08 字符串替换 xff0c 不进行类型检
  • C| |头文件中为什么只声明不定义,而类定义又可以放在头文件中

    头文件中为什么只声明不定义 xff0c 而类定义又可以放在头文件中 首先要了解几个基本概念 xff1a 编译单元 对于c语言 xff0c 每一个 c文件就是一个编译单元 仅仅从编译来说 xff0c 各个编译单元之间没有联系 未解决符号表 提
  • C#软件工程师、 .NET、 上位机软件开发工程师秋招面经八股汇总 及心得

    博主从七月到十月底一共投了142家企业 xff0c 流程走完的有9家 xff0c 收到7个offer xff0c 目前三方已签 xff0c 很满意签约的公司 xff0c 现在把这几个月我遇到常见问题写下来 xff0c 希望能帮助到大家 心得
  • 网络编程--网络字节序和主机字节序详解

    NBO 网络字节序 HBO 主机字节序 LE little endian xff1a 小端 BE big endian xff1a 大端 空中传输的字节的顺序即网络字节序为标准顺序 xff0c 考虑到与协议的一致以及与同类其它平台产品的互通
  • 实现batch内负采样和解决报错:tensorflow.python.framework.errors_impl.InvalidArgumentError

    在我们实现双塔等模型时一些负样本难以获取 xff0c 这时我们可以通过batch内负采样的方式来实现训练 xff0c 此时采集的样本数据仅需要正样本就够了 我们先来看一个案例 xff0c 通过此案例来理解此代码 import tensorf
  • RabbitMQ安装和使用(docker版本)

    1 查找镜像 xff1a xff08 management 版本的镜像才有管理界面 xff09 docker search rabbitmq management 2 拉取镜像 xff1a docker pull docker io mac
  • OpenCV与图像处理学习七——传统图像分割之阈值法(固定阈值、自适应阈值、大津阈值)

    OpenCV与图像处理学习七 传统图像分割之阈值法 xff08 固定阈值 自适应阈值 大津阈值 xff09 一 固定阈值图像分割1 1 直方图双峰法1 2 OpenCV中的固定阈值分割 二 自动阈值图像分割2 1 自适应阈值法2 2 迭代法
  • 驱动编写入门

    按键控制led驱动 一 框架 1 open read write 函数 static int second drv open struct inode inode struct file file 配置GPF0 2为输入 gpfcon am
  • OpenWrt与嵌入式Linux

    OpenWrt与嵌入式Linux 由于要接手学长留下来的一个项目 xff0c 被迫 要学习OpenWrt的配置方法 虽然对于一个five电工来说这事挺莫名其妙的 xff0c 但还是硬着头皮上吧 xff08 我本想拒绝 xff0c 但他给的是
  • ROS学习笔记#3 package.xml解释

    我们都知道在catkin下创建功能包时 会自动生成一些文件 文件夹 其中就有这个package xml 它主要由以下部分组成 描述tag维护tag开源tag依赖tag结尾tag 描述tag span class token operator
  • idea多模块打包

    多模块打包的办法有两个 1 在parent的pom下执行deploy 这样就会自动将父 pom以及子 module都发布到仓库 在模块中添加如下选项 lt distributionManagement gt lt repository gt
  • Linux系统中永久设置GVIM的字体、背景颜色和显示行数等

    在GVIM窗口界面 xff0c 手动改变字体大小 高亮 背景色等之后 xff0c 下次打开依旧是默认配置 因此介绍一种永久设置的方法 xff1a 一 配置命令 set gfn 61 Tlwg Typist 12 colorscheme de
  • ROS安装和MAVROS以及PX4的安装

    只能说怀着沉重的心情 xff0c 本来不想写的 xff0c 但是又还是害怕后续出什么幺蛾子 xff0c 就记录一下 xff0c 希望自己永远没有机会在看这篇文章 文章目录 ROS安装 ubuntu18 04安装melodic 1 Ubunt