【PX4-AutoPilot教程-TIPS】PX4飞控Gazebo仿真去除asphalt沥青地面

news2024/11/14 4:05:38

PX4飞控Gazebo仿真去除asphalt沥青地面

环境:

Ubuntu :20.04 LTS

PX4 :1.13.0

在使用PX4飞控进行仿真测试时,默认的Gazebo仿真环境通常会包含一个沥青地面(asphalt plane)。然而,在某些特定测试场景下,我们可能希望去除这一默认地面,以便测试无人机在不同环境下的表现,或者为了减少仿真中不必要的资源消耗。本文将介绍如何在Gazebo仿真中去除默认的沥青地面。

在这里插入图片描述

在PX4的Gazebo仿真环境中,地面模型的加载是通过引用世界文件(.world)中的模型URI来实现的。在默认情况下,posix_sitl.launch脚本会调用empty.world文件作为仿真环境的世界文件。

<?xml version="1.0"?>
<launch>
    <!-- Posix SITL environment launch script -->
    <!-- launches PX4 SITL, Gazebo environment, and spawns vehicle -->
    <!-- vehicle pose -->
    <arg name="x" default="0"/>
    <arg name="y" default="0"/>
    <arg name="z" default="0"/>
    <arg name="R" default="0"/>
    <arg name="P" default="0"/>
    <arg name="Y" default="0"/>
    <!-- vehicle model and world -->
    <arg name="est" default="ekf2"/>
    <arg name="vehicle" default="iris"/>
    <arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/empty.world"/>
    <arg name="sdf" default="$(find mavlink_sitl_gazebo)/models/$(arg vehicle)/$(arg vehicle).sdf"/>
    <env name="PX4_SIM_MODEL" value="$(arg vehicle)" />
    <env name="PX4_ESTIMATOR" value="$(arg est)" />

    <!-- gazebo configs -->
    <arg name="gui" default="true"/>
    <arg name="debug" default="false"/>
    <arg name="verbose" default="false"/>
    <arg name="paused" default="false"/>
    <arg name="respawn_gazebo" default="false"/>
    <!-- PX4 configs -->
    <arg name="interactive" default="true"/>
    <!-- PX4 SITL -->
    <arg unless="$(arg interactive)" name="px4_command_arg1" value="-d"/>
    <arg     if="$(arg interactive)" name="px4_command_arg1" value=""/>
    <node name="sitl" pkg="px4" type="px4" output="screen"
        args="$(find px4)/build/px4_sitl_default/etc -s etc/init.d-posix/rcS $(arg px4_command_arg1)" required="true"/>

    <!-- Gazebo sim -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">
        <arg name="gui" value="$(arg gui)"/>
        <arg name="world_name" value="$(arg world)"/>
        <arg name="debug" value="$(arg debug)"/>
        <arg name="verbose" value="$(arg verbose)"/>
        <arg name="paused" value="$(arg paused)"/>
        <arg name="respawn_gazebo" value="$(arg respawn_gazebo)"/>
    </include>
    <!-- gazebo model -->
    <node name="$(anon vehicle_spawn)" pkg="gazebo_ros" type="spawn_model" output="screen" args="-sdf -file $(arg sdf) -model $(arg vehicle) -x $(arg x) -y $(arg y) -z $(arg z) -R $(arg R) -P $(arg P) -Y $(arg Y)"/>
</launch>

posix_sitl.launch脚本调用了empty.world文件。

<arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/empty.world"/>

文件位置在Firmware/Tools/sitl_gazebo/worlds/empty.world这里。

<?xml version="1.0" ?>
<sdf version="1.5">
  <world name="default">
    <!-- A global light source -->
    <include>
      <uri>model://sun</uri>
    </include>
    <!-- A ground plane -->
    <include>
      <uri>model://ground_plane</uri>
    </include>
    <include>
      <uri>model://asphalt_plane</uri>
    </include>
    <physics name='default_physics' default='0' type='ode'>
      <gravity>0 0 -9.8066</gravity>
      <ode>
        <solver>
          <type>quick</type>
          <iters>10</iters>
          <sor>1.3</sor>
          <use_dynamic_moi_rescaling>0</use_dynamic_moi_rescaling>
        </solver>
        <constraints>
          <cfm>0</cfm>
          <erp>0.2</erp>
          <contact_max_correcting_vel>100</contact_max_correcting_vel>
          <contact_surface_layer>0.001</contact_surface_layer>
        </constraints>
      </ode>
      <max_step_size>0.004</max_step_size>
      <real_time_factor>1</real_time_factor>
      <real_time_update_rate>250</real_time_update_rate>
      <magnetic_field>6.0e-6 2.3e-5 -4.2e-5</magnetic_field>
    </physics>
  </world>
