- 博客(173)
- 资源 (6)
- 收藏
- 关注
原创 STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法
SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。
2023-05-19 13:56:11
3216
1
原创 记一次路由器频繁掉线问题的分析、解决与发展
本文记录了一次解决由DHCP服务器设置导致的频繁掉线问题的发现思路与解决办法,并在此基础上拓展了解PPPoE协议,给出无线路由器和光猫的配置思路。
2022-07-25 22:36:36
13084
原创 在Linux环境下使用JLink一键编译烧录调试包括但不限于Cortex-M芯片,如STM32、SAM、K60等
本文描述了一种通过JLINK下载烧录程序,并配置Vscode脚本,实现一键编译烧录的方案。
2022-07-08 00:36:14
5341
2
原创 解决label-studio的Validation error (Maximum total size of all files is
1.问题如题,使用label-studio遇到了:百度、Google和github上搜索无果后,决定自己改了2.解决思路开源软件嘛,直接全局搜索报错代码:Maximum total size,找到了:一路全局搜索:刚好和报错的Validation error (Maximum total size of all files is 262144000 bytes, current size is 587452099 bytes)相符合(262144000=250×1024×1024)问题解
2022-05-08 13:34:12
2224
原创 STM32学习过程记录10——使用STM32CubeMonitor可视化调参
零.下载与安装跳过,基本操作。这个软件st的官网里有,安装好后,打开是这个样子的:这个软件还是有额外很多功能的,不过这个用来快速使用一下,免去写串口协议发送到上位机的麻烦。一.使用首先确保有一块ST-Link。1.1 选择变量双击打开后,创建一个新配置然后添加信息然后记住你创建的变量组的名字:1.2 共享变量keil里面要随便选一个Debugger,解除对STlink的占用。选择你那唯一 一个的STLINK1.3 读取变量选择你那个st-link1.4 查看变量
2022-05-02 16:27:06
1320
2
原创 STM32学习过程记录9——使用printf
零.通用说明需要修改代码中的串口句柄or变量,来适配输出串口(硬件)代码是否能使用,有可能和编译的优化等级有关,也就是这个:需要#include "stdio.h"输出模式可以修改发送函数,比如中断、DMA(不推荐)等方式发送,默认正常发送一.HAL库发送延迟可以改低,可以更改发送代码适配各种库struct __FILE{ int handle;};FILE __stdout;int fputc(int ch,FILE * f){ HAL_UART_Transmit(
2022-05-02 10:48:00
662
原创 【信号与系统】学习记录2——1.2基本信号
零.前言按照PPT的分章来决定每篇的内容长度与分节。一.阶跃函数ε1.1 定义1.2 性质阶跃函数的积分是斜坡函数,即:二.冲激函数δ2.1 定义其推导过程为:2.2 关系2.3 作用冲击函数可以描述间断点的导数三.冲激函数的广义函数定义3.1 函数的定义3.1.1 普通函数的定义就我们学的那种 映射的概念。3.1.2 广义函数的定义很类似于普通函数,但是广义函数的自变量换成了检验函数:φ(t)当然,定义式不唯一。3.2 冲激函数的广义函数定义我再简
2022-01-24 23:05:30
13902
1
原创 【信号与系统】学习记录1——1.1信号的分类
零.前言没事学学信号与系统的理论,主要看的是bili上的信号与线性系统分析 吴大正 郭宝龙,公式尽量用LaTeX编辑,如果偷懒了,那就截屏。括号内的内容一般是我的理解。一.确定信号和随机信号1.1 确定信号定义:可用确定时间的函数表示的信号1.2 随机信号定义:不能用确切的函数表示,只能知道它的统计特性(你并不能在发生前画出其图像)。二.连续信号和离散信号2.1 定义连续时间信号:连续时间范围内有定义的信号,简称连续信号。如果其函数值也连续,则成为模拟信号(就像PWM波一样)。比如这两
2022-01-24 21:40:39
5095
原创 Go语言学习记录4——数组、切片和变参函数
一.数组1.1 数组的声明1.1.1 常规声明var a [3]Type例如:package mainimport ( "fmt")func main() { var a [3]int fmt.Println(a)}/* outputs:[0 0 0]*/数组默认为了[0 0 0]1.1.2 短变量形式的初始化刚才那样的初始化可以用该语句代替:a := [3]int{0, 0, 0}当然你可以填写需要的值若后面的常量并没有包含全部的Si
2022-01-22 17:23:51
525
原创 Go语言学习记录3——条件和循环语句
一. 条件语句go语言的循环语句长得像这样:注意else要和 { 在同一行if condition { } else if condition {} else {}//orif condition { }除了这样,还有先执行statement再判断condition的语句if statement; condition { }二.选择语句Switch2.1 普通的SwitchGo中的Switch语句形如C语言:package mainimport (
2022-01-22 15:51:21
649
原创 ROS学习记录17【SLAM】仿真学习6【完结】—— 无人驾驶
零.前言这次使用Move_Base框架配置配置,就能实现自主导航了。仿真篇结束,后面找机会拿个实物来玩儿。在整理包,后面会传到github和gitee上一.安装与介绍1.1 move_base安装sudo apt-get install ros-noetic-move-base框架是这样,我们只需要配置定位: amcl路径规划:局部与全局。其中,局部我们使用符合阿克曼模型的teb_local_planner地图:map_server,来创建代价地图里程计:odom已经配置1.2
2022-01-19 11:36:41
1994
2
原创 ROS学习记录16【SLAM】仿真学习5——将cmd_vel转换为ackman小车的速度
零.前言在ROS的机制下,绝大多数的速度模型都是:Twist,当然我们有符合阿克曼模型的:ackermann_msgs,不用那么麻烦,直接将Twist.linear.x作为后轮前进的速度、twist.angular.z作为我们转向角的角度更多的阿克曼转向模型参考(实际模型创建odom的时候使用):https://www.bilibili.com/video/BV1AA411g7DGhttps://www.bilibili.com/video/BV1cT4y1M7ts一.写代码在ros_ws/
2022-01-16 13:03:32
1922
1
原创 ROS学习记录14【SLAM】仿真学习3——开车,并发布坐标信息
零.前言因为是仿真,模型也是怪怪的,所以坐标信息就不用轮子积分的方式了。后面遇到真实的模型过后再具体分析阿克曼运动模型的速度转换。而且真实情况的运动分解更复杂,完全没有理想模型这么理想,所以要么就纯仿真熟悉流程,要么就直接上实物,有针对性的调试。所以,这次坐标信odom就从Gazebo里获取。顺路说一句,VScode里面的ROS插件解决了一个我一直想要的可视化urdf编辑:一.用Xbox控制小车运动鄙人写了一小段代码,通过Xbox手柄来控制小车移动。不管是正版还是国产,走Xbox协议的手柄都可以用
2022-01-13 09:13:37
1699
1
原创 Go语言学习记录2——基础语法【包、变量、函数】
一.包1.1 包在Go语言里,一个文件就是一个包(如果我没理解错的话)。Go语言会从package main开始运行。按照约定,包名与导入路径的最后一个元素一致。例如,“math/rand” 包中的源码均以 package rand 语句开始。也就是说我们这样引入包,那使用就应该是这样的(和Python很像):package mainimport ( "fmt" "math/rand")func main() { fmt.Println("My favorite number
2022-01-10 14:23:06
217
原创 ROS学习记录13【SLAM】仿真学习2——创建一个包含Lidar、Camera、IMU的Ackman小车
零.原理原理就是一个普通的小车,配合上Gazebo plugins实现Cazebo里的信息采集。对了我目前打算的是个后驱车,如果要四驱的,可以自己给前轮的Joint加两个velocity_controllers即可。一.造车1.1 写一个车先在src/slam_model/urdf/ackman.urdf写一个车:<?xml version="1.0" ?><robot name="ackman"> <!--Main Body Begin-->
2022-01-09 17:32:31
1573
4
原创 Go语言学习记录1——开始Go语言学习之路
零.前言我学Go的目的是,因为Go语言本身就是一个编译型语言,相较于Python,可能会有更好的执行效率。Go语言原生支持并发,对于高并发任务肯定会优于Python。不用
2022-01-08 22:21:26
632
原创 ROS学习记录12【SLAM】仿真学习1——ROS Control
零.前言学完了ROS的基础应用,我们就可以开始向更复杂的应用开始学习了,比如我们的SLAM。但是昂贵的底盘与激光雷达是学习这一部分的阻碍,为了弥补经费的不足,我们可以从0开始,创建一个自己的仿真小车,然后实现SLAM过程。最后真的有幸用到激光雷达和机器人底盘,那么直接移植写好的内容就可以了.本次实验的平台为ubuntu 20.04 + ros/noetic,无特殊说明,后面的教程都为这个。后面会把整个项目打包上传至github上,地址待定,写完再改。一.创建工作空间与包在工作空间下创建一个SLAM
2022-01-08 20:55:26
3438
6
原创 ESP32C3学习记录1——搭建开发环境
零.前言首先说一下为什么放弃8266。因为在与8266-12F差不多价格的ESP32C3对比下,C3多了蓝牙,USB等外设,且32的架构还支持更多的休眠模式更多的功能,这性价比刚刚的。一.安装环境介绍本电脑ℹ7-8750 ,ubuntu20.04,python用的和宝塔一样版本的3.8.3本安装教程不只局限于C3,ESP32S2,ESP32S3等芯片的开发环境也可以参考此教程。二.安装过程大前提:安装过程可以参考一手资料,官方而且可能会有更新,我的教程经供参考,所以看这个就可以了:https
2021-12-29 17:51:43
1555
原创 ubuntu20.04 美化
ubuntu20.04 美化下载Gnome插件(谷歌浏览器)安装必要的插件:下载Gnome插件(谷歌浏览器)https://extensions.gnome.org/:记得用飞机,不然无法使用谷歌浏览器插件。或者自己手动下载GNOME Shell integration然后安装chrome-gnome-shell,否则无法使用插件。sudo apt install gnome-tweaks chrome-gnome-shell安装必要的插件:在Gnome网页上搜索并安装以下插件:das
2021-10-04 10:00:34
2275
原创 ROS学习记录11——tf坐标变换与多海龟跟随
零.前言关于tf的内容,我也没有彻底理解透彻,只能讲述个大概,若有错误,请评论区斧正,谢谢。在《机器人基础》这个课里,有推导关于机器人坐标变换的说明,当然,我没学,学了也因为当时数学不好没听懂,所以这篇文章也不会讲太多数学层面的东西。一.概念1.1 引言我们知道,物体的位置是相对的。那么在描述一个系统中例如三个物体的位置关系,我们可以通过假设A为原点,计算B相对于A的坐标,C相对于A的坐标。这样可以通过A+坐标的方式表示B,C的位置。当然,此时我们也可以把B当作坐标原点,根据刚才的坐标,我们可
2021-05-26 12:44:33
4475
10
原创 ROS学习记录10——.launch文件的编写与使用
零.前言roslacunch,只是方便我们一次运行大量节点,或者通过单个脚本运行多个节点的工具。这部分没啥好讲的,主要使用为机翻+调校官方文档,外加一些实例,官方文档的地址:roslaunch/XML一.元素结构roslaunch也是由xml语言构成,文件后缀为.launch.launch文件因该由<launch>、</launch>开始与结束,其他参数均为该TAG的子元素。其子元素有:<node>、<machine>、<include&
2021-05-25 15:07:18
3100
6
原创 ROS学习记录9——urdf文件的创建与使用
零.前言在学习这一节之前,至少得明白如何创建一个工作空间,如何编译工作空间,如何运行工作空间里的文件(把工作空间的环境目录添加到环境里)。如果有不会的,请看鄙人的ROS学习记录3。本节默认工作空间已创好,且添加到环境目录中。且基于ubuntu18.04 ROS Melodic一.urdf的定义1.1 概念官方wiki文档地址: urdf/Tutorials 人体骨架是怎样构成的?各块骨头间有关节来使得两块骨头可以旋转。在美术中,我们构建一个人体是通过如何构建的?用近似圆形的关节连接椭圆组成的骨
2021-05-25 12:46:37
8494
3
原创 ROS学习记录8——RosBag的使用
一.概念为什么会存在ROSbag这个东西?ROSbag的作用是什么?rosbag作为ros提供的一种工具,它可以记录系统中有关主题的发布的数据。在某些复杂的场景下,我们机器人会偶然触发bug,但是如果要等待复现这种bug可能会花费大量时间,所以可以通过rosbag来复现场景。所以可以约等于将ROSbag理解为系统日志、机器人运行记录、强队demo。我们可以通过它查看机器人的运行时的信息,或者让机器人通过回放rosbag,以“相同的方式”再运行一次。二.记录rosbag会记录在控制台的当前目录
2021-05-23 16:40:57
1541
原创 Matlab数字图像处理学习记录【9】——表示与描述
表示与描述零.前言一.背景知识1.1 单元数组与结构1.1.1 单元数组零.前言当我们对一个图像分割为区域后,一般会对分割好的区域进行表示与描述,以便使“自然状态的”像素适合计算机处理。而对于区域有一个基本的划分,为:外部特征(区域的边界)或内部特征(组成区域的像素)两种方式来表示区域。然后下一个任务则是在选择表示的方案的基础上描述区域。比如用图像的边界来表示区域,而边界可以用边界长度、凹面形状数目、凸包等特征来描述。不过无论选择什么特征,被选做描绘子的特征因该尽量对区域大小、平移、旋转这些变化不敏感
2021-05-09 11:33:57
2693
11
原创 Matlab数字图像处理学习记录【8】——图像分割
图像分割一.点、线和边缘检测1.1 点检测1.2 线检测1.3 使用edge函数进行边缘检测二.使用Hough(霍夫)变换的线检测一.点、线和边缘检测用于查找不连续的最常用的方法是对图像运行掩膜计算。就是将掩膜区与所包含的图像的灰度级乘积的和。1.1 点检测在该模板下,给定一个非负阈值,设|R|≥T则可以说该点被检测出来:对于掩膜最重要的要求是,在一个孤立点的时候,掩膜的响应必须最强,而在亮度不变的区域中,响应为零。可以通过该方法实现g = abs(imfilter(double(f), w)
2021-04-11 10:48:04
2532
5
原创 Matlab数字图像处理学习记录【7】——形态学图像处理
一.预备知识1.1 集合论中的基本概念简单来说,如果将一幅图像看做一个映射:f是为每对不同坐标(x,y)分配亮度值的映射,则f(x,y)称为数字图像。比如A是Z2中的一个集合,其中的元素是像素坐标(x,y).若w=(x,y)是A的一个元素,那么可以写为:w∈A。同样,若w不是A的元素,则可以写为:w∉A。满足特殊条件的像素坐标集合B可以写成: B={w|condition} 又或者所有像素均不属于集合A,记为Ac, 则Ac={w|w∉A}。该集合是集合A的补集。记为C=A∪B。同理可得:交集A∩B
2021-03-28 10:42:37
3050
2
原创 Matlab数字图像处理学习记录【6】——小波
小波零.前言一.背景知识零.前言在对数字图像进行多分辨率观察和处理时,离散小波变换DWT是首选的数学工具。它还能够帮助我们深入了解图像的空间域和频域特性。一.背景知识对一个大小为M×N的图像f(x,y),其正向离散变换T(u,v,…)可以用一般的多项式关系表示T(u,v,...)=∑x,yf(x,y)gu,v,...(x,y)T(u,v,...) = \sum_{x,y}f(x,y)g_{u,v,...}(x,y)T(u,v,...)=x,y∑f(x,y)gu,v,...(x,y)其中,
2021-03-13 14:52:07
952
3
原创 Matlab数字图像处理学习记录【5】——彩色图像处理
彩色图像处理一.Matlab中彩色图像的表示方法1.1RGB图像1.2索引图像1.3用来处理RGB图像或索引图像的IPT函数二.转换值其他彩色空间2.1NTSC彩色空间2.2YCbCr彩色空间2.3HSV色彩空间2.4CMY和CMYK彩色空间2.5 HSI彩色空间一.Matlab中彩色图像的表示方法一般来说在IPT里,彩色图像被当做索引图像和RGB图像来处理。所以重点学习这两个图像。1.1RGB图像这个没啥说的,就是将红绿蓝三色图像组合起来。当然,可以用cat将图像组合起来。frgb = cat(
2021-02-27 13:18:03
9058
4
code-server_3.6.0_amd64.zip
2020-10-22
数据结构2-线性表之顺序储存(顺序表)C语言版
2020-10-21
SQL Server Native Client 10.0.zip
2020-07-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人