ZY笔记

ROS相关操作

1、ubuntu中qt的pro配置ros及cuda

2、ros创建工作空间流程指令:

roscore
source /opt/ros/melodic/setup.bash
mkdir -p ~/workspace/rosWork/src
cd ~/workspace/rosWork
catkin_make
cd ~/workspace/rosWork/src
catkin_create_pkg rosFowarding std_msgs rospy roscpp geometry_msgs mavros mavros_msgs
cd ../
cd build
cmake ..
make
make install
cd ../

3、查看ros结构体rosmsg show 结构体名字

视屏流相关处理

1、gstreamer应用_生如~夏花的博客-CSDN博客

2、ffmpeg Documentation

QGC Code抓取

1、参考https://dev.qgroundcontrol.com/master/en/getting_started/,进入QGC的gitHub仓库地址。

2、配置本机电脑GitHub,创建本地文件夹。

3、通过GitHub抓取code,进入QGC的gitHub仓库,点击Code->SSH->复制地址

4、执行指令:

  git clone git@github.com:mavlink/qgroundcontrol.git  //下载完成后

  git submodule sync //同步子模块

  git submodule update --init --recursive //更新子模块

初次编译问题

1、提示F:\QGCSourceCode\qgroundcontrol\src\Settings\AppSettings.cc:1: error: C2220: 以下警告被视为错误

  修改方法:通过即使本打开F:\QGCSourceCode\qgroundcontrol\src\Settings\AppSettings.cc,然后将内容拷贝到新文件,将新文件的保存格式为ASNI,替换原来的文件

QGC打包

Windows:

  1. 准备Git环境拉取code,使用Y:\软件\PSP软件汇总\PixHawk\其他\Git-2.11.0-64-bit.exe软件,参考Windows下搭建基于ssh的git服务器_windows使用openssh搭建git_webfrogs的博客-CSDN博客进行安装。官网提供抓取code的方式为HTTPS,可以使用SSH,在GitHub上,点击Code->SSH
  2. 编译环境Visual Studio 2019+Qt 版本:5.15.2
  3. 编译出现报错情况,参考:Git使用笔记客处理配置好GitHub的私钥后,依旧报错,待确认处理方法
  4. 建过程中构建到出现QGC编译报错error C2220异常,在编辑中选择编码GB2312 保存重新构建即可,构建成功后运行。遇到AppSettings.cc文件报错,修改编码格式或者将原文件复制粘贴后,建立新文件
  5. eigen、libevents、nlohmann_json、ParameterRepository、PX4-GPSDrivers、qmdnsengine、shapelib、v2、xz-embedded 这些代码(使用Git抓取code没有报fail可以忽略此条信息)
  6. 程序打包参考:https://blog.csdn.net/qq_17239003/article/details/51298510,出现QGroundControl在后台运行。将Release\staging中的文件覆盖到对用的打包目录中,可以解决后台运行问题
  7. 下载NSIS软件:https://sourceforge.net/projects/nsis/,将打包程序发布出来。
  8. 将Windows下抓取的code放入到Linux中
  9. 使用在线工具安装Qt包
  10. 解决Linux下面Qt无法正常编译程序问题

Linux

sudo usermod -a -G dilout $USER

sudo apt-get remove mdemanager

sudo apt-get install build-essential libgl1-mesa-dev

QGC功能开发总结

Qt加载翻译文件异常

参考https://zhidao.baidu.com/question/1703077485640222620.html

1、首先要修改.pro工程文件,比如在app.pro里加入
TRANSLATIONS+=app_en.ts app_zh_CN.ts app_zh_TW.ts #后面你可以加你想要翻译的各种版本
CONFIG += localize_deployment

SYMBIAN_SUPPORTED_LANGUAGES += zh_CN
SYMBIAN_LANG.zh_CN = 31
注:其中SYMBIAN_SUPPORTED_LANGUAGES ,SYMBIAN_LANG.zh_CN 两行是localize_deployment.prf 中缺少的两行,简体中文qs 文件只使用语言代号zh时 与系统解析的" 语言_区域"区域格式不符,请先这样设置。
然后在shell, 里执行如下语句( 在Qt SDK 中请打开Qt for Desktop的命令行,目前lupdate 命令没有为Qt for symbian生成的版本)
$lupdate app.pro #进入文件对应的文件夹
$linguist app_zh_CN.ts#进入文件对应的文件夹
$linguist app_zh_TW.ts  #进入文件对应的文件夹
$lrelease *.ts #进入文件对应的文件夹

QGC增加自定义固件自动烧写功能

修改见:https://github.com/w-x-me/MyQGC/commit/ba6cf1ff6494917aaf0f8cdf0afd8ff5f633b9d8

QGC插件模块扩展

QGC添加gstreamer

1、下载gstreamer

需要安装在同一个目录

2、配置环境变量以及加入到QGC中,在cmd使用gst-inspect-1.0 coreelements指令,测试是否安装成功, QT测试案例

3、提示 C2220解决方法

4、关于gstreamer中文介绍文档

5、无法解析的外部符号 __imp_gst_audio_info_set_format时,在对应的.pro中添加:LIBS += -L库的路径 -l库的名字,本地修改:LIBS += -LE:/QtCode/GstreamerTest/gstreamer/1.0/msvc_x86_64/lib/ -lgstaudio-1.0

