OPENMV结合PIX飞控实现四轴定点 循迹 2017电赛

2023-05-16

本文章代码已上传Github:
https://github.com/Kevincoooool/2017_Follow
有兴趣的可以加个STAR

自从17年国赛之后,自己做了openmv,加了很多群,也了解到很多人都在想着这个题。
第一版
这里写图片描述
第二版
这里写图片描述
第三版
这里写图片描述
这里写图片描述
我们做国赛的时候实现了全部功能,找了下题目,这篇文章就以这道题来讲吧。

题目:
这里写图片描述
这里写图片描述
看到题相信大家都送了口气,不是巡线,不用去思考怎么识别直线、曲线、直角、起点圆啊这些,因为在赛前我们队一直在想着怎么用OV7670或者OV2640来实现这些东西的识别,那段时间也确实找到了段资料:
http://blog.csdn.net/hello_world12138/article/details/51974092
这位大佬写的相当详细,大家也可以参考下来写自己的识别算法。

而我们采用的方案是OpenMV+PixHawk+STM32F4
这种方案就是最省事,不需要自己写飞控,不需要去调姿态的PID,对于玩过PIX的人来说最方便。
这里写图片描述

OPENMV负责图像的采集和处理,PIX负责飞机的基础稳定飞行和定高,STM32负责控制PIX怎么飞,也就是用32来模拟了一个遥控器,输出PWM波后经过PPM编码器转换成PPM信号给pix就能用32控制pix啦。

一、OPENMV的设计
当时我们是买的官方代理的OPENMV3,价格388呢,还好能报销哈哈,用openmv实现了对地面黑点的检测,然后通过串口3把黑点的坐标值传回给STM32。
这里写图片描述

OPENMV寻找黑点串口输出程序

# 寻找黑点串口输出程序 - By: Kevincoooool - 周四 11月 23 2017
import sensor,time,pyb,math
from pyb import Pin, Timer, LED, UART
#黑色点阈值
black_threshold = [(0, 64)]
#xy平面误差数据
err_x = 0
err_y = 0
#发送数据
uart_buf = bytearray([0x55,0xAA,0x00,0x00,0x00,0x00,0xAA])

#串口三配置
uart = UART(3, 115200)
uart.init(115200, bits=8, parity=None, stop=1)

sensor.reset()
sensor.set_pixformat(sensor.RGB565)#设置灰度信息
sensor.set_framesize(sensor.QQVGA)#设置图像大小
sensor.skip_frames(20)#相机自检几张图片
sensor.set_auto_whitebal(False)#关闭白平衡
clock = time.clock()#打开时钟
while(True):
    clock.tick()
    img = sensor.snapshot()
    #寻找blob
    blobs = img.find_blobs(black_threshold)
    if blobs:
        most_pixels = 0
        largest_blob = 0
        for i in range(len(blobs)):
            #目标区域找到的颜色块可能不止一**重点内容**个,找到最大的一个
            if blobs[i].pixels() > most_pixels:
                most_pixels = blobs[i].pixels()
                largest_blob = i
                #位置环用到的变量
                err_x = int(60 - blobs[largest_blob].cy())
                err_y = int(blobs[largest_blob].cx() - 80)
        img.draw_cross(blobs[largest_blob].cx(),blobs[largest_blob].cy())#调试使用
        img.draw_rectangle(blobs[largest_blob].rect())
    else:
       err_x = 0
       err_y = 0
    #数组中数据写入
    uart_buf = bytearray([0x55,err_x>>8,err_x,err_y>>8,err_y,0xAA])
    print(err_x,err_y)
    uart.write(uart_buf)

二、STM32控制端程序设计
既然我们用的是STM32模拟遥控器,那我们就要先初始化两个定时器来输出八路PWM波,电调的频率基本上都是50hz,刚刚把代码贴上来了,但是想了想大家都是有基础的,这些初始化肯定会的。
一个串口用来读取OPENMV的数据,一个串口用来读取超声波模块的高度。
两个定时器用来模拟50hz的PWM波。

恩 ,对,然后就没了,最后还需要个PID控制函数来对OPENMV传回的黑点坐标值进行PID运算,转化为PIX能识别的‘遥控器’控制量即可实现定点。
对于怎么知道模拟出来的PWM波对应的遥控器的哪个通道值,大家只有拿着遥控器一个一个对应调了,记得做好记录。

题目分析:

