ROS节点解析GPS数据:GPRMC/GPFDP/HEADINGA

article/2025/10/16 8:09:18

数据解析,肯定是要知道数据格式的:

数据格式参考:(前人已经总结的比较齐全了)

https://blog.csdn.net/u010384390/article/details/78432016?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163031225416780274159663%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163031225416780274159663&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-78432016.pc_search_result_control_group&utm_term=headinga&spm=1018.2226.3001.4187

星网宇达的XW-GI类产品,GPS解析到的协议是GPFPD:GI定位定姿消息集。其数据格式如下所示:

最高输出速率:100HZ

举例:

 配置接收机的输出格式为:(使用cutecom接收,输出频率为5Hz)

[13:29:49:216] $GPFPD,1356,20.60,0.000,0.000,0.000,0.000000000,0.000000000,0.000,0.000,0.000,0.000,0.000,0,0,0*72␍␊

[13:29:49:225] $GPRMC,000006.60,V,0000.0000000,S,00000.0000000,W,0.000,0.0,010106,0.0,E,N*24␍␊

[13:29:49:230] #HEADINGA,COM1,0,0,FINESTEERING,1356,20.600,00000000,0000,0036;SOL_COMPUTED,NONE,0.000000000,0.000000000,0.000000000,0,0.000,0.000,"0000",0,0,0,0,00,00,30,17*3CB347CB␍␊

[13:29:49:416] $GPFPD,1356,20.80,0.000,0.000,0.000,0.000000000,0.000000000,0.000,0.000,0.000,0.000,0.000,0,0,0*7C␍␊

[13:29:49:425] $GPRMC,000006.80,V,0000.0000000,S,00000.0000000,W,0.000,0.0,010106,0.0,E,N*2A␍␊

[13:29:49:430] #HEADINGA,COM1,0,0,FINESTEERING,1356,20.800,00000000,0000,0036;SOL_COMPUTED,NONE,0.000000000,0.000000000,0.000000000,0,0.000,0.000,"0000",0,0,0,0,00,00,30,17*1A63E506␍

使用ROS编写节点进行解析,思路为:

1,配置串口,与接收机的波特率等设置保持一致;配置节点循环频率为5Hz,频率相同会简单很多;

2,打开串口,接收数据;

3,数据分割为三个部分,GPFPD/GPRMC/HEADINGA;

4,使用sscanf函数进行解析(也可以使用C++的分割函数,本人更熟悉C语言。。)

5,存放在结构体中,打印显示。

现实结果为:(terminal显示)

gpfpd=
$GPFPD,1356,13110.00,0.000,0.000,0.000,0.000000000,0.000000000,0.000,0.000,0.000,0.000,0.000,0,0,0*44
gprmc=
$GPRMC,033816.00,V,0000.0000000,S,00000.0000000,W,0.000,0.0,010106,0.0,E,N*2B
headingA=
#HEADINGA,COM1,0,0,FINESTEERING,1356,13110.000,00000000,0000,0036;SOL_COMPUTED,NONE,0.000000000,0.000000000,0.000000000,0,0.000,0.000,"0000",0,0,0,0,00,00,30,17*22C246A7

*************GPS_data*****************
utc_time:033816.00
status:V
latitude:S  0.000000000
longtitude:W  0.000000000
speed:0.000000
azimuth_angle:0.000000
utc_data:010106
isRTKstate:N
*************GPFDP_data*****************
GPSWeek:1356
GPSTime:13110.00
Heading:0.000000
Pitch:0.000000
Roll:0.000000
Latitude: 0.000000000
Longitude: 0.000000000
Altitude: 0.000000000
[Ve Vn Vu]=[0.000000 0.000000 0.000000]
Baseline =0.000000
Status:0
*************HEADINGA_DATA*****************
cal_state=SOL_COMPUTED
pos_type=NONE
baseline=0.000000
HeadingA=0.000000
Pitch=0.000000