6、 通过VLC将本地视屏流转换为RTSP流(转UDP测试)进行测试,测试步骤:

  1.  使用本地文件生成RTSP打开VLC->点击媒体->点击流->点击文件->点击添加(选择自己的文件)->在下拉框中选择串流(见图1)后点击->点击下一个->点击文件下拉框选择RTSP(在添加按钮旁边,见图2) ->点击添加(设置RTSP端口和地址,见图3)点击下一个->选择配置文件(和播放视屏码流格式一样,否则无法解码成功,播放MP4格式文件选择Video-H.264+MP3(MP4))->点击下一个->点击流
  2.  获取生成RTSP流的服务器地址,打开cmd,输入ipconfig获取本机IP地址(实际测试:IPv4 Address. . . . . . . . . . . : 192.168.71.1)。rtsp://本机IP地址:端口/地址,例如:192.168.71.1:8554/123
  3.  打开VLC->点击媒体->点击网络->在请出入网络URL下面输入rtsp://本机IP地址:端口/地址(例如:192.168.71.1:8554/123)->选择播放(在取消按钮旁边)点击,播放生成的流。
  4. 打开QGC,Application Settings->视屏设置->source 选则RSTSP Video Stream->RTSP URL输入rtsp://本机IP地址:端口/地址(如192.168.71.1:8554/123)->长宽比使用默认或实际值->File Format选择MP4(必选本地视屏格式一致,否会导致显示等待视屏中)->解码优先级可选->选择低延迟模式(如果显示等待视屏中,可以尝试反复点几次,直到log打印D3D11 WARNING:       Live ID3D11Context at 0x0000017727E8C040, Refcount: 4, IntRef: 1 [ STATE_CREATION WARNING #2097226: LIVE_CONTEXT])表示成功,见图4

                   图4

QGC增加显示共享内存图像数据

QGC 文件说明

  1. 关于source选择操作:GeneralSettings.qml-》_videoSettings.videoSource
  2. FlyViewVideo.qml关于视频显示相关窗口UI
  3. VideoManager.cc主要与显示UI进行交互管理
  4. C++中寻找对应的QML文件,见 QGCCorePlugin.cc中的createRootWindow
  5. 参考https://mavlink.io/en/messages/common.html,对应F:\WorkData\ProjectQGC\qgroundcontrol\libs\mavlink\include\mavlink\v2.0\common\common.h文件,F:\WorkData\ProjectQGC\qgroundcontrol\libs\mavlink\include\mavlink\v2.0\ASLUAV\ASLUAV.h
  6. 关于QGC使用MavLink相机逻辑见关键词:PhotoVideoControl

QGC自动下载日志功能开发

QGC文件说明

  1. 日志下载逻辑:LogDownloadController.cc中download-》downloadToDirectory-》__receivedAllData-》 _requestLogData  46080 调用UDPLink.cc中_writeBytes
  2. 日志管理界面LogDownloadPage.qml。日志刷新方法:LogDownloadController.cc中refresh(void)-> _requestLogList-> mavlink_helpers.h中的mavlink_finalize_message_chan(对消息进行签名)
  3. 函数调用逻辑:UDPLink::readBytes发送bytesReceived信号-》MAVLinkProtocol::receiveBytes中mavlink_parse_char解析数据包,然后发送messageReceived-》Vehicle::_mavlinkMessageReceived-》UAS::receiveMessage判断message.msgid信息为MAVLINK_MSG_ID_LOG_DATA发送logData信号(点击下载按钮一直在发送)-》LogDownloadController.cc中_logData经过分析判断,只有部分消息符合要求,则调用-》_requestLogData

  4. 日志下载调用逻辑:

    首先:LogDownloadPage.qml:161-》LogDownloadPage.qml:167的logController.download(file)-》LogDownloadController.cc download(QString path)-》downloadToDirectory(const QString& dir)-》_receivedAllData()中调用_prepareLogDownload()创建日志文件大小,调用_requestLogData请求获取日志
    线程0x7bc8:UDPLink::readBytes发送bytesReceived信号-》线程0x7ea4:MAVLinkProtocol::receiveBytes中mavlink_parse_char解析数据包,然后发送messageReceived-》Vehicle::_mavlinkMessageReceived 程序启动,设备连接后一直被调用

    -》UAS::receiveMessage判断message.msgid信息为MAVLINK_MSG_ID_LOG_DATA发送logData信号(点击下载按钮一直在发送)-》LogDownloadController.cc中_logData经过分析判断,只有部分消息符合要求,则调用 点击下载按钮后一直被调用

    -》_requestLogData

  5. 位置信息跟随飞机位置显示
  6. QGC建立通讯协议逻辑

常用工具

  1. 打开ULG日志方法,参考PX4 ulg文件转换csv。在ubuntu上安装好后,运行. ./~/.local/bin/ ulog2csv *.ulg

QGC二次开发学习笔记

1、MainRootWindow.qml为UI的初始根界面,所有UI以此qml为头。

2、MainToolBar.qml显示页面切换按钮栏,AppSettings.qml是application Setting页面,SetupView.qml是Setup页面,PlanView.qml是plan页面,FlightDisplayView.qml是飞行页面;AnalyzeView.qml是Anlyze页面

3、主界面组件都是基于FlyViewWidgetLayer.qml上绘制

 

QGC学习资料

1、QGC二次开发 # 视频流代码分析

2、gstreamer教程地址

3、Gstreamer学习与systemV 共享内存实例

4、QGC二次开发视屏课程

 
 
posted @ 2023-10-12 17:01  天码丶行满  阅读(629)  评论(0)    收藏  举报