[Pixhawk/PX4]开发环境搭建(Ubuntu 18.04)和问题总结

2023-05-16

主要记录了PX4环境在Ubuntu 18.04下的搭建过程和问题总结。

由于gazebo在ros安装中一般会包括,所以gazebo安装没有介绍。

一、基础资源下载

这是我第一次接触ubuntu系统的安装,所以可能有些步骤有错误或者多余,敬请批评指正。

1.下载安装脚本ubuntu.sh和requeirements.txt,不太懂这个要干嘛而且很多教程中没有,所以我就试了一下反正不亏。

wget https://raw.githubusercontent.com/PX4/Firmware/master/Tools/setup/ubuntu.sh 
wget https://raw.githubusercontent.com/PX4/Firmware/master/Tools/setup/requirements.txt

2.运行ubuntu.sh安装,安装完成后需要重启电脑。

source ubuntu.sh

3.安装完成后的检查

运行命令检查

arm-none-eabi-gcc --version

如果出现下面就是安装Nuttx成功

二、安装流程

这一板块我也是参考了好多教程,大家可以直接看链接中的文章,讲的非常详细:

无人机仿真搭建:ROS,Gazebo,SITL,MAVROS,PX4_waitin丶的博客-CSDN博客

安装SITL

1.下载代码

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

第三个指令最容易出错,因为github网站难以访问,容易出现连接失败,方法主要有换网站将.gitmodules文件中所有github.com替换为github.com.cnpmjs.org,或者直接下载失败的安装包。

但我在安装过程中发现在浏览器中打开那个连接失败的github网址可以提高连接的成功率,然后重复命令几次就行。

2.安装依赖

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

3.测试

执行一个python脚本就可以测试

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

没出错,看到界面就行。如果有错就复制搜索一下。

安装mavors

1.

sudo apt install ros-melodic-mavros ros-melodic-mavros-extras

2.

wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh

这一步连接需要花费一些时间,出现连接错误可以试着更换网络或者换成http。

3.

sudo chmod a+x ./install_geographiclib_datasets.sh

4.

sudo ./install_geographiclib_datasets.sh

这里出现三个installing就好了,据说要花些时间,应该也是网络的问题。

PX4配置

下载源码有两种方式,一种在github上下载源码,但是速度非常慢,一种在gitee上下载源码,我就直接挂gitee了,注意不同教程下载下的文件可能有些路径不太一样。

1.

git clone https://gitee.com/robin_shaun/PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.11.0-beta1

然后需要修改一下.gitmodules文件

先备份:

sudo cp .gitmodules .gitmodules.bak

打开文件

sudo gedit .gitmodules

内容替换为:

[submodule "mavlink/include/mavlink/v2.0"]
	path = mavlink/include/mavlink/v2.0
	url = https://gitee.com/robin_shaun/c_library_v2.git
	branch = master
[submodule "src/drivers/uavcan/libuavcan"]
	path = src/drivers/uavcan/libuavcan
	url = https://gitee.com/robin_shaun/uavcan.git
	branch = px4
[submodule "Tools/jMAVSim"]
	path = Tools/jMAVSim
	url = https://gitee.com/robin_shaun/jMAVSim.git
	branch = master
[submodule "Tools/sitl_gazebo"]
	path = Tools/sitl_gazebo
	url = https://gitee.com/robin_shaun/sitl_gazebo.git
	branch = master
[submodule "src/lib/matrix"]
	path = src/lib/matrix
	url = https://gitee.com/robin_shaun/Matrix.git
	branch = master
[submodule "src/lib/ecl"]
	path = src/lib/ecl
	url = https://gitee.com/robin_shaun/ecl.git
	branch = master
[submodule "boards/atlflight/cmake_hexagon"]
	path = boards/atlflight/cmake_hexagon
	url = https://gitee.com/robin_shaun/cmake_hexagon.git
	branch = px4
