ROS四旋翼无人机快速上手指南(3):工作环境文件框架与各功能包整体讲解

2023-05-16

成就更好的自己

这一章节主要讲解无人机平台的控制文件架构和各个功能包组成和用法。

uav_ws与shell源码链接:

https://gitee.com/theroadofengineers/ros-uav


目录

主要项目文件架构概述

uav_ws工作空间

Vision_ws工作空间

ROS官方功能包安装路径——Lib文件夹:

RealSenseT265追踪相机功能包

Mavlink与MAVROS功能包

Serial底层串口驱动与应用级功能包

USB-CAM摄像头功能包

Shell脚本文件夹


主要项目文件架构概述

无人机平台主要文件架构有四个文件夹,分别为uav_ws,shell,vision_ws,lib;

其中uav_ws,shell,vision_ws文件夹位于主文件夹:

lib文件夹位于系统ROS的安装目录内:

uav_ws和vision_ws是自己创建的工作空间,分别放置无人机飞行控制及传感器数据处理的项目和视觉或神经网络目标识别的项目,shell放的是同时启动多个luanch文件的脚本文件,lib(ROS下载功能包的默认路径)存放的是从ROS官网下载的官方功能包。

进行最简单的飞行控制至少需要uav_ws和lib中的内容,这两者可以进行无人机基础的姿态分析与控制,指令传送,数据结算,指定航点飞行等非常基础的工作。因为所构成ROS系统的最小单位是功能包,如果添加视觉等人工智能元素,需要另建立新的工作空间或者功能包。

 

uav_ws工作空间

Uav_ws工作空间内部最为基础的功能包是px4_com功能包,此功能包直接通过mavlink协议控制飞行轨迹,油门张量,姿态调整,飞行数据信息融合等众多与飞行息息相关的功能,在算法开发过程中,算法结算出的飞行信息将会直接输送给px4_com,因此此功能包尤为重要,几乎其他所有的功能包都是为它服务,在下一章我们将进行全面的分析与讲解。

 

下面依次说一下其余功能包的作用:

Camera_com:自定义的摄像头功能包,存放着与单目USB摄像头有关的程序,底层调用ROS官方功能包usb_cam获取图像和控制摄像头,目前里面暂时只有一个控制摄像头拍照和录像的python程序,开发者与摄像头有关的程序可以放到这里。

Nlink_parser:暂时没有用到,不用管。

Px4_com:功能包名称为px4_command,是一个由阿木(AMOV)实验室研发并开源的一款基于px4自驾仪控制的底层级软件工具包,存放着与飞行控制有着直接关系的代码,通过接受或调用其他功能包节点的数据或服务进行控制,可以在这里开发飞行程序和修改飞行参数,下一章节会重点讲解。

Ros_slam:自定义的slam算法功能包,存放着上层slam算法有关的应用级代码,为px4_com中的飞行控制规划路径,开发的slam算法放在这里。

Rplidar_ros:激光雷达的功能包,由思岚科技官网提供,直接下载编译即可使用。

Serial_port:自定义的串口功能包,存放与外接串口模块(例如zigbee模块,SIM卡模块等)通信程序,底层调用的是ROS官方功能包serial。

Track_pkg:自定义的视觉追踪功能包,其实这个功能包应该放到vision_ws工作空间;此功能包主要提供图像处理,底层调用ROS官方功能包usb_cam获取图像和控制摄像头,cv_bridge和image_transport进行图像数据传送与转化,目的是让图像能被opencv进行处理。

 

Vision_ws工作空间

里面只有一个功能包,因为博主上一个项目做到了使用基于darknet框架的神经网络跑yolov3算法进行空中识别目标,因此内部暂时只有一个功能包用来神经网络部署和运行目标检测。因为darknet体积过大且程序单调,vision_ws的例程就不再上传。

 

ROS官方功能包安装路径——Lib文件夹:

