当前位置: 首页 > article >正文

hku-mars雷达相机时间同步方案-硬件(MID360与海康MV-CB060-10UMUC-S)

hku-mars雷达相机时间同步方案复线(MID360与海康MV-CB060-10UMUC-S)
参考
官方指导教程

硬件设备:

在这里插入图片描述
硬件同步原理连接方案:
在这里插入图片描述
在这里插入图片描述注意:
在我们这个项目中,stm32中GPRMC该数据直接传到Mid360雷达中,由雷达固件处理,雷达固件我们无法修改,因此此处的校验和需要按要求恢复。
补充
GPRMC数据标准格式如下:

G P R M C , 014600.00 , A , 2237.496474 , N , 11356.089515 , E , 0.0 , 225.5 , 310518 , 2.3 , W , A ∗ 23 f i e l d 0 : GPRMC,014600.00,A,2237.496474,N,11356.089515,E,0.0,225.5,310518,2.3,W,A*23 field 0: GPRMC,014600.00,A,2237.496474,N,11356.089515,E,0.0,225.5,310518,2.3,W,A23field0GPRMC, 格式ID,表示该格式为建议的最低特定GPS / TRANSIT数据(RMC)推荐最低定位信息
field 1: UTC时间, 格式hhmmss.ssss,代表时分秒.毫秒
field 2: 状态 A:代表定位成功 V:代表定位失败
field 3: 纬度 ddmm.mmmmmm 度格式(如果前导位数不足,则用0填充)
field 4: 纬度 N(北纬) S(南纬)
field 5: 经度 dddmm.mmmmmm 度格式(如果前导位数不足,则用0填充)
field 6: 经度 E(东经) W(西经)
field 7: 速度(也为1.852 km / h)
field 8: 方位角,度(二维方向,等效于二维罗盘)
field 9: UTC日期 DDMMYY 天月年
field 10: 磁偏角(000-180)度,如果前导位数不足,则用0填充)
field 11: 磁偏角方向E =东W =西
field 12: 模式,A =自动,D =差分,E =估计,AND =无效数据(3.0协议内容)
field 13: 校验和

STM32设置

STM32的官方同步代码
但是为了适配MID360需要做一下修改。
STM32的修改部分为:

vu16 varl=0;
vu16 var_Exp=0;
vu16 global_time;
char snum[7];
vu16 shorttt=0;

char gprmcStr[7]="$GPRMC,";
int chckNum=0;
char chckNumChar[2];

int ss=0;
int mm=0;
int hh=0;

unsigned char result;
int i;
int checkNum(const char *gprmcContext)
{
    if (gprmcContext == NULL) 
    {
        return -1;
    }

    result = gprmcContext[1];

    for (i = 2; gprmcContext[i] != '*' && gprmcContext[i] != '\0'; i++)
    {
        result ^= gprmcContext[i];
    }

    if (gprmcContext[i] != '*') 
    {
        printf("No '*' found in the string.\n");
        return -1;
    }

    //printf("Final result before returning: %02X\n", result);
    return result;
}

char value_1[100]="";
char value_2[100]="";
char value_time[10]="";

char test[100]="$GPRMC,004015,A,2812.0498,N,11313.1361,E,0.0,180.0,150122,3.9,W,A*";
void TIM3_IRQHandler(void)  
{


		if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
		{
		TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  
		LED1=!LED1;
		TIM2->CNT=TIM2->ARR/2;

		PCout(13)=0;
		}
		
		
		//global_time++;
		//shorttt=0;
		//sprintf(snum, "%06d", global_time); 
		//snum[6]=0;
		//printf("$GPRMC,");
	        //printf(snum);
		//printf(".00,A,2237.496474,N,11356.089515,E,0.0,225.5,310518,2.3,W,A*23\n");
		

		
		//************************************* add *********************************************
		//UTCtime format: hhmmss
		
                if(ss<59){
			 ss++;
		}else{
			 ss=0;
			 if(mm<59){
				 mm++;
			 }else{
				 mm=0;
				 if(hh<23){
					 hh++;
				 }else{
					 hh=0;
				 }
			 }
		}
		
              sprintf(value_2, "%s%02d%02d%02d%s", gprmcStr, hh, mm, ss, ".00,A,2237.496474,N,11356.089515,E,0.0,225.5,230520,2.3,W,A*");
	      strcpy(value_1,value_2);
	      chckNum =checkNum(value_1);
	      sprintf(chckNumChar, "%02X", chckNum);
	      printf("%s", value_2);
              printf("%s\n", chckNumChar);
	 

}

STM32中使用到的引脚主要有PA1、PA9、PB5和GND
如图所示:
在这里插入图片描述

激光雷达设置

这里主要讲解MID360一拖三线的触发
在这里插入图片描述
在这里插入图片描述
其中:
网口的TX+,TX-,RX+,RX-,传输点云数据(买的线已经接好,直接插电脑端)
1.2 接电源正、负极(电压范围:9~27V),供电
10 接STM32的PA9引脚,获取GPS时间同步信息
8 接STM32的PB5引脚,获取1HZ的PWM信号

注意:一拖三线缆预留的黑色线记得接单片机的GND,我一开始没接,是可以正常实现硬触发,但是频率只有1Hz。
如下图:
在这里插入图片描述
AVIA接线盒接法
在这里插入图片描述
通过以上接线可以实现硬件触发,在上位机可以看到PPS State:PPS signal Time Sync:PPS Sync 说明成功触发。
在这里插入图片描述

相机设置

相机设置就简单很多了
相机触发线STM32的PA1引脚,获取外部10HZ的PWM信号
相机GND线STM32的GND引脚

总结
到此硬件方面的设置就完成了。


http://www.kler.cn/news/304318.html

相关文章:

  • Spring-cloud-gateway报错问题总结
  • 卷轴模式系统中的任务起源探索与趣味性设计策略分析
  • 【大模型专栏—进阶篇】语言模型创新大总结——“后起之秀”
  • rocketmq-client5.2手动给生产者和消费者设置access-key和secret-key值
  • Sparse4D v1
  • 从零开始学PostgreSQL (十四):高级功能
  • 【来学Vue吧】创建一个Vue项目
  • 通过adb命令打开手机usb调试
  • 青铜级与大师级删库跑路:黑色幽默的背后
  • 几何概率模型
  • GEE 教程:利用sentinel-5p数据进行长时序CO一氧化碳的监测分析并结合夜间灯光数据分析
  • 使用Vue3+TS玩转高德地图
  • 前端表单验证的常见问题与解决方案
  • helm一键化部署pod
  • 基于Linux和C++实现的RabbitMQ风格消息队列:设计与实现
  • 什么是智慧箱变动环辅控系统?箱式变电站动环监控@卓振思众
  • SpringBoot 项目 Jar 包加密,防止反编译
  • CCF推荐A类会议和期刊总结:计算机体系结构/并行与分布计算/存储系统领域
  • 【Oracle APEX开发小技巧 8 】图片回显及多图片URL在页面回显点击放大
  • 性能测试-jmeter的控制器(十六)
  • 【Linux】多线程:线程互斥、互斥锁
  • Leetcode 寻找重复数
  • 提升工作效率:寻找编程工具的秘密武器
  • 使用Docker快速安装和运行Elasticsearch
  • 内蒙古优质农畜产品天津推介会成功举办
  • 【C++学习笔记】逻辑判断语句与循环语句(二)
  • 算法41:位1的个数
  • 赎金信--力扣383
  • 『功能项目』战士的伤害型技能【45】
  • ubuntu安装containerd,取代docker