(以上为显示,下面上代码)

头文件gps.h

#ifndef __GPS_H__
#define __GPS_H__#include<stdio.h>          
#include<stdlib.h>        
#include<unistd.h>       
#include<string.h>
#define GPS_LEN 512
#define BUF_SIZE 16
typedef unsigned int u32;
typedef unsigned short u16;
typedef unsigned char u8;typedef struct __gnrmc__
{u32 time;char pos_state;float latitude;float longitude;float speed;float direction;u32 date;float declination;char dd;char mode;
}GNRMC;
int gps_analyse(char *buff, GNRMC *gps_date);
int print_gps(GNRMC *gps_date);// define GPS_INFO
typedef struct gps_info
{char utc_time[BUF_SIZE];char status;double latitude_value;char latitude;double longtitude_value;char longtitude;float speed;float azimuth_angle;char utc_data[BUF_SIZE];float magnetic_declination;char magnetic_declination_dir;char isRTKstate[4];
}GPS_INFO;int gprmc_analyse(char *buff,GPS_INFO *gprmc_data);
int gprmc_print(GPS_INFO *gprmc_data);//***********define GPFDP_info**************
typedef struct gpfpd_info
{unsigned int GPSWeek;		//自1980-1-6至当前的星期数char GPSTime[BUF_SIZE];		//本周00:00:00至当前的秒数float Heading;				//偏航角float Pitch;				//俯仰角float Roll;					//滚转角double Latitude;			//纬度 degdouble Longitude;			//经度 degfloat Altitude;				//高度 mfloat Ve;					//东 速度 m/sfloat Vn;					//北 速度 m/sfloat Vu;					//天 速度 m/sfloat Baseline;				//基线长度int NSV1;		//天线1卫星数int NSV2;		//天线2卫星数char Status[4];		//系统状态
}GPFPD_INFO;int gpfdp_analyse(char *buff,GPFPD_INFO *gpfdp_data);
int gpdfp_print(GPFPD_INFO *gpfdp_data);//***********define headingA_info**************
typedef struct headingA_info
{char cal_state[32];	//SOL_COMPUTED 完全解算 INSUFFICIENT_OBS 观测量不足 COLD_START 冷启动,尚未完全解算 char pos_type[16];	//NONE 未解算/*FIXEDPOS 已设置固定坐标SINGLE 单点解定位PSRDIFF 伪距差分解定位NARROW_FLOAT 浮点解WIDE_INT 宽带固定解NARROE_INT 窄带固定解SUPER WIDE_LINE 超宽带解 */float baseline;		//基线长度float HeadingA;		//方位角float Pitch;		//俯仰角
}HEADINGA_INFO;
int headingA_analyse(char *buff,HEADINGA_INFO *headinga_data);
int headingA_print(HEADINGA_INFO *headinga_data);
#endif

gps.cpp

