网站广告牌制作教程协同软件开发
- 作者: 五速梦信息网
- 时间: 2026年04月20日 08:10
当前位置: 首页 > news >正文
网站广告牌制作教程,协同软件开发,关键词收录,建筑教育前言#xff1a; 好久没更新博客了#xff0c;这两个月真的是异常的忙#xff0c;白天要忙着公司里的事#xff0c;晚上还要忙着修改小论文#xff0c;一点自己的时间都没有了#xff0c;不过确确实实是学到了很多东西#xff0c;对无人机的技术研究也更深了一些。不过好…前言 好久没更新博客了这两个月真的是异常的忙白天要忙着公司里的事晚上还要忙着修改小论文一点自己的时间都没有了不过确确实实是学到了很多东西对无人机的技术研究也更深了一些。不过好在小论文发出去了公司的项目也有了进展终于有一点时间来写博客。不由得感叹无人机真是越学越觉得自己菜越学越不明白什么方面的知识都会涉及软件、硬件、机械、理论、电路、各种通讯协议、以及较强的动手能力组装焊接改线是真的累更别提更上层的ros、SLAM、规划这些感觉能学到老哈哈不过吐槽归吐槽但是当取得一点点进展就会觉得特别满足所有的一切都源于对无人机的热爱。 项目需求 因为目前公司的合作方提供的飞控并不是我所熟悉的pix飞控而是他们自研的一款闭源飞控因为飞控集成了一块算力还可以的板子当机载电脑所以性价比比较高但唯一让我头疼的就是这款飞控不是px4或者apm不仅不熟悉也没法做二次开发。不过再三沟通后飞控厂家提供了外部的通讯协议和部分内部的接口代码让我惊喜的是他们用的外部协议竟然就是mavlink2且我看了他们提供的那部分代码后估计这款飞控厂家应该是借鉴了PX4因为我很明显看到了一些熟悉的头文件和uorb的痕迹。 知道了通讯协议后事情就好办一些了因为我需要将飞控的一些数据传到我们的服务器和传感器并且能通过服务器和传感器反过来对无人机进行一些简单的控制而不再用地面站做监测。先说简单点的用单片机实现通讯。后来我才发现服务器通讯更简单嘿嘿可能有同事的帮忙吧 1.mavlink移植 1移植说明 mavlink有两个版本目前的飞控很多用的都是mavlink2需要注意的一点是mavlink2是可以兼容mavlink1的但最好还是保持一致如果你只是想要从飞控那接收一些姿态、速度、电池等数据那mavlink1也可以但如果你想要对飞控进行控制发送指令那就需要移植mavlink2。 MAVLink V1版https://github.com/mavlink/c_library_v1 MAVLink V2版https://github.com/mavlink/c_library_v1 2代码生成器 移植这部分我是直接在ubuntu下进行的直接输入下面指令将mavlink协议拷贝过来 git clone https://github.com/mavlink/mavlink 得到上面文件一定要确保文件不要丢失不要丢失不要丢失确保网络没问题这里我踩过坑有几个头文件没有导致后面的工作一直出现问题。 更新子模块git submodule update –init –recursive 生成代码python mavgenerate.py 执行下面指令会跳出一个代码生成器 python3 mavgenerate.py XML选择\message_definitions\v1.0\common.xml out选择mavlink这个是生成文件的地方随便选 点击Generate你会得到下面这些文件 将这些文件打包好从虚拟机里复制过来。 2.将mavlink文件加入到工程 这里需要用到一个串口的工程文件基本上大家都有我就不具体说了可以看这篇参考博客。 打开正点原子例程实验4 串口实验其他的也可以代码很简单能通过串口1给串口助手传输数据就行。 将我们之前在ubuntu中生成的mavlink文件加入进来。 同时在keil5中也要将头文件路径加入进来这些步骤就不详细说了keil5大家也很熟悉。 这里记得把头文件路径加进来 因为我用的f103这个串口例程是f4的所以也要修改一下。 3.调试修改 这个过程是最痛苦的因为动不动就是一堆报错一堆警告每个人的情况不一样我只能网上搜教程不过还是有收获的之前mavros都是直接下载好用对底层的这些函数没有去了解但其实还是很有用的毕竟这是直接和飞控对接mavros毕竟还是隔了个ros而且ros也是一堆问题那不如一步到位。 建议先好好看看恒久力行的这几篇博客真的受益匪浅我看网上的基本都是在他的基础上进行的很难想象这是8年前的工作真的很佩服这些前辈自愧不如。参考博客1 参考博客2 参考博客3 还有一些修改是我自己琢磨和参考网上其他人的。 替换代码#define MAVPACKED( Declaration ) Declaration 需要注意keil中默认是不支持匿名结构体的需要编译指令#pragma anon_unions指名。 还有mavlink_avoid_errors.h这个头文件前辈在博客中有详细写这个这里附上我修改后的。 #ifndef MAVLINK_AVOID_ERRORS_H #define MAVLINK_AVOID_ERRORS_H #include stdio.h #include stdint.h /解决..\MAVLINK\common../mavlink_types.h(53): error: #20: identifier pack is undefined/ #define MAVPACKED( Declaration ) Declaration /解决..\MAVLINK\common../mavlink_types.h(53): error: #3092: anonymous unions are only supported in –gnu mode, or when enabled with #pragma anon_unions/ #pragma anon_unions #define inline __inline#include mavlink.h #include mavlink_helpers.h #endif //AVLINK_AVOID_ERRORS_Hmain.c中的代码为 #include sys.h #include delay.h #include usart.h #include led.h #include mavlink_avoid_errors.h #include mavlink_usart_fifo.h #include open_tel_mavlink.h #include stdint.h mavlink_system_t mavlink_system; #define UART_TX_BUFFER_SIZE 255 #define UART_RX_BUFFER_SIZE 255 extern fifo_t uart_rx_fifo, uart_tx_fifo; extern uint8_t uart_tx_buf[UART_TX_BUFFER_SIZE], uart_rx_buf[UART_RX_BUFFER_SIZE]; int main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(168); //延时初始化 uart_init(115200); //串口初始化波特率为115200 // LED_Init(); //初始化与LED连接的硬件接口 fifo_init(uart_tx_fifo, uart_tx_buf, UART_TX_BUFFER_SIZE); fifo_init(uart_rx_fifo, uart_rx_buf, UART_RX_BUFFER_SIZE);mavlink_system.sysid MAV_TYPE_GENERIC;mavlink_system.compid MAV_AUTOPILOT_GENERIC;while(1) {mavlink_send_message(0, MSG_HEARTBEAT, 0);mavlink_send_message(0, MSG_LOCATION, 0);// while(1) // {if(tranlTimer 100) {tranlTimer 0; // delay_ms(1000); // mavlink_send_message(0, MSG_HEARTBEAT, 0); // mavlink_send_message(0, MSG_ATTITUDE, 0); // mavlink_send_message(0, MSG_AHRS, 0);}update(); // }} } 4.编译和测试 基本上按照前面的博客里修改不会有什么报错编译一下。 下载到开发板后打开调试助手。 拿出这一组数据来对照mavlink协议看看。 FE 03 1A 01 01 96 88 13 01 32 EC 至于接收数据就不细说了前面的博客里已经很详细了。后面有时间我会记录一下怎么通过自己写网页的形式去控制无人机突然间觉得地面站好像也没有那么神秘。
- 上一篇: 网站广告牌制作教程企业网络推广方案
- 下一篇: 网站广告收入如何缴文化事业建设费典当行 网站
相关文章
-
网站广告牌制作教程企业网络推广方案
网站广告牌制作教程企业网络推广方案
- 技术栈
- 2026年04月20日
-
网站管理助手ftp连接不上盲盒小程序开发
网站管理助手ftp连接不上盲盒小程序开发
- 技术栈
- 2026年04月20日
-
网站管理员在哪里建设网站的项目策划书
网站管理员在哪里建设网站的项目策划书
- 技术栈
- 2026年04月20日
-
网站广告收入如何缴文化事业建设费典当行 网站
网站广告收入如何缴文化事业建设费典当行 网站
- 技术栈
- 2026年04月20日
-
网站广告销售怎么做wordpress第三方jquery
网站广告销售怎么做wordpress第三方jquery
- 技术栈
- 2026年04月20日
-
网站广告怎么放东莞茶山网站建设
网站广告怎么放东莞茶山网站建设
- 技术栈
- 2026年04月20日
