首页 网站首页 商业信息 定位 查看内容

【传感器】GNSS卫星定位导航原理和实现(附代码)

网络营销 2022-12-12 20:04 7199人围观 定位

一、相关常识

1.NMEA

NMEA是National Marine Electronics Association 的缩写,是美国国家陆地电子协会的简称,现在是GPS导航装备同一的标准协议。

2.UTM坐标系

Universal Transverse Mercator Grid System,通用横墨卡托网格系统是一种平面直角坐标,这类坐标格网系统及其所根据的投影已经普遍用于地形图,作为卫星影象和自然资本数据库的参考格网以及要求切确定位的其他利用。

例:12U 358657mE 5885532mN

  • 12代表经度12区
  • U代表纬度U区
  • 358657mE代表东向位置358657m
  • 5885532mN代表北向位置5885532m

二、代码实现

本文代码首要依靠于ROS相关库实现,源代码见:https://github.com/Abin1258/gps_to_odom.git

1.输入:GPS数据

几种常见的数据格式:

1)接收机串口输出:GPFPD等



2)ROS消息格式:nmea_msgs::Sentence :带消息头的gps裸数据

std_msgs/Header header
uint32 seq
time stamp
string frame_id
string sentence

3)ROS消息格式:sensor_msgs::NavSatFix : 剖析出来的gps范例传感器数据格式

uint8 COVARIANCE_TYPE_UNKNOWN=0
uint8 COVARIANCE_TYPE_APPROXIMATED=1
uint8 COVARIANCE_TYPE_DIAGONAL_KNOWN=2
uint8 COVARIANCE_TYPE_KNOWN=3
std_msgs/Header header
uint32 seq
time stamp
string frame_id
sensor_msgs/NavSatStatus status
int8 STATUS_NO_FIX=-1
int8 STATUS_FIX=0
int8 STATUS_SBAS_FIX=1
int8 STATUS_GBAS_FIX=2
uint16 SERVICE_GPS=1
uint16 SERVICE_GLONASS=2
uint16 SERVICE_COMPASS=4
uint16 SERVICE_GALILEO=8
int8 status
uint16 service
float64 latitude
float64 longitude
float64 altitude
float64[9] position_covariance
uint8 position_covariance_type

4)ROS消息格式:geographic_msgs::GeoPointStamped : 带消息头的三维点的数据格式

std_msgs/Header header
uint32 seq
time stamp
string frame_id
geographic_msgs/GeoPoint position
float64 latitude
float64 longitude
float64 altitude

本文彩用的是经过GPS驱动剖析后的数据,已经将原始数据封装为rostopic /gps/fix,GPS驱动可以见本链接:https://github.com/Abin1258/gps_gpfpd_drive.git

所以接管GPS数据的具体代码采用的sensor_msgs::NavSatFix数据格式,代码以下:

void GpsOdom::NavsatCallback(const sensor_msgs::NavSatFixConstPtr& navsat_msg) {
geographic_msgs::GeoPointStampedPtr gps_msg(new geographic_msgs::GeoPointStamped());
gps_msg->header = navsat_msg->header;
gps_msg->position.latitude = navsat_msg->latitude;
gps_msg->position.longitude = navsat_msg->longitude;
gps_msg->position.altitude = navsat_msg->altitude;
GpsCallback(gps_msg);
}

2.输出:里程计Odomerty

在ROS消息中的格式为:

std_msgs/Header header
uint32 seq
time stamp
string frame_id
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/Pose pose
geometry_msgs/Point position
float64 x
float64 y
float64 z
geometry_msgs/Quaternion orientation
float64 x
float64 y
float64 z
float64 w
float64[36] covariance
geometry_msgs/TwistWithCovariance twist
geometry_msgs/Twist twist
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
float64[36] covariance

3.处置进程

由于GPS间接输出的就是经纬度和高度,对应与位置中的XYZ,所以间接将GPS数据转化为UTM坐标系下并已第一帧数据作为起点即可,代码以下:

gps_msg->header.stamp += ros::Duration(0.0);
geographic_msgs::GeoPoint gpspoint;
gpspoint.altitude = gps_msg->position.altitude;
gpspoint.latitude = gps_msg->position.latitude;
gpspoint.longitude = gps_msg->position.longitude;
geodesy::UTMPoint utm;
geodesy::fromMsg(gpspoint, utm);
Eigen::Vector3d xyz(utm.easting, utm.northing, utm.altitude);


if(!zero_utm) {
zero_utm = xyz;
}
xyz -= (*zero_utm);


odom.header.seq = gps_msg->header.seq;
odom.header.stamp = gps_msg->header.stamp;
odom.pose.pose.position.x = xyz(0);
odom.pose.pose.position.y = xyz(1);
odom.pose.pose.position.z = xyz(2);


odompub.publish(odom);

4.实现结果

在操场收集了一圈五百米左右的数据,几近无漂移,坦荡地带RTK根基就充足定位了,可是缺少姿势角和速度信息。



高端人脉微信群

高端人脉微信群

人脉=钱脉,我们相信天下没有聚不拢的人脉,扫码进群找到你所需的人脉,对接你所需的资源。

