飞行机器人(七)仿真平台XTDrone + PX4编译

2023-05-16

0. 编译PX4固件

参考仿真平台基础配置教程(中文详细教程)

仿真平台基础配置 · 语雀 (yuque.com)icon-default.png?t=M3C8https://www.yuque.com/xtdrone/manual_cn/basic_config

按照教程,成功编译后运行launch

一. 安装Ceres依赖:

1、软件包下载:

安装及下载地址:  Installation — Ceres Solverhttp://ceres-solver.org/installation.html

2、安装编译Ceres库所需依赖项:

1

$ sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev

# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev libgflags-dev
# Use ATLAS for BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse and CXSparse (optional)
sudo apt-get install libsuitesparse-dev

 可能会出现无法定位libcxsoarse3.1.2的问题

解决方法:

1

2

3

4

5

6

7

8

//第一步,打开sources.list

$ sudo gedit /etc/apt/sources.list

//第二步,将下面的源粘贴到最上方sources.list

$ deb http://cz.archive.ubuntu.com/ubuntu trusty main universe

//第三步,更新源

$ sudo apt-get update

//第四步,重新输入依赖项安装命令安装依赖项

$ sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev

 3、编译安装:

1

2

3

4

$ mkdir build

$ cd build

$ cmake ..

$make -j4  //可用nproc这个命令查看cpu核心数,我的cpu核心数是8

4、测试

tar zxf ceres-solver-2.1.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.1.0
make -j3
make test
# Optionally install Ceres, it can also be exported using CMake which
# allows Ceres to be used without requiring installation, see the documentation
# for the EXPORT_BUILD_DIR option for more information.
make install

运行测试demo:

./simple_bundle_adjuster /home/haowang/workspace/ceres-solver/data/problem-16-22106-pre.txt

This runs Ceres for a maximum of 10 iterations using the DENSE_SCHUR linear solver. The output should look something like this.

  iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
     0  4.185660e+06    0.00e+00    1.09e+08   0.00e+00   0.00e+00  1.00e+04       0    7.59e-02    3.37e-01
     1  1.062590e+05    4.08e+06    8.99e+06   5.36e+02   9.82e-01  3.00e+04       1    1.65e-01    5.03e-01
     2  4.992817e+04    5.63e+04    8.32e+06   3.19e+02   6.52e-01  3.09e+04       1    1.45e-01    6.48e-01
     3  1.899774e+04    3.09e+04    1.60e+06   1.24e+02   9.77e-01  9.26e+04       1    1.43e-01    7.92e-01
     4  1.808729e+04    9.10e+02    3.97e+05   6.39e+01   9.51e-01  2.78e+05       1    1.45e-01    9.36e-01
     5  1.803399e+04    5.33e+01    1.48e+04   1.23e+01   9.99e-01  8.33e+05       1    1.45e-01    1.08e+00
     6  1.803390e+04    9.02e-02    6.35e+01   8.00e-01   1.00e+00  2.50e+06       1    1.50e-01    1.23e+00

Solver Summary (v 2.1.0-eigen-(3.4.0)-lapack-suitesparse-(5.10.1)-cxsparse-(3.2.0)-acceleratesparse-eigensparse-no_openmp)

                                     Original                  Reduced
Parameter blocks                        22122                    22122
Parameters                              66462                    66462
Residual blocks                         83718                    83718
Residuals                              167436                   167436

Minimizer                        TRUST_REGION

Dense linear algebra library            EIGEN
Trust region strategy     LEVENBERG_MARQUARDT

                                        Given                     Used
Linear solver                     DENSE_SCHUR              DENSE_SCHUR
Threads                                     1                        1
Linear solver ordering              AUTOMATIC                 22106,16
Schur structure                         2,3,9                    2,3,9

Cost:
Initial                          4.185660e+06
Final                            1.803390e+04
Change                           4.167626e+06

Minimizer iterations                        7
Successful steps                            7
Unsuccessful steps                          0

Time (in seconds):
Preprocessor                         0.121654

  Residual only evaluation           0.065968 (7)
  Jacobian & residual evaluation     0.303356 (7)
  Linear solver                      0.436650 (7)
Minimizer                            0.890535

Postprocessor                        0.001684
Total                                1.013873

Termination:                      CONVERGENCE (Function tolerance reached. |cost_change|/cost: 1.769756e-09 <= 1.000000e-06)

5、install安装

sudo make install

二、 编译VINS-Fusion

源码地址:GitHub - HKUST-Aerial-Robotics/VINS-Fusion: An optimization-based multi-sensor state estimatorAn optimization-based multi-sensor state estimator - GitHub - HKUST-Aerial-Robotics/VINS-Fusion: An optimization-based multi-sensor state estimatorhttps://github.com/HKUST-Aerial-Robotics/VINS-Fusion

    cd ~/catkin_ws/src
    git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
    cd ../
    catkin_make
    source ~/catkin_ws/devel/setup.bash

