0. 编译PX4固件

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

仿真平台基础配置 · 语雀 (yuque.com)https://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_time0  4.185660e+06    0.00e+00    1.09e+08   0.00e+00   0.00e+00  1.00e+04       0    7.59e-02    3.37e-011  1.062590e+05    4.08e+06    8.99e+06   5.36e+02   9.82e-01  3.00e+04       1    1.65e-01    5.03e-012  4.992817e+04    5.63e+04    8.32e+06   3.19e+02   6.52e-01  3.09e+04       1    1.45e-01    6.48e-013  1.899774e+04    3.09e+04    1.60e+06   1.24e+02   9.77e-01  9.26e+04       1    1.43e-01    7.92e-014  1.808729e+04    9.10e+02    3.97e+05   6.39e+01   9.51e-01  2.78e+05       1    1.45e-01    9.36e-015  1.803399e+04    5.33e+01    1.48e+04   1.23e+01   9.99e-01  8.33e+05       1    1.45e-01    1.08e+006  1.803390e+04    9.02e-02    6.35e+01   8.00e-01   1.00e+00  2.50e+06       1    1.50e-01    1.23e+00Solver 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                   167436Minimizer                        TRUST_REGIONDense linear algebra library            EIGEN
Trust region strategy     LEVENBERG_MARQUARDTGiven                     Used
Linear solver                     DENSE_SCHUR              DENSE_SCHUR
Threads                                     1                        1
Linear solver ordering              AUTOMATIC                 22106,16
Schur structure                         2,3,9                    2,3,9Cost:
Initial                          4.185660e+06
Final                            1.803390e+04
Change                           4.167626e+06Minimizer iterations                        7
Successful steps                            7
Unsuccessful steps                          0Time (in seconds):
Preprocessor                         0.121654Residual only evaluation           0.065968 (7)Jacobian & residual evaluation     0.303356 (7)Linear solver                      0.436650 (7)
Minimizer                            0.890535Postprocessor                        0.001684
Total                                1.013873Termination:                      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/srcgit clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.gitcd ../catkin_makesource ~/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的输出只用于测试精度,并不实际给无人机定位用。

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

  1. 无人机仿真—PX4编译,gazebo仿真及简单off board控制模式下无人机起飞

    无人机仿真-PX4编译,gazebo仿真及简单off board控制模式下无人机起飞 前言 在上篇记录中,已经对整体的PX4仿真环境有了一定的了解,现如今就要开始对无人机进行起飞等仿真环境工作,在整体 ...

  2. 机器人足球仿真中的三角进攻算法研究

    摘 要:机器人足球仿真系统提供了实时对抗环境下研究多智能体协作问题的一个良好平台.本文基于仿真环境下的理论基础及模型,通过逐场次逐帧地测试与分析研究,设计出用于控制机器人协作队形的三角进攻算法,并对基 ...

  3. Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建(XTDrone的)

    摘自:https://www.ngui.cc/51cto/show-23557.html Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建 编程学习 · 2020/7/12 1 ...

  4. 飞行机器人(三)DJI平台OSDK ROS 编译及使用

    系列文章目录 第一章 飞行机器人(一)DJI平台OSDK简介飞行机器人(一)DJI平台OSDK简介_Techblog of HaoWANG-CSDN博客DJI OSDK/OSDK-ROS for M6 ...

  5. Ubuntu18.04配置搭建基于Gazebo的虚拟仿真平台(Px4):无人机(UAV)、无人车等模拟实验平台

    这篇我觉得是写得比较详细完整的 摘自:https://dgzc.ganahe.top/ganahe/2021/uavgazebomoni.html Ubuntu18.04配置搭建基于Gazebo的虚拟 ...

  6. Ubuntu18.04基于ROS和PX4的仿真平台配置

    1.前言 作者只是一名双非本科院校飞控专业的大二学生,想以此记录一下自学飞控的经历,也希望能给刚刚入门的同学一些微薄的帮助. 这个环境的安装可以说是西天取经一般,但安装完后发现如果有领路的人,其实花费 ...

  7. XTDrone无人机、无人车等自动控制仿真平台

    简要背景 近年来,无人机的智能化程度不断提高,集群的规模不断增大,在这种背景下,良好的无人机通用仿真平台的重要性越发凸显.相较于无人车和地面机器人,无人机更容易出现失控问题.因此,如果利用真实无人机进 ...

  8. XTDrone仿真平台与Prometheus仿真平台

    常见的无人机仿真平台大都是用于对底层飞控算法的仿真与调试,XTDrone仿真平台与Prometheus仿真平台可以针对无人机上层算法进行仿真或者进行编队仿真,这两者都采用ROS+PX4+Gazebo开 ...

  9. XTDrone无人机仿真平台

    XTDrone无人机仿真平台 背景 XTDrone 展示 背景 近年来,无人机的智能化程度不断提高,集群的规模不断增大,在这种背景下,良好的无人机通用仿真平台的重要性越发凸显.相较于无人车和地面机器人 ...

最新文章

  1. Ajax基础知识梳理
  2. Linux必学60个命令文件处理
  3. 【转】贴片电阻的工作寿命
  4. Fastreport.Net用户手册:报表页
  5. 【PAT甲级 找到出现次数过半的数字】1054 The Dominant Color (20 分) C++
  6. r语言dataellipse_r – 在ggplot2中微调stat_ellipse()
  7. 【C语言基础】C语言异常捕获机制 - setjmp
  8. 【系列8】使用Dockerfile创建带MongoDB的Centos Docker镜像
  9. 3dmax phoenix fd4.0汉化补丁_教你屏蔽 Win10 Flash 删除补丁 - Windows 10
  10. chainmaker 区块中最大交易数 block_tx_capacity设置 区块大小 区块容量
  11. 【华为 OJ 】成绩排序
  12. xampp修改mysql默认端口需要修改的地方
  13. Python 植物大战僵尸代码实现
  14. 【学习笔记】用Excel制作随机抽奖器(Visual Basic编程)。
  15. 交换机解决电脑IP地址冲突
  16. 四波混频 matlab,四波混频(four-wave mixing)
  17. 有信仰与无信仰家族200年对比,让世人震惊!!
  18. Summers Crafts Broad Role in Reshaping Economy
  19. 在使用计算机时可以用什么键关机,电脑死机按什么键关机重启
  20. android adb查看手机内存使用情况

热门文章

  1. 【OpenGL ES】绘制立方体
  2. 正则表达式—匹配除了 png格式的照片,并消除英文大小问题
  3. 第十七届全国大学生智能汽车竞赛全国总决赛成绩公告
  4. c语言数组去重的函数,C语言之函数 - osc_wpg0dgym的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. 如何关闭苹果手机自动扣费_杭州网友喊话苹果:卸载了还能自动扣费?免密支付背后风险不少,这个功能千万记得选...
  6. 虚拟企业:21世纪企业管理新模式
  7. JVM内存模型和性能调优:垃圾收集算法:每秒几十万并发的系统优化JVM - 第34篇
  8. python函数体以冒号起始、并且是缩进格式的_函数体以冒号开始,并且是缩进格式的。_学小易找答案...
  9. 名仕在线袖扣商城!玛诗杜MSKOO_袖扣专家_高档袖扣_袖扣礼品_珐琅袖扣_水晶袖扣_不锈钢袖扣_施华洛世奇袖扣 - Powered by ECShop...
  10. mysql中commi的含义_mysql 常用参数含义(补充中.....)