基础一:把飞机放在黑点上方,需要一键自动起飞到指定高度,我们采用的方法:
按键按下模式1后,先模拟遥控器对PIX解锁、然后开始起飞,油门逐渐增加,增加的同时当高度高于20cm就开启定点,当飞机高度到达指定高度后开启定高模式,因为PIX的气压计定高不是很准,所以我们人为加了定高的修正,高度大于目标值就拉低油门,低于目标值就拉高油门,定高的同时也在定点,然后开始计时,到达指定时间,大幅拉低油门,自动降落。
主函数

int main(void)
{ 	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
	delay_init(168);  //初始化延时函数
	uart_init(115200);//初始化串口波特率为115200
	uart2_init(9600);
	uart3_init(115200);
	LED_Init();
	KEY_Init();
	IIC_Init();       //IIC初始化
	OLED_Init();
	OLED_Clear();
	TIM3_PWM_Init(20000-1,84-1);	//84M/84=1Mhz的计数频率,重装载值20000,所以PWM频率为 1M/20000=50hz.    
	TIM4_PWM_Init(20000-1,84-1);	//84M/84=1Mhz的计数频率,重装载值20000,所以PWM频率为 1M/20000=50hz. 	
	TIM2_Int_Init(10-1,8400-1);
	
	while(1)
	{
		Fly_Mode = 0;
		OLED_Clear();
		while(!Fly_Mode)
		{
			Fly_Mode=KEY_Scan();
			OLED_ShowNum(0, 2, Fly_Mode, 1, 16);
			OLED_ShowUnNum(0, 0, hight, 3, 16);
		}
		OLED_ShowNum(0, 2, Fly_Mode, 1, 16);
		LED = 0;
		delay_ms(200);
		LED = 1;
		switch (Fly_Mode)
		{
		case 1:
			Take_off();
			Start_Fixed_high();
			while(1)
			{					
				if(PID_flag == 1)
				{
					PID_flag = 0;
					PositionPID();
					High_fix();
				}	
				SStart_flag = 1;
				if(S_flag == 1)
				{
					S_flag = 0;
					i++;
				}
				if(i == 300)
				{
					i = 0;
					SStart_flag = 0;
					Land_down();
					break;
				}
			}
			break;
		case 2:
			Take_off();
			Start_Fixed_high();
			while(1)
			{					
				if(PID_flag == 1)
				{
					PID_flag = 0;
					PositionPID();
					High_fix();
				}	
				SStart_flag = 1;
				
				//1s开始计时
				if(S_flag == 1)
				{
					S_flag = 0;
					i++;
				}
				//计时盲飞
				if(i == 100)
				{
					mang_flag = 1;
				}
				
				//忙飞结束
				if(i == 120)
				{
					mang_flag = 0;	
				}
				
				//计时降落
				if(i == 200)
				{
					i = 0;
					SStart_flag = 0;
					Land_down();
					break;
				}
			}
			break;
		case 3:
			break;
		case 4:
			break;
		case 5:
			break;
		default:
			Land_down();
			break;		
		}
	}
}

串口解析OPENMV数据函数

void Vision_datadeal(void)
{
	int tmp, tmp1, tmp2;
	
	USART_SendData(USART2, 0x55);  //向串口2发送数据
	PID_flag = 1;
	if(USART3_RX_BUF[0]==0x55 && USART3_RX_BUF[5]==0xAA)
	{		
		/*接收视觉模块发来的信息*/
		if(USART3_Flage)
		{	
			USART3_Flage=0;
			tmp=((int)USART2_RX_BUF[0]<<8) + USART2_RX_BUF[1];
			hight=tmp/10; //除以 1000 转化为单位 M
			{
				/*  Target_Roll */
				tmp1=((int16_t)USART3_RX_BUF[1]<<8) + USART3_RX_BUF[2];
				tmp1 = Median_filer1(tmp1);
				if(tmp1>=32768)
				{
					tmp1 = tmp1-0xffff;
				}					
				else
				{
					tmp1 =tmp1;
				}
				pixX = tmp1;
				/*  Target_Pitch */
				tmp2=((int16_t)USART3_RX_BUF[3]<<8) + USART3_RX_BUF[4];
				tmp2 = Median_filer2(tmp2);
				if(tmp2>=32768)
				{
					tmp2 = tmp2-0xffff;
				}
				else
				{
					tmp2 = tmp2;
				}
				pixY = tmp2;
				
				if(Fly_Mode == 2 && mang_flag == 1)
				{
					if(pixY_last == 0 && pixY - pixY_last < -50)
					{
						mang_flag = 0;
					}
					else
					{
						pixY = -23;
					}
					TIM_SetCompare1(TIM3,1540); 	//Pitch		CH1 PB4 
					TIM_SetCompare3(TIM3,1530);		//Roll		CH3 PB0 
				}
				pixY_last = pixY;
			}							
		}	
	}
}

