linux毫米波雷达程序,用毫米波雷达数据做SLAM
遇到的问题,目前的毫米波雷达数据很稀疏,用excel存储,需要转换过去,测试一下当前的激光雷达算法,并测试。
rosbag数据用matlab(linux版本)可以方便的查看变量和topic
一. 第一步,用激光雷达数据测试
[转载自:https://blog.csdn.net/fk1174/article/details/52673413】
第二种办法,首先去http://kaspar.informatik.uni-freiburg.de/~slamEvaluation/datasets.php下载数据集,我用的是Intel Research Lab 的数据集,保存为intel.clf。(clf是一种日志存储格式)
怎么下载呢?运行这语句就可以了。
wget http://ais.informatik.uni-freiburg.de/slamevaluation/datasets/aces.clf
编写把clf文件转化为rosbag文件的python脚本:
#!/usr/bin/env python
'''This is a converter for the Intel Research Lab SLAM dataset
( http://kaspar.informatik.uni-freiburg.de/~slamEvaluation/datasets/intel.clf )
to rosbag'''
import rospy
import rosbag
from sensor_msgs.msg import LaserScan
from nav_msgs.msg import Odometry
from math import pi
from tf2_msgs.msg import TFMessage
from geometry_msgs.msg import TransformStamped
import tf
def make_tf_msg(x, y, theta, t,base,base0):
trans = TransformStamped()
trans.header.stamp = t
trans.header.frame_id = base
trans.child_frame_id = base0
trans.transform.translation.x = x
trans.transform.translation.y = y
q = tf.transformations.quaternion_from_euler(0, 0, theta)
trans.transform.rotation.x = q[0]
trans.transform.rotation.y = q[1]
trans.transform.rotation.z = q[2]
trans.transform.rotation.w = q[3]
msg = TFMessage()
msg.transforms.append(trans)
return msg
with open('/home/kylefan/catkin_ws/data/intel/intel.clf') as dataset:
with rosbag.Bag('/home/kylefan/intel.bag', 'w') as bag:
for line in dataset.readlines():
line = line.strip()
tokens = line.split(' ')
if len(tokens) <= 2:
continue
if tokens[0] == 'FLASER':
msg = LaserScan()
num_scans = int(tokens[1])
if num_scans != 180 or len(tokens) < num_scans + 9:
rospy.logwarn("unsupported scan format")
continue
msg.header.frame_id = 'base_link'
t = rospy.Time(float(tokens[(num_scans + 8)]))
msg.header.stamp = t
msg.angle_min = -90.0 / 180.0 * pi
msg.angle_max = 90.0 / 180.0 * pi
msg.angle_increment = pi / num_scans
msg.time_increment = 0.2 / 360.0
msg.scan_time = 0.2
msg.range_min = 0.001
msg.range_max = 50.0
msg.ranges = [float(r) for r in tokens[2:(num_scans + 2)]]
bag.write('scan', msg, t)
odom_x, odom_y, odom_theta = [float(r) for r in tokens[(num_scans + 2):(num_scans + 5)]]
tf_msg = make_tf_msg(odom_x, odom_y, odom_theta, t,'base_link','base_laser_link')
bag.write('tf', tf_msg, t)
elif tokens[0] == 'ODOM':
odom_x, odom_y, odom_theta = [float(t) for t in tokens[1:4]]
t = rospy.Time(float(tokens[7]))
tf_msg = make_tf_msg(odom_x, odom_y, odom_theta, t,'odom','base_link')
bag.write('tf', tf_msg, t)
保存为bag.py,放到ros包beginner_tutorials的scripts文件夹下,然后:
chmod +x bag.py
在这之前,需要建立好beginner_tutorials的package,然后:source ./devel/setup.bash
rosrun beginner_tutorials bag.py
就把激光和odom的数据按照真实的时间点写入到了intel.bag里了。
最后
rosbag play intel.bag
激光的数据就发布到/laser了,这样就实现模拟的作用了。
这时候想再rviz里看看,记得要在左上角Global Options里面设置/odom为fixed的:
参考大神:http://answers.ros.org/question/233042/in-ros-gmapping-how-to-use-intel-research-lab-dataset/
具体怎么运行呢?
Bring up the master: roscore
Make sure that use_sim_time is set to true before any nodes are started: rosparam set use_sim_time true (运行rosbag数据就是true,实际数据就是false)
Bring up slam_gmapping, which will take in laser scans (in this case, on the base_scan topic) and produce a map: rosrun gmapping slam_gmapping scan:=scan (我们前面bag.write写入的就是scan)
这里,也可以把odom里程计数据也加进去,就需要这么写
rosrun gmapping slam_gmapping scan:=scan _odom_frame:=odom (我们前面bag.write写入的就是scan)
In a new terminal, start playing back the bag file to feed data to slam_gmapping: rosbag play --clock
Wait for rosbag to finish and exit.
Save your new map to disk using map_saver from the map_server package: rosrun map_server map_saver -f
遇到的一些问题
0. ros 编译 Python 文件
https://blog.csdn.net/light_jiang2016/article/details/55505627
1. 问题与解决
No handlers could be found for logger rosout
解决方法:
在转换文件(.py)的开头加上:
import logging
logging.basicConfig()
其他参考资料
参考网站:http://wiki.ros.org/slam_gmapping/Tutorials/MappingFromLoggedData
https://stackoverflow.com/questions/53642503/how-to-convert-csv-to-rosbag
https://gaoyichao.com/Xiaotu/?book=turtlebot&title=gmapping%E7%9A%84ROS%E5%B0%81%E8%A3%85 GMapping的ROS封装——初始化
rosnode info /slam_gmapping
----------------------------------------------------
Node [/slam_gmapping]
Publications:
* /map_metadata [nav_msgs/MapMetaData]
* /tf [tf2_msgs/TFMessage]
* /map [nav_msgs/OccupancyGrid]
* /rosout [rosgraph_msgs/Log]
* /slam_gmapping/entropy [std_msgs/Float64]
Subscriptions:
* /tf [tf2_msgs/TFMessage]
* /scan [sensor_msgs/LaserScan]
* /tf_static [tf2_msgs/TFMessage]
* /clock [rosgraph_msgs/Clock]
Services:
* /slam_gmapping/set_logger_level
* /slam_gmapping/get_loggers
* /dynamic_ma
linux毫米波雷达程序,用毫米波雷达数据做SLAM相关推荐
- linux毫米波雷达程序,ARS408-21毫米波雷达学习笔记
ARS408-21毫米波雷达学习笔记 1. 认识毫米波雷达ARS408-21 1.1 硬件参数 1.2 软件功能 预备知识1:CAN 2.0 预备知识2:Linux (Ubuntu等) 预备知识3:简 ...
- linux nmea解析程序,GPS的NMEA数据解析
NMEA是一套定义接收机输出的标准信息,有几种不同的格式,每种都是独立相关的ASCII格式,逗点隔开数据流,数据流长度从30-100字符不 等,通常以每秒间隔选择输出,最常用的格式为"GGA ...
- linux毫米波雷达程序,毫米波雷达
毫米波雷达指工作在毫米波波段的雷达.工作频率通常选在30-300吉赫范围内. 毫米波雷达使用毫米波 (millimeter wave )通常毫米波是指30-300GHz频域(波长为1-10mm)的.毫 ...
- 毫米波雷达数据处理_毫米波雷达开启4D时代,助力几何伙伴抢滩自动驾驶量产...
凭借独特的技术路线,几何伙伴在2019年末成为上汽集团的智能驾驶五大战略合作伙伴之一. 作者:安琪 自动驾驶的江湖里,无论是辅助驾驶派系,还是高级自动驾驶派系,玩家们都在路上不断前进着. 以自动驾驶为 ...
- Xiaojie雷达之路---毫米波雷达基础知识---一些系统设计的话题
本篇文章主要是介绍毫米波雷达的基础知识中的系统设计,主要包含三个知识点 2D-FFT的过程 在设计帧的时候,根据一些参数进行的折中 雷达距离的等式 文章目录 2D-FFT range-FFT dopp ...
- 存在感应雷达模块,毫米波雷达传感技术,人体呼吸心跳感应应用
毫米波雷达,是工作在毫米波波段探测的雷达.通常毫米波是指30~300GHz频域(波长为1~10mm)的.毫米波的波长介于厘米波和光波之间,因此毫米波兼有微波制导和光电制导的优点. 与光波相比,毫米波雷 ...
- 微信小程序使用echarts雷达图遇到的坑
最近一个医院的小程序需要使用雷达图来展示,简单总结一下. 1:使用场景:在详情页,根据测试的题目得分画成雷达图,测试的题目会得到2种结果,高危和低危.一种雷达图,但是样式不一样.如果是标题文字颜色不用 ...
- Robosense速腾激光雷达如何在线连接雷达并发送点云数据到ROS
Robosense速腾激光雷达如何在线连接雷达并发送点云数据到ROS** 在运行该该篇文章之前请下载rslidar_sdk,编译方式参照文章:Robosense在LIOSAM中的使用中关于rslida ...
- R语言使用ggradar包可视化基本雷达图(radar chart、蜘蛛图spider plot)、可视化单个数据对象的雷达图、自定义雷达图的线条类型、线条宽度、数据点大小、色彩等
R语言使用ggradar包可视化基本雷达图(radar chart.蜘蛛图spider plot).可视化单个数据对象的雷达图.自定义雷达图的线条类型.线条宽度.数据点大小.色彩等(Customize ...
最新文章
- 刻意练习:LeetCode实战 -- Task29. 加油站
- winform改变控件的外形
- html和css知识,html和 css基础知识
- 地图测量面积工具app_【第288期】GPS工具箱(GPS精准定位工具)
- 客户端用java api 远程操作HDFS以及远程提交MR任务(源码和异常处理)
- Drools规则引擎简介
- jeDate日期控件
- 下载 .m3u8视频文件
- VNC远程控制软件,五款用了都说好的VNC远程控制软件
- 十二烷基-β-D-麦芽糖苷/CAS号: 69227-93-6
- java代码实现流程中的会签_一个简单的会签实例
- 四百左右的蓝牙耳机有哪些?四百左右好用的蓝牙耳机推荐
- L1-005. 考试座位号
- AndroidStudio报错:Entry name ‘META-INF/androidx.legacy_legacy-support-core-utils.version‘ collided
- [Web 安全] WASC 和 OWASP两个web安全方面组织机构介绍
- (Python)正则表达式(二)
- Outlook2007設置未讀郵件為紅色
- brpc源码分析——线程模型
- 已经清空了垃圾箱怎样找回误删的文件
- 使用SquirrelMail配置Webmail系统,并实现通Macallan Mail Solution邮件服务器的连接
热门文章
- Altium_Designer(protel_DXP)英文菜单汉化对应表表
- Visio工具的跨线解决问题
- 麒麟服务器系统搭建nfs共享
- Openharmony应用NAPI详解--进阶篇2
- C语言入门之【C语言 “ 函数 “】
- 【如何使用idea合并当前分支的代码到主分支】
- 一主双从同步错误 error connecting to master ‘slave@192.168.81.158:3306‘ - retry-time: 60 retries: 1
- python项目开发实例集锦-python项目开发案例集锦 mobi|金融租赁公司 业务
- 数据中心中出现极性问题怎么办?
- 游戏搜索引擎 - 6617.com 内测,欢迎大家点评 :)