- 博客(49)
- 资源 (56)
- 收藏
- 关注
原创 在ROS 2中发布nav_msgs/Odometry(里程计)消息
在ROS中,TF是一种用于跟踪和广播坐标系变换的机制,它允许多个节点之间共享坐标系信息。在机器人控制中,TF通常用于描述不同坐标系之间的关系,如机器人基座坐标系(base_link)相对于全局坐标系(odom)的变换。发布的TF消息,可以被其他ROS节点监听和使用,以获取机器人在全局坐标系中的准确位置和方向信息。这对于在ROS系统中实现机器人导航和感知非常重要。用于发布机器人的里程计信息,即机器人在全局坐标系中的位置和方向变换。具体来说,它发布了一个。消息,描述了机器人的当前位姿。
2024-01-03 14:48:38 1070
原创 VScode安装C/C++编译器步骤
完成后,确保选中“立即运行 MSYS2”框,然后选择“完成”。这将为您打开一个 MSYS2 终端窗口。下载后进入到VScode文件夹下,点击msys2-x86_64-20231026.exe进行安装。组中默认的包数,当系统提示是否继续安装时,请输入 '打开一个terminal,测试一下安装是否成功。出现上面版本提示,说明安装成功。按 Enter 键接受。
2023-12-21 11:02:59 590
原创 Linux设备与STM32 USB串口通讯
好的,你的STM32设备已经被识别为一个USB ACM(Abstract Control Model)设备,对应的串口设备文件是。等终端工具,或者通过编程语言(如C语言)来与STM32进行通信。这是一种常见的在Linux系统上与STM32通信的方式。这个设备文件进行串口通信。以下是一个简单的C语言代码示例,用于打开。保证STM32 USB串口虚拟成功。
2023-12-04 16:50:02 960
原创 Qt实现将字节数组以hex形式显示到文本框的方法
综合来看,如果你更偏向使用Qt的功能,并且性能要求不是非常严格,第一种方法可能更适合。如果你更喜欢使用标准C库函数,并且对性能有更高的要求,第二种方法可能更合适。在任何情况下,都要小心缓冲区溢出问题,并确保代码的可读性和可维护性。
2023-11-15 08:52:19 431
原创 STM32 BootLoader设置
2 . 编写程序,接收应用程序的BIN文件,通过FLASH WRITE函数写入到目标扇区3. 跳转到应用程序。
2023-10-14 14:47:51 501
原创 特征值,特征向量,SVD分解,PCD分解
对于n阶方阵A,在A张成的空间里,存在非零向量v, 该向量转换到A张成的空间时,方向不变,大小变为λ倍。① Av = λv变换一下:对于A向量,特征向量存在非零解的充要条件是下面的行列式值为0:计算出特征值λ。λ可能有多个值,分别将每个值代入公式②,计算向量v,v是个表达式,也就是可以是多个向量。向量v只会被伸缩而不会改变方向。代入任意一个值,得到一个特征值λ的特征向量v。
2023-09-04 16:42:16 208
原创 Ubuntu22.04系统ROS2开机自启动
参考上面两个文章创建rc.service,并放入/usr/lib/systemd/system/目录下具体指令写在rc.sh中,这里脚本内的其实就是在终端命令行中运行的命令!!!根据实际情况修改即可。
2023-07-12 16:04:58 916
原创 树莓派4BUbuntu系统的串口UART配置
重启后,遇到权限问题,由于tty属于"dialout"组别,将用户加入该组别即可。如果没有更换pip源会报错,所以指定安装源。
2023-07-12 09:51:38 772
原创 SHH登陆
ssh-copy-id : 无法将“ssh-copy-id”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。编辑/.ssh/config文件。
2023-05-13 09:11:28 159
原创 解决socket service端口占用问题
这样,即使上一个服务还没有完全关闭,也可以在相同端口上启动另一个服务。在创建socket service后加入如下设置。
2023-04-06 18:48:11 894
原创 OpenCV双目视觉测距
4.计算基础矩阵:使用这些特征点计算基础矩阵,该矩阵可以用于估计两个相机之间的几何关系。2.捕获图像:使用两个相机捕获两个不同视角的图像。5.计算本质矩阵:使用相机内部参数和基础矩阵计算本质矩阵。请注意,这只是OpenCV测量两个相机之间距离的一种方法,还有其他方法可以使用,具体取决于您的具体应用场景和需求。6.计算位移矩阵:使用cv2.stereoRectify()函数来计算视差校正和投影矩阵,并从中提取位移矩阵。7.计算距离:最后,使用位移矩阵和三角剖分算法来计算两个摄像头之间的距离。
2023-04-04 19:53:02 1743
原创 Python的强制类型转换
模块提供了一些函数,可以将字节数组按照指定格式解析成为一个Python对象,这个Python对象包含了结构体中定义的各个字段的值。类定义结构体时,需要使用类似于C语言中的格式控制字符串来指定结构体中各个字段的类型和顺序。模块也提供了函数,可以将一个Python对象打包成为一个字节数组,这个字节数组的内容就是结构体中各个字段的二进制表示。模块进行打包和解包时,需要使用与所处理数据的实际类型相对应的格式控制字符串,否则可能会出现数据解析错误的问题。,该结构体包含一个2字节的整数和一个2字节的字符串。
2023-04-04 19:08:05 1187
原创 CUI_RTOS笔记(五):添加任务函数
添加任务函数 : u32 OS_AddFunction(TaskStr* task,osfun fun,u32 time,void* param)参数: task 任务指针,代表是哪根任务链条。 fun 添加的执行函数。 time time毫秒之后,该节点结束。再次执行到该链条时,会执行下一个节点函数。 param 传递给fun的参数返回值:新添...
2023-02-25 13:56:10 66
原创 Undefined reference to crcsum(unsigned char const*, unsigned long, unsigned short)
c++代码包含c代码出现警报:Undefined reference to crc_16(unsigned char const*, unsigned long, unsigned short)
2022-08-09 09:34:55 416
原创 浮点数表示法及其精度探讨
UBX中类似浮点数的8位和16位整形表示法: 8位是将高3位做指数,低5位做基数,范围是(0~31)乘以2的(0~7)次方。16位是将高5位做指数,低11位做基数,范围是(0~2047)乘以2的(0~31)次方。查阅IEEE754并没有上面的8位和16位的表示法,但是这种方法可以借鉴。IEEE754标准 图 4...
2021-11-15 19:40:31 1668 3
原创 CUI_RTOS笔记(三):判断函数
函数原型:u32 OS_AddJudegeFunction(TaskStr* task,osfun fun,u32 time,jugefun funJuge,void* param);功能:添加条件判断函数到任务,定时器中判断条件函数如果为真则计时结束,跳转任务。判断函数可以定时时间设置很大,可以认为是死等一个条件,才能执行后面的操作。...
2021-10-15 09:26:41 94
原创 CUI_RTOS(四):使用步骤
使用步骤: 0:malloc_init() ; // malloc初始化 1:TaskStr* taskMain = os_creatTask(); // 创建任务流程 2:将os_Interval();放入定时器中断中,间隔调用,间隔是OS_TIME_BASE。实际中我是放...
2021-10-14 17:01:48 113
原创 CUI_RTOS笔记(一):总体架构
CUI_RTOS的结构如上图所示。本质是一条环形的任务链表下函数的单链表。每个任务周期会执行一条任务链表的一个函数节点。
2021-10-14 12:47:30 163
原创 CUI_RTOS笔记(二):循环函数
u32 OS_AddCycleFunction(TaskStr* task,TYPE_NUMBER num); // 添加循环函数到任务该函数功能是执行task任务链表,在它之前函数循环执行num次。利用这个功能,可以实现特定情况下,对一个函数循环执行。等函数不符合条件时,执行后面的功能。当前的项目用到这样的需求:无人机起飞时,需要等待夹爪打开,打开后才发送起飞命令:上面的利用OS_AddCycleFunction函数,将马达张开的动作执行0x1ff次,这个时间足够...
2021-10-14 11:12:52 97
原创 ASCII码的大小写转换
大小写之间只差一个0x20// 转大写char ASCII_2Big(char dat){ return dat& (~0x20);}// 转小写char ASCII_2Small(char dat){ return dat|0x20;}
2021-05-14 13:55:20 1836
原创 printf 函数 实现
printf 函数 实现 修改了部分原链接错误增加了浮点数和双精度的位数功能(%.2f %.4l)增加了负数的支持原链接:https://blog.csdn.net/bjbz_cxy/article/details/88097406https://blog.csdn.net/SDong_FDong/article/details/107905992#include "stdio.h"#include "malloc.h"typedef unsigned char u..
2021-05-14 10:32:05 327 1
转载 对C语言中va_list,va_start,va_arg和va_end的一点理解
https://www.cnblogs.com/bwangel23/p/4700496.html 这几个函数和变量是针对可变参数函数的,什么是可变参数函数呢,最经典的莫过于printf和scanf,这两个函数的声明如下:1 int printf(const char *format, ...);2 3 int scanf(const char *format, ...); 这两个函数声明中省略号(...)表示的就是任意个数的参数,可变参数函数就是输入的参数的个数是可变的,那么这个.
2021-05-14 09:09:57 166
原创 关于CANOPEN 的ID设置(HAL库)
STM32的ID过滤器有两种关于屏蔽位的设置,1个32位过滤器模式和2个16位过滤器模式:STM32的HAL库中关于这个ID设置在结构体CAN_FilterTypeDef中定义。但这个定义设计的并不好:1个32位过滤器模式下:FilterIdHigh 是指ID的高16位;FilterIdLow是指ID的低16位。这两个变量组成一个32位ID。FilterMaskIdHigh和 FilterMaskIdLow是掩码的高低16位。这两个变量组成32位的ID掩码。2个16位过...
2021-05-13 14:51:10 1112
原创 刹车电阻的选型
刹车电阻需要选择合适的功率和阻值。首先从能量转换和守恒的角度来考虑刹车电阻的选型。我们的设备总体质量约600kg,分摊到每个小车约200kg,每个小车有2个驱动器,分摊到驱动器上的质量约100kg。行驶速度最大是4m/s。根据动能公式:EK = (m * v^2) / 2最大动能为:100kg * 4m/s * 4m/s / 2 = 800 J根据功的公式:W = P * t如果想在2.5秒内刹住车,功率 P = W/t = 800/2.5 = 320 J/s这个能量需要被刹
2021-03-27 16:39:56 6016 2
原创 Intel HEX文件格式学习心得分享
:① HEX文件以ASCII码的形式显示16进制数据。② HEX文件每一条记录都是固定格式,以“:”开头,数据部分分为5个区域:前2位是数据长度域,接着是4位的地址域,接着是2位的数据类型域,再是数据区域,长度在最前面的数据长度域定义,最后是2位校验位。校验方法是:所有数据视为16进制的数据,再相加和为0。③ 数据类型域只能是如下6种数据:00 数据记录01 文件结束记录02 扩展段地址记录03 开始段地址记录04 扩展线性地址记录..
2021-01-30 17:43:40 717 1
AD-PWM-STC20C52AD.rar
2021-03-27
跳频协议--nRF24LE1及nRF24LU1+的GAZELL跳频协议.rar
2020-08-16
华为面试题
2019-03-22
Using Modbus ® Protocol with Micro Motion ® Transmitters
2019-02-15
cartographer论文英文版
2023-11-06
51程序电压表.zip
2021-03-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人