VINS-Fusion仿真

注意把EKF设置为视觉定位,详见PX4飞控EKF配置教程。

启动仿真程序,注意launch文件中使用的是iris_stereo_camera.sdf


cd PX4_Firmware
roslaunch px4 indoor1.launch  

启动VINS-Fusion,注意其默认订阅的话题是iris_0的,如果要换别的vehicle,需要对应修改。另外临时文件存储路径也要对应修改。


gedit ~/catkin_ws/src/VINS-Fusion/config/xtdrone_sitl/px4_sitl_stereo_imu_config.yaml  

imu_topic: "/iris_0/imu_gazebo"
image0_topic: "/iris_0/stereo_camera/left/image_raw"
image1_topic: "/iris_0/stereo_camera/right/image_raw"
output_path: "/home/robin/catkin_ws/vins_output"
.
.
.
pose_graph_save_path: "/home/robin/catkin_ws/vins_output/pose_graph/"  # save and load path  

cd catkin_ws
bash scripts/xtdrone_run_vio.sh  

这时VINS-Fusion就启动了

 

由于VINS-Fusion发布的是Odometry类型的话题,我们要将其对应转为PX4所需的话题


cd ~/XTDrone/sensing/slam/vio
python vins_transfer.py iris 0

 

这时PX4仿真终端出现如下所示输出,代表视觉信息融合成功


INFO  [ecl/EKF] 1213644000: reset position to ev position
INFO  [ecl/EKF] 1213644000: commencing external vision position fusion
INFO  [ecl/EKF] 1213644000: commencing external vision yaw fusion  

然后建立通信,键盘控制起飞即可


cd ~/XTDrone/communication
python multirotor_communication.py iris 0   


cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel  

VIO的初始化

VINS-Fusion的双目+IMU可以在静止条件下完成初始化,因此不用额外考虑。但单目+IMU以及ORBSLAM3的单目/双目+IMU均需要在运动中初始化,在实物系统中,我们可以用手晃一晃飞机实现初始化,而仿真中必须起飞才能让无人机运动,但PX4的offboard模式如果没有定位数据,又无法起飞,这就造成了矛盾。因此仿真里只能用Gazebo真值给PX4定位,然后在飞行过程中初始化VIO,VIO的输出只用于测试精度,并不实际给无人机定位用。

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

