PX4+ROS+gazebo+mavros,Ubuntu18.04搭建SITL仿真环境

2023-05-16

前言

介绍

SITL(Software in the Loop)软件在环仿真平台,与之对应的有(HITL)硬件在环仿真。本文目的是搭建一个无人机软件仿真环境,使用PX4开源飞控,gazebo作为仿真器,结合ROS编写机器人软件程序,mavros是ROS的工具包,使各软件进行信息交互。

开源飞控

主要有PX4和Ardupilot(APM)
PX4相关地址:

  • github: https://github.com/PX4
  • 官网:https://docs.px4.io/master/zh/

Ardupilot相关地址:

  • github:https://github.com/ArduPilot/ardupilot

  • 官网:https://ardupilot.org/dev/docs/building-setup-linux.html

仿真器

  • jMAVSim是一个简单的轻量级多转子模拟器。目前似乎只支持四旋翼。
  • Gazebo仿真器是一款功能强大的三维物理仿真平台,具备强大的物理引擎、高质量的图形渲染、方便的编程与图形接口,最重要的是其开源免费的特性。支持旋翼,固定翼,倾转,小车等,支持平台较多,与ROS绑定。
  • AirSim 是微软开源的一个跨平台的建立在虚幻引擎( Unreal Engine)上的无人机以及其它自主移动设备的模拟器。 目前似乎也只支持四旋翼。需结合Visual Studio2017/2019 与虚幻引擎,对配置要求较高,且相关教程较少,存在一定问题。

一、安装ROS

本文主要参考XTDrone的使用文档,为其内容的补充

  • 查看对应版本,Ubuntu版本必须与ROS匹配,目前最新的是Ubuntu20.04对应ROS Noetic,本文为Ubuntu18.04对应ROS Melodic。可通过官网查询。

依赖安装

sudo apt install -y ninja-build exiftool python-argparse python-empy python-toml python-numpy python-yaml python-dev python-pip ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
pip2 install pandas jinja2 pyserial cerberus pyulog numpy toml pyquaternion
pip3 install packaging numpy empy toml pyyaml jinja2

1.设置sources.list

选用清华镜像,参考官网教程

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'

2.设置keys

关于https://raw.githubusercontent.com的网络问题,可以在网址前加上"https://ghproxy.com/"代理加速。

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

或者加上代理

curl -s https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

3.安装ROS

可选ros-melodic-desktop-full、ros-melodic-desktop和ros-melodic-ros-base。
ros-melodic-desktop-full自带Gazebo,此处选择ros-melodic-desktop,后面再自己安装Gazebo。

~~ ~~
更新
gitee的一个issues提到能够直接下载ros-melodic-desktop-full,再执行

sudo apt upgrade libignition-math2

后,gazebo会从9.0.0升级到9.16,待验证

~~ ~~

先更新源

sudo apt-get update

再下载安装

sudo apt install ros-melodic-desktop

未更新源会出现问题

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package ros-melodic-desktop

4.环境配置和依赖

环境

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

依赖

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

5.最后安装rosdep

sudo apt install python-rosdep
sudo rosdep init
  • 可能出现的问题
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

网络问题,无法连接到raw.githubusercontent.com,可以通过改host等方式,但ip地址会变动,不一定有效。
建议直接在目标位置手动创建文件:

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

然后输入下面内容,再保存退出即可。

# os-specific listings first
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx

# generic
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

创建完文件后就能直接运行下一步了。

更新

rosdep update

大概率出现timed out超时,需要手动改地址,加上代理,在打开文件系统,进入/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py或命令
图形化操作

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

命令行操作

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

然后找到大概第310行(通过图中Go to Line)添加
vim中 通过 :310跳到310行

url="https://ghproxy.com/"+url

Go to Line
同样,下方列出的地方修改或添加 https://ghproxy.com/

/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py  204行添加
gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url

