转:http://www.rosclub.cn/post-1030.html 最近实验室老师在做一个多传感器数据采集实验,涉及到了消息同步.所以就学习了ROS官网下的消息同步工具message_filters. http://wiki.ros.org/message_filters 消息同步有两种方式,暂且称之为松同步与紧同步,紧同步是精确的同步,松同步是粗略的同步.我使用的是C++下的松同步我的代码如下:#include <message_filters/subscriber.h> #inc…
学会使用日志(log)系统,做ROS大型项目的主治医生 通过显示进程的运行状态是好的习惯,但需要确定这样做不会影响到软件的运行效率和输出的清晰度.ROS 日志 (log) 系统的功能就是让进程生成一些日志消息,显示在屏幕上.发送到特定 topic 或者储存在特定 log 文档中,以方便调试.记录.报警等.下面简单介绍如何生成和查看日志消息. 日志消息 在ROS中,有一个特殊的话题叫作/rosout,它承载着所有节点的所有日志消息./rosout消息的类型是rosgraph_msgs/Log: r…
V-rep中显示激光扫描点  在VREP自带的场景中找到practicalPathPlanningDemo.ttt文件,删除场景中多余的物体只保留静态的地图.然后在Model browser→components→sensors中找到SICK TiM310 Fast激光雷达,拖入场景中: 打开脚本参数修改器,可以修改雷达扫描范围(默认为270°),是否显示雷达扫描线(true),以及最大探测距离(默认为4m)这三个参数.地图大小为5m×5m,我们将雷达最大探测距离改为2m 将激光雷达放到地图中任…
激光雷达工作时会先在当前位置发出激光并接收反射光束,解析得到距离信息,而后激光发射器会转过一个角度分辨率对应的角度再次重复这个过程.限于物理及机械方面的限制,激光雷达通常会有一部分“盲区”.使用激光雷达返回的数据通常可以描绘出一幅极坐标图,极点位于雷达扫描中心,0-360°整周圆由扫描区域及盲区组成.在扫描区域中激光雷达在每个角度分辨率对应位置解析出的距离值会被依次连接起来,这样,通过极坐标表示就能非常直观地看到周围物体的轮廓,激光雷达扫描范围示意图可以参见下图. 激光雷达通常有四个性能衡量指标…
在此因为要总结写一个文档,所以查阅资料,将总结的内容记录下来,欢迎大家指正! 文章将介绍使用的基于机器人操作系统(ROS)框架工作的SLAM算法. 在ROS中提供的五种基于2D激光的SLAM算法分别是:HectorSLAM,Gmapping,KartoSLAM,CoreSLAM和LagoSLAM.当然最后还有比较经典的google开源的cartographer,虽然不是基于ROS的但是大牛们已经将它修改为基于ROS的版本的cartographer_ros, ROS(Robot Operating…
上的安装说明如下: 官网上明确写了如果安装windows kinect还需要安装一个驱动,但是有些ROS的书上并没有这么做,只提到了使用如下两步进行安装即可使用: sudo apt-get install ros-<rosdistro>-openni-camera sudo apt-get install ros-<rosdistro>-openni-launch       我仅使用如上两步安装时候,会发生如下的错误: "No Device Connected, Wai…
https://blog.csdn.net/yangziluomu/article/details/79576508 https://answers.ros.org/question/60239/how-to-extract-and-use-laser-data-from-scan-topic-in-ros-using-c/ https://answers.ros.org/question/149256/subscribe-laserscan/ 目录 目录 ROS 传感器消息 ROS 传感器消息…
将ros中的gps_msg数据导入google earth显示轨迹 [TOC] 1. 获取GPS数据 将ros中发布的gps topic输出到文本中 rostopic echo -p /gpsData>gpsData 得到如下格式的数据 数据格式转换 因为google earth支持的kml文件中需要导入longitude,latitude,altitude 格式的数据,所以需要对生成的数据文件进行处理,这里我使用python和正则表达式写了个小程序实现数据格式的转换 import re f_i…
ROS_Kinetic_27 在ROS中使用Cartographer进行SLAM Cartographer是谷歌新開源的通用的2D和3D定位與構圖同步的SLAM工具,並提供ROS接口. 论文Real-Time Loop Closure in 2D LIDAR SLAM下载地址: http://download.csdn.net/detail/zhangrelay/9648192 资料汇总请参考:http://blog.csdn.net/zhangrelay/article/details/527…
ROS_Kinetic_07 ROS中机器人三维物理引擎高保真仿真利器gazebo 7.0 ROS kinetic中的gazebo版本是7.0,有很多新的特性. 首先,启动gazebo: ~$ gazebo 可以看到类似下面的截图: gazebo模型可以在网址:http://models.gazebosim.org/ 模型已经更新到2016-05-09,稍后会提供下载. 可以使用wget下载到硬盘并保存在.gazebo/models文件下. 可以在菜单栏,熟悉下新版的特征和效果,查看相应的帮助文…
在ROS的编程过程中,如果CMakeLists.txt如果写不好,编译就很难成功.如果看不懂CMakeLists.txt那么很多错误你也不知道时什么回事.所以深入了解它是很有必要的.现在我们就来看看它. 我们使用cmake进行程序编译的时候,会根据CMakeLists.txt这个文件进行一步一步的处理,然后形成一个MakeFile文件,系统再通过这个文件的设置进行程序的编译. 我们可以先寻找一些cmake方面的东西进行一定的了解.ROS中的CMakeLists.txt也是基于普通的cmake的.…
记录关于我们运行roslaunch openni_launch openni.launch  命令时生成的话题以及这些话题的数据类型便于后期的处理,只有知道它们的数据结构,才能很好的对数据进行处理,我们观察到使用rostopic list的所有话题的列表,当然其中也有一些不经常使用的话题类型,比如下面这些话题是我们经常使用的/camera/depth/image/camera/depth/image_raw/camera/depth/points/camera/ir/image_raw/came…
在ROS中点云的数据类型 在ROS中表示点云的数据结构有: sensor_msgs::PointCloud      sensor_msgs::PointCloud2     pcl::PointCloud<T> 关于PCL在ros的数据的结构,具体的介绍可查 看            wiki.ros.org/pcl/Overview 关于sensor_msgs::PointCloud2   和  pcl::PointCloud<T>之间的转换使用pcl::fromROSMsg…
在ROS的编程过程中,如果CMakeLists.txt如果写不好,编译就很难成功.如果看不懂CMakeLists.txt那么很多错误你也不知道时什么回事.所以深入了解它是很右必要的.现在我们就来看看它. 我们使用cmake进行程序编译的时候,会根据CMakeLists.txt这个文件进行一步一步的处理,然后形成一个MakeFile文件,系统再通过这个文件的设置进行程序的编译. 我们可以先寻找一些cmake方面的东西进行一定的了解.ROS中的CMakeLists.txt也是基于普通的cmake的.…
下面是一些USB摄像头的驱动(大多数摄像头都支持uvc标准): 1 使用软件库里的uvc-camera功能包 1.1 检查摄像头 lsusb ------------------------------------- 显示如下: Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 007: ID 046d:082b Logitech, Inc. Webcam C170 Bus 001 Devi…
在创建msg和srv文件之后,使用srv和msg文件时候需要对xml文件进行修改,如下: <build_depend>message_generation</build_depend> <run_depend>message_runtime</run_depend> 在 melodic ROS中 找不到 <run_depend>message_runtime</run_depend> 应该注销 <exec_depend>m…
1.msg和srv究竟有什么区别?? msg只是单向的发送和接受. srv包含两个部分:请求和响应. 2.msg和srv简介 msg:msg文件是描述ROS消息字段的简单文本文件.它们用于为不同语言(c++或者python等)的消息生成源代码. srv:srv文件用来描述服务.它由两部分组成:请求(request)和响应(response). msg文件存储在包的msg目录中,而srv文件存储在srv目录中. msg和srv文件的定义格式: msg只是简单的文本文件,每行有一个字段类型和字段名称…
什么是定时消息和延迟消息? 定时消息:Producer 将消息发送到 MQ 服务端,但并不期望这条消息立马投递,而是推迟到在当前时间点之后的某一个时间投递到 Consumer 进行消费,该消息即定时消息. 延迟消息:Producer 将消息发送到 MQ 服务端,但并不期望这条消息立马投递,而是延迟一定时间后才投递到 Consumer 进行消费,该消息即延时消息. 定时消息与延迟消息在代码配置上存在一些差异,但是最终达到的效果相同:消息在发送到 MQ 服务端后并不会立马投递,而是根据消息中的属性延…
近期接手一个winform 项目,虽然之前有.net 的经验,但是对一些控件的用法还不是很熟悉. 这段时间将会记录一些在工作中遇到的坎坷以及对应的解决办法,写出来与大家分享并希望大神提出更好解决方法来促进进步. 我也会尽可能把我查找到资料的出处引出来,以此来感恩对我提供帮助的人们. 正题如下 一.关于Winform下DataGridView中实现checkbox全选反选.同步列表项的处理 1.checkbox的添加:在设计页面选择编辑列在新添加的列中注意如下几个属性: SortMode = No…
作为linux的热衷者和初学者,我们在学习的过程中难免会碰到不少的问题,下面简单的介绍和总结一下,我是如何通过以下两种方法解决在vmware中实现Ubuntu与win7(主机)之间同步实现共享文件的...1. 通过Vmware Tools方法;2. 通过samba方法...至于其他版本的linux发行版:以及不同的主机系统——xp系统,暂时木有亲测,但细细想来真真是相似的哈~~~~~~ps:如果出现一些未知错误,不知猴年马月才能解决时,不妨果断卸载并重新安装vmware和Ubuntu,这最多也就…
C#中的线程(二)线程同步   Keywords:C# 线程Source:http://www.albahari.com/threading/Author: Joe AlbahariTranslator: Swanky WuPublished: http://www.cnblogs.com/txw1958/Download:http://www.albahari.info/threading/threading.pdf 第二部分:线程同步基础 同步要领 下面的表格列展了.NET对协调或同步线程动…
5.7 并行复制配置 基于GTID 搭建中从 基于GTID的备份与恢复,同步中断处理 这个文章包含三个部分 1:gtid的多线程复制2:同步中断处理3:GTID的备份与恢复 下面文字相关的东西 大部分都比较重要,可以看一下master: 192.168.17.21slave: 192.168.17.22salve: 192.168.17.23 分别在这三个机器上面安装 编译安装mysql 5.7 不会安装的话 这有安装脚本 https://www.cnblogs.com/noel/p/10314…
看FMX代码,发现有两种消息处理的实现方式,一种是用TMessageManager来实现自定义的消息,另外一种象TEdit中的实现,直接声明消息方法.   早前,看过文章说TMessageManager的用法,可用到的时候,又找不到,只好自己动手.   我的应用场景是这样:   当前的Frame弹出一个对话框Frame,当操作对话框的时候,想让当前的Frame跟着应响,让用户看到操作的结果,如下图,点大中小字体,后面的题目的字体会跟着变化:   参考fmx的代码,试着用消息机制实现了: 1.声明…
联合标定三维雷达和IMU,第一步要先对齐两种传感信息的时间戳. ros官网提供了message_filters用于对齐多种传感信息的时间戳. http://wiki.ros.org/message_filters#Time_Synchronizer 需要提示一点,对齐时间戳有两种方式,一种是时间戳完全对齐 ExactTime Policy ,另一种是时间戳相近 ApproximateTime Policy ,前者更为严格. 本人选用时间戳相近的对齐方法,代码如下: #include <messa…
下面使用SYD Dynamics的9轴AHRS(Attitude and heading reference system),来发布sensor_msgs/Imu类型的消息. 将传感器用USB转串口接到Ubuntu系统上,可以用如下命令查看串口信息: ls -l /dev/tty* 查询出串口名为“/dev/ttyUSB0”.根据官方给的传感器程序源文件和boost::asio库来实现串口发送request指令,并读取传感器返回的四元数信息.之后将其发送到/IMU_data的话题上: // St…
在移动机器人建图和导航过程中,提供相对准确的里程计信息非常关键,是后续很多工作的基础,因此需要对其进行测试保证没有严重的错误或偏差.实际中最可能发生错误的地方在于机器人运动学公式有误,或者正负号不对,或者定义的坐标系之间方向不一致等. 整个移动机器人的控制结构如下图所示,其中base_controller节点将订阅的cmd_vel信息通过串口或其它通信接口发送给下位机(嵌入式控制板).下位机中根据机器人运动学公式进行解算,将机器人速度转换为每个轮子的速度,然后通过CAN总线(或其它总线接口)将每…
上一节完成了对nodes, Topic的理解,再深入一步: Services and Parameters 我不理解为何 ROS wiki 要把service与parameter放在一起介绍, 很想分开说,但限于 csdn blog 没有文章顺序调整功能.只能罢了~~ -----------------以下是我作的关于ROS Service的总结------------------- 关于ROS Service的总结: 什么是ROS Service: 在wiki/tutorials/1.7 中,…
跑数据集或者使用不同传感器时,难免会遇到需要修改topic名称的时候,此时可以有两种做法. 一.直接修改源码.如果有launch文件,则修改launch文件对应的topic 二.直接进行remap操作 一个是利用rosbag节点运行的时候, 将发布的主题进行修改. 另一个则是这roslaunch文件中进行修改. 下面利用两种不同的方式将/image_raw‘映射到/camera/image_raw. 1. rosbag remap rosbag play ros.bag /image_raw:=…
想要在ROS系统中对我们的机器人进行仿真,需要使用gazebo. gazebo是一种适用于复杂室内多机器人和室外环境的仿真环境.它能够在三维环境中对多个机器人.传感器及物体进行仿真,产生实际传感器反馈和物体之间的物理响应. 在本文中,你会学习如何使用之前创建的机器人模型,如何加载一个激光雷达传感器和摄像头,并使机器人模型像真的机器人一样移动. 一.在 gazebo 中使用 URDF 3D 模型 在 gazebo 工作前,我们需要安装ROS功能包与 gazebo 交互: $ sudo apt-ge…
2019-12-06 15:42:39 先暂时做个资料保存 要同时用两个红外相机,但是没有做硬件上的 时间戳同步,就是笔记本上同时插着两个相机. 两个topic发布各自相机的图像,然后要有个节点同时订阅两个topic并把两张图像拼接成一张图像再做处理. 直接搜 ros sub two topic结果都是2个callback函数,各自处理各自的topic,和想要的不太一样. 自己融合两个线程中时间戳不那么严格一致的数据太麻烦了 想要的是两张图片的时间戳如果相近,就当做是在同一时刻采集的,然后合成一…