#include "/home/ling/catkin_ws/src/serialdemo/include/serialdemo/gps.h"
//************************get-gnrmc-data***************************
int gps_analyse (char *buff,GNRMC *gps_data)
{char *ptr = NULL;if(gps_data == NULL){return -1;}if(strlen(buff)<10){return -1;}//如果buff字符串中包含字符"$GNRMC"则将$GNRMC的地址赋值给ptrif(NULL==(ptr=strstr(buff,"$GNRMC"))){return -1;}sscanf(ptr,"$GNRMC,%d.000,%c,%f,N,%f,E,%f,%f,%d,,,%c*",&(gps_data->time),&(gps_data->pos_state),&(gps_data->latitude),&(gps_data->longitude),&(gps_data->speed),&(gps_data->direction),&(gps_data->date),&(gps_data->mode));
//sscanf函数为从字符串输入,上面这句话的意思是将ptr内存单元的值作为输入分别输入到后面的结构体成员return 0;
} int print_gps (GNRMC *gps_data)
{printf("===========================================================\n");printf("==   GPS状态位 : %c  [A:有效状态 V:无效状态]              \n",gps_data->pos_state);printf("==   GPS模式位 : %c  [A:自主定位 D:差分定位]               \n", gps_data->mode);printf("==   日期 : 20%02d-%02d-%02d                                  \n",gps_data->date%100,(gps_data->date%10000)/100,gps_data->date/10000);printf("==   时间 : %02d:%02d:%02d                                   \n",(gps_data->time/10000+8)%24,(gps_data->time%10000)/100,gps_data->time%100);printf("==   纬度 : 北纬:%d度%d分%d秒                              \n", ((int)gps_data->latitude) / 100, (int)(gps_data->latitude - ((int)gps_data->latitude / 100 * 100)), (int)(((gps_data->latitude - ((int)gps_data->latitude / 100 * 100)) - ((int)gps_data->latitude - ((int)gps_data->latitude / 100 * 100))) * 60.0));printf("==   经度 : 东经:%d度%d分%d秒                              \n", ((int)gps_data->longitude) / 100, (int)(gps_data->longitude - ((int)gps_data->longitude / 100 * 100)), (int)(((gps_data->longitude - ((int)gps_data->longitude / 100 * 100)) - ((int)gps_data->longitude - ((int)gps_data->longitude / 100 * 100))) * 60.0));printf("==   速度 : %.3f  m/s                                      \n",gps_data->speed);printf("============================================================\n");return 0;
} 
//***************************get gprmc data**************************
int gprmc_analyse(char *buff,GPS_INFO *gprmc_data)
{char *wellhandled_string;size_t i=0,readcnt=0;if(strlen(buff)<32){// length of frame is 72,if datalength is too short,return.return -1;}if ((wellhandled_string = strstr(buff,"$GPRMC")) != NULL){for (i=0; i<strlen(wellhandled_string); i++){if (wellhandled_string[i] == '\n'){wellhandled_string[i] = '\0'; //replace ‘/n’ with null}}}readcnt=sscanf(wellhandled_string,"$GPRMC,%[^,],%c,%lf,%c,%lf,%c,%f,%f,%[^,],%*f,%*c,%[^*]",gprmc_data->utc_time,\&(gprmc_data->status),&(gprmc_data->latitude_value),&(gprmc_data->latitude),\&(gprmc_data->longtitude_value),&(gprmc_data->longtitude),&(gprmc_data->speed),\&(gprmc_data->azimuth_angle),\gprmc_data->utc_data,gprmc_data->isRTKstate);//printf("readcnt=%d\n",readcnt);return 0;
}
int gprmc_print(GPS_INFO *gprmc_data)
{printf("*************GPS_data*****************\n");printf("utc_time:%s\n",gprmc_data->utc_time); printf("status:%c\n",gprmc_data->status); printf("latitude:%c ",gprmc_data->latitude); printf("%12.9lf\n",gprmc_data->latitude_value); printf("longtitude:%c ",gprmc_data->longtitude); printf("%12.9lf\n",gprmc_data->longtitude_value);  printf("speed:%f\n",gprmc_data->speed); printf("azimuth_angle:%f\n",gprmc_data->azimuth_angle); printf("utc_data:%s\n",gprmc_data->utc_data); //printf("magnetic_declination:%f %c\n",gprmc_data->magnetic_declination,gprmc_data->magnetic_declination_dir);printf("isRTKstate:%c\n",gprmc_data->isRTKstate[0]); 
}
//***************************get gpfdp data**************************int gpfdp_analyse(char *buff,GPFPD_INFO *gpfdp_data)
{char *wellhandled_temp;size_t i=0,reti=0;if(strlen(buff)<32){return -1;// length of frame is 98,if datalength is too short,return.}if ((wellhandled_temp = strstr(buff,"$GPFPD")) != NULL){for (i=0; i<strlen(wellhandled_temp); i++){if (wellhandled_temp[i] == '\n'){wellhandled_temp[i] = '\0'; }}}//printf("wellhandled_temp=%s\n\n",wellhandled_temp);reti=sscanf(wellhandled_temp,"$GPFPD,%d,%[^,],%f,%f,%f,%lf,%lf,%f,%f,%f,%f,%f,%i,%i,%[^*]",&(gpfdp_data->GPSWeek),gpfdp_data->GPSTime,&(gpfdp_data->Heading),&(gpfdp_data->Pitch),&(gpfdp_data->Roll), \&(gpfdp_data->Latitude),&(gpfdp_data->Longitude),&(gpfdp_data->Altitude),\&(gpfdp_data->Ve),&(gpfdp_data->Vn),&(gpfdp_data->Vu),\&(gpfdp_data->Baseline),&(gpfdp_data->NSV1),&(gpfdp_data->NSV2),\gpfdp_data->Status);//printf("reti=%d\n",reti);	//wellhandled_temp=$GPFPD,1356,9013.40,0.000,0.000,0.000,0.000000000,0.000000000,0.000,0.000,0.000,0.000,0.000,0,0,0*79return 0;
}
int gpdfp_print(GPFPD_INFO *gpfdp_data)
{printf("*************GPFDP_data*****************\n");printf("GPSWeek:%d\n",gpfdp_data->GPSWeek); printf("GPSTime:%s\n",gpfdp_data->GPSTime); printf("Heading:%f\n",gpfdp_data->Heading); printf("Pitch:%f\n",gpfdp_data->Pitch); printf("Roll:%f\n",gpfdp_data->Roll); printf("Latitude:%12.9lf\n",gpfdp_data->Latitude);  printf("Longitude:%12.9lf\n",gpfdp_data->Longitude); printf("Altitude:%12.9lf\n",gpfdp_data->Altitude); printf("[Ve Vn Vu]=[%f %f %f]\n",gpfdp_data->Ve,gpfdp_data->Vn,gpfdp_data->Vu); printf("Baseline =%f\n",gpfdp_data->Baseline);printf("Status:%s\n",gpfdp_data->Status);
}//***************************get headingA data**************************
int headingA_analyse(char *buff,HEADINGA_INFO *headinga_data)
{char *headingA_temp;size_t i=0,reti=0;if(strlen(buff)<100){return -1;}if ((headingA_temp = strstr(buff,";")) != NULL){for (i=0; i<strlen(headingA_temp); i++){if (headingA_temp[i] == '\n'){headingA_temp[i] = '\0'; }}}//printf("headingA_temp=%s\n\n",headingA_temp);reti=sscanf(headingA_temp,";%[^,],%[^,],%f,%f,%f",headinga_data->cal_state,headinga_data->pos_type,&(headinga_data->baseline),\&(headinga_data->HeadingA),&(headinga_data->Pitch));//printf("reti=%d\n",reti);
}
int headingA_print(HEADINGA_INFO *headinga_data)
{printf("*************HEADINGA_DATA*****************\n");printf("cal_state=%s\n",headinga_data->cal_state);printf("pos_type=%s\n",headinga_data->pos_type);printf("baseline=%f\n",headinga_data->baseline);printf("HeadingA=%f\n",headinga_data->HeadingA);printf("Pitch=%f\n",headinga_data->Pitch);
}

主节点:

serial_port.cpp

//serial_port.cpp
#include <ros/ros.h>
#include <serial/serial.h>
#include <iostream>
#include "/home/ling/catkin_ws/src/serialdemo/include/serialdemo/gps.h"GPS_INFO gps_info;
GPS_INFO *rmc_info=&gps_info;
GPFPD_INFO gpfdp_info;
GPFPD_INFO *gpfdp_pdata=&gpfdp_info;
HEADINGA_INFO headingA_info;
HEADINGA_INFO *headingA_pdata=&headingA_info;
char buff[2048];
char GPFPD_buf[1024];
char GPRMC_buf[1024];
char HEADINGA_buf[1024];
int main(int argc, char** argv)
{ros::init(argc, argv, "serial_port");//创建句柄(虽然后面没用到这个句柄,但如果不创建,运行时进程会出错)ros::NodeHandle n;//创建一个serial类serial::Serial sp;//创建timeoutserial::Timeout to = serial::Timeout::simpleTimeout(1000);//设置要打开的串口名称sp.setPort("/dev/ttyUSB0");//sp.setPort("/dev/ttyS0");//设置串口通信的波特率sp.setBaudrate(115200);//串口设置timeoutsp.setTimeout(to);try{//打开串口sp.open();}catch(serial::IOException& e){ROS_ERROR_STREAM("Unable to open port.");return -1;}//判断串口是否打开成功if(sp.isOpen()){ROS_INFO_STREAM("/dev/ttyUSB0 is opened.");}else{return -1;}ros::Rate loop_rate(5);while(ros::ok()){//获取缓冲区内的字节数size_t n = sp.available();if(n!=0){uint8_t buffer[2048];//读出数据n = sp.read(buffer, n);for(int i=0; i<n; i++){//16进制的方式打印到屏幕//std::cout << std::hex << (buffer[i] & 0xff) << " ";buff[i]=buffer[i];//printf("%c",buff[i]);if(buffer[i]=='$'&&buffer[i+1]=='G'&&buffer[i+2]=='P'&&buffer[i+3]=='F'&&buffer[i+4]=='P' && buffer[i+5]=='D'){for(int j=0;j<102 && buffer[i+j] != '\n';j++){GPFPD_buf[j]=buffer[i+j];}printf("gpfpd=\n%s\n",GPFPD_buf);}if(buffer[i]=='$'&&buffer[i+1]=='G'&&buffer[i+2]=='P'&&buffer[i+3]=='R'&&buffer[i+4]=='M' && buffer[i+5]=='C'){for(int j=0;j<100 && buffer[i+j] != '\n';j++){GPRMC_buf[j]=buffer[i+j];}printf("gprmc=\n%s\n",GPRMC_buf);} if(buffer[i]=='#'&&buffer[i+1]=='H'&&buffer[i+2]=='E'&&buffer[i+3]=='A'&&buffer[i+4]=='D' && buffer[i+5]=='I'){for(int j=0;j<300 && buffer[i+j] != '\n';j++){HEADINGA_buf[j]=buffer[i+j];}printf("headingA=\n%s\n",HEADINGA_buf);} }std::cout << std::endl;//jiexie gpsgprmc_analyse(GPRMC_buf,rmc_info);gprmc_print(rmc_info);				gpfdp_analyse(GPFPD_buf,gpfdp_pdata);gpdfp_print(gpfdp_pdata);headingA_analyse(HEADINGA_buf,headingA_pdata);headingA_print(headingA_pdata);//把数据发送回去//sp.write(buffer, n);}memset(buff,'\0',sizeof(buff));loop_rate.sleep();}//关闭串口sp.close();return 0;
}

越来越发现使用ROS可以很方便的连接起来各种传感器,彼此之间通信特别方便。以上过程中,遇到的问题有:linux中的串口配置,ros的seria功能包是使用,ros如何使用自己定义的头文件和源文件,sscanf函数的具体使用等。遇到问题欢迎留言交流~~


http://chatgpt.dhexx.cn/article/eScxQY62.shtml

相关文章

python各种模块,迭代器,生成器

从逻辑上组织python代码&#xff08;变量&#xff0c;函数&#xff0c;类&#xff0c;逻辑&#xff1a;实现一个功能&#xff09; 本质就是.py结尾的python文件(文件名&#xff1a;test.py,对应的模块名就是test) 包&#xff1a;用来从逻辑上组织模块的,本质就是一个目录&#…

VFS - 虚拟文件系统的加载和导出

VFS - 代码生成器预览功能实现VFS - 虚拟文件系统基本操作方法的封装VFS - 虚拟文件系统的加载和导出 这是 VFS 的最后一篇&#xff0c;前面两篇中的基本方法已经实现了一个简单的虚拟文件系统&#xff0c;可以创建目录和文件&#xff0c;可以读写文件的内容。在这最后一篇中&a…

如何优雅的使用javascript递归画一棵结构树

递归和尾递归 简单的说&#xff0c;递归就是函数自己调用自己&#xff0c;它作为一种算法在程序设计语言中广泛应用。其核心思想是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。一般来说&#xff0c;递归需要有边界条件、递归前进阶段和递归返回阶段…

python数据结构和算法 时间复杂度分析 乱序单词检测 线性数据结构 栈stack 字符匹配 表达式求值 queue队列 链表 递归 动态规划 排序和搜索 树 图

python数据结构和算法 参考 本文github 计算机科学是解决问题的研究。计算机科学使用抽象作为表示过程和数据的工具。抽象的数据类型允许程序员通过隐藏数据的细节来管理问题领域的复杂性。Python是一种强大但易于使用的面向对象语言。列表、元组和字符串都是用Python有序集合…

黑马毕向东Java课程笔记(day20-1——20-17)IO流:File类及相关方法、递归、递归的相关练习、Properties、PrintWriter类与PrintStream类、合并流与切割流

1、File类概述   File是文件和目录路径名的抽象表示形式。 用来将文件或者文件夹封装成对象&#xff0c;方便对文件与文件夹的属性信息进行操作。   前面说到的“流”&#xff0c;它只能操作数据&#xff0c;想要操作由数据封装成的文件的信息&#xff0c;必须使用File对象…

算法: 如何优雅的使用javascript递归画一棵结构树

递归和尾递归 简单的说&#xff0c;递归就是函数自己调用自己&#xff0c;它做为一种算法在程序设计语言中广泛应用。其核心思想是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。一般来说&#xff0c;递归需要有边界条件、递归前进阶段和递归返回阶段…

day04函数名 闭包 迭代器 生成器(各种推导式和生成器表达式) 内置函数 装饰器 递归...

一.今日内容概 1. 函数本质就是一个内存地址. 用起来和变量一模一样 2. 闭包 内层函数对外层变量的使用 1. 保护变量 2. 让一个变量常驻内存 3. 迭代器 可迭代对象: __iter__ 迭代器: __iter__ __next__ from collecti…

linux 迭代列出文件,讲解在Linux命令行下使用ls命令列出文件的技巧

Linux ls 命令可以说是在 Linux 中常见到的命令之一&#xff0c;因为使用它可以掌握系统中文件所在目录中的内容&#xff0c;从而能够查看与修改文件&#xff0c;如果你正在使用 Linux ls 命令&#xff0c;不妨看一下以下技巧&#xff0c;它能帮助你更快速的完成任务。 ls 命令…

学习递归的另一种方法

每个学期&#xff0c;我都会通过一项调查&#xff0c;以获取有关我的教学的一些反馈。 上学期终于有人给我写一篇新文章的想法。 特别是&#xff0c;他们想了解有关递归的更多信息&#xff0c;所以我认为我会综合一些技巧。 递归概述 对于那些可能是第一次学习递归的人&#x…

用非递归方法实现递归算法时_学习递归的另一种方法

用非递归方法实现递归算法时 每个学期&#xff0c;我都会通过一项调查&#xff0c;以获取有关我的教学的一些反馈。 上学期终于有人给我写一篇新文章的想法。 特别是&#xff0c;他们想了解有关递归的更多信息&#xff0c;所以我认为我会综合一些技巧。 递归概述 对于那些可能…

bat 文件夹移动

echo off echo hello world ::得到当天 set pathLog%date:~0,4%%date:~5,2%%date:~8,2% :: eg:能得到 秒:set pathLog%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2% :: set pathLog%pathLog: 0% ::创建文件夹 md "d:\log\log%pathLog% ec…

【Python零基础入门篇 · 19】:os模块、可迭代对象和迭代器对象

目录 一、os模块 1、os模块中的命令&#xff1a; 2、常用命令的代码演示 os.getcwd() os.chdir(path) os.listdir(path) os.mkdir(path) os.makedirs(path) os.rename(旧名,新名) 3、举例&#xff1a;查找文件夹下所有满足要求的文件 二、可迭代对象和迭代器对象 1、…

day18:File(构造方法、创建、删除文件或者文件夹、 判断性、重命名与剪切、得到性、过滤性)、递归(遍历文件夹文件)

一 回顾 1.HashMap集合 特点: A.数据结构也是Hash表结构 B.多线程中是不安全 C.默认的数组的初始化容量是16 2.HashMap与HashSet的比较 相同点:都是hash表结构来存储 不同点: A.HashSet的底层就是使用HashMap来实现 B.HashSet的数据结构针对与是元素 HashMap的…

Python 文件和文件夹 01

Python文件和文件夹 01 ① 修改当前目录&#xff0c;首次利用 pandas 读取 excel 表 os.chdir import os import pandas as pd os.chdir(C:/aa/bb/cc) os.chdir(rC:\aa\bb\cc)数据 pd.read_excel("temp.xlsx") 等同于当前路径下的 temp.xlsx 文件。print(数据)② 字…

删除win10无限嵌套文件夹

解决由于失误操作导致WIN10系统产生无限循环的文件夹问题 昨天本想自己写一个拷贝文件的小程序&#xff0c;结果出现了点小问题&#xff0c;整出了一个无限循环的文件夹&#xff0c;直接删除出出现错误代码提示&#xff0c;显示无法删除&#xff0c;然后我就去网上找解决方案&…

计算机专硕一般研二在干嘛,专硕一般研二在干嘛,专硕两年怎么安排

一般学习两年。 硕士学位的学制取决于您申请的学校和专业。 不同的学校可能不同&#xff0c;同一所学校的硕士学位也可能不同。 许多学校还设有两年半的学制&#xff0c;甚至三年制的学制。本文一起来看一下吧~ 一.什么人适合读专硕 1、英语相对一般的人 学硕主要考英语一试卷&…

研二导师画大饼,不给时间实习,咋办

一个小学弟最近咨询我 我是本硕都在一所双非一本就读&#xff0c;软件工程&#xff0c;目前研二&#xff0c;23 届。我想在暑期进行一下今年的实习&#xff0c;想着可能对后面秋招和来年春招有帮助&#xff0c;但是实验室管的严导师不放时间(其实我当时是为了毕业条件和平时研…

2022年终总结与2023新年展望

前言 时间过得太快了&#xff0c;虽然写博客已经很多年了&#xff0c;但是年终总结一直由于种种原因没有写过&#xff0c;2022年确实是魔幻的一年&#xff0c;不知不觉自己也已经研二了&#xff0c;因为疫情的原因突然放开&#xff0c;提前放假回家&#xff0c;借此机会写一下…

研二(上学期)计划安排

今天是9.17号了&#xff0c;时间过得很快&#xff0c;学习的脚步永远停不下来。 时间的安排就不说了&#xff0c;真的是计划赶不上变化&#xff0c;一句话&#xff0c;除了外聘上课和研助&#xff0c;其他的时间必须到达实验室&#xff0c;&#xff08;一个星期一次总结&#…

计算机科学与探索、计算机工程与应用投稿经验分享

目录 等级&#xff1a; 经验&#xff1a; 总结&#xff1a; 等级&#xff1a; 计算机科学与探索 CCFb 计算机工程与应用 CCFB(2022年由c升为b) 经验&#xff1a; 首先本人主要关注计算机人工智能图像处理领域&#xff0c;北京某高校研二学生&#xff0c;水平不高。在研一…