商业合作微信

商业合作微信

本站创始人微信,13年互联网营销经验,擅长引流裂变、商业模式、私域流量,高端人脉资源丰富。

精彩点评

相关推荐

1元开通测试!华为“高精度定位”功能上线

1元开通测试!华为“高精度定位”功能上线

11月29日,华为系列手机把鸿蒙系统更新到最新版本后,取消了“辅助定位设置”的选项,

定位理论5大坑,你踩过几个?

定位理论5大坑,你踩过几个?

编辑导语:有些“定位方法论”充分利用了读者的“简化冲动”,可能我们在市面上接受到

一篇文章,读懂定位理论 | 到底什么是定位?

一篇文章,读懂定位理论 | 到底什么是定位?

定位二字,不断出现在各类圈层的朋友口中。可这个词到底是什么意思,或许没有太多人会

教你如何使用Ip地址进行精准定位

教你如何使用Ip地址进行精准定位

首先,看到这个标题,很多人可能没由的一楞,Ip地址?地位?Ip地址怎么定位?是的,没

安卓Android手机如何利用软件修改系统定位

安卓Android手机如何利用软件修改系统定位

工具/原料:1、Fake Location APPFake Location APP功能介绍:1.以ROOT环境运行,不易

虚拟定位/ Fake Location

虚拟定位/ Fake Location

某东有时候会联合发些地域性的消费券,像什么“云南消费券”、“东莞消费券”,app定

老司机揭秘手机定位技术,这下彻底明白啦!

老司机揭秘手机定位技术,这下彻底明白啦!

今天我们所处的移动互联网时代,手机成了每个人的生活标配。这些手机里,安装了形形色

原神:太香了!水神少女形象定位曝光,海灯节全新角色登场 ...

原神:太香了!水神少女形象定位曝光,海灯节全新角色登场 ...

果然是亲女儿,每次复刻的武器池都香到让人流口水​。​有点小失望,绫华皮肤竟然是四

定位凉凉了?定位为什么会定死?

定位凉凉了?定位为什么会定死?

定位凉凉了?定位为什么会定死?作者/李兴随着当今营销生态的变化,品牌呈现出全新的

百度地图宣布切换为优先运用国产北斗系统进行定位

百度地图宣布切换为优先运用国产北斗系统进行定位

IT之家 9 月 30 日消息,近日,百度地图发布了北斗卫星导航系统应用的最新进展,北斗

有什么好用的手机号码定位APP推荐吗?

有什么好用的手机号码定位APP推荐吗?

常有不少杠精说位置定位类APP打着亲情的招牌,实际上在侵犯个人隐私。但是,工具本身

手机关机拔卡仍可定位,大数据行程卡,揭开信息无处遁形的面纱

手机关机拔卡仍可定位,大数据行程卡,揭开信息无处遁形的面纱

你相信吗?将手机关机拔卡之后依旧可以定位,它就是一个隐形的GPS定位工具,放在以前

用手机就能知道你的位置,摄像头也能带定位功能,偷听偷窥神器网络热销

用手机就能知道你的位置,摄像头也能带定位功能,偷听偷窥神器网

楚天都市报11月14日讯(记者 周丹)近日,“有人利用软件通过手机非法定位他人位置”

手机号怎么定位对方在哪?分享个手机定位找人小窍门,误差仅10米

手机号怎么定位对方在哪?分享个手机定位找人小窍门,误差仅10米

生活中,有很多时候都会用到手机定位找人这种找人的方法,那么,手机号怎么定位对方在

华为上线高精度定位服务!收费仅需1元,为何网友还说不厚道?

华为上线高精度定位服务!收费仅需1元,为何网友还说不厚道?

近日,有媒体报道称,华为在会员服务中心中新增了一项全新的功能——“高精度定位”,

手机定位很简单,一张微信照片就能定位对方的位置,真的涨知识了

手机定位很简单,一张微信照片就能定位对方的位置,真的涨知识了

在日常生活中,相信有不少的朋友时时刻刻想要知道自己的另一半去了哪里?可是,自己又

这可能是把产品定位讲得最透彻的一篇文章了

这可能是把产品定位讲得最透彻的一篇文章了

产品定位,归根到底是用户定位、场景定位、价值定位、价格定位4大块。想要一款产品最

品牌定位,抢占用户心智第一步

品牌定位,抢占用户心智第一步

为了更好地经营品牌,以及更好地瞄准目标群体、向用户传递品牌价值,品牌需要做好自身

手机定位很简单,打开手机设置,立刻知道对方去过哪里,涨知识了

手机定位很简单,打开手机设置,立刻知道对方去过哪里,涨知识了

在日常生活中,由于手机的功能越来越强大,所以大部分人手上都会有智能手机。那么你用

谈谈华杉对定位理解的5个误区

谈谈华杉对定位理解的5个误区

编辑导语:前几天,华与华董事长华杉围绕《定位》这本书,提出了对定位理论的5个质疑

商业洽谈 文章投递 寻求报道
电话咨询: 15924191378
关注微信