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

前言

介绍

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

开源飞控

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

Ardupilot相关地址:

仿真器

  • 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篇)

  • 7
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是Ubuntu 18.04上安装ROS(Robot Operating System)GazeboMAVROSPX4的教程: 1. 首先,确保你的Ubuntu 18.04系统已经更新到最新版本。打开终端并运行以下命令来更新系统: ``` sudo apt update sudo apt upgrade ``` 2. 安装必要的依赖项。在终端中运行以下命令: ``` sudo apt install build-essential cmake curl git sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool python-catkin-tools sudo rosdep init rosdep update ``` 3. 创建并初始化一个catkin工作空间。在终端中运行以下命令: ``` mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin init ``` 4. 下载PX4代码和模拟器。在终端中运行以下命令: ``` cd ~/catkin_ws/src git clone https://github.com/PX4/Firmware.git --recursive ``` 5. 安装PX4依赖项。在终端中运行以下命令: ``` cd ~/catkin_ws/src/Firmware ./Tools/setup/ubuntu.sh --no-nuttx ``` 6. 编译PX4。在终端中运行以下命令: ``` cd ~/catkin_ws catkin build px4 -j4 ``` 7. 安装Gazebo和相关插件。在终端中运行以下命令: ``` sudo apt install gazebo9 libgazebo9-dev sudo apt install ros-melodic-gazebo-ros-pkgs ros-melodic-gazebo-ros-control ``` 8. 安装Mavros。在终端中运行以下命令: ``` sudo apt install ros-melodic-mavros ros-melodic-mavros-extras ``` 9. 配置序列设备。在终端中运行以下命令: ``` wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh chmod +x install_geographiclib_datasets.sh sudo ./install_geographiclib_datasets.sh ``` 10. 测试安装是否成功。在终端中运行以下命令,启动Gazebo仿真环境Mavros节点: ``` roslaunch px4 mavros_posix_sitl.launch ``` 希望以上教程对你有所帮助!如果有任何问题,请在评论中提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

無垠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值