/usr/lib/python2.7/dist-packages/rosdistro/__init__.py  68行
/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 36行
/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py 72行
/usr/lib/python2.7/dist-packages/rosdep2/rep3.py 39行
/usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py 68行和119行

然后重新运行更新命令,成功后就能启动了。

6.启动

roscore

显示

Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://ubuntu:34149/
ros_comm version 1.14.11


SUMMARY
========

PARAMETERS
 * /rosdistro: melodic
 * /rosversion: 1.14.11

NODES

auto-starting new master
process[master]: started with pid [28148]
ROS_MASTER_URI=http://ubuntu:11311/

setting /run_id to 7acb3a28-daf8-11eb-a451-000c292038f9
process[rosout-1]: started with pid [28159]
started core service [/rosout]

创建catkin_ws工作空间

mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts
cd catkin_ws/src && catkin_init_workspace # 使用catkin-tools话,则为cd catkin_ws && catkin init 
cd .. && catkin_make # 使用catkin-tools话,则为catkin build 

二、安装Gazebo

依旧有官网教程

1.设置源packages.osrfoundation.org.

sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
cat /etc/apt/sources.list.d/gazebo-stable.list
#显示deb http://packages.osrfoundation.org/gazebo/ubuntu-stable bionic main

2.设置Key

wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -

3.安装

更新源

sudo apt-get update

安装gazebo9.1

sudo apt-get install gazebo9=9.1*

启动

gazebo

虚拟机可能报错

VMware: vmw_ioctl_command error Invalid argument.

输入

echo "export SVGA_VGPU10=0" >> ~/.bashrc
source ~/.bashrc

之后才成功启动

4.安装插件

安装ROS的Gazebo插件

sudo apt install ros-melodic-gazebo-* #melodic

5.启动测试

开两个终端分别运行

roscore     #终端1 启动ROS
rosrun gazebo_ros gazebo  #终端2 启动Gazebo

三、MAVROS安装

sudo apt install ros-melodic-mavros ros-melodic-mavros-extras 
roscd mavros
sudo wget https://ghproxy.com/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 

最后安装时间较长

Installing GeographicLib geoids egm96-5
Installing GeographicLib gravity egm96
Installing GeographicLib magnetic emm2015

我安装时出现错误

Error while installing GeographicLib geoids egm96-5

尝试在上述的 wget步骤中,地址加上https://ghproxy.com/,重新下载install_geographiclib_datasets.sh(先删除原先的),失败就ctrl+c,多次重新执行最后一步才成功。

四、安装PX4

1.下载源码

使用github库,若存在网络问题,可以在github.com后面加上.cnpmjs.org。

cd ~
git clone https://github.com.cnpmjs.org/PX4/PX4-Autopilot.git

也可以使用gitee的库。详见XTDrone教程

2.更新modules后编译

在.gitmodules中的所有github.com地址加上.cnpmjs.org后缀。

cd PX4-Autopilot/
git submodule update --init --recursive
bash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools #安装python依赖
#安装依赖我这里报了错,但好像不影响

编译

make px4_sitl_default gazebo

3.设置环境变量

XTDrone教程

source ~/catkin_ws/devel/setup.bash
source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot/ ~/PX4-Autopilot/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/sitl_gazebo

我照上面输入后,启动报错,参考此处找了下面两个命令后才成功。

cd ~/PX4-Autopilot
source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd):$(pwd)/Tools/sitl_gazebo

启动

启动前,建议先到网上下载Model包(XTDrone教程有)到.gazebo文件夹下。

cd ~/PX4-Autopilot
roslaunch px4 mavros_posix_sitl.launch

参考

参考较多,若有侵权,联系删除。
[入门教程] PX4-Gazebo仿真
无人机仿真之搭建仿真平台-SITL、gazebo、ROS
XTDrone使用文档
ROS的安装-> rosdep init /update报错2021.5.6实测有效
Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建
gazebo学习时遇到的问题(PX4篇)

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

