PX4在GAZEBO仿真中加载iris模型问题

2023-05-16

目录

  • 1. PX4启动仿真的launch系列文件
    • 1.1 单个launch文件解读
    • 1.2 对iris模型添加相机
    • 1.3 ~/.bashrc环境变量问题
  • 2. 一些Bug
    • 2.1 我的台式机无法加载模型
      • 2.1.1 若使用`v1.9.2版本`
      • 2.1.2 若使用`v1.12.3版本`
    • 2.2 gazebo无法打开


1. PX4启动仿真的launch系列文件

1.1 单个launch文件解读

打开每个文件的开头,都有对它功能的描述。

  • px4.launch

Posix SITL PX4 launch script
Launches Only PX4 SITL. This can be used by external projects
加载px4_sitl仿真的节点

  • posix_sitl.launch

Posix SITL environment launch script
launches PX4 SITL, Gazebo environment, and spawns vehicle
px4.launch基础上,打开GAZEBO环境并使用spawn_model加载sdf格式的飞机模型

  • mavros_posix_sitl.launch

posix_sitl.launch基础上,加入mavros package里的px4.launch(注意不是px4下的px4.launch)。
即开启了sitl仿真后,飞机信息通过mavros来传递交互。那么交互的端口号fcu_url即飞机端udp端口由<arg name="fcu_url" default="udp://:14540@localhost:14557"/>确定。这个参数主要是为传入mavros使用。

  • single_vehicle_spawn.launch

Posix SITL environment launch script
launchs PX4 SITL and spawns vehicle
打开sitl节点,以及使用xacro加载urdf格式的飞机模型。注意加载模型有urdf和上述sdf两种方式。后文会对两种方式详细比较。

  • multi_uav_mavros_sitl.launch

是由前面几个launch文件中的部分内容拼接并且改编的。

  1. 模型的生成方式,调用了single_vehicle_spawn.launch,并传入不同的mavlink_udp_portmavlink_tcp_port用于不同飞机mavlink连接。
  2. 每架飞机的mavros传入不同的fcu_urltgt_system参数,便于启动不同的mavros
  3. 补充:gcs_url是指地面站端口,而我们在仿真中一般用不到地面站。
  4. 关于udp端口的含义可以参照PX4官网,也可以参照这篇博客PX4仿真中的UDP端口匹配
  5. 提示:使用group ns的方式可以为包含的节点创建前缀名,用来区分每架飞机的节点和话题。
  • 新版本的PX4-Autopilot还增加了一些launch文件,主要是区分了urdfsdf两种模型生成方式
  • single_vehicle_spawn_sdf.launch指明了用后缀名.sdf模型生成。
  • single_vehicle_spawn_xacro.launch指明了用后缀名.xacro模型生成。

在v1.12.3版本中PX4-Autopilot/Tools/sitl_gazebo/models/下的模型中,凡是model.sdf文件都多了model.sdf.jinja,model.sdf.last_generated文件。
而之前采用URDF文件生成,一般都是调用PX4-Autopilot/Tools/sitl_gazebo/models/rotors_descirptioniris_base.xacro。目前v1.12.3版本已经没有这个rotors_descirption文件夹了,也就是说px4开始全面转向sdf格式的模型。
【注】经过ubuntu18.04+gazebo9对sdf文件生成模型测试,会出现gazebo无法加载的情况,目前可用于仿真仍然是xacro格式的模型。该问题待更新


1.2 对iris模型添加相机

由上文所述,目前通过改xacro文件可以加载模型,不要通过简单地修改<arg name="vehicle" value="iris_fpv_cam">来试图给iris添加相机。因为最终它会调用rotors_descirptioniris_base.xacro来加载解析。而当vehicle = iris_fpv_cam时,他会去寻找iris_fpv_cam_base.xacro,然而这个文件是没有的。
最粗暴的方式是直接修改iris_base.xacro文件,为它添加相机组件。参照博客gazebo中为Px4安装单目相机

如果直接想使用现成的模型,建议typhoon h480(六旋翼飞机带云台相机)


1.3 ~/.bashrc环境变量问题

如果不能运行,可能是环境变量的问题,
参照之前我的博客Ubuntu18.04安装PX4并与ROS联合实验 这一部分

这是我的~/.bashrc,请根据自己的系统路径修改:


2. 一些Bug

2.1 我的台式机无法加载模型

2.1.1 若使用v1.9.2版本

总会出现

