无人机仿真之搭建仿真平台-SITL、gazebo、ROS

2023-05-16

文章目录

  • 无人机仿真之仿真平台搭建
      • 前言
      • ardupilot-SITL---APM飞控
        • 安装
        • 启动仿真
          • 简单仿真
          • 结合gazebo仿真软件的3D环境仿真
            • 环境安装
            • 示例
          • 多无人机仿真
        • 终端操作无人机的部分指令
      • 安装PX4框架--PX4飞控
        • 仿真平台搭建完成后,可以试着跑一下
          • 单个无人机模拟
          • 使用JMAVSim进行多车辆仿真
          • 带凉亭的多车模拟-需要安装ROS
            • 给无人机添加摄像头-使用iris_fpv_cam模型-参考
      • 安装ROS
      • 安装gazebo
      • 修改参数-出现GPS故障时可参考

无人机仿真之仿真平台搭建

前言

  • 马上就要毕业了,看着一无是处的自己,老实说很沮丧,祈祷有个好去处吧???。
  • 很早之前看到了宾夕法尼亚大学的多无人机协同作业视频,很赶兴趣,就想做一做无人机相关的实验,很多原因综合起来就没能开展(其实就是没钱买无人机?),现在有一些好东西,让我这个穷逼也能玩玩无人机相关的一些实验,就是SITL和gazebo以及ROS,内容很多,具体细节参考?。
  • 主要的开源飞控有两个,APM和PX4,下面介绍两种飞控的仿真平台的安装步骤。安装出现错误很正常,多查查资料错误就解决了。

ardupilot-SITL—APM飞控

安装

  • 我是在Ubuntu16.04上安装的,可以参考安步骤参考链接,也可以看下面的安装步骤,做了一下简单的翻译。
  • 其他平台(Windows和OSX)的安装步骤在上面的网址中也可以找到
  • 首先下载项目源码(项目是开源的,前面讲到过)

git clone https://github.com/ArduPilot/ardupilot
cd ardupilot
git submodule update --init --recursive

  • 最后一步需要的时间较长,耐心等待即可
  • 然后是安装需要的依赖

Tools/environment_install/install-prereqs-ubuntu.sh -y
. ~/.profile

  • 到这里无人机的仿真就可以做到了,下一步安装3D环境的仿真软件gazebo
  • 然后就可以利用这个平台向真实的飞控写入需要的固件,当然淘宝买飞控的时候可能店家就会帮助写好飞控。当自己需要修改飞控固件的时候可以参考这个链接
  • 不过这里做仿真还用不到向飞控写入固件,等以后买得起无人机再说吧

启动仿真

简单仿真
  • 启动仿真的方式为执行一个Python脚本,加入参数,具体有哪些参数可在脚本后加-h参数获取
  • 例如做一个简单的四旋翼无人机的仿真

cd ~/ardupilot/ArduCopter
sim_vehicle.py --map --console

  • 这时候就会看到启动了一个控制终端,一个地图界面,类似下图这样,如果报错找不到文件,是装依赖环境的时候出错了,一般执行脚本安装依赖不会出错,如果一步一步安装依赖可能会出现这种情况,这时候将这个文件的目录加入到环境变量里即可
    在这里插入图片描述
结合gazebo仿真软件的3D环境仿真
环境安装
  • 也可以结合一些其他的仿真平台实现更好的视觉效果,比如连接gazebo仿真器实现3D环境下的无人机仿真
  • 当然,前提是安装好了gazebo仿真软件,gazebo的安装步骤在下文中也有,可以参考
  • 然后是安装插件,项目开发文档上讲的插件安装方式在物理Ubuntu主机上可能不会报错,我使用Ubuntu虚拟机安装总会报错,最后关闭了虚拟机的硬件加速后安装成功,相关命令如下

echo “export SVGA_VGPU10=0” >> ~/.bashrc 关闭硬件加速
source ~/.bashrc 执行以下终端配置文件,其实最好重启终端

  • 然后就可以正常安装gazebo插件了(PS 如果使用物理主机,可以忽略上面步骤直接进行安装,如果出错再执行上面的步骤)
  • gazebo现在可用的有7、8、9三个版本,推荐使用7或8版本

apt-get install gazebo7 以7为例,安装8的话可以修改版本为8
sudo apt-get install libgazebo7-dev 这是必须安装的,根据自己安装的版本修改版本数字

  • 然后是安装插件