</sdf>

上面的代码中,标签引用了多个模型,其中model://asphalt_plane正是我们需要去除的地面模型。为了去除这个默认的沥青地面,我们只需要去除这三行代码。

<include>
    <uri>model://asphalt_plane</uri>
</include>

删除这三行代码后,保存文件。

重新启动Gazebo后,你应该能够看到仿真环境中原本的沥青地面已被移除

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2122039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

interface 原来是这样用的呀 ?typescript入门指南05(持续更新中)

大家好&#xff0c;我是王天~ 这篇文章是 ts入门指南系列中第5篇&#xff0c;主要讲解ts中的interface接口应用&#xff0c;接口在ts中是比较重要的功能、兼顾类型的约束和拓展 ts 入门指南系列 Ts vs Js 谁适合前端开发&#xff1f; | TypeScript 入门指南 01详解 tsconfig.j…

【AIGC】InstructPixPix:基于文本引导的图像编辑技术

github:diffusers/examples/instruct_pix2pix/train_instruct_pix2pix_sdxl.py at main huggingface/diffusers GitHub 论文&#xff1a;https://arxiv.org/pdf/2211.09800 摘要 我们提出了一种从人类指令编辑图像的方法&#xff1a;给定一个输入图像和告诉模型做什么的书面…

往年互联网大厂腾讯华为百度等校招面试笔试题合集

踏入互联网巨头的第一步&#xff0c;从征服这份笔试真题集开始&#xff01;小编搜集了多家顶尖互联网企业的历年校招面试笔试题&#xff0c;从基础扎实的数据结构与算法&#xff0c;到考验创新能力的产品设计案例&#xff0c;再到紧跟时代脉搏的前沿科技问答&#xff0c;全方位…

【笔记】扩散模型(七):Latent Diffusion Models(Stable Diffusion)论文解读与代码实现

论文链接&#xff1a;High-Resolution Image Synthesis with Latent Diffusion Models 官方实现&#xff1a;CompVis/latent-diffusion、CompVis/stable-diffusion 这一篇文章的内容是 Latent Diffusion Models&#xff08;LDM&#xff09;&#xff0c;也就是大名鼎鼎的 Stable…

HarmonyOS开发之Swiper的使用(跳转到指定索引的方法)

一&#xff0c;效果图 class MyDataSource implements IDataSource {private list: number[] []private listener: DataChangeListenerconstructor(list: number[]) {this.list list}totalCount(): number {return this.list.length}getData(index: number): any {return thi…

svg图标的使用

图片的格式有很多&#xff0c;前端经常使用的有以下类型:jpg,jpeg,png,gif,svg,这篇文章将简单svg的情况&#xff0c;以及项目中如何使用和配置svg图标 目录 什么是svg图标 SVG图标的优缺点 优点 缺点 svg前端使用场景 SVG在代码中的使用 简单使用创建svg 作为图标引入…

注册网站怎么注册

网站注册成为我们日常生活中不可或缺的一部分。无论是社交媒体、电子商务平台还是各种在线服务&#xff0c;注册都是参与这些平台的第一步。下面将为您详细介绍一般网站注册的步骤&#xff0c;帮助您轻松完成注册过程。 1. 选择合适的网站 在注册之前&#xff0c;首先要确定您…

使用kubeadm部署k8s集群

1、简介 K8s部署主要有两种方式&#xff1a; 1、Kubeadm Kubeadm是一个K8s部署工具&#xff0c;提供kubeadm init和kubeadm join&#xff0c;用于快速部署Kubernetes集群。 2、二进制 从github下载发行版的二进制包&#xff0c;手动部署每个组件&#xff0c;组成Kubernetes集…

通过 汇编 分析 结构体

不使用结构体的情况&#xff0c; 网上的资料&#xff1a; 使用结构体的情况 总结 ; 使用 结构体之后&#xff0c; 会节省汇编的 ldr 指令&#xff0c; 结构体 就直接使用 偏移量 来 对变量进行赋值了。 注意 &#xff1a; 这里 结构体 依然是一个全局变量。

CentOS7 安装配置Maven