PIX加锁函数

void lock(void)
{
	TIM_SetCompare1(TIM3,1500); 	//Pitch		CH1 PB4 
	TIM_SetCompare2(TIM3,1000);		//Throttle	CH2 PB5
	TIM_SetCompare3(TIM3,1500);		//Roll		CH3 PB0 
	TIM_SetCompare4(TIM3,1000);		//Yaw		CH4 PB1
	TIM_SetCompare1(TIM4,1000);		//			CH5 PD12
	TIM_SetCompare2(TIM4,1000);		//			CH6 PD13
	TIM_SetCompare3(TIM4,1000);		//			CH7 PD14
	TIM_SetCompare4(TIM4,1000);		//			CH8 PD15
	delay_ms(3000);
}

解锁函数

void Unlock(void)
{
	TIM_SetCompare1(TIM3,1500); 	//Pitch		CH1 PA6 
	TIM_SetCompare2(TIM3,1000);		//Throttle	CH2 PA7
	TIM_SetCompare3(TIM3,1500);		//Roll		CH3 PB0 
	TIM_SetCompare4(TIM3,2000);		//Yaw		CH4 PB1
	TIM_SetCompare1(TIM4,1000);		//			CH5 PB6
	TIM_SetCompare2(TIM4,1000);		//			CH6 PB7
	TIM_SetCompare3(TIM4,1000);		//			CH7 PB8
	TIM_SetCompare4(TIM4,1000);		//			CH8 PB9
	delay_ms(4000);
	TIM_SetCompare4(TIM3,1500);		//Yaw		CH4 PB1
	delay_ms(1000);
	TIM_SetCompare2(TIM3,1300);		//Throttle	CH2 PA7		
	delay_ms(500);
	TIM_SetCompare2(TIM3,1000);		//Throttle	CH2 PA7
}

起飞函数

void Take_off(void)
{
	int Throttle=1000,Throttle_Increase=25,Hight_Last;
	OLED_ShowString(0,4,"Start",16);
	delay_ms(3000);
	OLED_ShowString(0,4,"Unlock",16);
	Unlock();
	
	Hight_Last=hight;
	while (hight<25)
	{
		TIM_SetCompare2(TIM3,Throttle);
		Throttle+=Throttle_Increase;
		if(Throttle>=1800)Throttle=1800;
		delay_ms(100);
		if (hight-Hight_Last>1)
		{
			Throttle_Increase=0;
			Throttle-=10;
		}
		if(hight>25)
		{
			PositionPID();		
		}
		Hight_Last=hight;
		TIM_SetCompare1(TIM3,1540); 	//Pitch		CH1 PB4 
		TIM_SetCompare3(TIM3,1530);		//Roll		CH3 PB0 
	}
//	TIM_SetCompare1(TIM3,1500); 	//Pitch		CH1 PB4 
//	TIM_SetCompare3(TIM3,1500);		//Roll		CH3 PB0 
}

开启定高模式函数

void Start_Fixed_high(void)
{
	OLED_ShowString(0,4,"Highfix",16);
	TIM_SetCompare1(TIM4,1500);		//			CH5 PD12
	delay_ms(5);
	TIM_SetCompare2(TIM3,1500);		//Throttle	CH2 PB5
	TIM_SetCompare2(TIM3,1300);
	delay_ms(15);
	TIM_SetCompare2(TIM3,1500);
}

降落函数

void Land_down(void)
{
	OLED_ShowString(0,4,"Land_down",16);
	int j = 0;
	while(j <= 200)
	{
		j++;
		TIM_SetCompare2(TIM3,1280);		//Throttle	CH2 PB5
		delay_ms(20);
		PositionPID();
	}
	
	lock();
}

PID控制函数:

/*黑点悬停控制*/
void PositionPID(void)
{
	static float lastVxErro,lastVyErro;
	static float pidVx_pOut,pidVx_dOut,pidVx_iOut;
	static float pidVy_pOut,pidVy_dOut,pidVy_iOut;
	static float pidVx_value,pidVy_value;
	static unsigned char flag_Y,flag_X;
	/***************X轴PID参数**ROLL************/
	float Vxkp=0.086f;//
	float Vxki=0.0004f;//0.001f;
	float Vxkd=0.027f;//-0.000531;
	/***************Y轴PID参数*PITCH*************/
	float Vykp=0.086f;
	float Vyki=0.0004f;//0.001f;
	float Vykd= 0.024f;
	
	/*X轴位移速度调整*/
	float vxErro=(float)(0.0f-(-pixX*hight/100));
	float vxErroDelta=(vxErro-lastVxErro)/0.016f;
	lastVxErro=vxErro;
	/*X轴积分分离处理*/
	if(vxErro <= 50.0f&&vxErro >= -50.0f)
	{
		flag_X = 0;
	}
	else
	{
		flag_X = 1;
		
	}
	pidVx_pOut=Vxkp * vxErro;
	pidVx_dOut=Vxkd * vxErroDelta;
	pidVx_iOut+=Vxki * vxErro;
	if(pidVx_iOut>2.5f)//1.5
		pidVx_iOut=2.5f;
	if(pidVx_iOut<-2.5f)
		pidVx_iOut=-2.5f;
	
	pidVx_value=pidVx_pOut+pidVx_dOut+flag_X*pidVx_iOut;
	
	if(pidVx_value>10)
		pidVx_value=10;
	if(pidVx_value<-10)
		pidVx_value=-10;
	
	pidVx_value*=22;
	
	
	/***************Y轴PID调节***************/	
	/*X轴位移速度调整*/
	float vyErro=(float)(0.0f-(-pixY*hight/100));
	float vyErroDelta=(vyErro-lastVyErro)/0.016f;
	lastVyErro=vyErro;
	/*Y轴积分分离处理*/
	if(vyErro <= 50.0f&&vyErro >= -50.0f)
	{
		flag_Y = 0;
	}
	else
	{
		flag_Y = 1;
	}
	pidVy_pOut=Vykp * vyErro;
	pidVy_dOut=Vykd * vyErroDelta;
	pidVy_iOut+=Vyki * vyErro;
	/*Y轴积分限幅处理*/
	if(pidVy_iOut>2.5f)
		pidVy_iOut=2.5f;
	if(pidVy_iOut<-2.5f)
		pidVy_iOut=-2.5f;
	
	pidVy_value=pidVy_pOut+pidVy_dOut+flag_Y*pidVy_iOut;
	/*Y轴输出限幅处理*/
	if(pidVy_value>10)
		pidVy_value=10;
	if(pidVy_value<-10)
		pidVy_value=-10;
	
	pidVy_value*=22;
	
	/************PWM赋值***************/	
	TIM_SetCompare1(TIM3,1500+pidVx_value); 	//Pitch		CH1 PB4 
	TIM_SetCompare3(TIM3,1500+pidVy_value);		//Roll		CH3 PB0 			
	TIM_SetCompare4(TIM3,1505);					//Yaw		CH4 PB1
	
	
}

基础二:这道题是检测两个物体间的空间距离,我们用的ESP8266来做的,它可以读出附近热点的信号值,但是这种做法精度极低。最后到比赛场地时才发现居然有人用超声波测距??而且居然没扣分,很神奇了。

基础三:对于这道题,和第一道题类似,但是需要往前飞一段时间,那么我们就可以先完成基础一,计时到了一定时间,人为的把OPENMV传回来的黑点值修改为定值,那么就可以往前飞了,但是这样掌握不好要往前飞多久才会到达小车的正上方,对于这种情况,解决办法一是去试那个时间,多试下会试出来的,二是判断坐标值的突变,也就是在往前飞的时候,OPENMV传回来的黑点的水平坐标是大致不会变的,而黑点的垂直方向的值会发生突变,一种情况是飞到小车和黑点中间丢失了黑点,这种情况是垂直坐标从最大值变成0再变为最小值。还有一种情况是飞机有点高,往前飞的时候小车也进入了摄像头视野,因为OPENMV找的是视野中面积最大的色块,那么OPENMV得到的黑点值就发生了突变,这时就可以开始取消人为给值,开始正常的定点计时到一定时间自动降落。

发挥一:这个题和基础三类似,修改一下第三阶段定点的时间就可以了。
发挥二:这个题和基础三类似,修改一下第三阶段定点的时间就可以了。