PX4+ROS+gazebo+mavros,Ubuntu18.04搭建SITL仿真环境 的相关文章

  • ROS系统基本功能的使用详解(基本指令/节点/服务/启动文件/动态参数)

    ROS系统基本功能的使用详解 一 创建工作空间 二 创建与编译ROS功能包 三 ROS的基本命令 3 1 节点 3 2 主题 3 3 服务 3 4 参数服务器 四 节点的创建与运行 4 1 创建源文件 4 2 修改CMakeLists tx
  • V-REP安装

    小知识 是当前目录 是父级目录 是根目录 1 下载V REP 官网地址 http www v rep eu downloads html 我用ubuntu16 04下载V REP PRO EDU V3 5 0 Linux tar 2 解压安
  • 关于相机与激光雷达数据采集与标定

    最近在做一个关于车路协同的项目 需要做一个路侧系统 传感器有摄像头和激光雷达 相机和激光雷达联合标定费了老半天劲 在此记录一下 雷达时间戳不对 导致摄像头和雷达的数据无法对齐 解决办法 修改雷达驱动发布点云消息时的时间戳 相机内参标定可以使
  • ROS学习(1)——ROS1和ROS2的区别

    因为机器人是一个系统工程 它包括了机械臂结构 电子电路 驱动程序 通信框架 组装集成 调试和各种感知决策算法等方面 任何一个人甚至是一个公司都不可能完成机器人系统的研发工作 但是我们又希望自己能造出一个机器人跑一跑 验证一下自己的算法 所以
  • 1-如何安装ROS

    如何安装ROS 大家好 我是如何 今天尝试在Ubantu下安装ROS Robot Operating System 测试环境 虚拟机VMware Ubantu20 04 准备步骤 添加ROS软件源 sudo sh c echo deb ht
  • Ubuntu16.04安装ROS Kinetic详细步骤

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

    摘要 最近准备放弃用clion开发ROS使用更主流的vscode 整理一下在ubuntu18 04下的VSCode安装和ROS环境配置流程 安装 方法一 软件商店安装 个人还是推荐使用ubuntu软件下载vscode 简单不容易出错 方法二
  • ROS noetic tf demo错误处理及python版本切换

    文章目录 报错描述及解决 ubuntu20 04下python版本切换 报错描述及解决 ubuntu版本 20 04 ROS版本 noetic roslaunch turtle tf turtle tf demo launch 报错信息 t
  • 清华大学开源软件镜像站网址

    清华大学 TUNA 协会原名清华大学学生网管会 注册名清华大学学生网络与开源软件协会 是由清华大学网络技术和开源软件爱好者 技术宅组成的团体 现阶段向校内外提供开源软件镜像等服务 清华大学 TUNA 协会清华大学 TUNA 协会原名清华大学
  • Ubuntu16.04及ROS Kinetic环境下安装使用RealSense SR300

    Ubuntu16 04及ROS Kinetic环境下安装使用RealSense SR300 1 准备条件 需要安装Ubuntu16 04及ROS Kinetic 2 安装驱动 安装realsense的驱动流程可以根据Github上的官方推荐
  • 最快实现一个自己的扫地机

    作者 良知犹存 转载授权以及围观 欢迎关注微信公众号 羽林君 或者添加作者个人微信 become me 扫地机介绍 扫地机器人行业本质是技术驱动型行业 产品围绕导航系统的升级成为行业发展的主旋律 按功能划分 扫地机器人分为四大系统 即导航系
  • 服务数据的定义和使用

    1 自定义数据服务 在包下创建srv文件夹 在文件夹下创建Person srv 在Person srv下输入以下内容 代表数据类型 string name uint8 age uint8 sex uint8 unknown 0 uint8
  • (ros/qt报错) FATAL: ROS_MASTER_URI is not defined in the environment

    安装qt之后 明明打开roscore但是qt运行跟ros有关的节点时报错 FATAL 1450943695 306401842 ROS MASTER URI is not defined in the environment Either
  • roslaunch error: ERROR: cannot launch node of type

    今天在因为github上有个之前的包更新了 重新git clone后出现了一个问题 ERROR cannot launch node of type crazyflie demo controller py can t locate nod
  • 在 Python 3 中导入 Rosbag

    我正在尝试从 Python 3 读取 rosbag 文件 我安装了 ROS2 Eloquent Elusor 它应该支持 Python 3 当我跑步时 import rosbag bag rosbag Bag test bag 从Pytho
  • 我的代码的 Boost 更新问题

    我最近将 boost 更新到 1 59 并安装在 usr local 中 我的系统默认安装在 usr 并且是1 46 我使用的是ubuntu 12 04 我的代码库使用 ROS Hydro 机器人操作系统 我有一个相当大的代码库 在更新之前
  • 在 Ubuntu 18.10 上安装 ROS Melodic

    I can t是唯一对 Cosmic 与 Wayland 和 Melodic 的组合感兴趣的人 我会坦白说 我似乎已经在 XPS 13 9370 上成功管理了此操作 或者至少安装脚本 最终 成功完成 然而 有一个非常棘手的解决方法 无论结果
  • catkin_make 编译报错 Unable to find either executable ‘empy‘ or Python module ‘em‘...

    文章目录 写在前面 一 问题描述 二 解决方法 参考链接 写在前面 自己的测试环境 Ubuntu20 04 一 问题描述 自己安装完 anaconda 后 再次执行 catkin make 遇到如下问题 CMake Error at opt
  • 如何使用 PyQT5 连接和分离外部应用程序或对接外部应用程序?

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

    我一直在尝试在我的 Mac 上安装 ROS 并根据不同版本的 boost 使用不同的库解决了错误 然而 似乎有一个库甚至没有检测到 boost python 这是我得到的错误 CMake Error at usr local share c