飞行机器人(七)仿真平台XTDrone + PX4编译 的相关文章

  • PX4 Offboard Control with MAVROS--Takeoff(一键起飞)

    警告 xff1a 请先在仿真环境下进行测试 xff0c 能达到预期效果后在进行实际飞行测试 xff0c 以免发生意外 本篇文章只是用作学习交流 xff0c 实际飞行时如出现意外情况作者不予以负责 所需材料 1 PIXhawk或者Pixrac
  • px4自定义mavlink收不到消息的问题

    px4版本1 12稳定版 最近在做px4二次开发相关工作 按照网上的一些教程自定义了一个mavlink消息用来控制无人机 按照教程里面的单独开了一个xml来定义消息 最后生成的消息在px4端通过流传输的方式自己写的客户端可以收到消息 但是客
  • 编译PX4固件

    PX4编译 文章目录 PX4编译疑难杂症bug1bug2catkin build isolated 官方脚本Step1Step2 安装常用依赖Step3 创建并运行脚本Step4 补全代码子模块Step5 验证仿真 官方offboard 例
  • px4: v2的主板刷写v2的固件

    v2的主板刷写v2的固件 fengxuewei 64 fengxuewei Legion Y7000 2019 PG0 src Firmware changwei rc span class token function make span
  • PX4 ---- Mixer

    文章目录 Mixer 混合控制 作用输入输出装载混控文件MAVROS代码解析总结示例MAINAUX Mixer 混合控制 作用 经过位置控制和姿态控制后 xff0c 控制量通过 actuator controls发布 xff0c 其中 co
  • PX4模块设计之一:SITL & HITL模拟框架

    PX4模块设计之一 xff1a SITL amp HITL模拟框架 1 模拟框架1 1 SITL模拟框架1 2 HITL模拟框架 2 模拟器类型3 MAVLink API4 总结 基于PX4开源软件框架简明简介的框架设计 xff0c 逐步分
  • PX4模块设计之九:PX4飞行模式简介

    PX4模块设计之九 xff1a PX4飞行模式简介 关于模式的探讨1 需求角度1 1 多旋翼 MC multi copter 1 1 1 RC控制模式1 1 1 1 Position Mode1 1 1 2 Altitude Mode1 1
  • PX4模块设计之十八:Logger模块

    PX4模块设计之十八 xff1a Logger模块 1 Logger模块简介2 模块入口函数2 1 主入口logger main2 2 自定义子命令Logger custom command2 3 日志主题uORB注册 3 重要实现函数3
  • PX4模块设计之二十一:uORB消息管理模块

    PX4模块设计之二十一 xff1a uORB消息管理模块 1 uORB模块构建模式2 uORB消息管理函数2 1 状态查询2 2 资源利用2 3 模块启动2 4 模块停止3 uORB消息接口3 1 消息主题注册3 2 消息主题去注册3 3
  • PX4模块设计之二十三:自定义FlightTask

    PX4模块设计之二十三 xff1a 自定义FlightTask Step1 创建飞行模式文件夹Step2 创建飞行模式源代码和CMakeLists txt文件Step3 更新CMakeLists txt文件Step4 更新FlightTas
  • PX4模块设计之二十四:内部ADC模块

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

    PX4模块设计之四十六 xff1a dataman模块 1 dataman模块简介2 模块入口函数dataman main3 dataman模块重要函数3 1 start3 2 stop3 3 status3 4 task main 4 A
  • 关于github px4 gps 驱动的开发的总结

    源码编译上边已经写过文章了 遇到的几个问题 1 解决虚拟机不能共享文件夹的问题 一开始虚拟机的更新 vmware tools 是灰色的 xff0c 不能点 xff0c 然后通过关掉虚拟机 xff0c 然后再开启的时候 xff0c 在没有启动
  • px4_simple_example和uorb机制

    px4 simple app PX4 Autopilot src exampes px4 simple app xff0c 这个程序是用c语言调用orb API和poll机制订阅和发布通讯数据 xff0c 但是这个例子并不是既有接收又有发送
  • px4无人机常识介绍(固件,px4等)

    专业名词解释 aircraft 任何可以飞或者可以携带物品还是搭载旅客的飞行器统称为飞机 航空器 uav 无人驾驶飞机 vehicle 飞行器 airplane plane aero plane 有机翼和一个或多个引擎的飞行器统称为飞机 D
  • pixhawk px4 commander.cpp

    对于复杂的函数 xff0c 要做的就是看函数的输入是什么 来自哪里 xff0c 经过处理后得到什么 给谁用 xff0c 这样就可以把程序逻辑理清 中间的分析就是看函数如何处理的 span class hljs keyword extern
  • px4下载指定版本的固件、git用法

    https hub fastgit org PX4 PX4 Autopilot git describe tag 查看当前版本号 git tag l 查看所有版本 xff0c 也就是打个tag git checkout v1 9 1 跳转到
  • PX4中自定义MAVLink消息(记录)

    简单记录一下这个过程 一 自定义uORB消息 这一步比较简单 xff0c 首先在msg 中新建ca trajectory msg文件 uint64 timestamp time since system start span class t
  • 步骤三:PX4,Mavros的下载安装及代码测试

    1 安装Mavros sudo apt install ros melodic mavros ros melodic mavros extras 2 安装Mavros相关的 geographiclib dataset 此处已经加了ghpro
  • PX4之常用函数解读

    PX4Firmware 经常有人将Pixhawk PX4 APM还有ArduPilot弄混 这里首先还是简要说明一下 xff1a Pixhawk是飞控硬件平台 xff0c PX4和ArduPilot都是开源的可以烧写到Pixhawk飞控中的