在uav_ws和vision_ws工作空间中调用的ROS官方底层功能包在lib文件夹,每当通过

sudo apt-get install ros-melodic-xxxxxx

下载某个功能包后,会在/opt/ros/melodic/share/路径下生成一个对应的功能包文件夹,存放着这个功能包有关的消息类型,功能包属性,launch启动文件,rviz仿真文件等文件;同时会在/opt/ros/melodic/lib/路径下也生成一个对应的功能包文件夹,里面存放着此功能包的节点的二进制可执行文件和执行脚本。

ROS无人机主要用到的官方功能包如下所示。

RealSenseT265追踪相机功能包

安装命令:sudo apt-get install ros-melodic-realsense-camera

作用:此功能包封装极度完善,直接开启T265相机并进行坐标计算和回传。

操作:roslaunch realsense2_camera rs_t265.launch即可使用,节点会将tf空间坐标和IMU等信息发布出来

注意事项:

当出现了RealSense Node Is Up!说明节点正常工作;

当光线过暗或遮挡摄像头时,相机看不到环境,会出现以下报错:

rs_t265.launch所启动的两个节点只发布了位姿信息,没有发布双鱼眼相机的视频流

此外,关于T265使用坑点,请看本系列第一篇指南:

https://blog.csdn.net/qq_36098477/article/details/115470924?spm=1001.2014.3001.5502

 

Mavlink与MAVROS功能包

安装命令:sudo apt-get install ros-melodic-mavros

作用:此功能包采用mavlink协议可直接对烧录了PX4固件的自驾仪进行通信,只需要编写上层程序进行调用和控制即可,此功能包直接对接于PX4_com功能包和自驾仪。

操作:roslaunch mavros px4.launch fcu_url:="/dev/ttyTHS1:921600"

因为nano与自驾仪是依靠串口通信的,所以后面fcu_url:="/dev/ttyTHS1:921600"指的是串口设备文件与波特率,根据实际情况选择。

出现以下信息说明节点工作正常:

Serial底层串口驱动与应用级功能包

安装方法(可能已经内置):sudo apt-get install ros-melodic-serial

操作:#include <serial/serial.h>即可

此功能包没有实体节点,使用体现在与头文件调用上,通过调用此功能包函数可以快速的进行串口收发操作。

 

USB-CAM摄像头功能包

安装方法:sudo apt-get install ros-melodic-usb-cam

操作:roslaunch usb_cam usb_cam-test.launch即可运行有关于USB摄像头的节点并将摄像头信息和图片发布出去,运行成功后会自动运行rqt工具包中的image_view工具,自动显示图像,其他算法类节点可订阅此消息进行图像接收与处理。

 

Shell脚本文件夹

里面放了大量的.sh文件,用来快速方便的开启终端并执行ROS运行命令,文件格式大都如下:

可在shell文件中进行终端命令行执行内容,部署ROS参数服务器参数,启动launch文件,运行ros节点,打开或关闭窗口,kill进程等诸多操作。

Shell文件的修改可参照某一份成品shell文件,比葫芦画瓢就可以。

 

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

