关注微信公众号“混沌无形”,后台回复:13462F2。免费获取完整工程源码!

基于USB-RS232协议输出UM220-III/3-N/北斗GPS模块定位信息,使用ROS与js的接口包——roslibjs,调用百度地图js API,并可视化数据,笔者测试的效果如下(红点表示经过的路径点,GPS/北斗数据存在误差,所以路径点不连续)

使用者需要先下载安装roslibjs,再注册百度地图或高德地图。

读取GPS/北斗的定位数据代码

import serialimport rospyfrom nmea_msgs.msg import Sentence
from libnmea_navsat_driver.driver import RosNMEADriverif __name__ == '__main__':rospy.init_node('nmea_topic_serial_reader')# fine when using 10 Hznmea_pub = rospy.Publisher("nmea_sentence", Sentence, queue_size=3)serial_port = rospy.get_param('~port','/dev/ttyUSB0')serial_baud = rospy.get_param('~baud',115200)# Get the frame_idframe_id = RosNMEADriver.get_frame_id()try:GPS = serial.Serial(port=serial_port, baudrate=serial_baud, timeout=2)while not rospy.is_shutdown():data = GPS.readline().strip()sentence = Sentence()sentence.header.stamp = rospy.get_rostime()sentence.header.frame_id = frame_idsentence.sentence = datanmea_pub.publish(sentence)except rospy.ROSInterruptException:GPS.close() #Close GPS serial port

数据点在网页的可视化代码为

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}</style>
<title>地图显示</title>
<script  src="http://api.map.baidu.com/api?v=2.0&ak=Ii2oy8BEXRtwXOW1wo0oRb4xGneV6nCm"></script><script src="https://static.robotwebtools.org/EventEmitter2/current/eventemitter2.min.js"></script>
<script src="../build/roslib.js"></script>
</head><body><div id="statusIndicator"><p id="connecting">Connecting to rosbridge...</p><p id="connected" style="color:#00D600; display:none">Connected</p><p id="error" style="color:#FF0000; display:none">Error in the backend!</p><p id="closed" style="display:none">Connection closed.</p></div>
</ol><div id="allmap"></div><script type="text/javascript"> // Connecting to ROS// -----------------var ros = new ROSLIB.Ros();// If there is an error on the backend, an 'error' emit will be emitted.ros.on('error', function(error) {document.getElementById('connecting').style.display = 'none';document.getElementById('connected').style.display = 'none';document.getElementById('closed').style.display = 'none';document.getElementById('error').style.display = 'inline';console.log(error);});// Find out exactly when we made a connection.ros.on('connection', function() {console.log('Connection made!');document.getElementById('connecting').style.display = 'none';document.getElementById('error').style.display = 'none';document.getElementById('closed').style.display = 'none';document.getElementById('connected').style.display = 'inline'; });ros.on('close', function() {console.log('Connection closed.');document.getElementById('connecting').style.display = 'none';document.getElementById('connected').style.display = 'none';document.getElementById('closed').style.display = 'inline';});// Create a connection to the rosbridge WebSocket server.ros.connect('ws://localhost:9090');// define two global variantvar x = 0;var y = 0;//Subscribing to a Topic//----------------------// Like when publishing a topic, we first create a Topic object with details of the topic's name// and message type. Note that we can call publish or subscribe on the same topic object.var carPose = new ROSLIB.Topic({ros : ros,name : '/simplegps',messageType : 'geometry_msgs/Pose2D'});var sample = new ROSLIB.Topic({ros : ros,name : '/simplegps',messageType : 'geometry_msgs/Pose2D'});// Then we add a callback to be called every time a message is published on this topic.carPose.subscribe(function (message) {window.x = message.x;window.y = message.y;var map = new BMap.Map("allmap",{minZoom:3,maxZoom:19}); // 创建Map实例,设置地图允许的最小/大级别 var gpspoint = new BMap.Point(window.x, window.y); // 创建点坐标// 添加带有定位的导航控件var navigationControl = new BMap.NavigationControl({// 靠左上角位置anchor: BMAP_ANCHOR_TOP_LEFT,// LARGE类型type: BMAP_NAVIGATION_CONTROL_LARGE,// 启用显示定位enableGeolocation: true});map.addControl(navigationControl);// 添加定位控件var geolocationControl = new BMap.GeolocationControl();geolocationControl.addEventListener("locationSuccess", function(e){// 定位成功事件var address = '';address += e.addressComponent.province;address += e.addressComponent.city;address += e.addressComponent.district;address += e.addressComponent.street;address += e.addressComponent.streetNumber;alert("当前定位地址为:" + address);});geolocationControl.addEventListener("locationError",function(e){// 定位失败事件alert(e.message);});map.addControl(geolocationControl);//添加地图类型控件map.addControl(new BMap.MapTypeControl({mapTypes:[BMAP_NORMAL_MAP,BMAP_HYBRID_MAP]}));      map.setCurrentCity("重庆");          // 设置地图显示的城市 此项是必须设置的//坐标转换完之后的回调函数translateCallback = function (data){var bdpoint = data.points[0];map.centerAndZoom(bdpoint, 12);    map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放         function Sample()  //标住更新的位置{ sample.subscribe(function (message) {window.x = message.x;  //更新点坐标window.y = message.y;var gpspoint = new BMap.Point(window.x, window.y); // 创建点坐标translateCallback1 = function (data){  var bdpoint1 = data.points[0]  //创建点坐标var marker = new BMap.Marker(bdpoint1); // 创建标注map.addOverlay(marker); // 将标注添加到地图中}function zbzh1()   //坐标转换{var convertor = new BMap.Convertor();var pointArr = [];pointArr.push(gpspoint);convertor.translate(pointArr, 1, 5, translateCallback1)}      zbzh1();sample.unsubscribe();});}function xh() //无限循环{setTimeout(function(){Sample ();xh();},3000);}setTimeout(xh(),3000);}function zbzh()   //坐标转换{var convertor = new BMap.Convertor();var pointArr = [];pointArr.push(gpspoint);convertor.translate(pointArr, 1, 5, translateCallback)}zbzh();// If desired, we can unsubscribe from the topic as well.carPose.unsubscribe();});</script></body>
</html>

