- 博客(34)
- 收藏
- 关注
原创 【PX4日志解析报错】pyulog工具解析日志出错
px4的日志文件一直通过pyulog做解析 但是发现有的时候会出现错误,解析不了,使用网站解析也会失败,但是这把数据很重要所以想办法必须解决,报错如下。定位问题,我是用linux,找到运行的包pyulog包,在python3.8下面。经过deepseek指点,把else后面的分支改成。保存后,再次运行pyulog命令,全部解析出来了。找到报错的这个函数_parse_string。打开这个core.py文件。
2025-02-23 20:08:47
160
原创 PX4 board_adc模块理解
比如一共是32通道 i遍历32 然后 1<<i表示生成第i位(0-31位)的数字和channel做与。如果那个通道是1 那就说明启用了 给_channel_count++这里宏定义了一个通道 是18表示是温度传感器的通道。drivers下面包含很多传感器和一个adc文件。adc文件下有ads1115和board_adc。这就说明飞控是有自己的adc留给我们用的。读取adc使用了多少个通道。
2024-08-02 16:28:42
278
原创 ADS1115配置寄存器
硬件的东西我是一点也不懂,为了给无人机安一个传感器先学一点,有些看着还挺有意思的记录一下(其实都是gpt复制粘贴)在 ADS1115 中,配置寄存器(Config Register)包含了很多配置信息,包括输入多路复用器(MUX)的设置。MUX 设置决定了哪个通道正在被测量。配置寄存器的高字节部分(MSB)包含了 MUX 设置的位,这些位指定了当前选定的输入通道。
2024-08-01 16:43:33
470
原创 PX4 drivers I2C读取传感器数据 ads1115驱动解析
所以这里recv_len是0然后,用于接受设备数据的缓冲区指针*recv这里也是nullptr表示不需要存储接受的设备数据。然后send说过了是一个寄存器的地址 地址中的内容就是发送的内容。send_len和recv_len一般是有一个是1一个是0表示我这次做的操作是读还是写。接下来transfer会对send_len和recv_len做判断 如果是发送就走发送的内容 否则就是接收。这里的READ_CMD实际上是寄存器的地址 这个函数的功能在transfer中实现。可以看到这里send_len是0。
2024-08-01 14:40:20
478
原创 【PX4源码】attitude_estimator_q_main.cpp姿态更新解读AttitudeEstimatorQ::init_attq()&update()
初始化的第一步是利用加速度计的读数,可以点进去看到_accel是直接读sensors的值,那么_accel加速度计在静止时的读数是等于一个反向的重力加速度(这个关于加速度计的原理,也是个坑)。i是地球系ned系的x轴也就是north北,北是由磁力计mag测出来的(mag测出来的不是北,仍存在一个磁偏角,后面马上会纠正)。那么由于k是单位向量,_mag - k * (_mag * k)的意思就是把_mag中沿k方向的分量减去,从而保证求出来的i和k是正交的,orthogonal with ‘k’
2024-04-30 22:10:26
699
原创 torch.reshape理解
返回一个张量,数据和元素的数量和输入相同,但是具有指定的形状单个维度可能是-1,这个情况下,是根据剩余维度和输入元素推断。
2023-09-06 14:35:10
421
原创 PX4报错FAILED: external/Stamp/sitl_gazebo/sitl_gazebo-configure解决
PX4仿真报错
2022-10-30 19:58:45
7043
17
原创 5. 最长回文子串
这题的思路是递归,问题的关键是如何判断一个子串是不是回文子串,我的思路是在主函数外再写一个public static类的静态方法,通过递归判断传入的子串s是不是回文。判断方法是:如果字符串的首尾相同,那如果去掉首尾是回文子串就是这只需要递归就可以但是问题是力扣不让再另外定义一个方法?这搞得我不想做了,本来这是很自然的很清晰的思路。结果一直卡在这道题上。看了题解发现这个思路也不太好。因为每次判断的结果都没有保存,因此其实浪费了大量的计算花销因此列一个二维数组,数组ij表示的是s.substring
2022-03-14 20:19:17
125
原创 Cannot make a static reference to the non-static method XXX() from the type XXX
不能用调用静态方法的方式调用一个非静态的方法:我在定义方法的时候不是static的出现这个报错是因为java调用任何方法都要实例化,c++里有函数的概念, 但是java里的函数实际上是类的方法解决方法,实例化类的对象,然后通过这个类调用该方法,这个类可能完全不需要更好的解决方法当然是声明静态方法static,这样方法就是类的方法,不需要实例就可以调用,用法类似于c++的函数概念...
2022-03-06 15:30:48
902
原创 pygal绘制图表统计两颗骰子点数和的分布
from random import randintimport pygalclass Die(): def __init__(self, num_sides=6): self.num_sides = num_sides #如果不传入参数就是6面 def roll(self): return randint(1,self.num_sides)#1-num_sidesdie_1 = Die()die_2 = Die()results = []for roll_num
2022-02-22 22:25:42
700
原创 range()查手册的笔记
class range(start, stop[, step])The arguments to the range constructor must be integers (either built-in int or any object that implements the index() special method). If the step argument is omitted, it defaults to 1. If the start argument is omitted, it
2022-02-22 16:46:46
106
原创 随机漫步散点图
import matplotlib.pyplot as pltfrom random import choiceclass RandomWalk(): def __init__(self, num_points = 5000): """初步化随机漫步的属性""" self.num_points = num_points #初始化,传入实参num_points #所有随机漫步都始于(0,0) #创建两个列表用于存储坐标,届时只要plot函数 #传入两个列表即可 sel
2022-02-22 15:48:39
181
原创 python matplotlib生成图表基础
本节的目标是绘制一个y = x**2的函数图像plot图表 绘制图表plot()函数绘制图表,传入参数,输入值和输出值,还可以指定其他参数plt.plot(input_values, squares, linewidth = 5)要绘制单个点,可使用函数scatter() ,并向它传递一对 x 和 y 坐标,它将在指定位置绘制一个点plt.scatter(2, 4, s=200)传入xy坐标,s表示点的大小```pythonplt.axis([0,1100,0,1100000])axi
2022-02-22 11:13:41
756
原创 2021-10-30
这里写自定义目录标题#include<stdio.h>#include<pthread.h>#include<termios.h>#include<stdio.h>#include<pthread.h>#include<termios.h>#include<unistd.h>int flag;void* thread(void arg){int a,b,res;a=0;b=1;res=0;whi
2021-10-30 21:08:34
142
原创 2021-10-28
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入#include<stdio.h>#include<pthread.h> #include<
2021-10-28 23:09:31
207
原创 7-45 螺旋方阵 (20分)
7-45 螺旋方阵 (20分)所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。输入格式:输入在一行中给出一个正整数N(<10)。输出格式:输出N×N的螺旋方阵。每行N个数字,每个数字占3位。输入样例:5输出样例:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9`#include<s
2020-09-06 17:57:00
174
原创 练习3-8 查询水果价格 (15分)
给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。首先在屏幕上显示以下菜单:[1] apple[2] pear[3] orange[4] grape[0] exit用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。输入格式:输入在一行中给出用户连续输入的若干个编号
2020-07-11 17:29:42
313
原创 练习7-8 方阵循环右移 (20分)
本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n−1列变换为第n−m、n−m+1、⋯、n−1、0、1、⋯、n−m−1列。输入格式:输入第一行给出两个正整数m和n(1≤n≤6)。接下来一共n行,每行n个整数,表示一个n阶的方阵。输出格式:按照输入格式输出移动后的方阵:即输出n行,每行n个整数,每个整数后输出一个空格。输入样例:2 31 2 34 5 67 8 9输出样例:2 3 15 6 48 9 7#include<stdio.h>
2020-07-05 22:47:06
117
原创 练习3-4 统计字符 (15分)
本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。输入格式:输入为10个字符。最后一个回车表示输入结束,不算在内。输出格式:在一行内按照letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数的格式输出。输入样例:aZ &09 Az输出样例:letter = 4, blank = 3, digit = 2, other = 1```csharp#include&
2020-06-30 11:39:05
329
原创 习题4-9 打印菱形图案
本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。输入格式:输入在一行中给出一个正的奇数n。输出格式:输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。输入样例:7输出样例: * * * * * * * * * * * * * * * * * * * * * * * * * #include<stdio.h>int main(){ int n; scanf("%d",&
2020-06-30 11:27:19
126
原创 习题7-2 求一批整数中出现最多的个位数字
给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。输入格式:输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。输出格式:在一行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。输入样例:31234 2345 3456输出样例
2020-06-29 19:18:53
103
原创 习题4-5 换硬币
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?输入格式:输入在一行中给出待换的零钱数额x∈(8,100)。输出格式:要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。输入样例:13输出样例:fen5:2, fen2:1, fen1:1, total:4fen5:1, f
2020-06-29 17:27:04
122
原创 练习7-4 找出不是两个数组共有的元素
给定两个整型数组,本题要求找出不是两者共有的元素。输入格式:输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。输出格式:在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。输入样例:10 3 -5 2 8 0 3 5 -15 9 10011 6 4 8 2 6 -5 9 0 100 8 1输出样例:3 5 -15 6 4 1#include<s
2020-06-29 17:16:06
155
原创 习题9-1 时间换算
习题9-1 时间换算 (15分)本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。输入格式:输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n(<60)。输出格式:输出在一行中给出hh:mm:ss格式的结果时间。输入样例:11:59:4030输出样例:12:00:10#include <stdio.h>struct time { int h,m,s;};int main
2020-06-27 19:24:09
583
原创 6-27复习
1.while语句的一般形式如下,其中的循环体语句只能是一条语句。while (表达式)循环体语句答案:T解析:for 循环和while 循环循环体都是一条语句,但是可以加{}变成复合语句,但也算一条。2.if-else语句的一般形式如下,其中的语句1、语句2只能是一条语句。if (表达式)语句1else语句2答案:T理由同上。3.函数f定义如下,执行语句“sum=f(5)+f(3);”后,sum的值应为( )。int f(int m){ static int i=0;int
2020-06-27 19:02:19
3789
原创 复习 625(2)
逻辑表达式使用逻辑运算符,&& || 从左到右计算,一旦能得到表达式的结果,就停止计算表达式1&&表达式2 如果表达式1值0,因为是与,所以结果一定是0,表达式2,就不执行了,如果表达式2是赋值语句,那也就不赋值了...
2020-06-25 22:02:32
135
原创 复习6-25
C语言的标识符命名规则C语言的标识符一般应遵循如下的命名规则:1 标识符必须以字母a~z、 A~Z或下划线开头,后面可跟任意个(可为0)字符,这些字符可以是字母、下划线和数字,其他字符不允许出现在标识符中。2 标识符区分大小写字母3 标识符的长度,c89规定31个字符以内,c99规定63个字符以内4 C语言中的关键字,有特殊意义,不能作为标识符5 自定义标识符最好取具有一定意义的字符串,便于记忆和理解。其实,这和大多数的语言规定差不多。养成良好的命名规范,才能写出更加具有可读性的程序。———
2020-06-25 19:59:09
228
原创 PTA第十五周
6-4 指定位置输出字符串 (20分)本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。函数接口定义:char *match( char *s, char ch1, char ch2 );函数match应打印s中从ch1到ch2之间的所有字符,并且返回ch1的地址。裁判测试程序样例:#include <stdio.h>#define MAXS 10char *match( char *s, c
2020-06-14 17:27:48
1551
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人