ubuntu18+jetson nano +px4+ros <——>QGC+ubuntu20+ros(关于仿真和实物运行的持续记录心得)

2023-05-16

持续更新......

写在前面:

(1)如果存在rosdep问题参考Ubuntu20.04ROS rosdep update超时失败解决方法_npu2018302257的博客-CSDN博客

(2)如果存在一些github.com或者是raw.githubusercontent.com等其他一些好像网络的问题,在这个网页搜索,并以xxx.xxx.xxx.xxx github.com的格式写入 sudo gedit /etc/hosts

sudo /etc/init.d/networking restart

多个地点Ping服务器,网站测速 - 站长工具

(3)如果git clone 的时候出现failed之类的可以该一下dns:sudo gedit /etc/resolv.conf
改为以下,再刷新一下dns服务
nameserver 8.8.8.8
nameserver 114.114.114.114

(4)提前配置静态ip,后续可以摆脱ip动态分配带来的不便

一、仿真环境

my QGC env:双系统下的ubuntu20+ros noetic(anaconda也可以装一个)

(巨人的肩膀):PX4 User Guide

XTDrone使用文档 · 语雀          

1. 安装QGC

QGC - QGroundControl - Drone Control

2.仿真步骤,还参考了:

【无人机】PX4,ROS,Ubuntu20仿真运行_lunei的博客-CSDN博客

整理:

最先安装GeographicLib,时间很长,失败了就多试几次!!

wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh

sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步很慢
 # 安装px4 的仿真配置
 git clone https://github.com/PX4/Firmware.git

 git checkout v1.11.3

 cd Firmware

 git submodule update --init --recursive #中断了就重复这一句

 cd Tools/setup

 sudo ./ubuntu.sh #pip安装会慢,可以编辑一下该文件,在pip 安装那一行末尾加 -i
 # https://pypi.tuna.tsinghua.edu.cn/simple

 
 #安装mavros
 cd 

 sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras
  
 sudo apt-get install python3-catkin-tools python3-rosinstall-generator -y
 
 rosinstall_generator --rosdistro noetic mavlink | tee /tmp/mavros.rosinstall
 
 rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall
 
 rosinstall_generator --upstream-development mavros | tee -a /tmp/mavros.rosinstall

 mkdir -p ~/catkin_ws/src
 
 cd ~/catkin_ws

 catkin init

 wstool init src

 wstool merge -t src /tmp/mavros.rosinstall

 wstool update -t src -j16

 rosdep install --from-paths src --ignore-src -y

 catkin build

 source devel/setup.bash #可以写到~/.bashrc 中
 #尝试仿真小例子
 cd src
 
 catkin_create_pkg offboard_pkg roscpp std_msgs geometry_msgs mavros_msgs
 
 cd offboard_pkg/src

 gedit offboard_node.cpp#网上一搜就有

 cd ..
 
 gedit CMakeLists.txt
 #add_executable(offboard_node src/offboard_node.cpp)
 #target_link_libraries(offboard_node ${catkin_LIBRARIES})
 
 cd ~/catkin_ws
 catkin build
 catkin init
 source devel/setup.bash

cd /Firmware

make px4_sitl gazebo_iris
roscore
 
 
打开QGroundControl
 
新开终端执行
 
roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
 
 
#roslaunch mavros px4.launch fcu_url:="udp://:14540@192.168.1.196:14557"



rosrun offboard_pkg offboard_node

offboard 测试起飞 

二、实物

主要搭建框架(参考px4 user guide):从ground station和vehicle来记录:

Ground station:

经过仿真的环境,基本环境已经搭建好了

vehicle

(1)查看固件是否需要重新刷新

若原本就是px4就不需要刷新<跳过这一小段> ,我的飞控pixhawk  2.4.8一开始刷固件是APM,许多px4的参数都没有,px4固件在这https://github.com/PX4/PX4-Autopilot/releases/tag/v1.11.0

所以需要重新刷px4固件,还不能刷太新的,会有问题,步骤参考,入门视频20分钟入门,利用QGC下载px4固件、校准传感器,注意事项_哔哩哔哩_bilibili:或者加载固件 | PX4 自动驾驶用户指南

点击选择advanced setting的最后一项,加载固件(我的是realse版本):px4fmu-v2-1.9.0.px4

