无人机地面站源码搭建环境(qt版)记录

最近基于项目需要,借鉴无名创新的QT版开源地面站,搭建一款测试平台。

原本以为比较简单的。但是在搭建过程中还是遇到了很多看不见的坑,在这里分享给大家,避免别人在开发类似项目时像我这样走弯路。基本的搭建步骤和遇到的问题,简单介绍如下。

1、下载源码和需要的开发环境。

1.1  按照网上公开的无名地面站源码git,下载。网址如下:

NGroundStation: 无名创新飞控开源地面站NGroundStation(NGS)

 1.2 按照无名创新介绍的qt开发环境版本和qwt版本插件网址下载。

 其中qt的开发环境建议从这个网址下载

Index of /archive/qt

2、安装、调试、开发环境。

当时采用比较高的qt版本下载后,编译未能成功。不清楚什么原因,但通过qt creator打开无名地面站源码发现他们采用的是qt 5.13版本。于是就重新下载对应的qt版本,然后重新安装并编译程序,发现还是有问题。截图如下:

 截图里大致的错误显示:error : stray "xxx" in program。意思大概是有不识别的东东。当时一头雾水,问无名的技术群也没有得到任何回应。

后来发现是电脑里的加密软件在作怪,也就是当qt在进行编译动作时,可能有操作电脑底层的过程,加密软件认为是不合理的动作就给加密了,导致编译出错。基于此,换了台不加密的电脑再编译同样的程序就可以了(这里的程序不是无名的地面站源代码,由于前面的错误导致现在还没进行到调试源代码)。

3、总结

1、编译软件这个环节很重要,以前都是基于现成的集成环境写程序、编译程序,以至于没有把编译这个环节重视。

2、同样的问题在网上有各种各样的解答,但不一定适合你的。人家的技术群也不一定就能回复你。还是要多思考。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!以下是一个使用Qt和Mavlink的无人机地面站的简单示例代码: ```cpp #include <QCoreApplication> #include <QSerialPort> #include <QSerialPortInfo> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 查找可用的串口 QList<QSerialPortInfo> portInfoList = QSerialPortInfo::availablePorts(); QSerialPort serialPort; foreach (const QSerialPortInfo &portInfo, portInfoList) { if(portInfo.description().contains("PX4")){ serialPort.setPort(portInfo); break; } } // 配置串口参数 serialPort.setBaudRate(QSerialPort::Baud57600); serialPort.setDataBits(QSerialPort::Data8); serialPort.setParity(QSerialPort::NoParity); serialPort.setStopBits(QSerialPort::OneStop); serialPort.setFlowControl(QSerialPort::NoFlowControl); // 打开串口 if (!serialPort.open(QIODevice::ReadWrite)) { qDebug() << "Failed to open serial port."; return 1; } // 进行Mavlink通信 while (true) { QByteArray data = serialPort.readAll(); // 处理接收到的数据 // 发送数据 quint8 buffer[MAVLINK_MAX_PACKET_LEN]; mavlink_message_t message; mavlink_msg_heartbeat_pack(1, 200, &message, MAV_TYPE_QUADROTOR, MAV_AUTOPILOT_GENERIC, 0, 0, 0); uint16_t len = mavlink_msg_to_send_buffer(buffer, &message); quint64 bytesWritten = serialPort.write(reinterpret_cast<const char*>(buffer), len); if (bytesWritten == -1) { qDebug() << "Failed to write to serial port."; break; } serialPort.waitForBytesWritten(1000); } // 关闭串口 serialPort.close(); return a.exec(); } ``` 这是一个基本的示例,可以读取和发送Mavlink消息。你需要根据你的实际情况进行适当的修改和扩展。请确保安装了Qt开发环境和相应的串口库。 希望对你有帮助!如果你有更多问题,可以继续问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值