随机推荐

  • 简历—项目经验范例

    xff08 看着比较专业的一份项目经验样板 xff09 原文链接https mp weixin qq com s rxGTTVKryvYoyst jsayLw 项目一 米乐淘网上商城 项目名称 xff1a 米乐淘网上商城 开发环境 xff1
  • 家庭网络和路由器

    1 什么是家庭网络 xff1f 一个典型的家庭网络由多个设备组成 xff0c 且几乎所有的家庭网络都有一个路由器作为它们的中心设备 路由器连接到 Internet 连接 xff0c 然后与本地网络上的一台或多台计算机共享该连接 家庭网络通常
  • ROS动态调整PID

    64 动态调整PID ROS提供了一个专门用于动态调整参数的功能包dynamic reconfigure 它实现了动态配置参数的机制 我们先来创建一个功能包 添加相应的一些依赖 cd catkin ws src catkin create
  • CubeMX配置串口的程序烧入板子不跑的解决方法

    对于cubeMX配置串口 xff0c keil5编译通过的 xff0c 自己确定无问题的程序 xff0c 以ISP烧入 xff0c 烧入板子后无法运行的情况 xff0c 我暂时的解决策略是按住reset键点击 开始编程 xff0c 点击后松
  • realsense D455+ROS+OpenCV4.5完成目标距离检测

    ROS OpenCV 1 环境配置 1 1 realsense SDK2 0安装 通过官网找到最新的SDK包并下载 Intel RealSense SDK 2 0 解压安装包 xff08 librealsense 2 47 0 tar gz
  • 什么是 PID 控制器:工作原理及其应用

    什么是 PID 控制器 xff1a 工作原理及其应用 什么是PID控制器 xff1f 历史PID控制器框图PID控制器的工作P 控制器I 控制器D 控制器 PID控制器的类型开 关控制比例控制标准型PID控制器实时 PID 控制器 调优方法
  • 什么是缓冲区

    1 什么是缓冲区 缓冲区又称为缓存 xff0c 它是内存空间的一部分 也就是说 xff0c 在内存空间中预留了一定的存储空间 xff0c 这些存储空间用来缓冲输入或输出的数据 xff0c 这部分预留的空间就叫做缓冲区 缓冲区根据其对应的是输
  • FreeRTOS系统解析-1、FreeRTOS系统简介

    1 系统简介 不同的的多任务系统有不同的侧重点 以工作站和桌面电脑为例 xff1a 早期的处理器非常昂贵 xff0c 多以那时的多任务用于实现在单处理器上支持多用户 这类系统中的调度算法侧重于让每个用户 公平共享 处理器时间 随着处理器的功
  • 目标检测 YOLOv5 常见的边框(bounding box )坐标矩形框表示方法

    将txt格式的真值框 xff08 Ground Truth xff09 在原图上显示 具体过程坎坷 xff0c 以下博主提供了思路 xff0c 学习了yolo格式label的归一化和坐标求解 xff01 1 https blog csdn
  • momenta实习面经

    走的火箭计划内推 xff0c 链接https mp weixin qq com s zllOky0biV9zn1Qfbg4XZg 线上先做了一套题 xff0c 写的2小时但是打开界面发现倒计时有10小时 xff0c 于是悠哉悠哉慢慢做结果2
  • 树莓派4B + Ubuntu18.04 + RealSense SDK

    有段时间没写博客了 xff0c 今天心血来潮 xff0c 记录一下 我自己的配置在标题写的很清楚 xff0c 用的是ros1 安装步骤我是建议 xff1a ubuntu gt realsense SDK gt ros gt ros wrap
  • ubuntu18.04安装ROS Melodic(最详细配置)

    前期准备 61 61 设置软件源 xff1a 国外的 xff1a sudo sh c 39 echo 34 deb http packages ros org ros ubuntu lsb release sc main 34 gt etc
  • 3步搞定CSDN中代码背景颜色的修改

    1 进入内容管理 xff0c 点击最下方的博客设置 2 修改
  • 2019电赛--无人机题目OpenMV总结

    此文章在我的博客链接 xff1a https sublimerui top archives d508d500 html NOTES xff1a 上一篇相关博文 xff0c 准备阶段OpenMV学习笔记链接 xff1a https blog
  • 大疆精灵4RTK自定义三维航线规划(开源)

    大疆精灵4rtk是无人机摄影测量行业的一款里程碑式的产品 xff0c 极大地拓展了无人机摄影测量的应用领域 然而 xff0c 大疆官方只提供了有限的航线规划功能 xff0c 如带状航线 井字航线 xff0c 5向飞行 xff0c 仿地飞行等
  • docker拉取RabbitMq镜像并安装

    RabbitMQ安装入门篇 文章目录 前言一 Docker拉取RabbitMq镜像二 docker下启动RabbitMq容器三 查看RabbitMq是否启动总结 前言 这篇文章为了方便初学者入门 xff0c 在linux环境下用docker
  • 核间通信--Mailbox原理及内核驱动框架

    https blog csdn net weixin 34007291 article details 86026346 核间通信的主要目标是 xff1a 充分利用硬件提供的机制 xff0c 实现高效的CORE间通信 xff1b 给需要CO
  • mac下Wireshark报错: you don‘t have permission to capture on that device

    1 首先 首先 cd dev ls la grep bp 看见用户组 crw 1 root wheel 23 0 6 18 16 04 bpf0 crw 1 root wheel 23 1 6 20 04 20 bpf1 crw 1 roo
  • 大端模式、小端模式、高字节序、低字节序、MSB、LSB

    https blog 51cto com u 14114084 4930969 text 61 E9 AB 98 E4 BD 8D E5 85 88 E8 A1 8C E5 8D B3 E5 9C A8 E4 BC A0 E8 BE 93
  • PX4+ROS+gazebo+mavros,Ubuntu18.04搭建SITL仿真环境

    前言 介绍 SITL Software in the Loop 软件在环仿真平台 xff0c 与之对应的有 HITL 硬件在环仿真 本文目的是搭建一个无人机软件仿真环境 xff0c 使用PX4开源飞控 xff0c gazebo作为仿真器 x