[INFO] [1633444976.357504, 0.000000]: Loading model XML from file /home/wzy/src/PX4-Autopilot/Tools/sitl_gazebo/models/iris/iris.sdf
[INFO] [1633444976.362299, 0.000000]: Waiting for service /gazebo/spawn_sdf_model
[ INFO] [1633444977.225659845]: waitForService: Service [/gazebo/set_physics_properties] is now available.
[ INFO] [1633444977.249643142, 0.020000000]: Physics dynamic reconfigure ready.
[INFO] [1633444977.266593, 0.000000]: Calling service /gazebo/spawn_sdf_model
[INFO] [1633444977.463774, 0.204000]: Spawn status: SpawnModel: Successfully spawned entity
gzserver: symbol lookup error: /home/wzy/src/PX4-Autopilot/build/px4_sitl_default/build_gazebo/libgazebo_multirotor_base_plugin.so: undefined symbol: _ZN8mav_msgs4msgs10MotorSpeedC1Ev

曾经花了很多努力,也以失败告终

2.1.2 若使用v1.12.3版本

[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[INFO] [1633502837.816712, 0.010000]: Spawn status: SpawnModel: Successfully spawned entity
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[libprotobuf ERROR …/…/src/google/protobuf/descriptor_database.cc:57] File already exists in database: Imu.proto
[libprotobuf FATAL …/…/src/google/protobuf/descriptor.cc:1164] CHECK failed: generated_database_->Add(encoded_file_descriptor, size):
terminate called after throwing an instance of ‘google::protobuf::FatalException’
what(): CHECK failed: generated_database_->Add(encoded_file_descriptor, size):

经问题排查,是protobuf不能链接静态库(或者动态库)导致的。由于ros-melodic-gazebo-ros依赖于libgazebo9-dev,而安装sudo apt-get install libgazebo9-dev会自动安装依赖libprotobuf-dev,所以不可避免地要安装二进制版本libprotobuf-dev。想通过源码编译解决protobuf的问题不太可能。


2.2 gazebo无法打开

若遇到终端输入 gazebo 没有反应,gazebo --verbose可以看到详细的输出,一般是端口占用问题。
通过改变端口号 export GAZEBO_MASTER_URI=http://localhost:11348可以解决。

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

PX4在GAZEBO仿真中加载iris模型问题 的相关文章

  • PX4模块设计之五:自定义MAVLink消息

    PX4模块设计之五 xff1a 自定义MAVLink消息 1 MAVLink Dialects1 1 PX4 Dialects1 2 Paprazzi Dialects1 3 MAVLink XML File Format 2 添加自定义M
  • PX4模块设计之十一:Built-In框架

    PX4模块设计之十一 xff1a Built In框架 1 Nuttx Built In框架2 PX4 Built In框架2 1 NSH Built In关联文件2 2 NSH Built In关联文件生成2 3 NSH Built In
  • PX4模块设计之十七:ModuleBase模块

    PX4模块设计之十七 xff1a ModuleBase模块 1 ModuleBase模块介绍2 ModuleBase类介绍3 ModuleBase类功能介绍3 1 模块入口3 2 模块启动3 3 模块停止3 4 状态查询3 5 任务回调3
  • PX4模块设计之二十四:内部ADC模块

    PX4模块设计之二十四 xff1a 内部ADC模块 1 内部ADC模块简介2 模块入口函数2 1 主入口board adc main2 2 自定义子命令custom command 3 内部ADC模块重要函数3 1 task spawn3
  • PX4模块设计之二十六:BatteryStatus模块

    PX4模块设计之二十六 xff1a BatteryStatus模块 1 BatteryStatus模块简介2 模块入口函数2 1 主入口battery status main2 2 自定义子命令custom command 3 Batter
  • PX4模块设计之四十五:param模块

    PX4模块设计之四十五 xff1a param模块 1 param模块简介2 模块入口函数param main3 重要函数列表4 总结5 参考资料 1 param模块简介 Description Command to access and
  • PX4模块设计之四十七:mavlink模块

    PX4模块设计之四十七 xff1a mavlink模块 1 mavlink模块简介2 模块入口函数mavlink main3 mavlink模块重要函数3 1 Mavlink start3 2 Mavlink task main3 3 Ma
  • ROS/Gazebo练习2: stack light simulation

    light description urdf light xacro span class token prolog lt xml version 61 34 1 0 34 gt span span class token comment
  • rviz更改机器人位置,不考虑gazebo环境。

    文章目录 问题描述解决方案 问题描述 在RVIZ中想要去更改机器人模型位置 xff0c 但不想考虑gazebo的各种因素 xff0c 只想通过别人给的数据流去实时更改机器人在rviz中的位置 解决方案 首先 xff0c 先将原理弄清楚 在R
  • 在gazebo中对机器人进行控制,并在rviz中同步显示

    在上一篇博客中 xff0c 我一步一步地建立了在gazebo仿真中能用的xacro文件 但是仿真时的模型是自由摆动的 xff0c 文末的时候我想对他进行控制 xff0c 但是篇幅太长 xff0c 所以新开一篇 参考ros control的内
  • # gazebo 仿真

    gazebo 仿真 1 给 base link 添加惯性 xff0c 碰撞以及 gazebo 属性 在路径xqrobot description urdf xacro 件夹下新建 件夹 gazebo xff0c 并在 gazebo 件下创建
  • ROS入门(七)——仿真机器人三(Gazebo+Xacro)

    所用的学习链接 xff1a 奥特学园 ROS机器人入门课程 ROS理论与实践 零基础教程P271 277 以上视频笔记见http www autolabor com cn book ROSTutorials 前文参考 ROS入门 五 仿真机
  • PX4通过参数脚本给飞控导入参数

    PX4通过参数脚本给飞控导入参数 先找一架正常能飞的无人机连接地面站 在参数页面右上角点击工具 gt 保存到文件 保存的时候文件名注明参数的相关信息 然后将需要加载参数的无人机连接至地面站 xff0c 注意需要加载参数的无人机必须和保存的参
  • gazebo教程---使用gazebo插件

    一 添加传感器插件 xff08 1 xff09 在rrbot xacro中添加 lt link gt 和 lt joint gt xff0c 内容如下 xff1a lt joint name 61 span class token stri
  • ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

    一 引言 ORB SLAM2 xff0c 它是基于单目 双目或RGB D相机的一个完整的SLAM系统 xff0c 其中包括地图重用 回环检测和重定位功能 这个系统可以适用于多种环境 xff0c 无论是室内小型手持设备 xff0c 还是工厂环
  • Blender一步一步用灰度图生成3D模型用于Gazebo/gzweb

    我们经常能在SDF格式文件中见到 dae stl模型文件 比如如下代码
  • 大神浅谈无人机飞控软件设计 系统性总结

    写在前面 深感自己对飞控软件 算法的知识点过于杂乱 很久没有进行系统的总结了 因此决定写几篇文章记录一些飞控开发过程的知识点 主要是针对一些软件 算法部分进行讨论 如内容有错误 欢迎指出 1 飞控软件的基本模块 无人机能够飞行主要是依靠传感
  • 通过Gazebo仿真学TurtleBot3(二)——环境搭建

    1 Ubuntu安装 网络上教如何安装ubuntu的文章很多 在这里就不再花时间详细介绍了 本文使用的是ubuntu16 04 LTS版本 针对是使用物理机双系统还是虚拟机的问题 我建议资源允许的情况下可以都装 物理机的运行速度更快 尤其是
  • gazebo通过sdf搭建仿真环境和机器人Husky

    具体格式要求可参考 http sdformat org spec ver 1 6 elem sdf
  • Moveit简单使用,在rviz中实现手动拖动-记录

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

随机推荐

  • 回到Zookeeper

    回到Zookeeper 1 藕花深处 平时会花时间学习Redis RocketMQ Motan Dubbo xff0c Kafka等中间件 xff0c 它们各有各的概念 xff0c 各有各的用途 我自认为自己在编程学习上并没有什么天分 xf
  • ChatGPT帮我实现LRU

    1 内存受限 不知道从什么时候开始 xff0c 什么东西都有了限制 xff0c 一个咖啡杯只能装下500ml水 xff0c 一块新买的内存也被标好了容量 xff0c 姑娘的心里再装不下另一个人 xff0c 我开始怀疑有什么东西是可以无限的
  • ACK 与外星文明进行交流

    一段故事 在 三体 第三部中 xff0c 蓝色空间号和万有引力号上的船员从三维空间进入四维空间 xff0c 看到了宏伟的四维建筑 xff0c 并与它们进行了交流 让我们来看一段原文 按照计划 xff0c 卓文用中频电波发送了一个问候语 这是
  • 预写日志 做一个靠谱的男人

    书接上回 我们在之前的一篇文章 ACK 与外星文明交流 中针对一个问题 两个节点之间的通信不可靠 提出了ack的解决方案 现在 我们为了消息能原子性和持久性的落盘 也面临一个问题 假如一条要写入磁盘的信息写到一半 xff0c 机器崩溃了怎么
  • 下载任意版本vmware对应的vmware tools

    参考博客 xff1a https baijiahao baidu com s id 61 1636060669707508136 amp wfr 61 spider amp for 61 pc 网址 xff1a http softwareu
  • 荣耀 MagicBook Pro 加装固态硬盘

    电脑于2019年10月1日在华为天猫官方商城抢购 xff0c 6099 机器配置 xff1a 咨询华为商城的客服 xff0c 得到的回复 xff1a 荣耀 MagicBook Pro 最大可以扩展 HDD 2TB xff0c 可以更换 SS
  • linux下usb无线网卡对比

    2021年12月23日 冬月二十 xff0c 天晴 xff0c 微风 一 使用场景 1 xff0c 由于软件开发需要用到linux系统 xff0c 嵌入式设备nvidia xavier没有无线网卡 xff0c 需要自购 2 xff0c 另外
  • 树莓派安装花生壳软件 phddns ,没有显示SN码

    树莓派型号 xff1a Pi4B 2G 树莓派系统版本 xff1a uname a Linux raspberrypi 5 10 103 v7l 43 1529 SMP Tue Mar 8 12 24 00 GMT 2022 armv7l
  • mavros订阅PX4的定高激光以及悬停油门估计数据

    借用已有的Altitude这个话题发布定高数据和基础油门估计 备注 xff1a v 1 11 3之后的PX4固件才加入了基础油门估计 在src modules mavlink mavlink messages cpp的class Mavli
  • E: Could not get lock /var/lib/dpkg/lock

    ubuntu安装软件时 xff0c 经常出现下面错误 xff1a sudo apt get install E Could not get lock var lib dpkg lock open 11 Resource temporaril
  • shell 脚本常用命令,音频提取、格式转换、切割

    实现一下功能 xff1a 1 xff0c mp4 视频文件提取 wav xff0c pcm xff1b 2 xff0c wav 切割为每段30s 的音频 xff1b 3 xff0c wav 切割后的音频转换为 pcm xff0c ffmpe
  • windows7下cmd窗口使用ssh登录服务器(云、本地)

    windows7下cmd窗口使用ssh命令 xff1a xff08 百度经验 xff09 https www baidu com link url 61 ZwN3UgM b6ZG9CHEGvnad7FMmefCQvSbp4QEMjf8DCL
  • wine 安装(ubuntu中安装windows下软件)

    wine xff1a 能够在多种 POSIX compliant 操作系统 xff08 诸如 Linux xff0c Mac OSX 及 BSD 等 xff09 上运行 Windows 应用的兼容层 https baike baidu co
  • 将自己的 ubuntu 系统制作为ISO镜像

    自己的Ubuntu做了很多设置 xff0c 比如各种软件包 xff0c 各种自定义的配置 如果想要在其他电脑上也安装一个一样的系统 xff0c 可以制作ISO镜像 ISO镜像可以用于发布系统 xff0c 也可以用来作为系统备份使用 以下是使
  • matlab:错误使用 fread 文件标识符无效。使用 fopen 生成有效的文件标识符。

    fidin xff1a 1 000000 错误使用 fread 文件标识符无效 使用 fopen 生成有效的文件标识符 出错 convert1 line 12 A 61 fread fidin inf 39 int16 39 以二进制形式读
  • 使用循环语句输出空心金字塔

    n 61 5 选择打印层数 for i 61 1 i lt 61 n i 43 43 for k 61 1 k lt 61 n i k 43 43 打印空格 echo 34 34 for j 61 1 j lt 61 2 i 1 j 43
  • 关于编程语句i++与++i的区别用法

    首先我们定义一个变量i xff0c int i 61 5 xff1b 然后我们做执行printf xff08 d xff0c i 43 43 xff09 xff1b 我们会发现输出结果是5 是为什么呢 xff0c 我们要搞清楚printf
  • eclipse出现&nbsp;Some&nbsp;character…

    原文地址 xff1a eclipse出现 Some characters cannot be mapped using 34 GBK 34 character encoding 错误 作者 xff1a 赫西尼 Window gt Profe
  • php实现二维数组转置

    arr 61 array array 1 2 3 array 4 5 6 for i 61 0 i for j 61 0 j arr1 j i 61 arr i j for k 61 0 k for l 61 0 l echo arr1 k
  • PX4在GAZEBO仿真中加载iris模型问题

    目录 1 PX4启动仿真的launch系列文件1 1 单个launch文件解读1 2 对iris模型添加相机1 3 bashrc环境变量问题 2 一些Bug2 1 我的台式机无法加载模型2 1 1 若使用 96 v1 9 2版本 96 2