[submodule "src/drivers/gps/devices"]
	path = src/drivers/gps/devices
	url = https://gitee.com/robin_shaun/GpsDrivers.git
	branch = master
[submodule "src/modules/micrortps_bridge/micro-CDR"]
	path = src/modules/micrortps_bridge/micro-CDR
	url = https://gitee.com/robin_shaun/micro-CDR.git
	branch = px4
[submodule "platforms/nuttx/NuttX/nuttx"]
	path = platforms/nuttx/NuttX/nuttx
	url = https://gitee.com/robin_shaun/NuttX.git
	branch = px4_firmware_nuttx-9.1.0+
[submodule "platforms/nuttx/NuttX/apps"]
	path = platforms/nuttx/NuttX/apps
	url = https://gitee.com/robin_shaun/NuttX-apps.git
	branch = px4_firmware_nuttx-9.1.0+
[submodule "platforms/qurt/dspal"]
	path = platforms/qurt/dspal
	url = https://gitee.com/robin_shaun/dspal.git
[submodule "Tools/flightgear_bridge"]
	path = Tools/flightgear_bridge
	url = https://gitee.com/robin_shaun/PX4-FlightGear-Bridge.git
	branch = master 
[submodule "Tools/jsbsim_bridge"]
	path = Tools/jsbsim_bridge
	url = https://gitee.com/robin_shaun/px4-jsbsim-bridge.git
[submodule "src/examples/gyro_fft/CMSIS_5"]
	path = src/examples/gyro_fft/CMSIS_5
	url = https://gitee.com/mirrors/CMSIS_5

然后运行

git submodule update --init --recursive

安装python依赖

无论用哪种方式下载完源码,都需要安装依赖才能成功编译,我之前在这卡了很久就是没有安装依赖就编译(引用原话)

cd ~/PX4_Firmware
bash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools

编译

make px4_sitl_default gazebo

这里最容易出现问题,我在后面进行总结。

编译成功之后应该会打开gazebo并且没有报错

配置环境

修改.bashrc文件

sudo gedit ~/.bashrc

在最末尾加入下面的代码,注意路径有可能不同,注意检查,前两个source不能颠倒

source ~/catkin_ws/devel/setup.bash
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo

运行

source ~/.bashrc

检测

cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch

这时gazebo将会启动,注意检查有没有错误。

打开另一个终端

rostopic echo /mavros/state

connected:True,说明MAVROS与SITL通讯成功

三、问题总结

1.github连接失败

这个是前期困扰很久的问题,想过翻墙但ubuntu不知道怎么翻,想着换网站这个方法解决了大部分问题,但是会剩下一两个依然跑到github去clone,气坏我了。师兄告诉我可以直接去下载然后安装,但我发现从终端里打开那个网址后,他就可以clone了,就重复几次

git submodule update --init --recursive

就完成了。

2.缺少waf_light文件

这个问题有些神奇,因为都是在一个开源站下的为啥别人没遇到,但我在gitee上找到了这个文件,放到路径中:home/ardupilot/modules/waf/waf-master,并且这个文件版本不能太高2.0.9不行,1.9.0行。

3.报错集锦

我遇到了个宝藏博主,写了个问题总结,解决了两个大问题,感动哭了。

搭建无人机仿真环境之PX4安装_wangdongjiab的博客-CSDN博客

下面我主要说我的错误:

(1)

ninja: build stopped: subcommand failed.
Makefile:198: recipe for target 'px4_sitl_default' failed
make: *** [px4_sitl_default] Error 1

这个问题,在网上搜了好多,但都是193, 200没有和我相同的,直到遇到这个大神。

解决方法:

sudo apt-get install libgstreamer-plugins-base1.0-dev

(2)在最后的测试环节我遇到了:

