gazebo学习时遇到的问题(PX4篇)

2023-05-16

最近在研究如何使用UAV,由于是初学者,不好直接上手实体无人机,因此考虑通过在gazebo中模拟的方式进行一下无人机的简单使用模拟,于是了解到了PX4这个东西,他不仅支持固件写入,更支持gazebo和jmavsim进行模拟,对于无人机初学者来说比较友好,但是在学习过程中本人遇到了非常多的坑,在此记录一下。

(一)PX4安装与测试

安装:

想要安装px4请先参考px4 development guide,然后根据下面的GettingStarted进行安装。由于网速的问题可能git clone的过程非常漫长,之后安装依赖可能也会非常缓慢,请耐心等待。

测试:

在执行下面的命令时要保证运行内存在8g以上,不然会因为内存不够用编译失败。

在git clone的目录下(一般为PX4-Autopilot)执行make px4_sitl_default gazebo,执行过程中可能会提示缺少toml、jinja2、packaging等这样的python包,这时直接运行 sudo apt-get install python-toml(toml替换为缺少的包名)安装对应的python包即可。运行成功后会看到gazebo启动,并加载模型,如果卡在gazebo加载截面处,建议看本系列第二篇的(二),里面提到了如何解决该问题。

运行以上命令应该会看到这样的gazebo界面:

至此px4基本安装完成

(二)各种问题

ERROR1:

在执行make px4_sitl_default gazebo时我遇到了下列ERROR

ninja: error: opening build log: Permission denied
FAILED: external/Stamp/sitl_gazebo/sitl_gazebo-build

一般看到Permission denied这种字样自然就想到了使用sudo执行make px4_sitl_default gazebo语句,的确这样会使得make编译成功,但是随之而来会产生许多permission问题,因为使用sudo后make过程产生的许多文件所有者会归为root用户,而其中的一些.launch文件需要执行roslaunch才能使用,而roslaunch无法使用sudo执行,因此就造成了使用sudo make px4_sitl_default gazebo生成的环境无法使用.launch文件的情况。所以我们必须要执行make px4_sitl_default gazebo编译成功才可以。

如果出现了上述错误说明已经执行过sudo下的make命令,因此第一步我们要执行sudo make clean。然后执行make px4_sitl_default gazebo,然后就会进入ERROR2。

ERROR2:

典型错误为写入权限错误,为了方便搜索引擎匹配,我将错误截屏与文字提示一并给出:

Traceback (most recent call last):
  File "/home/gk/ROS/Firmware/src/PX4-Autopilot/Tools/sitl_gazebo/scripts/jinja_gen.py", line 51, in <module>
    with open(filename_out, 'w') as f_out:
PermissionError: [Errno 13] Permission denied: '/home/gk/ROS/Firmware/src/PX4-Autopilot/Tools/sitl_gazebo/models/plane/plane.sdf'

具体提示是.sdf文件拒绝写入,这个错误不会之出现一条,通常是整个PX4-Autopilot/Tools/sitl_gazebo/models下的所有.sdf文件都会报这个错误。这时只要使用一个暴力方法就可以完美解决

