【rotors】多旋翼无人机仿真(一)——搭建rotors仿真环境

2023-05-16

【rotors】多旋翼无人机仿真(一)——搭建rotors仿真环境
【rotors】多旋翼无人机仿真(二)——设置飞行轨迹
【rotors】多旋翼无人机仿真(三)——SE3控制
【rotors】多旋翼无人机仿真(四)——参数补偿和PID控制
【rotors】多旋翼无人机仿真(五)——多无人机仿真

本贴内容参考两位博主的内容:
月照银海似蛟
Reed Liao

1、前言

无人机仿真主要分为两类:硬件在环仿真(HITL)和软件在环仿真(SITL全称Software in the loop)。

无人机软件在环仿真是指完全用计算机来模拟出无人机飞行时的状态,而硬件在环仿真是指计算机连接飞控板来测试飞控软件是否可以流畅运行。一般来说硬件在环仿真若没有加上真实的转台进行测试的话,其与软件在环仿真没有很大的区别。

在无须解决在研发过程中的硬件问题带来的麻烦,并且可以直观的调试代码,搭建一套无人机仿真系统,对于研发来说好处是数不剩数的。

2、rotors介绍

RotorS 是ETH(苏黎世联邦理工大学)研究团队开发的一个ROS包,GITHUB地址
提供了几种多旋翼仿真模型,例如

  • List item
  • AscTec
  • Hummingbird
  • AscTec Pelican
  • AscTec Firefly

但是仿真系统不限于使用这几种模型

AscTec 是 德国Ascending Technologies公司的缩写。

是很早的无人机了,实物张下面这个样子:
在这里插入图片描述
仿真系统中包含很多种仿真传感器,都可以安装在无人机上,例如:

  • IMU
  • 里程计
  • 视觉惯导相机

功能包中包含了两种控制器,后面会详细介绍控制器的实现

3、rotors安装

rotors官网提供的配置教程是Ubuntu 16.04 with ROS Kinetic、Ubuntu 14.04 with ROS Indigo , 这里我的配置是Ubuntu 18.04 with ROS melodic
安装前已经安装好了ROS melodic和gazebo11(melodic默认安装的是gazebo9,但9不太稳定,升级为11了)

(1)安装依赖安装包

# 如果是其他ros版本就把melodic改为自己ros版本名字
sudo apt-get install ros-melodic-joy ros-melodic-octomap-ros python-wstool python-catkin-tools protobuf-compiler
sudo apt-get install libgeographic-dev ros-melodic-geographic-msgs 

(2)创建文件夹并初始化工作空间

mkdir -p ~/UAV_rotors/src
cd ~/UAV_rotors/src
catkin_init_workspace

(3)git下载rotors源码

cd ~/UAV_rotors/src
 git clone git@github.com:ethz-asl/rotors_simulator.git
 git clone git@github.com:ethz-asl/mav_comm.git
 git clone git@github.com:ethz-asl/glog_catkin.git
 git clone git@github.com:catkin/catkin_simple.git

注意这里git需要提前登录github账号并绑定自己电脑ssh,否则不能正常git,绑定方法参考这个

(4)编译源码

cd ~/UAV_rotors
catkin init  # 只需运行一次,后续如果修改源码重新编译不需要再执行
catkin build
# 在.bashrc文件中添加环境变量
source ~/UAV_rotors/devel/setup.bash

编译一切正常会输出如下结果:
在这里插入图片描述
但不出意外的话,大家或多或少会报一些错误,下面是我编译过程中的遇到的错误(编译过程中优先解决编译错误地方,编译警告的先放着):
问题:
在这里插入图片描述
解决:
安装编译glog库,安装方法如下:

# 安装gflags
git clone https://github.com/gflags/gflags.git
cd gflags
mkdir build && cd build
cmake .. -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC ..
make -j4
sudo make install