喜欢的话,请关注微信公众号,可好文!

ROS采集GPS/北斗数据在百度地图中可视化位置相关推荐

  1. php 根据位置显示地图,php根据地理名称获取百度地图中的位置

    根据获取的地理名称,通过百度api得到经纬度,从而显示在地图中 难易:初级 下载资源 下载积分: 40 积分 $address = $_GET['address'] ? $_GET['address' ...

  2. Qt开发北斗定位系统融合百度地图API及Qt程序打包发布

    Qt开发北斗定位系统融合百度地图API及Qt程序打包发布 1.上位机介绍 最近有个接了一个小型项目,内容很简单,就是解析北斗GPS的串口数据然后输出经纬度,但接过来觉得太简单,就发挥了主观能动性,增加 ...

  3. 在百度地图中叠加CAD图及GIS数据展示踩坑记

    前言 在之前的几篇博客中分别介绍了 在Cesium中实现与CAD的DWG图叠加显示分析 https://www.cnblogs.com/vjmap/p/16541751.html . 高德地图与CAD ...

  4. 百度地图实现公司位置的定位,可拖动修改公司位置。

    百度地图实现公司位置的定位,可拖动修改公司位置.只需要维护x轴和Y轴的数据到数据库就可以了 可拖动,可搜索. <html><head><script src=" ...

  5. 百度地图中绘制多个点例子

    水平有限,欢迎指正.交流!! <!DOCTYPE html> <html lang="en"><head><meta charset=&q ...

  6. 根据百度地图经纬度获取位置信息

    /*** 根据百度地图经纬度获取位置信息 **/ public class BaiduMapUtils {// 百度地图秘钥static String ak = "此处添加你的百度地图秘钥& ...

  7. android h5调用百度地图,h5页面如何调用百度地图获取当前位置(代码)

    本篇文章给大家带来的内容是关于h5页面如何调用百度地图获取当前位置(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在项目中越来越多的用到了手机的GRS定位功能,使用百度地图A ...

  8. vue3调用百度地图标注选择位置并获取经纬度

    vue3调用百度地图标注选择位置并获取经纬度 参考了很多文章,最终结合百度文档各有采取完成地图选取经纬度. 第一步:引入百度地图,在当前需要地图的页面引入就行. const loadMapScript ...

  9. 百度地图获取当前位置街道_轻松查看街道地址位置地图

    百度地图获取当前位置街道 Have you found the address for a place that you would like to visit while browsing but ...

最新文章

  1. Oracle 11G for redhat 自启动脚本
  2. 从用户需求看互联网基础设施服务商www.shzhenai.com
  3. springboot data.redis.RedisConnectionFactory 集成问题
  4. 树莓派dht11 python_树莓派使用DHT11温湿度传感器
  5. UVa 297 四分树
  6. 八邻域轮廓跟踪算法_结合mRMR选择和IFCM聚类的遥感影像分类算法
  7. 项目管理中网络图的看法和相关参数阅读说明
  8. 数据传输服务 DTS > 数据迁移 > 支持的数据库和迁移类型
  9. 20200428:186周周赛下(leetcode1425)
  10. 开发环境、生产环境、测试环境的基本理解和区别
  11. python的简洁运算符_Python实现的简单算术游戏实例 python中算数运算符都有哪些...
  12. 黑马程序员 Python学习笔记之 变量的命名
  13. Atitit 索引法 html文件转txt纯文本索引 适用于 evernote索引,导入imap邮箱,方便检索 /sumdoclist/src/aPkg/html2txtIndexFile.jav
  14. [转] 史上最全英文免费编程电子书列表
  15. [笔记分享] [Exception] 内核空间异常之流程小结
  16. 层次聚类sklearn.cluster包AgglomerativeClustering
  17. 钢琴节奏时值测试软件,弹钢琴时把握节奏的正确方法
  18. java坦克大战子弹不动_Javase-坦克大战小游戏,为什么会出现上方向和左方向的子弹不能发射的情况?检查了好久,有大佬帮帮忙吗,小白睡不着...
  19. iOS:创建Siri 功能
  20. 计算机课程计算奇数,计算机网络课设计算校验和讲解

热门文章

  1. 电波的频率波长传输距离传输速率等问题总结
  2. java商城毕业设计 JavaWeb家具家居购物商城毕业设计(8)商品评论列表
  3. 未解——电脑无法录音
  4. 包 权限修饰符 final 常量 枚举 抽象类 接口 多态 内部类 常用API 正则表达式 Lambda
  5. 送客户的祝福语_送给客户的事业祝福语大全(含贺词、寄语等)
  6. 知识点滴 - 在Win10里添加Excel的ODBC数据源
  7. 逆向学习1:52pojie第二课
  8. 客户端、服务器、浏览器
  9. idea下载源码失败 cannot download sources
  10. mapreduce php,php mapreduce