ROS四旋翼无人机快速上手指南(3):工作环境文件框架与各功能包整体讲解 的相关文章

  • OOQP 安装和使用

    OOQP 安装和使用 1 安装2 使用 1 安装 需要先安装 blas 和 ma27 BLAS xff1a span class token builtin class name cd span my lib span class toke
  • 系统指标

    目录 1 cpu xxx 1 1 cpu空闲率cpu idle cpu idle表示除硬盘IO等待时间以外其它等待时间 xff0c 这个值越大 xff0c 表示cpu越空闲 xff0c 还可以执行更多的任务 xff0c 反之亦然 xff0c
  • stm32 MPU6050 6轴姿态传感器的介绍与DMP的应用

    最近应用到三轴姿态传感器 xff0c 因为之前有MPU6050 xff08 6轴传感器 xff0c 这是6轴的 xff09 xff0c 进行搭配使用 xff0c 通过三轴姿态传感器进行舵机的角度调整 内容来源学习正点原子的教程 xff09
  • 室内外融合北斗+uwb终端数据监听和发送控制方法

    UDP接收GNGGA报文同时转发UDP报文的方法 span class token keyword package span span class token class name Frame span span class token p
  • Ubuntu使用终端命令安装谷歌Chrome浏览器

    使用命令行安装谷歌浏览器稳定版 span class token function sudo span span class token function wget span http www linuxidc com files repo
  • 无人机PX4使用动捕系统mocap的位置实现控制+MAVROS

    动捕系统Optitrack xff0c 有很高的定位精度 xff0c 能够给无人机提供比较精确的位置信息 xff0c 因此如果实验室有条件 xff0c 都可以买一套动捕系统 动捕系统的原理 xff1a 光学式动作捕捉依靠一整套精密而复杂的光
  • Optitrack使用ros完成实时接收刚体的位置与四元数信息

    1 Opitrack系统标定 工作环境 xff1a 运行Motive的Windows主机 和一台安装有ROS的ubuntu电脑 标定步骤 1 准备 优化捕获设置 xff1b 2 在相机预览窗口 xff08 Camera Preview xf
  • RoboMaster机甲大师比赛入门?我们从STM32开始!

    同步博客地址 xff1a 从STM32开始的RoboMaster生活 xff1a 入门篇 项目 amp 教程仓库 xff1a STM32 RoboMaster 1 0 STM32是什么 1 1 定义 ST 43 M 43 32 61 STM
  • C++头文件定义类的方法

    新手在写C 43 43 程序定义类的时候 xff0c 可能会犯一个错误 xff0c 就是在main函数文件里定义很多类 xff0c 一个文件中包含很多函数 xff0c 这样程序看起来很冗杂 今天总结一下如何在C 43 43 中使用头文件来定
  • 相机光学(十五)——如何提高相机标定的精度

    为了提高单目相机标定的精度 xff0c 认真看了张正友标定法的原文 xff0c 并且学习过网上一些牛人的方法 xff0c 但是大部分时候说的很笼统 xff0c 自己把这些经验总结起来并都测试了一下 xff0c 感觉靠谱的结论列出如下 xff
  • TCP/UDP、封装与解封装

    目录 传输类型 网络里面三层架构 TCP IP模型 OSI模型 TCP IP模型 掌握 TCP IP模型当中重点 数据传递过程中的封装和解封装 封装 解封装 TCP UDP ICMP ICMP错误报告 ICMP重定向 典型应用 PING应用
  • 解决 ERROR: cannot launch node of type [xxx]: can‘t locate node [xxx] in package [xxx]

    背景 xff1a 从github下载的ros代码 xff0c 修改添加节点后 xff0c catkin make 编译通过 xff0c 但在运行launch文件时候报错 原因 xff1a 1 从github上下载的很多文件 xff0c 下载
  • stm32控制步进电机

    本文使用DM542c驱动器驱动 使用前注意根据实际情况调节拨码开关 本文不会提到GPIO使能 xff0c 请自行使能 一 PWM操作驱动器使步进电机一直转 使能定时器时钟 xff0c 并配置基本参数 下图以TIM3为例 配置输出比较PWM1
  • 树莓派GPIO

    命令行执行下行 xff0c 即可得树莓派管脚编码表 gpio readall 也可看下图 xff1a BOARD 编号参考 Raspberry Pi 主板上 P1 接线柱的针脚编号 使用该方式的优点是无需考虑主板的修订版本 xff0c 无需
  • python opencv滤波

    1 均值滤波 算法简单 xff0c 计算速度快 xff0c 在去噪的同时去除了很多细节部分 xff0c 将图像变得模糊 cv2 blur 2 高斯滤波 去除高斯噪声 cv2 GaussianBlur 3 中值滤波 去除椒盐噪声 cv2 me
  • opencv imwrite()保存指定路径

    cpp为例 include lt opencv2 opencv hpp gt include lt string gt include lt iostream gt using namespace cv using namespace st
  • python pip安装的包的路径

    以ubuntu为例 从一个店家那里拿到的一个ubuntu环境中 xff0c 同时安装了python3 6和python2 7 xff0c 又安装了ros xff0c 最后pip安装包的位置很混乱 xff0c 安装的包不知道安装在了哪里 使用
  • solidworks实体显示线框

    sw有段时间没使用 xff0c 今天打开突然发现打开的sw窗口数超过1 xff0c 那么从第二个窗口以后的模型都显示成以下样子 xff08 无论是之前的文件还是新建的都不行 xff09 如上是一个圆盘 xff0c 明明是实体 xff0c 却
  • vscode使用虚拟环境

    我的conda没有添加入path xff0c 每次打开总是报错 一 选择对应虚拟环境的解释器 1 点击vscode的右下角这里 2 点击后可能会在vscode上方出现下图样子 xff0c 如果出现下图 xff0c 则点击第二项Select
  • TabError: inconsistent use of tabs and spaces in indentation

    错误原因是tab制表符和空格混用了 从其他地方复制源码容易出现此错误 解决办法 xff1a 把处于同级缩进的所有缩进修改统一 比较流行的几个编辑器都能标识tab和空格 xff0c 比如我用的vscode 用鼠标框选 不知道是tab还是空格的