# 安装glog
git clone https://github.com/google/glog
cd glog
mkdir build && cd build
cmake -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_SHARED_LIBS=ON ..
make -j4
sudo make install

如果编译安装过程中报错说cmake版本太低需要升级版本,可参考这个

(5)运行rotors
rotors中有许多种机型,包括固定翼、多旋翼等,这里以四旋翼为例,进行仿真,在终端运行下面命令:

roslaunch rotors_gazebo mav_hovering_example.launch mav_name:=firefly world_name:=basic

执行之后,gazebo会自动启动,出现下面的画面,则表示大功告成:
在这里插入图片描述

4、launch文件说明

~/UAV_rotors/src/rotors_simulator/rotors_gazebo/launch文件夹中有许多启动程序的launch文件,使用较多的有两个:mav_hovering_example.launchmav_hovering_example_with_vi_sensor.launch,后者比前者多启动了深度摄像头传感器。

我们来看看mav_hovering_example_with_vi_sensor.launch

<!-- 启动无人机仿真,带深度摄像头传感器 -->
<!-- 参数: -->
<!-- mav_name:无人机类型,可以在rotors_description/urdf中查看型号-->
<!--           六翼无人机:firefly、neo11、neo9-->
<!--           四翼无人机:pelican、ardrone、asymmetric_quadrotor、hummingbird、iris-->
<!-- world_name:仿真环境,可选择worlds文件夹下的文件-->
<launch>
  <arg name="mav_name" default="firefly"/>
  <arg name="world_name" default="basic"/>
  <arg name="enable_logging" default="false" />
  <arg name="enable_ground_truth" default="true" />
  <arg name="log_file" default="$(arg mav_name)" />

  <env name="GAZEBO_MODEL_PATH" value="${GAZEBO_MODEL_PATH}:$(find rotors_gazebo)/models"/>
  <env name="GAZEBO_RESOURCE_PATH" value="${GAZEBO_RESOURCE_PATH}:$(find rotors_gazebo)/models"/>
  <!-- 启动gazebo -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find rotors_gazebo)/worlds/$(arg world_name).world" />
    <!-- <arg name="debug" value="true"/> -->
    <arg name="paused" value="true"/>
    <!-- <arg name="gui" value="false"/> -->
    <!-- <arg name="verbose" value="true"/> -->
  </include>

  <group ns="$(arg mav_name)">
    <!-- 导入无人机模型 -->
    <include file="$(find rotors_gazebo)/launch/spawn_mav.launch">
      <arg name="mav_name" value="$(arg mav_name)" />
      <arg name="model" value="$(find rotors_description)/urdf/mav_with_vi_sensor.gazebo" />
      <arg name="enable_logging" value="$(arg enable_logging)" />
      <arg name="enable_ground_truth" value="$(arg enable_ground_truth)" />
      <arg name="log_file" value="$(arg log_file)"/>
    </include>
    <!-- 启动无人机控制节点 -->
    <node name="lee_position_controller_node" pkg="rotors_control" type="lee_position_controller_node" output="screen">
      <rosparam command="load" file="$(find rotors_gazebo)/resource/lee_controller_$(arg mav_name).yaml" />
      <rosparam command="load" file="$(find rotors_gazebo)/resource/$(arg mav_name).yaml" />
      <remap from="odometry" to="odometry_sensor1/odometry" />
    </node>
    <!-- 启动无人机轨迹控制命令节点 -->
    <node name="hovering_example" pkg="rotors_gazebo" type="hovering_example" output="screen"/>
    <!-- 启动仿真关节节点 -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
  </group>
</launch>

launch文件中有两个比较重要的参数:一个是mav_name 无人机型号,这个可以在rotors_description/urdf文件夹下查看有那些无人机型号的建模文件;一个是world_name 仿真环境名字,这个可以在rotors_gazebo/worlds文件夹中查看,需要注意的是如果选择比较复杂的world_name 如 outdoor,仿真环境会加载gazebo官方的一些模型,如果你没有提前下载好这些模型,会导致gazebo打不开,因为此时gazebo正在联网下载这些模型,需要自己提前把官方的全部模型下载到gazebo中。

