当前位置: 首页 > news >正文

网站广告牌制作教程台州做网站那家好

网站广告牌制作教程,台州做网站那家好,网站重新制作多久google重新收录,wordpress跳转链接插件汉化前言: 好久没更新博客了,这两个月真的是异常的忙,白天要忙着公司里的事,晚上还要忙着修改小论文,一点自己的时间都没有了,不过确确实实是学到了很多东西,对无人机的技术研究也更深了一些。不过好…

前言:

        好久没更新博客了,这两个月真的是异常的忙,白天要忙着公司里的事,晚上还要忙着修改小论文,一点自己的时间都没有了,不过确确实实是学到了很多东西,对无人机的技术研究也更深了一些。不过好在小论文发出去了,公司的项目也有了进展,终于有一点时间来写博客。不由得感叹,无人机真是越学越觉得自己菜,越学越不明白,什么方面的知识都会涉及,软件、硬件、机械、理论、电路、各种通讯协议、以及较强的动手能力(组装,焊接,改线是真的累),更别提更上层的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_H

main.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

至于接收数据,就不细说了,前面的博客里已经很详细了。后面有时间,我会记录一下怎么通过自己写网页的形式去控制无人机,突然间觉得地面站好像也没有那么神秘。

 

 

http://www.yayakq.cn/news/68804/

相关文章:

  • 官方手表网站网页建站怎么设置
  • 怎么帮公司做网站建设河南省建设监理协会官网站
  • 怎么做网站关键词优化网站制作怎么添加图片
  • 网站建设深圳给源码公司注册邮箱怎么注册
  • 网站用oracle做数据库浏阳商务局网站溪江农贸市场建设
  • 网站上线后想修改广州网站建设 .超凡科技
  • 佛山专业网站设计深圳龙华汽车网站建设
  • ipa文件自己网站怎么做下载网站建设吉金手指排名11
  • 精益生产网站开发方案wordpress简体中文下载
  • 站长工具seo诊断聚美优品网站建设分析
  • 八大建筑央企排名南昌seo搜索优化
  • 滨海做网站的价格长沙建站
  • 有固定ip怎么建设网站企业网络营销方案策划书
  • 网站开发合同中的知识产权条款wordpress在线上传头像
  • 做网站是什么意思网站批量创建程序
  • 人和动物做的电影网站企业年底做网站的好处
  • 网站建设专业网站设计公司物格网app优化方案
  • 北京网站设计学习做擦边球网站会不会违法呢
  • 网站伪静态是什么意思头像 wordpress
  • php网站开发工程师招聘网WordPress主题怎么翻译
  • 一个公司为什么要做网站手机维护 Wordpress
  • 广州微信网站建设价格公司网站开发 nodejs
  • 怎样模仿别人的网站查找全国免费网站建设
  • 红酒专业网站建设布谷 海南网站建设
  • 湖北省建设厅行政审批网站wordpress 管理员
  • 做网站有什么市场风险广西建设科技与建筑节能协会网站
  • 做网站刷QQ会员网站中国建设机械教育网官方网站
  • 二元期权网站建设微信小程序官网开发
  • 网站实名审核多久网络营销策略包括哪几大策略
  • 微商网站推广怎么做什么网站能看男女做暧