随机推荐

  • 关于深度学习的问题笔记

    感谢沐神教我深度学习 x1f64f 损失为什么要平均 xff1f 平均即除以batch size xff0c 若不除 xff0c 则批越大梯度越大 xff0c 梯度下降的步长就越大 除以batch size可使梯度与批大小无关 也可以不在损
  • 简单(炫酷)的单链表快速排序写法

    昨天在复习快排的时候 在B站看到一个小哥哥说某大厂的面试让写一个单链表的快速排序 我们见的最多的快排写法都是从两端向中间扫描 这种写法在单链表上不能实现 哥们分析道 快排的核心思想是每次扫描后 所有pivot左侧的元素都比pivot小 右侧
  • char* char[]

    C 43 43 判断char 的指向 char a 61 34 Peter 34 char b 61 34 Peter 34 char c 61 new char 6 strcpy s c 6 34 Peter 34 这里a指向常量区 b指
  • HTTP 基本认证 HttpBasic

    HTTP 的认证机制 基本认证 摘要认证 一 基本认证 用BASE64 算法加密后的字符串放在HTTP Request中的Header Authorization中发送给服务端 xff0c 这种方式叫HTTP基本认证 Basic Authe
  • libcurl异步调用

    span class token keyword int span span class token function main span span class token punctuation span span class token
  • 标准c++库、stl库,boost库,qt库

    C 43 43 标准库 C C xff0b xff0b 标准库主要包含3部分 xff1a STL IO流及本地化 C的函数库 标准库不是STL STL是标准模板库 是标准库的一个子集 它是一个可复用的组件库 xff0c 其中包含了很多实用的
  • 生成2023年节假日/工作日维表

    项目中有一张维表 xff0c 维护的是历史节假日工作日的信息 xff0c 估计在很多场合都有类似的需求 到了新年 xff0c 需要生成新一年的数据 xff0c 下面看看如何在维表中插入新一年的数据 1 查询节假日 根据国务院发布的休假信息
  • C++智能指针

    参考 xff1a 头文件auto ptr使用示例 unique ptr类模板声明示例 shared ptr模板声明通过辅助类模拟实现 shared ptrshared ptr使用示例 weaked ptrweak ptr 用法weak pt
  • 使用SiftGPU对两幅图像进行特征点匹配

    前言 继上一篇博客中谈到使用Changchang Wu的SiftGPU xff0c 使用GLSL语言在Windows系统下的编译方法http blog csdn net qq 36007951 article details 7847234
  • CAN通信学习笔记(一)

    1 CAN通信的基本原理 1 1 基本概念 CAN 是 Controller Area Network 的缩写 xff08 以下称为 CAN xff09 xff0c 是 ISO 国际标准化的串行通信协议 在北美和西欧 xff0c CAN 总
  • DSP28335 SCI FIFO深度设置

    SCI工作在FIFO模式下一般是因为所传输的信息并不是以一个字节为单位 xff0c 而是以多个字节组成的一个包为单位的 如果一包数据包括10个字节 xff0c 可以设置FIFO接收中断为10个字节时产生中断 设置以后 xff0c 每接收到1
  • Serial Studio简单使用说明

    Serial Studio简介 Serial Studio是一个跨平台的软件 xff0c 支持将串口 xff0c TCP UDP xff0c MQTT等协议传输数据 xff0c 并将数据可视化显示 xff0c 方便嵌入式开发人员实现数据的可
  • YOLOV1个人理解总结

    YOLO是著名的端到端目标检测框架 xff0c 最大的特点是检测快 xff0c 亲自试验YOLOv3 v5 v5在jeston Xavier NX上可以达到15FPS左右 xff0c 检测精度也相当可观 xff0c 可以达到实时检测 xff
  • STM32HAL库-USART-调试串口(大小端测试)

    概述 本篇文章介绍如何使用STM32HAL库 xff0c USART 调试串口 xff08 大小端测试 xff09 示例 硬件 xff1a STM32F103CBT6最小系统板 软件 xff1a Keil 5 29 43 STM32Cube
  • Windows下实现C语言Socket通讯TCP传送结构体信息

    版权声明 xff1a 本文为博主原创文章 xff0c 未经博主允许不得转载 Windows下实现C语言Socket通讯 lt TCP传送结构体信息 gt 首先socket通信的步骤 xff1a 三次握手协议 三次握手协议 代码 服务器端 i
  • #STC8A8K# #STC8F1K# #STC8G1K# #STC8H1K# ——STC8系列单片机整体评价

    成就更好的自己 声明 xff1a 这不是广告 xff0c 只是发表看法和吐槽 xff0c 不吹不擂 xff1b 本文以STC8A8K64S4A12 为例 xff0c 简要分析一下STC8系列 xff1b STC 宏晶科技 公司作为国内的一家
  • 拓展模块使用教程和心得(三):ULN2003模块与28BYJ48步进电机(测试平台:STC8A8K,STM32F103)

    成就更好的自己 关于ULN2003模块和对应的28BYJ48步进电机 xff0c 网上现有的资料与教程对于初学者有点不太友好 xff0c 造成的现象是仅仅只能让步进电机转起来 xff0c 但是没有对于控制转速和转角的实践分析 xff0c 本
  • intellij 从2020升级到2023 踩坑实录

    1 下载新版本intellij 工作机器上的intellij版本为2020社区版 xff0c 版本比较老旧 xff0c 需要进行升级 IDE这种提高生产力的工具 xff0c 还是蛮重要的 xff0c 也是值得稍微多花点时间研究一下的 升级之
  • 拓展模块使用教程和心得(五):HC08及HC系列蓝牙模块

    成就更好的自己 今天在做单片机的数据采集并给PC处理 xff0c 根据前期的想法本来是要使用nRF24L01进行的 xff0c 奈何nRF无线模块转USB接口太不给力 xff0c 因此使用到了HC08作为发送和接收数据的模块 目录 简介 内
  • ROS四旋翼无人机快速上手指南(3):工作环境文件框架与各功能包整体讲解

    成就更好的自己 这一章节主要讲解无人机平台的控制文件架构和各个功能包组成和用法 uav ws与shell源码链接 xff1a https gitee com theroadofengineers ros uav 目录 主要项目文件架构概述