有问题的可以加Q97354734
可以提供能力之内的帮助
本人小店:

https://shop110563242.taobao.com/index.htm?spm=2013.1.w5002-16371582764.2.fo0MiW

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OPENMV结合PIX飞控实现四轴定点 循迹 2017电赛 的相关文章

  • Visual Studio 2015/2017/2019 之通道清单未通过测试签名验证,以及正确安装证书详细过程

    Visual Studio 2015 2017 2019 之通道清单未通过测试签名验证 xff0c 以及正确安装证书详细过程 在安装之前都要进行证书安装 xff0c 否则会出现各种各样的错误 并且每个版本的证书都不一致 年份 企业版 社区版
  • Visual Studio 2017 运行、调试使用CMake构建的多可执行程序项目

    在 Windows 环境下 xff0c 笔者主要通过 Visual Studio 进行较大型项目的查看和运行调试 这里记录下使用 Visual Studio 编译 运行和调试可能包含有多个可执行程序的多文件项目的方法 xff0c 特别的 x
  • 2017-06-08 每日一记 sqlite3_bind_blob函数

    sqlite3函数 xff1a sqlite3 bind blob stat 1 pdata int length of data in bytes NULL 参数1 xff1a sqlte stmt 参数2 xff1a 的索引 xff0c
  • 2021电赛F题之openmv巡线(附代码)

    效果展示 xff1a 出错解决方法 openmv数字识别源代码 gitee 通过使用不同阈值的方法可以得到当前区域中什么区域有红线 xff0c 对于电控而言作用类似于红外对管 xff0c 之后电控通过逻辑判断如何运动 xff0c 这就是我们
  • 2016,再见 2017,还请多多指教

    先来一个象征意义上的序 今天是2017 01 01 新年的第一天 昨天适合总结 今天适合制作新年计划 昨天没做总结 于是今天总结和新年计划一起来吧 充满回忆的2016 昨天在驾校练车练了一天 倒库终于能倒进去了 回到住处已经下午5点 买了路
  • Mission Planner中级应用(APM或PIX飞控)2——飞控减振

    飞控减振 自动驾驶仪具有对振动敏感的加速度计 这些加速度计值与气压计和GPS数据来估计无人机的位置 随着过度振动 xff0c 依赖精确定位的模式下的性能 xff08 例如在无人机上 xff1a AltHold Loiter RTL Guid
  • 我的2017-搭建个人网站,搭建PHP环境(2)

    上周确定了 xff0c 想要应用的后台语言 xff0c 面临的最大问题就是 xff1a php我不会啊 xff0c 哈哈哈哈 xff0c 所以接下来首先要做的就是了解 学习php的相关知识 接下来的第一步 xff1a 环境搭建 1 下载安装
  • 我的2017-搭建个人网站,自拟定代码根目录

    wampserver集成安装环境安装的php的运行根目录在wamp文件夹中的www文件夹下 xff0c 而为了有效的将代码和服务器进行分离 xff0c 可以采用自拟定代码根目录进行修改 1 确定代码编辑位置 xff0c 修改服务器默认指向
  • 【openmv专题】串口通信

    这篇文章主要讲述openmv串口通信过程中会出现错位 xff0c 因缓存空间不足带来的串口报错问题 xff0c 直接进入正题 xff1a 串口通信有同步和异步之分 xff0c 而openmv用的是异步通信 xff0c 需要有缓存区 xff0
  • PIX飞控电流计设置

    在 测量电池电压 一栏输入用电压表测得的电池电压 xff0c 保存
  • 基于apm、pix无人坦克、无人车自动控制与自动驾驶教程

    基于apm pix无人坦克 无人车自动控制与自动驾驶教程 目前玩无人机的玩家较多 xff0c 但是无人车 无人机坦克的玩家少之又少 xff0c 本人经过一段时间的琢磨 xff0c 实现了无人车与无人坦克自动控制 xff0c 自动驾驶 xff
  • 使用OPENMV控制云台自动追踪Apriltag,测出与Apriltag距离并且通过串口发送给单片机。

    使用openmv控制云台自动跟踪Apriltag xff0c 并且将openmv与Apriltag距离通过串口发送到单片机 如果有openmv的同学直接将main py和pid py复制到flash中就可以了 注意 xff01 Aprilt
  • Visual Studio 2017 代码自动对齐

    点 编辑 高级 设置选定内容的格式 或者按Ctrl 43 K 然后再按Ctrl 43 F 就好了 你可以在常用快捷键自定义 窗口中进行查看 1 进入工具 选项 对话框 2 选择 环境 键盘 3 在 显示命令包含 下面的对话框中输入 对齐 关
  • OPENMV结合PIX飞控实现四轴定点 循迹 2017电赛

    本文章代码已上传Github xff1a https github com Kevincoooool 2017 Follow 有兴趣的可以加个STAR 自从17年国赛之后 xff0c 自己做了openmv xff0c 加了很多群 xff0c
  • OpenMV:19OpenMV4 Plus训练神经网络进行口罩识别

    文章目录 1 采集2 连接3 训练复制API KEY上传照片模型创建生成神经网络训练神经网络测试神经网络备份保存 4 下载代码分析 注意 xff1a 只有 OpenMV4 Plus可以自己训练神经网络 xff0c 其他版本的性能不够 本节讲
  • OpenMV与Arduino通信—串口

    文章目录 96 Arduino 96 的串口函数接收函数 96 Serial read 96 检测串口 96 Serial available 96 串口通信例程 96 OpenMV 96 代码 96 Arduino 96 代码 所有要进行
  • OpenMV色块寻找

    OpenMV入门 xff0c 从入门到入坟 gt lt 此文章大部分内容取自OpenMV官方中文参考文档 详情看OpenMV官方中文参考文档 文章目录 一 sensor snapshot 拍一张照片二 image find blogs 查找
  • 基于Microhard P900无人机PIX飞控远距离数传解决方案

    基于Microhard P900无人机PIX飞控远距离数传解决方案 参考文章 xff1a xff08 1 xff09 基于Microhard P900无人机PIX飞控远距离数传解决方案 xff08 2 xff09 https www cnb
  • 2017 ICM/MCM Problem E: Sustainable Cities Needed!

    题目理解可持续发展的城市 任务 References 题目理解 可持续发展的城市 许多社区正在实施智能增长计划 以考虑长期 可持续的规划目标 聪明的成长是关于帮助每个城镇和城市变成更加经济繁荣 社会公平和环境可持续的生活地方的意思 2 智能
  • 2017 ICM/MCM D题 Optimizing the Passenger Throughput at an Airport Security Check

    问题描述 参考链接 问题描述 在机场安全检查站优化乘客吞吐量 继2001年9月11日美国发生恐怖袭击事件后 全世界的机场安全状况得到显着改善 机场有安全检查站 在那里 乘客及其行李被检查爆炸物和其他危险物品 这些安全措施的目的是防止乘客劫持

