![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
工作日志
文章平均质量分 51
公子_羽
这个作者很懒,什么都没留下…
展开
-
APM中电机输出分析
一、APM类分析老规矩,先上类图。(1)如图(1)所示,AP_Motors是大部分电机类的父类,是AC_AttitudeControl姿态控制类的保护型成员类。其中AP_MotorsMulticopter类声明为copter的私有成员类,在copter::allocate_motors()函数中根据具体机型实例化为对应的子类。(2)如图(2)所示,switch语句从ROM中读取飞行器类型的参数,根据机架类型new对应motor实例。...原创 2022-04-29 11:07:15 · 588 阅读 · 0 评论 -
APM中SBUS信号解析
一、SBUS信号概述SBUS信号以串口传输,波特率为100000bps。每2ms一帧,一帧25个字节。其中第0字节为起始帧,固定为0x0F。第24字节为帧尾。第1~22字节为1-16比例通道数据字节。第23字节为状态字,具体位含义如下:第3位:是否丢帧标识,1为丢帧,0为正常。第4位:是否失控保护是否激活,1为激活。二、APM中SBUS解析...原创 2022-04-22 20:46:57 · 2605 阅读 · 0 评论 -
APM-GPS数据解析(NMEA协议)
NEMA报文有GPGGA,GPRMC,GNHDT,等格式。每句报文以$开始,以*结束。*后面的两位数字是校验和。其中校验和不包含$和*。这个逻辑中两个注意事项:1.判断当前字符。若为$,则为句首;若为',',则为句子中某一项,通过fallthrough直接进入_term_complete解析;若为*,则为句尾,将_is_checksum_term置为true,下一次进入_term_complete()函数判断校验和。2.每解析完一项(term)都将_term_offset置零,以便下一项原创 2022-03-31 15:35:30 · 1677 阅读 · 0 评论 -
APM飞控LOG中添加一个自定义消息块
以在内部传感器中添加记录滤波前后数据的消息块为例。在其他地方加入日志也是类似的,根据具体需求变化。一、声明定义消息体(AP_InertialSensor/LogStructure.h) 其中,LOG_TEST_MSG是消息类型,需要在AP_Logger/LogStructure.h中的LogMessages结构体中定义。(该枚举类型最大值不能超过255,即消息类型不能超过255种)log_TEST是承...原创 2022-01-05 19:29:14 · 467 阅读 · 0 评论 -
cmake学习日志
cmake . 查找当前目录下是否有CMakeLists.txt。如果有则根据CMakeLists.txt生成Makefile。cmake .. 查找上一目录是否有CMakeLists.txt。如果有则根据CMakeLists.txt生成Makefile。原创 2021-09-24 20:16:07 · 317 阅读 · 0 评论 -
pixhawk 开发日记--开发环境搭建
我用的是Ubuntu20.04一、源码下载、编译、烧写1、下载源码git clone https://github.com/PX4/PX4-Autopilot.git --recursive2、下载子仓库代码git submodule update --recursivemake distclean3、下载工具链git apt install arm-none-eabi-gccgit apt install arm-none-eabi-g++git apt inst.原创 2021-08-29 09:41:36 · 704 阅读 · 0 评论 -
是时候总结一下过去一年编码经验了
在过去的一年中,我对自己提出更高的要求。如艺术品般的代码。1.功能美(无bug地实现功能)2.形式美(让人很容易看进去)3.逻辑美(看完之后拍手称赞,真tm精妙的逻辑)如何实现以上三个要求呢?具体说来,归结为以下八个字“逻辑清晰,代码简洁”1.能一个if-else嵌套完成的绝不用两个2.自己想看的东西第一时间能找到注意事项:编程的时候不要被打断两次以上。tips:if(条件1)else if (条件2)else条件1,2同时满足会进else i原创 2021-02-14 12:42:17 · 96 阅读 · 0 评论 -
git 添加远程仓库
git 添加远程仓库: git remote add 新远程仓库名 地址 git checkout -b 新本地仓库名 git pull 新仓库名 master::新本地仓库名 git checkout master git merge 新本地仓库名 //git push origin master...原创 2020-10-25 22:12:47 · 231 阅读 · 0 评论 -
Ubuntu 18.04 解决ssh连接远程服务器的问题
具体错误为: connection closed by xx.xx.xx.xx port 22首先确认远程主机的IP地址是正确的,然后进行以下操作。可能原因1.被防火墙挡了2.端口没开放3.ssh服务开了没网页终端登录我用的是阿里云服务器,首先使用网页终端登录。1.进入云服务器管理控制台2.远程连接3.输入连接密码和服务器的登录密码登录服务器端设置1...原创 2019-04-20 14:53:57 · 5695 阅读 · 1 评论 -
四旋翼PID调试步骤
0.将飞机固定在架子上,只保留横滚一个自由度1.将姿态外环参数置为0,从姿态内环开始调。由于姿态外环参数为0,遥控器的作用量和角度的误差无效,飞机无法维持平衡2.先调姿态内环P,飞机出现小幅度等幅震荡是比较好的值3.再调姿态内环D,飞机姿态角度单方向缓慢变化是比较好的值4.这时可以适当加一些I,不要太大5.加入姿态外环的P,飞机将稳定住6.同样的方式调节俯仰角(飞机如果对称...原创 2019-03-08 09:56:12 · 4611 阅读 · 3 评论 -
ubuntu 下编译安装openocd,及其找不到st-link的问题解决
Ubuntu环境下openocd编译安装及bootloader下载 编译安装openocd 进入openocd-0.10.0 目录 (cd XX/bootloader/openocd-0.10.0) 配置文件(./configure --enable-stlink) 如果提示ST-Link JTAG Programer yes 表示stlink配置完成。否则跳转到最后...原创 2019-02-28 10:16:39 · 2294 阅读 · 0 评论 -
在PX4日志文件中加入新变量
在PX4日志文件中加入自己所需的数据,以便观察数据的变化趋势。一、将要观察的数据声明成uORB消息,并发布。二、在logger.cpp找到logger类。在logger类的add_default_topic()方法中添加该topic ID。即可如图所示,”adrc_reports"便是我添加的主题。...原创 2018-12-26 17:21:52 · 594 阅读 · 1 评论 -
Ubuntu18.04 使用python+opencv解析rtsp视频流
笔者由于工作需要,解析了海康威视全天候云台相机的rtsp视频流。中间坑居多,发个帖子分享分享经验。需要事先安装好python+opencv开发环境。一、基本环境配置1.安装视频解码工具xvidcore_1.3.3 下载地址: https://download.csdn.net/download/fengya1/7672495cd xvidcore-1.3.3/cd build/g...原创 2018-07-17 16:19:24 · 4268 阅读 · 0 评论 -
python+opencv3生成一个自定义纯色图
一、 图像在计算机中存储为矩阵。矩阵上一个点表示一个像素。若矩阵由一系列0~255的整数值组成,则表现为灰度图。便于理解,以下贴出代码:import cv2import numpy as npimg = np.ones((3,3),dtype=np.uint8)#random.random()方法后面不能加数据类型#img = np.random.rand...原创 2018-07-24 16:04:52 · 36382 阅读 · 1 评论 -
OpenCV3.4使用traincascade级联训练总结及其错误提示和解决方案
由于初学opencv,踩了一些坑,现贴出来分享分享,让大家少走弯路。opencv_traincascade.exe是新版opencv带的,包含了haar,LBP,Hog三种特征值训练方法。之前老的版本opencv_haartraining 集成在这里边了。做人脸识别有三个步骤:1、正负样本采集和生成描述文件。使用 dir /b>neg.txt 生成负样本描述文件使用 di...原创 2018-07-19 17:35:23 · 2370 阅读 · 0 评论 -
opencv+CUDA9.1+vs2015环境搭建,编译opencv库,调用GPU加速运算
1.准备工作(需要用的软件安装)1.1安装VS2015CUDA是以VS为基础的,因此要先安装VS。安装CUDA的时候会自动检测VS的版本。安装步骤较简单,下载在线安装程序之后双击即可,配置栏有关C++的都勾上,其中最重要的一项为VC++,点击下一步安装。 1.2安装CUDA解压和安装路径最好不要改,否则会出现找不到路径之类的不要麻烦。 CUDA解压完后会自动安装,出现检...原创 2018-09-13 16:38:08 · 25353 阅读 · 22 评论 -
arduino 捕获遥控器信号,并输出GPIO控制电平与PWM控制电平
主要功能:通过arduino捕获pwm信号,程序实现两个功能分别是:1.将遥控器的输入的pwm值(占空比为5%~10%),转化输出0%~100%的pwm占空比2.根据pwm的大小,判断输出GPIO的高低电平主要(代码)思路:1.定义必要的pwm最大值,最小值,中间值;定义两组IO用以确定pwm的方向和大小2.初始化3.主循环中读取direction_pin_in 引脚用......原创 2018-09-13 14:25:35 · 5943 阅读 · 18 评论 -
ardupilot 代码下载及其编译
本文的开发环境是Ubuntu18.04。如果操作系统是Ubuntu其他版本的话问题不大,如果是Windows操作系统的小伙伴请绕道。一、源码下载及相关配置1.ardupilot 代码可以直接在github上搜索下载,也可以使用如下命令直接clone。 git clone https://github.com/ArduPilot/ardupilot2.进入源代码文件夹......原创 2018-09-28 20:36:19 · 2038 阅读 · 0 评论 -
px4 mavlink消息自定义及其发送
在px4源码中自定义消息,并发送主要有以下三个大步骤:一、自定义mavlink消息 1.在myMessage.XML文件中自定义消息(注意消息ID不要与原有的重复)。具体消息ID可参考这里。 2. 选择上一步写好的xml文件,使用mavlink_generator生成mavlink_msg_my_message.h文件(XML栏是XML...原创 2018-10-09 13:49:36 · 5203 阅读 · 10 评论 -
安装mavlink_generator
mavlink_generator用于生成mavlink消息。1.去git 官网上下载源码 git clone https://github.com/mavlink/mavlink.git2.进入代码目录并更新子模块 cd mavlink git submodule update --init --recursive3.编译并运行python脚本...原创 2018-10-09 13:55:29 · 1666 阅读 · 0 评论 -
px4自定义uORB消息,并实现收发
如题,实现以上需求。主要有三个步骤:一、添加一个新的topic(话题)(以uORB_test.msg为例) 1.在根目录中msg文件下添加uORB_test.msg,并在该文件中加入所需的数据。(在新版本中必须要添加时间戳,否则编译不过) 2.在msg文件下的CMakeLists.txt文件中添加uORB_test.msg。 3.编译。.........原创 2018-10-09 14:47:32 · 3139 阅读 · 0 评论 -
机械革命电脑安装Ubuntu18.04+win10正版双系统
一、电脑设置系统默认安装了Win10。由于win10系统UEFI的限制,其他系统无法加载。因此要装双系统,必须先把UEFI模式改成Legacy模式,并将Security Boot 改为Disabled。具体操作如下:1.电脑开机之后出现机械革命图标时按下F2进入Bios设置界面2.在“Advanced"->"OS Support"->"Legacy OS";3."Security"-&...原创 2018-07-03 11:41:22 · 12778 阅读 · 4 评论