此外launch还加载了两个节点程序:lee_position_controller_node 、 hovering_example,前者就是无人机的控制节点,后者是给无人机发送轨迹点节点 , 后面会解释说明这两个节点。

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

【rotors】多旋翼无人机仿真(一)——搭建rotors仿真环境 的相关文章

  • c++的lvalue和rvalue以及引用

    目录 xff08 0 xff09 lvalue和rvalue xff08 1 xff09 左值引用 xff08 2 xff09 右值引用 xff08 3 xff09 move xff08 xff09 xff08 0 xff09 lvalue
  • c++STL(标准模板库)

    C 43 43 STL xff08 标准模板库 xff09 是一套功能强大的 C 43 43 模板类 xff0c 提供了通用的模板类和函数 xff0c 这些模板类和函数可以实现多种流行和常用的算法和数据结构 xff0c 如向量 链表 队列
  • c++标准库

    C 43 43 标准库可以分为两部分 xff1a 标准函数库 xff1a 这个库是由通用的 独立的 不属于任何类的函数组成的 函数库继承自 C 语言 面向对象类库 xff1a 这个库是类及其相关函数的集合 C 43 43 标准库包含了所有的
  • c++11新特性

    姊妹篇 xff1a 请参考这篇博客 1 关键字及新语法 1 1 auto关键字及用法 1 2 nullptr关键字及用法 1 3 for循环语法 2 STL容器 2 1 std array 2 2 std forward list 2 3
  • ps笔记

    xff08 1 xff09 图层在以下情况下 xff0c 不可编辑 1 隐藏的图层 2 未栅格化的图层 3 锁定抄的图层百 4 智能图像图层 xff08 属于2 xff09 xff08 2 xff09 什么是栅格化 栅格化图层的简单意思是
  • therecipe / qt Windows版本安装

    先记录环境变量 四件套 这篇文章很有作用 xff1a https qiita com manymanyuni items a28acb545200f1f45c79 https qiita com 我使用的步骤和命令 注意 GOPATH和GO
  • Python常用小技巧,提高刷题效率(适用于蓝桥杯python组)

    1 掌握python标准库及小技巧 python课程学习到面向对象 xff0c 就可以刷题参加算法比赛了对于蓝桥杯不支持第三方库 xff0c 但学会python标准库 xff0c 将事半功倍 xff1b 2 常用的列表函数 list1 ap
  • 专业英语的一些单词

    convolutional neural network cnn卷积神经网络 support vector machine svm 支持向量机 append 附加 xff0c 增补 tuple 元组 dictionary 字典 direct
  • 导数

  • Octave工具箱的安装和装载

    网页搜索octave forge xff0c 可以下载离线包 xff0c 并离线安装 先cd到离线包所在目录 再执行以下 xff1a pkg install forge package name 一定要是带版本号的全名 但是推荐直接使用包管
  • Julia pro安装和初步使用

    Julia Pro 相当于Julia全家桶 xff0c 可以把它当作Python的Anaconda xff08 1 xff09 下载地址 xff08 国外 xff09 https juliacomputing com products ju
  • 配置虚拟机

    方式一 xff1a 用AS自带的虚拟机 此时把system images放在sdk目录内 但是注意 xff0c amd平台不支持intel虚拟化 xff0c 所以不能用 方式二 xff1a 使用genymotion插件 任何平台都推荐使用G
  • Genymotion虚拟软件的配置

    一 genymotion软件本身 xff08 1 xff09 点击安装 xff08 2 xff09 登录账户 xff08 3 xff09 设置关联virtualbox的安装路径 xff08 4 xff09 在ADB下选择使用genymoti
  • Vim编辑器配置

    推荐使用space Vim GitHub xff1a https github com SpaceVim SpaceVim 官网 xff1a https spacevim org cn 安装教程 xff1a https github com
  • 修改win10 cmd和shell的编码方式

    936对应GBK 65001对应utf 8 power shell 可以用Powershell的配置文件 xff08 PROFILE xff09 来实现 PROFILE默认文件不存在 xff0c 需要创建 New Item PROFILE
  • wsl2的hyper-v的开启与关闭

    大家都知道 xff0c win10在开启自家虚拟机的时候 xff0c VM和virtualbox就用不了了 xff01 开启hyper v xff1a xff08 1 xff09 打开控制面板 xff08 2 xff09 选择程序 xff0
  • virtualbox和vmware最新版已经支持win10的hyper了

    vmware支持hyper的版本 xff1a https blogs vmware com workstation 2020 01 vmware workstation tech preview 20h1 html virtualbox支持
  • Java读取已打包好的Jar包中的文件

    一般我们是通过下面这种代码获取文件在项目中的的绝对路径 Xxx class getResource 34 META INF xxx yaml 34 但是当模块打包成jar后 xff0c 我们获取到的路径可能会是下面这种 xff0c 这种并不
  • linux更换镜像的一般步骤

    xff08 1 xff09 根据使用的操作系统 xff0c 到清华镜像站上找到该系统的镜像源的连接 xff08 2 xff09 操作步骤 对系统给的镜像源进行备份 xff0c 以防出问题 sudo cp etc apt sources li
  • UEFI模式下Win10和Ubuntu18.04双系统安装总结

    现在都2020年了 市面上根本就买不到传统模式开机的笔记本了 所以我以我的经验总结一下uefi主板如何安装win10和Ubuntu操作系统 其他Linux也是同理 这篇教程是在安装了win10的基础上再安装的Linux 若不符合你的情况 请