烧录后对每一项进行校准,使得summury 的灯都是绿的。

注意会遇到的错误(在Qgc显示diconnect的时候,可以尝试重启电脑或者是重新烧录固件<diconnect 也可以烧录固件的>):如果仍然不能解锁可以连接地面站看看有啥报错

如果报错mag#0 fail uncalibrated :说明传感器校准有误,重新校准即可。校准选项有4个,分别为accel、gyro、mag、level、airspeed(加速计、陀螺仪、磁罗盘、水平仪和空速计)。

解锁的时候记得打开安全开关。

    完成后可以装桨测试一下,下面还是要拿桨的。

  

(2)机载板配置:jetsonnano ,一开始配置环境的时候连上鼠标键盘,其中视频对我的帮助很大https://www.youtube.com/watch?v=Brkk0ZmnGgs

连线:按照视频的步骤,连接pixhawk 2.4.8 的telem2 端口到串口pin8、10、gnd引脚,其中接口可以自己焊一个。rx连tx,tx连rx ,共地,因为烧录的是realense版本,在QGC需要对px4 参数SYS_COMPANION设置为921600,打开telem2串口传输设置。

 

连接之后,修改/dev/ttyTHS1权限,用cat看看有没有乱码传过来 ,波特率是可以通过usb或者数传连接地面站进行修改的。

launch设置:jetsonnano上装的是ubuntu18系统+ros,其中mavros已经安装

在/opt/ros/melodic/share/mavros中的launch中,复制px4.launch中,新建一个mypx4.launch,对"fcu_url"与“gcs_url"进行修改。

<launch>
	<!-- vim: set ft=xml noet : -->
	<!-- example launch script for PX4 based FCU's -->

	<arg name="fcu_url" default="/dev/ttyTHS1:921600" />
	<arg name="gcs_url" default="udp://@192.168.0.108:14550" /> <!--QGC-->
	<arg name="tgt_system" default="1" />
	<arg name="tgt_component" default="1" />
	<arg name="log_output" default="screen" />
	<arg name="fcu_protocol" default="v2.0" />
	<arg name="respawn_mavros" default="false" />

	<include file="$(find mavros)/launch/node.launch">
		<arg name="pluginlists_yaml" value="$(find mavros)/launch/px4_pluginlists.yaml" />
		<arg name="config_yaml" value="$(find mavros)/launch/px4_config.yaml" />

		<arg name="fcu_url" value="$(arg fcu_url)" />
		<arg name="gcs_url" value="$(arg gcs_url)" />
		<arg name="tgt_system" value="$(arg tgt_system)" />
		<arg name="tgt_component" value="$(arg tgt_component)" />
		<arg name="log_output" value="$(arg log_output)" />
		<arg name="fcu_protocol" value="$(arg fcu_protocol)" />
		<arg name="respawn_mavros" default="$(arg respawn_mavros)" />
	</include>
</launch>

测试:(注意,开始测试的时候先不要装桨)

(1)ros主从机设置

参考:ROS主从机配置_月夕花晨KaCa的博客-CSDN博客

一遍成功的ROS主从机详细配置_zhanghm1995的博客-CSDN博客_ros主从机设置

这里的主机指的是:ground station

(2)ground station 启动roscore

         ssh连接jeston nano,sudo adduser $USER xxx,并在开放串口的权限,roslaunch启动 mypx4.launch,在电脑端可以发现地面站已经被连接了,若没有连接上查看launch文件的ip地址是否对应,其次检查QGC下的application Setting下的udp link端口设置,rostopic echo /mavros/state 应该可以看到这些,如果看不到,检查master端下从机的hostname和ip。

 (务必在gps信号良好的时候)接管切换测试:打开安全开关,解锁,打开offboard 模式(如果没有gps信号地面站会显示拒绝打开,这可能是因为EKF2_GPS_CHECK 参数设置),有错误提示但是能飞。

 地面站端电脑,开启键盘控制节点,键盘接管,可以控制后,关闭节点,关闭offboard模式,回到遥控接管,上锁,查看日志有啥问题。

 

 运行过程终端报错:遥控器切换的,但是如果是程序控制的话是没有影响

failsafe enabled: no offboard  (PX4 has a number of safety features to protect and recover your vehicle if something goes wrong)