随机推荐

  • CMake学习(3)—— 使用add_subdirectory()添加外部项目文件夹

    一般情况下 xff0c 我们的项目各个子项目都在一个总的项目根目录下 xff0c 但有的时候 xff0c 我们需要使用外部的文件夹 xff0c 怎么办呢 xff1f 例如 xff0c 在目录cxx utility example内的CMak
  • docker高级篇

    docker高级篇 一 dockerfile解析 1 dockerfile是什么 dockerfile是用来构建docker镜像的文本文件 xff0c 是有一条条构建镜像所需的指令和参数构成的脚本 2 dockerfile常用保留字指令 F
  • 死锁

    死锁 xff1a 死锁是指两个或两个以上的进程进在执行过程中 xff0c 由于资源竞争或由于相互通信而造成的一种阻塞式现象 xff0c 如果没有外力影响 那么它们将永远的持续下去 xff0c 此事称系统产生死锁现象 xff0c 这种永远互相
  • pygame入门教程-基础篇

    1 画布surface 我们先启动一个窗口 span class token keyword import span pygame pygame span class token punctuation span init span cla
  • LeetCode刷题(废弃)

    重要提示 xff1a 该博客不再更新 xff01 最新文章请参考LeetCode系列 xff01 为了更好地巩固算法知识 xff0c 打下扎实的计算机基础 好吧 xff0c 实在编不下去了 其实是闲着没事儿做 xff0c 不如动动脑 xff
  • 基于STM32的GPS模块驱动(AIR530)

    一 概述 由于做项目要用到GPS定位 xff0c 于是在某宝购买了这款GPS模块 项目采用的MCU是STM32 废话少说 xff0c 进入正题 二 GPS模块简介 Air530 模块是一款高性能 高集成度的多模卫星定位导航模块 体积小 功耗
  • UCOSIII中的任务调度和任务切换

    1 基本概念 任务调度的思想是 xff0c 几乎每时每刻让优先级别最高的就绪任务处于运行状态 xff0c 它由任务调度器来完成这个工作 xff08 任务级调度器OSShed 和中断级调度器OSIntExit xff09 任务切换 xff0c
  • 嵌入式开发者都该了解的10大算法

    算法一 xff1a 快速排序法 快速排序是由东尼 霍尔所发展的一种排序算法 在平均状况下 xff0c 排序 n 个项目要 n log n 次比较 在最坏状况下则需要 n2 次比较 xff0c 但这种状况并不常见 事实上 xff0c 快速排序
  • 蓝桥杯备赛——第八届省赛(模拟升降控制器)

    第八届省赛题目的控制逻辑相比之前更加复杂 xff0c 需要花一定的时间来理清逻辑 xff08 利用状态机 xff09 虽然之前对状态机有所了解 xff0c 但这是我第一次使用状态机 注 xff1a 1 PWM输出 xff1a PA6 TIM
  • C++实现http客户端连接服务端及客户端json数据的解析

    上一篇链接 xff1a https blog csdn net hfuu1504011020 article details 88785448 上一篇中说到Unicode转utf8格式的过程 xff0c 其中谈及到http以及json数据的
  • Linux版本 网络调试助手 发布

    Linux版本 网络调试助手 发布 Windows上有些小的调试助手软件使用起来很方便 xff0c Linux上也想用 还不如何自己写一个 xff0c 但是会写代码 xff0c 但并不会设计软件 那么就参考了一款Windows下的名字叫 T
  • No rule to make target错误解决方案

    报错 xff1a No rule to make target My Wall Paper2 img png needed by debug qrc resource cpp Stop 解决方案 xff1a 把 qrc文件删了新建一个res
  • C++难学吗?为什么难学?如何去学?

    C 43 43 难学吗 xff1f 为什么难学 xff1f 如何去学 xff1f 经常上网 xff0c 发现最多人问的问题就是C 43 43 难不难学 而得到的回答却基本上是说很难学 xff0c 甚至有说要两年才算入门 我开始是学VB的 x
  • 装 ros 报错 E: Unable to locate package ros-melodic-desktop-full

    换了清华源也不行 xff0c 后来发现有另一个安装方法 xff1a http wiki ros org ROS Installation TwoLineInstall wget c https raw githubusercontent c
  • ROS中map,odom坐标系的理解以及acml和robot_pose_ekf的对比和小车漂移方法解决

    之前一直不知道odom xff0c map到底是什么关系 xff0c 看了这个博客 xff1a https blog csdn net u012686154 article details 88174195 才了解了一些 这边记录我自己的看
  • 词根 -pose-,-posit- 表示“放置,站在那里,停在那里”

    pose n 姿势 姿态 v 使 摆好姿势 形成 引起 造成 vi 摆姿势 佯装 矫揉造作 poser n 装腔作势者 难题 compose v 组成 xff1b 作曲 xff1b 使镇定 xff08 com 一起 43 pose 放到一起
  • linux网络调试发包抓包工具

    目录 1 发包工具 1 1 sendip 1 2 tcpreply 2 抓包工具 2 1 tcpdump 2 2 tcpflow 3 速率测试工具 4 加密工具 4 1 tcpcryptd 5 linux网络编程 5 1 tcp 5 2 u
  • 飞行机器人(六)仿真平台- XTDrone Simulation Platform

    ubuntu18 04安装Ceres https www cnblogs com qilai p 13654810 html Installation Ceres Solver http ceres solver org installat
  • esp8266接入天猫精灵 实现控制家庭电灯

    之前 xff0c 我们看过很多关于Esp8266物联网开发的实例 现在很多家里照顾娃 xff0c 每天晚上都要去开灯给娃喂奶粉 家中有几个灯是用的小米的 xff0c 用米家APP可以控制 但有几个小夜灯不是物联网设备 xff0c 无法连接
  • 飞行机器人(七)仿真平台XTDrone + PX4编译

    0 编译PX4固件 参考仿真平台基础配置教程 xff08 中文详细教程 xff09 仿真平台基础配置 语雀 yuque com https www yuque com xtdrone manual cn basic config 按照教程