随机推荐

  • 膨胀、腐蚀、开、闭运算——数字图像处理中的形态学

    膨胀 腐蚀 开 闭运算是数学形态学最基本的变换 形态学通常用于二值图像 一 膨胀与腐蚀能够实现以下作用 xff1a 1 消除噪声 2 分割出独立的图像元素 xff0c 在图像中连接相邻的元素 3 寻找图像中的明显的极大值区域或者极小值区域
  • c语言中&与&&区别

    c语言中 amp 与 amp amp 的区别 amp xff1a 按照位与操作 xff0c 例如 xff1a 0010 amp 1101 xff0c 结果为0000 amp 是java中的位逻辑运算 xff1a eg xff1a 2 amp
  • 网格搜索法

    网格搜索法是指定参数值的一种穷举搜索方法 xff0c 通过将估计函数的参数通过交叉验证的方法进行优化来得到最优的学习算法 即 xff0c 将各个参数可能的取值进行排列组合 xff0c 列出所有可能的组合结果生成 网格 然后将各组合用于SVM
  • pytorch模型从训练到LibTorch部署(标贝科技)

    标贝科技 https ai data baker com source 61 qwer12 填写邀请码fwwqgs xff0c 每日免费调用量还可以翻倍 1 pytorch和libtorch安装 标贝科技 PyTorch 是Torch7 团
  • C++Debug Assertion Failed!到底出错在哪里?

    总结来说这种错误存在两种情况 xff0c 其一就是野指针 另一种情况就是内存泄露 在调试的时候一定是在自己编写的函数上找错 xff0c 不要一只跟着调试顺序在库函数里找错 注意事项 单步调试找到错误 xff0c 祝好运 以上为百度出来的结果
  • 截止频率概念

    截止频率 fc xff08 1HZ 100HZ xff09 xff0c 代表什么意思 截止频率fc xff0c 用来描述一个滤波器或一个放大器频率特性的指标 一个滤波器或一个放大器 xff0c 当保持输入信号的幅度不变 xff0c 改变信号
  • C语言中EOF什么意思

    在C语言中 xff0c 或更精确地说成C标准函数库中表示文件结束符 xff08 end of file xff09 在while循环中以EOF作为文件结束标志 xff0c 这种以EOF作为文件结束标志的文件 xff0c 必须是文本文件 在文
  • C++里面的LPBYTE是什么意思

    BYTE 为 unsigned char LPBYTE 为 unsigned char
  • ORACLE 字符串聚合函数 strCat

    create or replace type strcat type as object currentstr varchar2 4000 currentseprator varchar2 8 static function ODCIAgg
  • 1.unity3d Astar pathfinding 第一个例子

    1 场景准备 先建立一个scene 添加一个plane xff0c 让其坐标处于 0 0 0 xff0c 并三方向scale都为10 添加一个新的layer xff0c 命名为Ground xff0c 并将上面建立的plane设置为Grou
  • [STM32]开源多功能DAP 脱机烧录器 DAPLink仿真下载器

    网上已经有很多开源脱机烧录器的了 xff0c XVIN1987的很小巧 xff0c 很有参考价值 xff0c 志明的很庞大 xff0c 源码较多较复杂 xff0c 于是自己在无线DAP的基础上 xff0c 添加了脱机烧录功能 xff0c u
  • 全志V3S 入门 RTL8723BS 连接wifi

    开发板 xff1a 荔枝派zero linux xff1a 5 10 rootfs xff1a buildroot 2017 8 1 使用最新的主线linux内核5 10 xff0c 主线5 10内核linux make ARCH 61 a
  • ESP32蓝牙 华为手机容易断连解决

    在长达两年的售后中 xff0c 收到华为手机连接ESP32蓝牙是最容易断开连接的 xff0c 一开始小米手机 苹果手机都没问题 xff0c 就只有华为 xff0c 一连上就断开 xff0c 所以我们认为是APP问题 xff0c 于是我们去找
  • ESP32-S3 LVGL http下载B站头像 JPG显示

    最近在用ESP32S3获取B站JPG头像进行显示 记录一下 xff0c 开发板链接 xff1a ESP32 S3 LVGL 开发板 人工智能语音识别 人脸识别 触摸 音频 淘宝网 taobao com 直接上代码 xff1a 第一种下载方式
  • Docker概述(二)(标贝科技)

    标贝科技 https ai data baker com source 61 qwer12 填写邀请码fwwqgs xff0c 每日免费调用量还可以翻倍 Docker概述 xff08 二 xff09 文章目录 Docker概述 xff08
  • 【串口通信】K210与STM32串口通信、K210与OpenMV串口通信

    串口通信 K210与STM32串口通信 K210与OpenMV串口通信 串口通信前言为何需要串口通信 K210如何进行串口通信K210串口配置K210串口发送相关定义K210串口发送测试K210串口接收相关定义K210串口接收测试 STM3
  • 【ESP32S3系列】1、使用ESP32S3开发板点亮WS2812

    开发板链接 xff1a ESP32 S3 LVGL 开发板BLE人工智能语音人脸识别触摸 音频芯片wifi 淘宝网 taobao com 板子上的LED是WS2812 xff0c 它的引脚分别是 xff1a VDD xff1a 电源 xff
  • win10 使用sonarqube扫描ESP32 C语言工程代码

    社区版的扫描不了C代码 xff0c 所以要找个破解的 项目场景 xff1a 最近项目上霍尼韦尔要求使用sonarqube来扫描代码得出漏洞报告 xff0c 网上找了一圈没有比较容易成功的 xff0c 总结下经验 电脑里要有visual st
  • ESP32 如何引入静态库lib.a

    只需要在Cmakelist txt里这样写 xff1a 如果这个lib正常运行的话需要用到json和lwip相关的函数 xff0c 那就添加一个PRIV REQUIRES 这个component的名字即可
  • OPENMV结合PIX飞控实现四轴定点 循迹 2017电赛

    本文章代码已上传Github xff1a https github com Kevincoooool 2017 Follow 有兴趣的可以加个STAR 自从17年国赛之后 xff0c 自己做了openmv xff0c 加了很多群 xff0c