sudo chmod -R 777 PX4-Autopilot/Tools/sitl_gazebo/models/*

简单来说就是递归地赋予所有人models下的所有文件的读写执行权限,这样再执行make px4_sitl_default gazebo就能够编译通过了。

其实只是编译建议执行DONT_RUN=1 make px4_sitl_default gazebo,这样只会编译而不会启动gazebo,能够节省大量时间。

ERROR3:

在编译成功后我们可以执行.launch文件了,这里我先运行了multi_uav_mavros_sitl.launch,记得运行前县执行以下git sub module update --init --recursive更新以下PX4库,然后就可以执行roslaunch指令了,PX4的指令一般在px4包下,即roslaunch px4 multi_uav_mavros_sitl.launch,如果不进行变量设定的话会报以下的错误:

RLException: [multi_uav_mavros_sitl.launch] is neither a launch file in package [px4] nor is [px4] a launch file name
The traceback for the exception was written to the log file

这时候要执行以下指令,请在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

如果嫌麻烦的话可以将以上命令中的$(pwd)换成PX4-Autopilot的绝对路径,并将Tools/setup_gazebo.bash更换为绝对路径,然后写入~/.bashrc,这样每次打开新的console后会自动加载变量,但是每次source时会输出几条路径变量的设定情况,看着不舒服,所以看个人喜好加入。解决参考:https://discuss.px4.io/t/rover-ros-qgroundcontrol/16033

ERROR4:

Resource not found: mavros

错误简单明了,没有这个包,直接sudo apt-get install ros-melodic-mavros,类似问题解相同将mavros替换为缺失的包名即可。

ERROR5:

执行.launch文件时出现锁文件创建权限问题,具体报错:

ERROR [px4] is_server_running: failed to create lock file: /tmp/px4_lock-0, reason=Permission denied

ERROR [px4_daemon] error binding socket /tmp/px4-sock-0, error = Address already in use

ERROR [px4] is_server_running: failed to create lock file: /tmp/px4_lock-0, reason=Permission denied

ERROR [px4] Failed to communicate with daemon: Permission denied

根据提示很容易将问题定位到/tmp下的px4_lock-0和px4-sock-0上。其中px4_lock-0是一个单纯的锁文件,和操作系统中的锁是一个概念,本身不具有任何信息;px4-sock-0是一个socket文件,主要是通信作用。报错是权限拒绝,说明我们的用户无法占有这两个文件,而我们又无法使用sudo执行roslaunch命令,使用root用户又存在很大的风险,因此非常简单的一个方法就是将这两个文件易主:

cd /tmp

sudo chmod 777 px4_lock-0

sudo chmod 777 px4-sock-0

sudo chown username px4_lock-0

sudo chown username px4-sock-0

其中username是你的用户名。

然后再执行roslaunch px4 posix_sitl.launch,成功打开了gazebo!

ERROR6:

运行多机器人.launch文件时出现下列错误:

[FATAL] [1608101372.296910175]: UAS: GeographicLib exception: File not readable /usr/share/GeographicLib/geoids/egm96-5.pgm | Run install_geographiclib_dataset.sh script in order to install Geoid Model dataset!

进入目标文件夹会发现egm96-g.pgm没有,提示要运行install_geographiclib_dataset.sh,去这里找到这个文件,直接copy下来然后sudo bash,要等很长时间才能安装完成,请耐心等待。安装完成后即可运行multi_uav_mavros_sitl.launch。

 

 

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

gazebo学习时遇到的问题(PX4篇) 的相关文章

随机推荐

  • 树莓派登录问题

    在使用树莓派的过程中 xff0c 多次遇到了开机后输入正确密码却被重复多次要求输入的情况 xff0c 在查看他人经验后 xff0c 总结出以下两种情况及可行的方法 不确定密码是否正确 参考博客 纸末 树莓派忘记密码的解决方法 1 xff0c
  • 什么是SDK和API?

    SDK xff1a 在搭建环境的时候知道的sdk xff0c 但并不知道有什么用 SDK Software Development Kit 翻译成中文就是 34 软体开发工具组 34 是用来帮一个 产品 或 平台 开发应用程式的工具组 xf
  • 华为开发者大会总结——个人总结

    方舟编译器 xff08 开源 xff09 xff1a 干掉Java虚拟机 将java代码直接编译成机器码 xff0c 静态语义好编译 xff0c 核心是静态编译出动态语义 xff08 通过华为编译实验室的核心专利 xff09 xff0c 代
  • LoRa关键参数 1、扩频因子(SF) 2、编码率(CR) 3、信号带宽(BW) 4、LoRa信号带宽BW、符号速率Rs和数据速率DR的关系 5、

    LoRa 学习 xff1a LoRa 关键参数 xff08 扩频因子 xff0c 编码率 xff0c 带宽 xff09 的设定及解释 1 扩频因子 xff08 SF xff09 2 编码率 xff08 CR xff09 3 信号带宽 xff
  • MarkDown的语法

    使用MarkDoown时应该注意些什么呢 目录 一 添加标题 二 引用代码块 三 嵌入图片 1 本地图片 2 互联网图片 四 快捷键使用 五 分界线的使用 一 添加标题 在文字前加入相应数量的 一级标题 二级标题 三级标题 四级标题 五级标
  • python试爬李毅吧贴子标题,爬虫最初级

    注 xff1a 以下所有python代码均运行于2 7 0 最近想抓点数据存起来 xff0c 开始捣鼓python 爬虫技术以前没接触过 xff0c 这一回就当练手 xff0c 从零开始 xff0c 从最原始的方式开始 先定个小目标 xff
  • Activity的生命周期

    图来自百度百科 onCreate 启动activity时被调用 xff0c 用于进行初始化操作 xff08 加载布局 绑定事件等 xff09 xff0c 不应在onCreate 中做过多的不必要操作 xff0c 避免造成打开activity
  • Activity的启动模式

    以下为读书笔记 xff1a 实际项目中 xff0c 我们要通过特定的需求 xff0c 为每个活动指定恰当的启动模式 Android一共有4种启动模式 xff1a standard singleTop singleTask singleIns
  • PID参数 Ziegler-Nichols基于时域响应曲线的整定 反应曲线法

    PID控制器是工业过程控制中广泛采用的一种控制器 xff0c 其中 xff0c P I D分别为比例 xff08 Proportion xff09 积分 xff08 Integral xff09 微分 xff08 Differential
  • 郑学坚《微型计算机原理及应用》考点精讲 36讲

    链接 xff1a https pan baidu com s 12 vGBRrjOd UtO8P4e9bow 提取码 xff1a tqmp 当初考研时买的网课 xff0c 现在也用不着了 xff0c 赠与有缘人 书籍记录着别人多年时光总结出
  • 几种常用排序算法

    排序算法代码如下 xff1a void Sort Algorithm Bubble Sort int amp nums const int len bool haschange 61 true for int i 61 0 i lt len
  • 四旋翼姿态解算

    代码思路如下 xff1a 姿态解算 void IMU update float dT imu state st state float gyr VEC XYZ s32 acc VEC XYZ s16 mag val VEC XYZ imu
  • 树莓派4B-基于MCP2515的CAN通信过程记录篇

    本文主要记录使用树莓派4B xff0c 通过外接MCP2515模块来实现CAN通信 xff0c 使用基于Can utils实现CAN消息的收发 准备工作 xff1a 树莓派MCP2515模块杜邦线若干 知乎上一篇较为详细的参考 xff0c
  • nuxt踩坑集

    目录结构 assets 资源文件 用于组织未编译的静态资源如 LESS SASS或 JavaScript components 组件 layouts page 模板页面 xff0c 默认为 default vue可以在这个目录下创建全局页面
  • 记录个人在安装D435i驱动时出现的问题及解决方案

    目录 1 驱动安装 xff1a 2 启动Intel RealSense Viewer后报错No Frames Recevied 3 Record时报错Error opening file 1 驱动安装 xff1a 参考这篇博客 xff1a
  • 深度学习常见的优化算法

    文章目录 1 梯度下降算法 xff08 batch gradient descent BGD 2 随机梯度下降法 xff08 Stochastic gradient descent SGD 3 小批量梯度下降 Mini batch grad
  • vscode如何链接github

    1 首先安装配置好vscode xff1a https code visualstudio com download 然后下载git xff1a https git scm com download 根据自己的电脑选择相应的版本的下载就好了
  • 串口(uart)开发流程

    UART概述 UART全称 xff0c Universal Asynchronous Receiver and Transmitter UART xff0c 一般是每个单片机或开发板必备的一个功能模块 xff0c 可以用来调试 xff0c
  • *33.硬中断和软中断是什么?区别?

    1 硬中断 硬件中断 像磁盘 xff0c 网卡 xff0c 键盘 xff0c 时钟等 2 软中断 软件中断 进程产生 区别 xff1a xff08 产生机制 处理顺序 可否屏蔽 中断信号由来 xff09 1 软中断的发生的时间是由程序控制的
  • gazebo学习时遇到的问题(PX4篇)

    最近在研究如何使用UAV xff0c 由于是初学者 xff0c 不好直接上手实体无人机 xff0c 因此考虑通过在gazebo中模拟的方式进行一下无人机的简单使用模拟 xff0c 于是了解到了PX4这个东西 xff0c 他不仅支持固件写入