git clone https://github.com/SwiftGust/ardupilot_gazebo
cd ardupilot_gazebo
mkdir build
cd build
cmake …
make -j4
sudo make install

  • 安装完成后,将gazebo的相关文件加入环境变量中(后面会用到模型和环境文件)

sudo gedit ~/.bashrc

  • 打开终端配置文件后,将下面内容添加到文件末尾

source /usr/share/gazebo/setup.sh
export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models:${GAZEBO_MODEL_PATH}
export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models_gazebo:${GAZEBO_MODEL_PATH}
export GAZEBO_RESOURCE_PATH=~/ardupilot_gazebo/worlds:${GAZEBO_RESOURCE_PATH}

  • 到这里gazebo和插件就安装完成了,下面给出几个示例
示例

1.车辆仿真

On 1st Terminal(Launch Ardupilot SITL)
sim_vehicle.py -v APMrover2 -f gazebo-rover -m --mav10 --map --console -I1
On 2nd Termianal(Launch Gazebo with Rover, Retrieved from Husky Model)
gazebo --verbose rover_ardupilot.world

  1. 四旋翼无人机仿真

On 1st Terminal(Launch Ardupilot SITL)
sim_vehicle.py -v ArduCopter -f gazebo-iris -m --mav10 --map --console -I0
On 2nd Terminal(Launch Gazebo with demo 3DR Iris model)
gazebo --verbose iris_ardupilot.world

  1. 飞机仿真

On 1st Terminal(Launch Ardupilot SITL)
sim_vehicle.py -v ArduPlane -f gazebo-zephyr -m --mav10 --map --console -I0
On 2nd Terminal(Launch Gazebo with demo Zephyr flying wing model)
gazebo --verbose zephyr_ardupilot_demo.world

  • 这是也可以使用地面站软件连接仿真平台,具体地面站软件很多,大家自行学习使用
多无人机仿真
  • 多无人机仿真需要启动三次仿真脚本sim_vehicle.py,修改部分参数,如下:

-I 0 has FDM in/out ports of 9002/9003 / GCS connection UDP:14550

-I 1 has FDM in/out ports of 9012/9013 / GCS connection UDP:14560

-I 2 has FDM in/out ports of 9022/9023 / GCS connection UDP:14570

  • 并且需要修改gazebo加载的word(word简单来说就是一个场景,具体是什么含义可以参考gazebo的博文)
  • 还有一个提示是这样说的,因为这部分我没有运行成功(其实当在gazebo中起飞无人机几秒后就会出现GPS故障而坠落,出错原因还未找到,博文最后介绍了禁用GPS的方法,没成功)

Additional Note for GCS Connection
You will also need to edit ArduPilot Parameter SYSID_THISMAV to be unique from one another for the GCS connection

  • 这里有一个大佬做多无人机仿真实验的视频,可以看一下视频(需要科学上网-FQ)

终端操作无人机的部分指令

  • 在终端窗口可以输入指令控制无人机的飞行,如下:

mode guided #启动引导模式,这个模式下可以输入起飞指令
arm throttle #无人机自检,只有通过自检后才可以执行起飞指令
takeoff 40 #起飞到40米处


mode circle # 启动转圈模式,在无人机飞到空中后才能切换到此模式
param set circle_radius 2000 #设置转圈半径为2000厘米


wp load …\Tools\autotest\CMAC-circuit.txt #载入任务,此目录下还有其他任务文件,任务文件要和地图匹配(基于经纬度)
mode auto #模式切换到自动模式
wp set 2 #去掉第二个任务点(任务中包含了多个有序位置点)
wp loop #设置任务点循环,即执行完最后一个任务点后重新开始这个任务


mode #查看有哪些模式
param show fence* # 显示以fence开头的参数有哪些
param set fence_enable 1 # 设置fence_enable参数的值为1


mode land #设置到land模式,即无人机落地,落到当前位置的地面
mode rtl # 设置到rtl模式,即无人机返回到起飞的位置

  • 当无人机处于guided模式下,在地图上点击右键可以出来菜单,在菜单里可以进行一些操作(设置飞到位置,高度,也可以绘制任务路线)
    在这里插入图片描述

安装PX4框架–PX4飞控

  • 首先是安装依赖,可以参考 链接,也可以看下面的步骤
  • 第一步,使用户成为“拨出”组的成员:

sudo usermod -a -G dialout $USER

  • 注销并再次登录(仅在新登录后进行更改)
  • 然后按下面的步骤进行
  1. 下载ubuntu_sim.sh。
    source ubuntu_sim.sh 在终端中执行脚本
  • 这个脚本会安装带有gazebo的PX4环境
  • 最好可以翻墙安装,一些文件不翻墙下载会非常非常
  • 安装完之后下载PX4项目源码