错误整理:OMG,真的有些错误困扰了我很多天或这很多个小时,但是真的一下子就解决了!!!! 

1. offboard 模式突然进不去

 这时候,我怀疑了很多很多,因为是有提示CMD:Unexpected command 176, result 1

 我查了好多,没查到结果,最后我检查了一下发现是网络配置问题。超级注意修改一下/etc/hosts文件,主从机的配置问题!

2.FCU: Preflight Fail: High Accelerometer Bias
     不用多查了,直接对Accelerometer重新进行标定

3. imu帧率提高失败

      刷了1.9固件之后发现,飞控传回来的imu帧率只有十帧,用mavlink也没有提升上去。

不用多查了,串口参数配置问题,mav_0_config=102,mav_0_mode=0

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

ubuntu18+jetson nano +px4+ros <——>QGC+ubuntu20+ros(关于仿真和实物运行的持续记录心得) 的相关文章

  • MATLAB GPU加速

    以前使用matlab 的时候 xff0c 很多人都用过里面的并行工具箱 xff0c 用的最多的应该就是parfor 实际上 xff0c matlab里面已经有不少工具箱里面都有了支持GPU加速的函数 使用matlab 43 GPU加速的前提
  • 论如何最低成本进入 智能家居、人工智能、安卓主板 的领域

    原创 xff1a http blog csdn net kylin fire zeng xff0c 欢迎转载分享 xff0c 共同进步 xff0c 但请注明出处啊 xff0c 尊重他人成果
  • 为什么说枚举单例模式是最安全的?

    单例模式有很多种 xff0c 如 xff1a 饿汉式 线程安全 xff0c 但是浪费资源 xff1b 懒汉式 懒汉式又分为 xff0c 同步锁单例模式 性能较差 xff1b 双重判断同步锁单例模式 静态内部类单例模式 以上单例模式大多数都是
  • Qt - 信号与槽的连接方式

    信号与槽的连接方式主要有以下5种方式 xff1a 先看代码 xff1a ifndef MYOBJECT H define MYOBJECT H include lt QObject gt class MyObject public QObj
  • vslam流程框架介绍

    平常扫地机产品上经常听说使用了vslam技术 xff0c 那么这个vslam到底是什么呢 xff0c 我们下面一起来看看 vslam是什么 xff1f VSLAM 即 Visual Simultaneous Localization and
  • linux出现oom分析流程

    背景 linux内核有个机制叫OOM killer Out Of Memory killer xff0c 当系统需要申请内存却申请不到时 xff0c OOM killer会检查当前进程中占用内存最大者 xff0c 将其杀掉 xff0c 腾出
  • 浅入浅出linux中断子系统

    浅入浅出linux中断子系统 xff0c 如需深入 xff0c 直接跳转重要参考章节 什么是中断 xff1f 当CPU被某些信号触发 xff0c CPU暂停当前工作 xff0c 转而处理信号的事件 xff0c 简单的称它为中断 xff0c
  • ROS2交叉编译操作

    ROS2移植过程 在移植ROS2之前 先确认需要移植的版本以及其对应的依赖 这些信息可以在 ROS 2 Releases and Target Platforms 中有介绍 可依据自身需要使用的平台 参考该链接进行选择 下面以ROS2 Hu
  • gstreamer学习笔记---pad定义、连接、流动

    pad相当于element的接口 xff0c 各个element就是通过pad连接进行传输数据 xff0c 同时pad会通过caps限制特定的数据类型通过 xff0c 只有当两个pad的caps数据类型一致时才可以建立连接 那么pad在el
  • gstreamer学习笔记---gst-omx

    一 openMAX理解1 gst omx是基于openMAX开发的插件 xff0c 所以在介绍gst omx之前 xff0c 我们先了解一下openMAX openMAX xff1a open media acceleration xff0
  • csi mipi信号解析

    1 传输模式 LP xff08 Low Power xff09 模式 xff1a 用于传输控制信号 xff0c 最高速率 10 MHz HS xff08 High Speed xff09 模式 xff1a 用于高速传输数据 xff0c 速率
  • 程序调试方法

    记录初衷 xff1a 遇到问题 xff0c 按照一套方法 xff0c 把问题化解 xff0c 逐渐的内化为心法 xff0c 形成经验 xff0c 这就是成长的过程 就好比吃的猪肉 xff0c 经过消化 分解 吸收后变成了自己肉 程序分为三种
  • 博客八:基于xr871实现wifi音响产品

    原创 xff1a http blog csdn net kylin fire zeng xff0c 欢迎转载分享 xff0c 共同进步 xff0c 但请注明出处啊 xff0c 尊重他人成果
  • 用 Docker 部署一个 Python 应用

    Flask项目 这里为了演示的方便 xff0c 我们就写一个简单的Flask项目 xff0c 代码如下 from flask import Flask app 61 Flask name 64 app route 39 39 def ind
  • Realsence D455标定并运行Vins-Fusion

    文章目录 一 双目相机标定1 标定板准备1 1 打印标定板1 2 标定板信息原始pdf的格子参数是 xff1a 调整后的格子参数是 xff1a 2 左右目相机数据准备2 1 修改rs camera launch内容2 2 关闭结构光2 3
  • 【Linux命令】文件和目录权限

    Linux命令 文件和目录权限 权限查看 众所周知 xff0c 可以使用 ls l 来查看文件和目录的详细信息 xff0c 那么输出的东西是什么呢 xff1f 我们先来看 文件类型 xff1a xff1a 普通文件 xff1b d xff1
  • 【设计模式】单例模式

    设计模式 单例模式 1 为什么要用单例 xff1f 单例设计模式 xff08 Singleton Design Pattern xff09 xff1a 一个类只允许创建一个对象 xff08 或实例 xff09 1 1 处理资源访问冲突 例如
  • 【JAVA】基础语法

    JAVA 基础语法 JAVA面向对象三大特征 封装 继承 多态 1 类型转换 1 1 自动类型转换 自动类型转换 类型范围小的变量 可以直接赋值给类型范围大的变量 1 2 表达式的自动类型转换 在表达式中 小范围类型的变量会自动转换成当前较
  • 【Java技巧】如何在HashMap中插入重复的key?

    Java技巧 如何在HashMap中插入重复的key xff1f 问题引出 我们都知道 xff0c Map 的 key 需要保证唯一性 插入重复的 key 会被最后插入的 key 所覆盖 xff0c 如 xff1a span class t
  • ArrayList源码分析

    ArrayList源码分析 注意 本笔记分析对象为 Java8 版本 随版本不同 源码会发生变化 1 ArrayList类图与简介 ArrayList是一个 非线程安全 基于数组实现的一个动态数组 可以看到 它的顶层接口是 Collecti