RLException: [indoor1.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

也是搜了好久,

解决方法:

source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo

为了大家能找到这个错误,我直接复制粘贴一波。

ninja: build stopped: subcommand failed.
Makefile:198: recipe for target 'px4_sitl_default' failed
make: *** [px4_sitl_default] Error 1

RLException: [indoor1.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
(3)无法使用以下命令:

roslaunch px4 mavros_posix_sitl.launch

并且打开终端时显示bash:/home/this/catkin_ws/setup.bash:没有那个文件或目录

可以参考https://blog.csdn.net/qq_43310597/article/details/106008565

可以解决

(4)XTDrone中roslaunch px4 indoor1.launch报错

... logging to /home/youngjuge/.ros/log/541dceb0-6f89-11ec-8b2b-f8a2d6c74657/roslaunch-youngjuge-Lenovo-XiaoXin-Chao7000-14IKBR-9470.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

RLException: while processing /home/youngjuge/PX4_Firmware/launch/single_vehicle_spawn_xtd.launch:
Invalid <param> tag: Cannot load command parameter [model_description]: no such command [['xmlstarlet', 'ed', '-d', '//plugin[@name="mavlink_interface"]/mavlink_tcp_port', '-s', '//plugin[@name="mavlink_interface"]', '-t', 'elem', '-n', 'mavlink_tcp_port', '-v', '4560', '/home/youngjuge/PX4_Firmware/Tools/sitl_gazebo/models/iris_stereo_camera/iris_stereo_camera.sdf']]. 

Param xml is <param command="$(arg cmd)" name="model_description"/>
The traceback for the exception was written to the log file

可以看出少了xmlstarlet,因此安装就可以了。

sudo apt install xmlstarlet

参考博客https://blog.csdn.net/qq_42215388/article/details/122164064#commentBox

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

[Pixhawk/PX4]开发环境搭建(Ubuntu 18.04)和问题总结 的相关文章

  • json 笔记

    JSON简介 之前一直以为JSON只是一种文件格式 xff0c 了解了才发现并不是 JSON JavaScript Object Notation JavaScript 对象表示法 JSON 是存储和交换文本信息的语法 类似 XML JSO
  • Zookeeper启动成功后拒绝连接的解决方案

    zookeeper启动成功后zkServer sh status出错 一 问题出现情形 运行zookeeperd后显示启动成功 xff1a JMX enabled by default span class token keyword Us
  • STM32实战-高级定时器带死区的互补PWM输出

    前言 xff1a 平时我们设计点击驱动电路时 xff0c 一般会采用npn和pnp三极管 xff0c 来控制电机的导通和关闭 xff0c 但是三级管内部自带电容 xff0c 断电后不会立马断掉 xff0c 会经过很小的一段时间才会放电完毕
  • ldmia和stmia的用法

    ldmia r0 r3 r10 将基址寄存器r0开始的连续8个地址单元的值分别赋给r3 r4 r5 r6 r7 r8 r9 r10 注意的是r0指定的地址每次赋一次r0会加1 ld代表load 指向下一个地址单元 stmia r1 r3 r
  • Mysql中插入语句value和values的区别

    Mysql中插入语句 xff0c 官方文档中VALUE和VALUES都是正确的 xff0c 经过实际的操作也证实了两者也都是可以使用的 本文主要对二者插入语句数量的效率稍微的进行探究 INSERT具体使用可查看 xff1a insert官方
  • 使用VSCode配置Anaconda(3.7)-python3.6(yolov3)环境

    最近因为毕设需要用到目标检测的功能 xff0c 所以在完全小白的前提下学习了下YOLOv3 xff08 Windows10 43 Keras 43 VSCode 43 Tensorflow xff09 xff0c 在使用VSCode时遇到了
  • 深度学习Ubuntu20.04+CUDA+Pytorch环境配置+无显示器远程控制(2)

    Win10远程无显示器Ubuntu20 04系统 对于深度学习 xff0c 很多同学用的也是台式的工作站 xff0c 而不是集群服务器 但是 xff01 xff01 xff01 xff01 xff01 工作站的噪声很大 xff0c 所以我们
  • github合并分支~

    合并分支只需6个点击 1 点击这里 2 点击这里会看到有更新的分支 3 可以选择需要合并的分支 xff0c 关系是把1合并到2上 4 点击进行创建合并 5 看到对勾就是没有冲突可以合并 xff0c 点击按钮合并 6 点击confirm按钮提
  • 大华SDK+JAVA+4g网络摄像头进行二次开发

    前言 监控 xff0c 相信大家都不陌生 现在的监控技术发展迅速 xff0c 国内以海康威视为首的智能视频监控提供商也层出不穷 现在 xff0c 这些提供商都已经提供了相应的SDK以及API接口 xff0c 能够很好的支撑我们进行摄像机的二
  • 运用docker到ros2工程

    此方法制作的镜像可以直接在docker容器的伪终端对ros2工程进行命令行操作 xff0c 从而运行工程 基础知识 xff1a 登陆镜像仓库 sudo docker login 退出镜像仓库 sudo docker logout 查看镜像
  • FreeRTOS

    FreeRTOS概述 FreeRTOS目录结构 主要涉及2个目录 xff1a Demo Demo目录下是工程文件 xff0c 以 34 芯片和编译器 34 组合成一个名字 比如 xff1a CORTEX STM32F103 Keil Sou
  • Octave实现一元线性回归详解及错误分析(吴恩达老师作业)

    注意事项 建议使用CLI xff0c 简洁明了 如果函数在定义期间输入错误 xff0c 而运行期间才发现的话 xff0c 通过修改函数名 xff0c 再执行新函数 代码如下 首先要cd到txt文件保存的路径下才可读取txt文件 xff0c
  • 大半夜记录一个小知识点——matlab中omitnan未定义的问题

    之前做了老师留的一个实验 如何用matlab清除实验数据中的 脏数据 xff0c 或者说是滤波器 其中有这样一组代码 xff1a a span class token operator 61 span span class token fu
  • 【机器学习小白必备】Scikit-learn(Sklearn)最常用的函数这里都帮您总结好了~速速来取!持续更新!

    Scikit learn Sklearn 常用函数详解大全 在这篇文章中 xff0c 总结了sklearn模块常用的函数 xff0c 建议收藏 xff01 因为会持续更新 xff01 文章目录 Scikit learn Sklearn 常用
  • 【总结好文】【新手避坑指南】Ubuntu18.04 轻松愉快的安装ROS并带你仿真个无人机飞行

    Ubuntu18 04 ROS无人机PX4仿真环境搭建 引用文章 环境搭建总流程 indoor1 launch is neither a launch file 的解决办法 xff08 在最后 xff09 Gazebo模型大全下载方式无人机
  • Linux下CMake链接googletest【CMake编写】

    源码下载 git clone https github com google benchmark git git clone https github com google googletest git benchmark googlete
  • Google Colab的详细使用教程—YOLOv3为例

    一 先哔哔几句热下身 相信疫情隔离在家而且还要使用深度学习的小伙伴们或多或少都会面临么的钱买高性能显卡又么的钱租服务器的窘境 下面我就来给小伙伴们介绍以下如何使用Google Colab免费服务器的故事吧 xff08 至于怎么上Google
  • 【一文足以系列】ORB SLAM2完整详细算法流程

    目录 算法目的算法应用场景算法优点相关概念点内涵算法算法实现tracking线程步骤单目相机初始化成功条件单目相机初始化器初始化后续 初始位姿估计跟踪局部地图关键帧的创建参考关键帧 局部建图线程构建地图步骤好的地图点标准创建新地图点地图点融
  • IMU数学模型推导

    旋转运动学 质量块在body坐标系下的坐标为 xff1a body坐标系为imu坐标系 惯性系为世界坐标系 只考虑旋转 旋转到惯性系下 xff1a 对时间求导 如下 xff1a 其中 对 R R R 的求导 有如下推导 xff1a 其中
  • 【IMU】【卡尔曼滤波】惯性导航误差微分方程与状态转移方程

    惯性导航误差微分方程 在IMU惯性导航误差分析建模中 一共有三个微分方程 分别对应姿态误差微分方程 速度误差微分方程和位置误差微分方程 姿态误差微分方程 n为东北天坐标系 b为机体坐标系 这里求出二者之间的转换关系就可以求出IMU的姿态 这

随机推荐

  • 【IMU/VIOSLAM易混淆知识点】IMU坐标系和其他坐标系关系梳理以及SLAM中BA优化概念

    IMU测量值所在坐标系 imu测得的加速度和角度是在imu系下的 imu系和body坐标系存在一个固定的RT 也可以认为imu系就是body系 SLAM中的世界坐标系 世界坐标系有时候也被称为惯性系 这个纯是工程师自行定义的 比如说可能是第
  • 【优秀论文解读】BoW3D: Bag of Words for Real-time Loop Closing in 3D LiDAR SLAM

    论文简介 本论文新颖性在于3D激光雷达中实时闭环 且能够实时进行回环矫正 词袋模型为BoW3D 实时构建词袋 效率高 但是鲁棒性未知 词袋存储 word包含两种变量 xff1a Dim value为描述子计算得到的非零数和Dim ID为wo
  • 【原文核心对照代码】【一文足以系列】A-LOAM里程计部分简短精解

    前言 本文将通过论文对照代码的方式阐述A LOAM这一神奇算法 全文保持各个章节短小精悍的风格 本文会省去一些细节 xff0c 但是了解大部分的论文和代码实现已经足够了 点曲率计算与边缘点面点区分 论文中通过对点云点的曲率进行如下求曲率的计
  • 【ROS2】【源码展示】ROS2中Rviz2增加一个可以实现收发节点双击修改图表等功能的插件panel

    使用说明 源代码在这里 xff0c 本文基于源代码进行功能增加和修改 主要应用Qt中的一些方法 xff0c 结合ros2中rviz2对增加panel功能的一些封装 实现双击修改图表中的内容 xff0c 节点的收发 xff0c 图表根据收到的
  • 【持续更新篇】SLAM视觉特征点汇总+ORB特征点+VINS前端

    Harris角点 opencv函数 cornerHarris提取输入图像的Harris角点 检测原理 检测思想 xff1a 使用一个固定窗口在图像上进行任意方向的滑动 xff0c 对比滑动前后的窗口中的像素灰度变化程度 xff0c 如果存在
  • 在Ubuntu上安装samba服务器

    文章目录 在Ubuntu上安装samba服务器为什么要使用SambaSamba创建一个共享目录安装Samba服务器配置Samba服务器开启Samba服务器添加samba用户在window上共享Linux目录参考 在Ubuntu上安装samb
  • 51单片机点亮LED和使用定时器中断控制蜂鸣器发声

    初学51单片机第一个实验一般都是以点亮LED灯开始 xff0c 以下是使用Proteus仿真软件的实验效果 实验需要仿真仪器 xff1a 示波器 LED 电压表 蜂鸣器 AT89C51 实验电路图 xff1a 实验代码 xff1a incl
  • Python中的joblib.Parallel函数

    Joblib是一个可以将Python代码转换为并行计算模式的包 xff0c 可以大大简化我们写并行计算代码的步骤 我们可以通过操作该包内的函数来实现目标代码的并行计算 xff0c 从而提高代码运行效率 下面举一个简单的例子来说明 xff1a
  • Microsoft Mathematics(微软数学软件)

    microsoft mathematics是微软公司发布的一款功能强大 xff0c 且非常专业的数学软件 xff0c 同时也是由微软官方出品的数学公式编辑软件 xff0c 可以帮助用户更好的计算标准数学函数变量之间的数学关系 xff0c 以
  • UartAssist,串口调试助手

    UartAssist是一款功能非常强大 xff0c 且实用性极高的串口调试助手 xff0c 该软件不仅支持常用的110 115200bps波特率 xff0c 而且不论是它的端口号 校验位 数据位 停止位等各种数据 xff0c 在这里通通都可
  • ARCHPR(压缩密码暴力破解软件)

    常年是用电脑的小伙伴 xff0c 应该都有过忘记压缩包密码的情况 xff0c 那么这个时候该怎么办呢 xff1f 别慌 xff0c 不妨来试试ARCHPR吧 xff01 该软件不仅支持所有版本的ZIP PKZip WinZip RAR Wi
  • 佳佳数据恢复软件免费版

    佳佳数据恢复软件免费版是一款功能优异 xff0c 且操作简单的电脑数据恢复应用 xff0c 该软件不但是支持免费试用的 xff0c 而且还不限恢复文件个数和大小 xff0c 能够高效率的将误删除 误格式化 分区打不开 误清空回收站 磁盘丢失
  • 文件md5校验工具

    文件md5校验工具是一款方便实用 xff0c 且绿色迷你的md5码查询对比工具 xff0c 该工具有着精妙的摘要算法 xff0c 能够帮助用户进行查看任意文件的md5验证码 毕竟只有一个文件在传输过程中损坏 xff0c 亦或者内容被修改过
  • 视频转换处理软件

    视频转换处理软件是一款专业 易用 高效的视频处理工具 xff0c 软件内置了格式转换 视频剪切 视频转GIF 视频加水印 视频优化 旋转和翻转等六大功能 xff0c 并每个功能模块也都是互相独立的 xff0c 这也就是说 xff0c 用户在
  • 视频剪切软件

    视频剪切是一款功能强势 操作简单的视频剪切工具 xff0c 它不但可以帮助用户将视频中的精彩片段剪切出来 xff0c 轻松制作需要的短片视频 xff0c 而且还支持任意设置输出视频的视频属性和音频属性 xff0c 并支持MP4 rmvb a
  • 神奇电商宝贝下载软件

    神奇电商宝贝下载软件是一款专业 易用 高效的电商软件 xff0c 可帮助用户快速获取1688 天猫 淘宝 速卖通 企业叮咚等平台店铺中的主图视频 详情视频 主图图片 详情图片等所有信息 xff0c 从而轻松满足电商用户的所有需求 而且该软件
  • 布谷鸟算法

    布谷鸟算法是将布谷鸟育雏行为与Levy飞行算法相结合的一种算法 在布谷鸟算法中 xff0c 有两个算法或者说两个位置更新是关键 xff1a 第一个是布谷鸟寻找最优解时的算法 xff1a 一个是布谷鸟寻找鸟窝下蛋的寻找路径是采用早已就有的萊维
  • matlab实现虚拟力策略传感器分布

    第一次写文章 主要想记录一下编程过程中的坎 1 虚拟力策略 虚拟力法原理是 将机器人在环境中的运动视为一种机器人在虚拟的人工受力场的运动 障碍物对机器人产生斥力 目标点对机器人产生引力 引力和斥力的合力作为机器人的加速力 来控制机器人的运动
  • pandas:sample函数解释

    目录 1 函数定义 2 作用 xff1a 3 举个栗子 4 参数解释 1 函数定义 DataFrame sample self FrameOrSeries n 61 None frac 61 None replace 61 False we
  • [Pixhawk/PX4]开发环境搭建(Ubuntu 18.04)和问题总结

    主要记录了PX4环境在Ubuntu 18 04下的搭建过程和问题总结 由于gazebo在ros安装中一般会包括 xff0c 所以gazebo安装没有介绍 一 基础资源下载 这是我第一次接触ubuntu系统的安装 xff0c 所以可能有些步骤