cd ~/src
git clone https://github.com/PX4/Firmware.git
cd Firmware
git submodule update --init --recursive 加载更新子模块,必需的操作

仿真平台搭建完成后,可以试着跑一下

单个无人机模拟
  • 参考jMAVSim模拟
  • 参考gazebo模拟
使用JMAVSim进行多车辆仿真
  • 参考链接
  • 使用jMAVSim进行多车辆仿真,它易于设置,可用于测试您的车辆是否可以起飞,飞行,降落并适应各种故障条件(例如GPS故障)。个人理解这只是用来测试地面站平台是否支持多无人机。
  • 这是模拟运行PX4的多辆车辆的最简单方法。它适用于在QGroundControl(或Dronecode SDK等)中测试多车辆支持。 带有Gazebo的多车模拟应该用于许多车辆的群体模拟,或用于测试仅由Gazebo支持的计算机视觉等功能。
带凉亭的多车模拟-需要安装ROS
  • 参考链接
  • mode文件的路径为(提示自己,可忽略)

/src/Firmware/Tools/sitl_gazebo/models

给无人机添加摄像头-使用iris_fpv_cam模型-参考
  • 修改模型文件
  • 因为默认构建模型用的是模型文件-.xacro结尾的文件
  • 首先选择使用sdf文件进行模型构建

multi_uav_mavros_sitl.launch > multi_uav_mavros_sitl_sdf.launch

  • 然后将launch文件中的vehicle参数修改为想要使用的无人机模型,无人机的所有模型的sdf文件在下面目录中

src/Firmware/Tools/sitl_gazebo/models

  • 运行roslaunch,通常会报错—px4无法找到iris_fpv_cam模型
  • 排错可参考这个链接,关键看下面的图片
    在这里插入图片描述

安装ROS

  • 参考 链接
  • 这里安装ros最好安装全版本的,如果之前就安装了gazebo,先卸载掉,安装ROS自带的gazebo,网上有人说ROS自带的gazebo有错误,暂时使用正常,没发现有什么问题,读者发现了欢迎评论区交流

安装gazebo

  • Gazebo是一款3D动态模拟器,能够在复杂的室内和室外环境中准确有效地模拟机器人群。与游戏引擎提供高保真度的视觉模拟类似,Gazebo提供高保真度的物理模拟,其提供一整套传感器模型,以及对用户和程序非常友好的交互方式。
  • 如果已经安装了完整版的ROS平台,就已经安装gazebo了
  • 如果没有也可以直接使用命令安装

apt-get install gazebo8
apt-get install gazebo8-dev

  • 进行安装
  • 上面的安装完成后,将gazebo的相关文件加入环境变量中(后面会用到模型和环境文件)

sudo gedit ~/.bashrc

  • 打开终端配置文件后,将下面内容添加到文件末尾

source /usr/share/gazebo/setup.sh
export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models:${GAZEBO_MODEL_PATH}
export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models_gazebo:${GAZEBO_MODEL_PATH}
export GAZEBO_RESOURCE_PATH=~/ardupilot_gazebo/worlds:${GAZEBO_RESOURCE_PATH}

修改参数-出现GPS故障时可参考

  • APM下GPS出现故障时,可参考以下操作
  • 进行以下设置,更改飞控使用的卡曼滤波器:

使用EKF3(最新版本的卡曼滤波)
AHRS_EKF_TYPE = 3
停止EKF2
EK2_ENABLE = 0
使能EKF3
EK3_ENABLE = 1
*(地面站操作) 完成以上设置后,点击”Write Params“写入参数,写入成功后重启飞控(不然EKF3的相关参数不会出现)。

  • 重启后,再进行以下设置