随机推荐

  • Vector源码分析

    Vector源码分析 1 Vector基本介绍与类图 Vector 类实现了一个动态数组 和 ArrayList 很相似 但是两者是不同的 Vector 是同步访问的 Vector 包含了许多传统的方法 这些方法不属于集合框架 Vector
  • LinkedList源码分析

    LinkedList源码分析 注意 本笔记分析对象为 Java8 版本 随版本不同 源码会发生变化 基本介绍与类图 LinkedList 同时实现了 List 接口和 Deque 对口 也就是收它既可以看作一个顺序容器 又可以看作一个队列
  • 【网管日记】Linux防火墙操作

    网管日记 Linux防火墙操作 记录一下常用的Linux防火墙操作 xff1a 查看防火墙状态 systemctl status firewalld 或 firewall cmd state暂时关闭防火墙 systemctl stop fi
  • (毕业设计资料)基于51单片机的智能窗控制系统设计

    实现参考功能 1 可实时显示年月日 时分秒 光照强度和控制模式 xff1b 2 可通过手动控制窗帘的开启和关闭 xff1b 3 可通过设置开启和关闭时间来控制窗帘 xff1b 4 可通过检测光照强度的亮暗来控制窗帘 xff1b 5 使用步进
  • 网络操作系统 第十二章 FTP服务器的安装与配置

    习题 1 简述FTP的连接模式 FTP的连接模式有PORT和PASV两种 xff0c 其中PORT模式是主动模式 xff0c PASV是被动模式 xff0c 这里所说的主动和被动都是相对于服务器而言的 如果是主动模式 xff0c 数据端口为
  • 【网管日记】MySQL主从复制

    MySQL主从复制 基本介绍 MySQL 主从复制是一个异步的复制过程 xff0c 底层是基于 Mysql 数据库自带的 二进制日志 功能 一台或多台 MySQL 数据库 xff08 slave xff0c 即 从库 xff09 从另一台
  • 【网管日记】Nginx基本介绍、安装与使用

    Nginx基本使用 基本介绍 Nginx是一款轻量级的Web服务器 反向代理服务器及电子邮件 xff08 IMAP POP3 xff09 代理服务器 其特点是 占用内存少 xff0c 并发能力强 xff0c 事实上nginx的并发能力在同类
  • 【网管日记】Nginx报错踩坑记录

    网管日记 Nginx报错踩坑记录 1 防火墙没关闭 自启 error 21113 0 21 connect failed 113 No route to host while connecting to upstream 解决方法 xff1
  • 【数据结构与算法】Manacher算法

    Manacher算法 https github com SongJianHIT DataStructurs Algorithm tree main src algorithms manacher 基本介绍 Manacher 算法常用于 求一
  • 【数据结构与算法】DP路径问题

    问题 xff1a 最小路径和 给定一个包含非负整数的 m x n 网格 grid xff0c 请找出一条从左上角到右下角的路径 xff0c 使得路径上的数字总和为最小 说明 xff1a 每次只能向下或者向右移动一步 示例 1 xff1a 输
  • 【Java开发】Dependency ‘XXX‘ not found

    Java开发 Dependency XXX not found 在配置 pom 文件时 xff0c 遇到 Dependency 39 com google guava guava 30 0 jre 39 not found 方法一 xff1
  • 【Mysql】日期函数总结

    Mysql 日期函数总结 1 获取日期时间函数 1 1 获取当前日期时间 span class token keyword SELECT span span class token function NOW span span class
  • 【Java开发笔记】线程池

    Java开发笔记 线程池 线程池 ThreadPoolExecutor 的七大核心参数 xff1a 核心线程数 corePoolSize最大线程数 maxinumPoolSize超过核心线程数的闲余线程存活时间 keepAliveTime存
  • 【Java开发笔记】分库分表

    Java开发笔记 分库分表 1 分库分表基本概述 为什么要分库分表 xff1f 性能角度 分库分表就是为了解决由于数据量多大而导致数据库性能下降的问题 xff1a 原来独立的数据库拆分成若干数据库组成将原来的大表 xff08 存储近千万数据
  • 【网关日记】配置阿里云容器镜像加速

    运行 xff1a sudo mkdir p etc docker sudo tee etc docker daemon json lt lt 39 EOF 39 34 registry mirrors 34 34 https qbd2mty
  • 【毕业设计】基于51单片机的智能窗帘设计(原理图+原理图+仿真+论文)

    按键1 xff1a 加 xff08 手动开启窗帘 按键2 xff1a 减 xff08 手动关闭窗帘 xff09 按键3 xff1a 进入定时模式开启时间和光控阈值数值大小的开启 按键4 xff1a 进入当前时间的设置 xff08 年 月 日
  • 【MySQL】基本架构与执行过程

    MySQL 基本架构与执行过程 1 日志 MySQL 是通过文件系统对数据索引后进行存储的 xff0c MySQL 从物理结构上可以分为 日志文件 和 数据及索引文件 MySQL 在 Linux 中的数据索引文件和日志文件通常放在 var
  • 【MySQL】InnoDB存储引擎

    MySQL InnoDB存储引擎 1 存储引擎的种类 常见的有三种 xff1a 存储引擎说明InnoDB5 5 版本后 MySQL 的 默认数据库存储引擎 xff0c 支持事务和行级锁 xff0c 比 MyISAM 处理 xff0c 速度稍
  • 【PCL自学:Feature5】视点特征直方图VFH概念及使用 (持续更新)

    一 视点特征直方图 xff08 VFH xff09 原理 这篇博文描述了视点特征直方图 Viewpoint Feature Histogram VFH 描述符 xff0c 在一些其他文章也称为视角特征直方图 xff0c 这是一种用于聚类识别
  • ubuntu18+jetson nano +px4+ros <——>QGC+ubuntu20+ros(关于仿真和实物运行的持续记录心得)

    持续更新 写在前面 xff1a 1 如果存在rosdep问题参考Ubuntu20 04ROS rosdep update超时失败解决方法 npu2018302257的博客 CSDN博客 2 如果存在一些github com或者是raw gi