一、Maven介绍 Apache Maven 是一个 Java 项目的构建自动化工具&#xff0c;主要用于构建、依赖管理和项目信息管理。Maven 使用一种称为“生命周期”&#xff08;Lifecycle&#xff09;的概念来管理构建过程的不同阶段&#xff0c;例如编译源代码、运行测试、打包、部署等。这…

ubuntu使用命令行查看硬件信息

ubuntu使用命令行查看硬件信息 CPU cat /proc/cpuinfo其中&#xff0c;model name就显示了cpu的型号&#xff0c;cpu cores显示cpu的所有物理核心数量。 内存 cat /proc/meminfo其中&#xff0c;MemTotal就显示总内存大小&#xff0c;这里为32GB内存&#xff0c;SwapTotal显…

走近张大鹏教授:哈工大走出的中国第一位人工智能博士

写在最前 张大鹏&#xff0c;加拿大皇家科学院院士&#xff0c;加拿大工程院院士&#xff0c;国际电气与电子工程师协会终身会士&#xff08;IEEE Fellow&#xff09;&#xff0c;国际模式识别协会会士&#xff0c;亚太人工智能学会会士&#xff0c;香港中文大学&#xff08;深…

速通GPT-3:Language Models are Few-Shot Learners全文解读

文章目录 论文实验总览1. 任务设置与测试策略2. 任务类别3. 关键实验结果4. 数据污染与实验局限性5. 总结与贡献 Abstract1. 概括2. 具体分析3. 摘要全文翻译4. 为什么不需要梯度更新或微调⭐ Introduction1. 概括2. 具体分析3. 进一步分析 Approach1. 概括2. 具体分析3. 进一步…

批发订货系统源码怎么弄 门店订货系统小程序价格

上线批发订货系统可以显著提升业务效率和管理水平&#xff0c;它能够帮助企业自动化处理订单、实时跟踪库存、简化订单管理、生成数据报表…这些优势能最终帮助你降低成本、提高效率&#xff0c;提升业务竞争力。今天&#xff0c;小编为您分享批发订货系统源码怎么弄。大家点赞…

自带线充电宝哪个牌子质量好性价比高?口碑最好自带线充电宝

在如今这个快节奏的时代&#xff0c;手机等电子设备已经成为我们生活中不可或缺的一部分。然而&#xff0c;电量不足的困扰时常让我们陷入尴尬境地。自带线充电宝的出现&#xff0c;无疑为我们解决了这一难题。它不仅方便携带&#xff0c;无需再额外携带充电线&#xff0c;而且…

新手入行项目管理,需掌握六大核心技能

对于新手而言&#xff0c;学习项目管理的核心技能对于确保项目目标的明确性、资源的有效利用、团队协作的顺畅性、风险的有效控制&#xff0c;以及按时按质完成任务至关重要。项目管理对组织成功至关重要&#xff0c;它提高资源配置效率&#xff0c;促进创新&#xff0c;确保项…

一个请求入参 req 引发的魔法攻击

项目场景 月初检修上线后没几天&#xff0c;隔壁项目组的同事&#xff0c;反馈说出现了生产问题&#xff0c;调用我们这边的接口报错。 问题描述 看到这个问题的第一眼&#xff0c;什么鬼&#xff0c;请求参数错误&#xff1f; 但是看到 “操作用户信息为空” 这个提示的时候…

MySQL系列—10.Innodb行格式

我们平时的数据以行为单位来想表中插入数据&#xff0c;这些记录在磁盘上的存放方式也被称为行格式或者记录格式。InnoDB存储引擎设计了 4 种不同类型的行格式&#xff0c;分别是Compact、Redundant、Dynamic 和 Compressed行格式 查看MySQL8的默认行格式&#xff1a; SELECT…

STM32 HAL freertos零基础(四) 二值信号量

1、二值信号量 FreeRTOS中的二值信号量是一种用于任务间同步的机制&#xff0c;它只能有两个状态&#xff1a;0 或 1。二值信号量通常用来表示某个事件是否发生&#xff0c;比如硬件中断发生时设置信号量为1&#xff0c;表示事件已发生&#xff1b;而任务在需要等待该事件发生时…

Jupyter Notebook远程登录配置

目录 一、之前的版本修改方法 1、生成配置文件 2、设置密码、获取秘钥 3、修改默认配置文件 注&#xff1a;自动化脚本 二、新版本 注&#xff1a;自动化脚本 三、访问 四、ip查询 1、win 2、linux 一、之前的版本修改方法 1、生成配置文件 jupyter notebook --ge…