成就更好的自己
这一章节主要讲解无人机平台的控制文件架构和各个功能包组成和用法。
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(使用前将#替换为@)