随机推荐

  • gun-grub引导选择页面的美化

    不出意外地 xff0c 安装好Ubuntu和Windows的双系统后应该是由Ubuntu的grub引导启动的 也就是那个及其丑陋的页面 逃 优化设置 grub引导的设置文件是 etc default grub xff0c 对其进行修改可以得
  • 双系统完整卸载Ubuntu+Windows磁盘分区安全删除Ubuntu的EFI分区和其他分区

    就参考这篇文章吧 https blog csdn net wq6ylg08 article details 103223620 大致上分为三个步骤 一 把开机引导给删除 可以使用easyUEFI或者BOOTICE 删除你准备卸载的系统的引导
  • legacy传统模式启动下的win10和Ubuntu18.04双系统安装

    前提是你的电脑支持传统模式开机 比如现在的一些笔记本已经不支持传统模式了 强行会找不到引导 和这篇文章大致相同 注意以下不同点 1 在为linux分区的时候 legacy模式下的启动引导分区需要这样设置 空闲 处 xff0c 继续点 43
  • 使用rEFInd来引导多个操作系统

    以下讲解仅适用于EFI的启动模式 且注意一定要关闭secure boot 在同一个电脑上安装了N个操作系统 在开机时 引导肯定会非常的混乱 一种方式是可以使用windows boot manager来选择要启动的操作系统 但是缺点是每次开机
  • rEFInd去掉不必要的启动项

    refind是uefi环境下使用的引导器 如果一台设备上有N个系统 xff0c 那么有必要了解一下refind如 何来引导 但因为默认的引导效果是非常杂乱的 xff0c 我们需要做一些工作 一 安装refind 参考这篇文章 https b
  • pacman的常用命令

    S 指令 安装 sudo pacman S 安装软件 sudo pacman Sy 获取最新打软件情况 xff0c 如果已经是最新了 xff0c 直接会提示已经更新到最新了 sudo pacman Syy 强行更新你的应用的软件库 xff0
  • pacman的包管理命令

    S 指令 安装 sudo pacman S 安装软件 sudo pacman Sy 获取软件源的最新情况 xff0c 如果已经是最新了 xff0c 会提示已经更新到最新了 sudo pacman Syy 重新同步应用的软件源 sudo pa
  • vscode的不同设置的区别

    转载链接 https www jb51 net article 186000 htm
  • Unable to register with master node [http://localhost:11311/]: master may not be running yet.

    树莓派和PC端都安装了ROS xff0c 然后将树莓派ROS当主机运行roscore xff0c 为了让两台机子的ROS可以通讯 xff0c 需要在PC端的 bashrc文件中配置如下环境变量 xff1a PC端 bashrc文件 expo
  • 新手安装arch安装界面wifi-menu连接不了wifi

    新手安装arch安装界面wifi menu连接不了wifi 在物理机上安装arch 但是遇到了一个很无语的地方 因为安装arch是要联网下载基础包的 所以在安装过程中要进行联网 我是连接的wifi 在安装命令行里执行 wifi menu 可
  • 安装arch的网络连接问题(新手易犯)

    估计有很多像我这样的 第一次安装arch 被网络的连接问题搞得欲仙欲死 这篇文章就总结一下我遇到的问题 只适用于wifi无线连接 有线的绕开 刚开始安装 进入到live系统 你会发现 哎 可以使用wifi menu iw 等这些命令 但是a
  • Arch设置开机自动连接wifi网络:

    Arch设置开机自动连接wifi网络 i3wm netctl是arch的源生项目 xff0c 集成于base包 netctl基于命令行 xff0c 你可以安装其他的图形网络管理工具 从 etc netctl examples 拷贝 wire
  • 现在最新版的vmware已经和win10hyper-v兼容

    新增功能 此 VMware Workstation Pro 发行版本是面向所有 VMware Workstation 15 Pro 用户的免费升级 其中包含以下更新 xff1a 支持 Windows 10 主机 VBS xff1a 现在 x
  • Linux下如何设置交换文件?

    一 创建指定大小的文件 我们需要用到dd命令来创建一个指定大小的空文件 xff0c 比如是1G xff0c 执行命令 dd if 61 dev zero of 61 swap bs 61 1024 count 61 1048576 上面命令
  • 虚拟机vmware安装arch在桥接模式下没有eth0网卡,只有ens33,提示no such device

    参考大牛的一篇博客 道理都是一样的 CentOS7系统安装完毕之后 xff0c 输入ifconfig命令发现没有eth0 不符合我们的习惯 而且也无法远程ssh连接 xff0c 这个问题解决起来还算简单 xff1a 一 xff0c 永久搞定
  • vim或gvim的配置(推荐)

    本文简述如何跟换gVim的字体和选择喜欢的配色方案 xff1a 1 下载配色方案 xff1a gVim官网提供了很多配色方案 xff0c 可以根据自己的需要来选择下载 xff0c 本人比较喜欢深色背景系列的 xff0c 所以以下列举一些 x
  • vim的光标设置

    光标显示选项 可以通过以下命令设置guicursor选项 xff0c 来定义图形界面下的光标显示 xff1a set guicursor 61 mode style highlight mode style highlight 其中 xff
  • 如何修改WSL的安装路径

    一 还没有安装wsl实例 自定义wsl安装位置 下载wsl的appx镜像https docs microsoft com zh cn windows wsl install manual xff0c 比如下载的Ubuntu 18 04 将下
  • WSL安装Arch

    WSL安装Archlinux子系统 再次感谢助人为乐的朋友 xff1a https github com yuk7 ArchWSL 下载releases的zip包 并解压到一个有写权限的地方 xff0c 在右键管理员权限运行Arch exe
  • 【rotors】多旋翼无人机仿真(一)——搭建rotors仿真环境

    rotors 多旋翼无人机仿真 xff08 一 xff09 搭建rotors仿真环境 rotors 多旋翼无人机仿真 xff08 二 xff09 设置飞行轨迹 rotors 多旋翼无人机仿真 xff08 三 xff09 SE3控制 roto