禁用GPS
GPS_TYPE = 0
#使用光流传感器作为定位源
EK3_GPS_TYPE = 3
使用超声波传感器作为高度源
EK3_ALT_SOURCE = 1

  • 在APM平台下禁用GPS在引导模式下无法通过自检。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无人机仿真之搭建仿真平台-SITL、gazebo、ROS 的相关文章

  • Webots小车与Gampping建图仿真与ORB3算法实践

    此篇博客转自本作者在古月居的博客 https www guyuehome com 34537 前言 在研一的时候 由于XXX项目的需要 其中一项就是需要测试Gmapping建图 自然也要求使用ROS系统 由于之前经常在webots中进行仿真
  • Moveit简单使用,在rviz中实现手动拖动-记录

    GAZEBO下载 一 首先需要准备模型文件 可以是自己的solidworks用URDF工具导出的 也可以是在网上下载的URDF文件包 1 我用的是solidworks手动导出的模型 b站博主导出SOLIDWORKS模型至URDF这个教程比较
  • ROS turtlebot_follower :让机器人跟随我们移动

    ROS turtlebot follower 学习 首先在catkin ws src目录下载源码 地址 https github com turtlebot turtlebot apps git 了解代码见注释 其中有些地方我也不是很明白
  • ROS 笔记(01)— Ubuntu 20.04 ROS 环境搭建

    ROS 官网 https www ros org ROS 中文官网 http wiki ros org cn 1 系统和 ROS 版本 不同的 ROS 版本所需的 ubuntu 版本不同 每一版 ROS 都有其对应版本的 Ubuntu 切记
  • 在Ubuntu 14.04.2 LTS上安装Qt

    Qt是一个跨平台的应用程序框架 广泛用于开发具有GUI界面的应用软件以及命令行工具 几乎所有操作系统都可以使用Qt 如Windows Mac OS X Android等 用于开发Qt应用程序的主要编程语言是C 但是可以使用诸如Python
  • ROS 第四天 ROS中的关键组件

    1 Launch文件 通过XML文件实现多节点的配置和启动 可自动启动ROS Master
  • Ubuntu安装ROS

    原文链接 https blog csdn net qq 44830040 article details 106049992 这也是我在ubuntu里面安装ROS的第N次 以前每次安装过程都忘记总结了 导致每次安装ROS都浪费了很多的时间用
  • 服务数据的定义和使用

    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
  • 进入 docker 容器,exec 丢失 PATH 环境变量

    这是我的 Dockerfile FROM ros kinetic ros core xenial CMD bash 如果我跑docker build t ros docker run it ros 然后从容器内echo PATH 我去拿 o
  • 无法加载 LZ4 支持的 Python 扩展。 LZ4 压缩将不可用

    我是 ROS 新手 我刚刚打开终端并输入roscore和另一个终端并键入rostopic node我收到这个错误 上面写着 无法加载 LZ4 支持的 Python 扩展 LZ4 压缩将不可用 我搜索并去了https pypi org pro
  • 将 CUDA 添加到 ROS 包

    我想在 ros 包中使用 cuda 有人给我一个简单的例子吗 我尝试使用 cuda 函数构建一个静态库并将该库添加到我的包中 但总是出现链接错误 未定义的引用 cuda 我已经构建了一个可执行文件而不是库并且它可以工作 请帮忙 我自己找到了
  • 如何将曲面拟合到一组数据点并获得曲面方程

    乌班图 ROS 思维 Python程序 我正在尝试获取适合点云数据中的一组点的表面方程 数据来自激光雷达扫描仪 我在 rviz 中选择整个扫描的一部分 并获得该选择的坐标选定表面的图片 所选曲面并不总是如此线性 因为材质中可能存在轻微的曲线
  • 我的代码的 Boost 更新问题

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

    我已经安装了协议缓冲区 https developers google com protocol buffers 本地 ROS包的目录结构如下 CMakeLists txt package xml include addressbook p
  • catkin_make后找不到ROS包

    我根据 ROS 的 Wiki 页面创建了一个 ROS 工作区 我还使用创建了一个包catkin create pkg在我刚刚创建的工作区下 然后 按照 ROS Wiki 中的步骤使用以下命令构建包catkin make 构建包后 我插入命令
  • ROS安装错误(Ubuntu 16.04中的ROS Kinetic)

    中列出的步骤顺序http wiki ros org kinetic Installat 已被关注 尝试在Ubuntu 16 04中安装ROSkinetic 输入以下命令时出错 sudo apt get install ros kinetic
  • 如何使用一个凉亭同时创建两个地图?

    如下图所示 现在我的gazebo正在运行2个slam gmapping包 首先是 turtlebot slam gmapping 发布到 map 主题 第二个是 slam gmapping 发布到与第一个相同的 map 主题 我想创建一个新
  • 安装 ROS 时 Cmake 未检测到 boost-python

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

    最近听到这个词元操作系统当我学习ros时 你能帮我区分一下吗操作系统 and 元操作系统 ROS 是什么和不是什么最好的解释是这张纸 http www robotics stanford edu ang papers icraoss09 R

随机推荐