
ROS
文章平均质量分 79
土豆西瓜大芝麻
这个作者很懒,什么都没留下…
展开
-
ROS传感器时间同步
多传感器融合过程中由于传感器之间的采集频率不同,导致无法保证传感器数据同步。这里以激光雷达为核心传感器,每次收到一次雷达数据,便以当前雷达数据采集时刻作为要插入的时间点,该时刻另一传感器IMU的数据通过插值获得。这里同样可以参考VINS里相机和IMU时间同步的函数代码getMeasurements()。主程序在front_end_flow.cpp文件中的ReadData()函数添加。ReadData()从ros缓冲区中传感器数据取出来,并放进XXX_data_buff_容器中传感器同步,另外三种转载 2021-06-01 17:30:05 · 2307 阅读 · 0 评论 -
ROS自带的多传感器同步
1、解决的问题多传感器数据融合的时候,由于各个传感器采集数据的频率的不同,例如odom 50Hz、Imu 100Hz、camera 25Hz,需要将传感器数据进行时间同步后才能进行融合。融合的原理:分别订阅不同的需要融合的传感器的主题,通过TimeSynchronizer 统一接收多个主题,并产生一个同步结果的回调函数,在回调函数里处理同步时间后的数据。注意只有多个主题都有数据的时候才可以触发回调函数。如果其中一个主题的发布节点崩溃了,则整个回调函数永远无法触发回调。当多个主题频率一致的时候转载 2021-04-22 11:15:05 · 1380 阅读 · 0 评论 -
ROS中的message_filter中的时间同步
#ifndef MESSAGE_FILTERS_TIME_SYNCHRONIZER_H#define MESSAGE_FILTERS_TIME_SYNCHRONIZER_H#include <memory>#include "message_filters/message_event.h"#include "message_filters/synchronizer.h"#include "message_filters/sync_policies/exact_time.h"n.原创 2021-01-19 09:12:10 · 2950 阅读 · 0 评论 -
ROS进行多传感器融合时的时间对齐和时间同步解决方法
文章目录1.引言 2.方法一:利用全局变量TimeSynchronizer 3. CMakeLists.txt 和 packages.xml添加ROS包 4.方法二: 利用类成员message_filters::Synchronizer1.引言本小节针对在ROS节点中需要订阅两个及两个以上的话题时,需要保持对这两个话题数据的同步,且需要同时接收数据一起处理然后当做参数传入到另一个函数中。研究背景:realsenseT265 和 realsense D435 都有IMU数据,但是这两个.转载 2021-01-12 17:26:03 · 5176 阅读 · 2 评论 -
多源传感器融合时的时间对齐或者时间同步问题
本文章配套源代码地址:https://github.com/Little-Potato-1990/localization_in_auto_driving测试数据:https://pan.baidu.com/s/1TyXbifoTHubu3zt4jZ90Wg提取码: n9ys本篇文章对应的代码Tag为 6.0代码在后续可能会有调整,如和文章有出入,以实际代码为准========================================一、概述只要牵扯到多个传感器,那么时间同步就转载 2021-01-12 14:37:36 · 17113 阅读 · 7 评论 -
LevelDB的SSTable数据存储格式--可以与rosbag对比
SSTable文件是memtable 数据到一定阈值写入文件形成的,由于内存容量总是有限的,将一定量数据写入磁盘可以存放更多数据,所以leveldb相比redis能存放更多数据。既然数据持久化到磁盘,那么还有必然涉及到从磁盘中查询数据,从磁盘中查询数据与从内存中查询数据的效率是不一样的,所以SSTable 数据组织方式必然与众不同,因为必须要提高查询效率,不能给一个key就去遍历所有SSTable...原创 2020-04-07 14:51:58 · 579 阅读 · 0 评论 -
ROS中的消息到底长什么样子
ROS/Connection HeaderThe ROS connection header contains important metadata about a connection being established, including typing information and routing information. How it is exchanged depends on ...原创 2020-03-10 23:07:35 · 493 阅读 · 0 评论 -
ROS中的map
map与costmap都是以nav_msgs::OccupancyGrid类型发布其topic。其中整张地图的障碍物信息存放在data数据成员中,data是一个int8类型的vector向量,即一维数组。假设一张pgm的map地图,宽:width,高:height,单位为像素,分辨路为resolution,左下角像素点在世界坐标系下的位置为:(ox,oy),单位米,那么世界坐标系下一点(x,y)单...转载 2020-02-21 01:50:58 · 1640 阅读 · 0 评论 -
MangoDB进行地理索引的图解
图解 MongoDB 地理位置索引的实现原理地理位置索引支持是MongoDB的一大亮点,这也是全球最流行的LBS服务foursquare 选择MongoDB的原因之一。我们知道,通常的数据库索引结构是B+ Tree,如何将地理位置转化为可建立B+Tree的形式,下文将为你描述。首先假设我们将需要索引的整个地图分成16×16的方格,如下图(左下角为坐标0,0 右上角为坐标16,16):...原创 2020-02-14 16:51:13 · 262 阅读 · 0 评论 -
GeoJson用于表示地理信息数据
这几天一直在讨论关于一体化态势图的架构。首先大家明确了基于层次化架构,采用大量功能图层来表示承载不同类型的数据。我要解决的大量的地理信息数据的建模。目前底层的地理信息数据库的处理系统arcGIS等,可以高效管理地理信息数据库中的数据,提供层次化视图,也可以帮助用户轻松筛选所需要的数据,并提供相应的关联分析能力。刚开始,我准备借鉴arcGIS的思想,将地理信息数据分层显示,每个图层都是功能单一的...原创 2020-02-14 11:22:49 · 1966 阅读 · 1 评论 -
使用sqlite源码生成json扩展动态库的步骤
1. 使用dpkg查看本机sqlite3的安装版本(ubuntu16.04 64位默认安装的sqlite3版本是3.11.0-1ubuntu1.2 )2. 从ubuntu的源下载对应的sqlite3的源码包,下载地址:https://launchpad.net/ubuntu/+source/sqlite33. 解压缩下载的源码包,如sqlite3_3.11.0.orig.tar.xz4....原创 2020-02-11 21:51:21 · 430 阅读 · 0 评论 -
ROS导航包中的costmap的一些参数理解
costmap是一个package,用在move_base的global_map和local_map当中。用于将laser扫面数据或者点云数据转化成一个2d的网格地图1.总览简单来说,地图中分成几部分灰色部分:安全区域,robot运动在该区域不会发生碰撞红色部分:危险区域,robot的footprint覆盖到该色网格就肯定会发生碰撞蓝色部分:风险区域,robot在该区域有可能发...转载 2020-02-06 11:29:32 · 4756 阅读 · 0 评论 -
ROS API的测试用rostest
1.介绍rostest工具是ROS提供的测试工具,该工具基于gtest框架,其实质是roslaunch工具的功能扩展,允许跨越多节点进行测试。rostest测试时文件格式可以是.test或.launch,且文件内包含<test>标签。注意:roslaunch工具可以运行扩展名为.test的文件但是不会执行<test>标签内的代码(即测试node不会启动)。rostest...原创 2019-11-12 10:42:04 · 3163 阅读 · 4 评论 -
ROS的CMakeList文件详解
这篇文章是有关ROS中catkin CMakeLists.txt使用的内容。CMakeList.txt文件是CMake编译系统编译软件包过程的输入文件。任何CMake兼容包都包含一个或多个CMakeLists.txt文件,这些文件描述了如何编译代码以及将其安装到哪里。将CMakeLists.txt文件应用于一个catkin项目时,它就作为一个标准的附带一些限制条件的vanilla CMakeL...转载 2019-11-04 10:51:42 · 12902 阅读 · 1 评论 -
ubuntu 下使用doxygen为C/C++工程生成pdf版的API
1. 安装doxygen相关软件sudo apt-get install doxygensudo apt-get install graphviz来安装相应的工具。 安装完成后,先参考IBM的 学习用 doxygen 生成源码文档。 现在,我们开始让Doxygen为我们工作了。2.生成配置文件Doxyfile在shell中运行doxygen -g,在当前目录产生D...原创 2019-10-29 21:59:59 · 1832 阅读 · 0 评论 -
ROS支持的基本数据类型
原创 2019-10-25 16:44:50 · 4061 阅读 · 1 评论 -
在Qt-Creator中使用搜狗输入中文的最简单解决方法(不需要编译安装)
方法:移动库文件--->libfcitxplatforminputcontextplugin.so 到Qt的安装目录lib/Qt/plugins/platforminputcontexts/例如:sudo cp/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcont...原创 2019-10-24 16:25:06 · 1194 阅读 · 1 评论 -
基于QT-Creator搭建ROS开发、编译、测试和运行环境
ROS与C++入门教程-搭建开发环境(QT+ros_qtc_plugin)说明:介绍如何搭建QT环境来开发ROS包 介绍QT安装 介绍QT编译和调试ROS包测试环境:系统版本:Ubuntu14.04 ROS版本:indigo QT版本:5.8.0QtCreator安装安装前准备,安装相应的GNU开发工具集和OpenGL开发库, 请注意安装软件都需要root权限,并且要联...转载 2019-10-24 15:25:05 · 3816 阅读 · 0 评论 -
Ubuntu 安装VS code
有时候在ubuntu上开发C++或ROS 等项目的时候,需要一个合适的IDE,除了惯用的qt,还有一个VS code,就是visual studio code了。安装过程如下: sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-makesudo apt-get updatesudo apt-get install ubuntu-m...原创 2019-09-28 23:06:06 · 238 阅读 · 0 评论 -
ubuntu16.04下安装1.9版本Fast-RTPS
1. 下载1.9源码(git下载,自动安装第三方库):git clone https://github.com/eProsima/Fast-RTPS.git --branch v1.9.02. 安装foonathan_memory:进入Fast-RTPS/thirdparty目录: $ git clone https://github.com/foonathan/me...转载 2019-09-26 08:47:28 · 1964 阅读 · 2 评论 -
Sqlite3的JSON1扩展具体使用案例--基于C语言的C-API
在ROS系统中,因为消息种类太多,要对这些消息进行统一存储并且允许检索,就面临一个问题:如何存储,用什么存储,如何检索?鉴于我们第一阶段使用了统一数据模型对各种消息进行了统一封装:将所有消息共有的部分提取出来生成各个字段,而将差异部分作为blob进行存储。这个模型存在的一个重要问题就是不能对差异部分进行检索。为了解决或者部分解决上述问题,我们进行了调研,发现sqlite3存在json扩展,...原创 2019-09-06 15:11:50 · 2955 阅读 · 2 评论 -
在TX2上(arm架构)安装FastDB
前面已经介绍过Fast DB,并且在x86_64环境下使用。由于工作的需要,现在要在tx2开发板上使用fastdb。由于tx2不是x86架构,所以直接安装是不行的。执行make命令后,报错:本来想着在PC上安装配置交叉编译环境,然后在PC上编译arm架构可用的libfastdb.so。尝试后发现比较困难。于是请教同学。同学看后发现make的输出还是比较人性化的,输出总共3段,第一段是编译过...原创 2019-08-23 15:59:16 · 862 阅读 · 0 评论 -
ROS节点的初始化及退出详解
很多ROS新手编写节点的时候都不知道要怎么才能Ctrl+c退出,根本都没有注意到一个节点的生命流程,看完你就懂了~~先上程序:#include "ros/ros.h"#include <signal.h> void MySigintHandler(int sig){ //这里主要进行退出前的数据保存、内存清理、告知其他节点等工作 ROS_INFO("shutti...转载 2019-08-21 16:08:10 · 5017 阅读 · 0 评论 -
FastDb client-server模式
就个人理解而言,fastdb client-server模式,只是在client和server之间添加了一个socket通信,其实操作都是在server端完成的。但是client-server也有很多好处,其中一个就是可以同一个进程可以同时运用fastdb的无盘模式,和磁盘模式。当然其中一个模式只是client(比如这个进程开启时需要用无盘模式,将数据全部存入内存,以方便读取,但是记录日志...转载 2019-08-02 14:53:07 · 325 阅读 · 0 评论 -
Fastdb安装与使用
环境: CentOS 6.4 32位注意:64位运行有问题,运行最后会报 segmentation fault,所以最后采用32位操作系统。1.1 安装(1) 安装需要的依赖yum install gcc make gcc-c++ wget(2) 下载源码wget http://www.garret.ru/fastdb-3.76.tar.gz(3) 解压tar -xv...转载 2019-07-31 16:51:10 · 2139 阅读 · 1 评论 -
fastdb相关备忘
选择fastdb主要有两个原因,1.内存数据库,体量小,速度快2.其数据结构与交易系统非常类似(很大可能性是交易系统fld那套东西借鉴了fastdb,猜的:)部署&安装下载http://www.garret.ru/fastdb.htmlok@x1:~/下载$ ll fastdb-3.76.tar.gz-rw-rw-r--1ok ok32876287月10...转载 2019-07-30 14:46:57 · 493 阅读 · 0 评论 -
ROS学习--轻松使用tf
一. TF能做什么? 一个机器人系统通常有很多三维的参考系,而且会随着时间的推移发生变化,例如全局参考系(world frame),机器人中心参考系(base frame),机械夹参考系(gripper frame),机器人头参考系(head frame)等等。tf可以以时间为轴,跟踪这些参考系(默认是10秒之内的),并且允许用户提出如下的申请:五秒钟之前,机器人头参考系相对于...转载 2019-06-09 14:28:27 · 909 阅读 · 0 评论 -
ROS学习入门大纲
一ROS的安装二ROS的文件系统三创建一个工作空间四创建一个ROS包五在工作空间中构建和使用catkin包 1. cmake基础 2. catkin_make 3. ROS开发IDE六理解ROS的节点(NODE)七ROS的话题八ROS的服务九理解ROS的参数十rqt_console和roslaunch 1....原创 2019-06-09 12:26:21 · 623 阅读 · 0 评论 -
使用C++编写一个简单的ROS Publisher
节点是一个可执行程序,它连接到了ROS的网络系统中。我们将会创建一个发布者,也就是说话者节点,它将会持续的广播一个信息。改变目录到之前所建立的那个包下:cd ~/catkin_ws/src/beginner_tutorials在beginner_tutorials包下面建立一个src文件夹:mkdir -p ~/catkin_ws/src/beginner_...原创 2019-06-09 11:36:32 · 794 阅读 · 0 评论 -
ROS--Launch文件
ROS采用rosrun命令可以启动一个节点,如果需要同时启动节点管理器(master)和多个节点,就需要采用launch文件来配置。launch文件是一种特殊的XML格式文件,通常以.launch作为文件后缀。每个launch文件都必须要包含一个根元素。roslaunch的使用方法为:$ roslaunch pkg-name launch-file-name或$ roslaunch...转载 2019-06-09 08:38:24 · 389 阅读 · 0 评论 -
ROS中订阅(Subscribe)最新消息以及对消息队列的浅谈
机器人应用中难免会遇到运算起来很费时间的操作,比如图像的特征提取、点云的匹配等等。有时候,不可避免地,我们需要在ROS的Subscriber的Callback回调函数中进行这些费时的操作。Subscriber所订阅的消息的发布频率可能是很高的,而这些操作的运算速度肯定达不到消息发布的速度。所以,如果我们要是没有取舍的对于每个消息都调用一次回调函数,那么势必会导致计算越来越不实时,很有可能当下在处理...转载 2019-06-04 15:32:51 · 3510 阅读 · 5 评论 -
再论“卡尔曼滤波”
考虑轨道上的一个小车,无外力作用,它在时刻t的状态向量只与相关:(状态向量就是描述它的t=0时刻所有状态的向量,比如:[速度大小5m/s, 速度方向右, 位置坐标0],反正有了这个向量就可以完全预测t=1时刻小车的状态)那么根据t=0时刻的初值,理论上我们可以求出它任意时刻的状态。当然,实际情况不会这么美好。这个递推函数可能会受到各种不确定因素的影响(内在的外在的都算,比如刮风...转载 2019-05-15 22:00:11 · 182 阅读 · 0 评论 -
通俗易懂“卡尔曼滤波”
前言相信所有学习卡尔曼滤波的同学首先接触的都是状态方程和观测方程,学过控制系统的同学可能不陌生,否则,先被那两个看起来好深奥的公式给吓跑了,关键是还不知道他们究竟是干什么的,什么是状态,什么是观测。。。。。。如果再看到后面的一大串递归推导增益,实在很晕很晕,更糟糕的是还没整明白的时候就已经知道卡尔曼滤波其实已经不够使了,需要extended kalmanfilter 和particle fil...转载 2019-05-15 17:02:42 · 918 阅读 · 0 评论 -
沿任意轴旋转
前言常用的几何变换中旋转是较为复杂的一种,最近看《Physically Based Rendering, Second Edition: From Theory To Implementation》一书涉及绕任意轴旋转的实现,也给出了大体思路,但具体的推导过程及最后的旋转矩阵并未直接地给出,故根据参考Animated CGEM: Rotation About an Arbitrary Axis...转载 2019-05-15 15:27:01 · 1130 阅读 · 0 评论 -
旋转矩阵的推导
转载 2019-05-15 14:39:51 · 420 阅读 · 0 评论 -
Catkin_make执行过程
这是一个比较复杂的问题,但是有时候会有莫名其妙的编译错误,在找错误的过程中会非常需要了解这个过程。1. 模板文件首先说一下.in文件。在catkin的目录中有许多.in文件 ,这些都是模板文件,以/opt/ros/kinetic/share/catkin/cmake/templates/env.sh.in为例下面是源文件#!/usr/bin/env sh# genera...转载 2019-03-18 16:05:13 · 6050 阅读 · 0 评论 -
在dockerfile里执行catkin_make
这一段,我们在做项目的自动化运维的事情。同事们反映不知道怎么在docker里面执行catkin_make命令。在制作镜像的过程中,如果能执行catkin_make,则打包好的镜像,就可以直接使用了。否则,对于一个打包好的镜像,还得再startup里面执行catkin_make,这样造成的问题有2个:第一,浪费很多的时间,第二,可能会造成卡死(我们的gazebo开机启动后一直等待模拟无人机的dock...原创 2019-03-15 09:17:30 · 1440 阅读 · 1 评论 -
docker通过网桥跨主机连接
使用网桥实现跨主机容器连接:在同一个docker的主机中docker容器使用默认的docker0网桥来进行网络的通信,如果将连接容器的网桥也桥接到docker主机的网卡上,并且将网桥分配的ip地址与docker主机分配的ip地址设置为同一ip段,就相当于将容器与docker主机的网咯连接在了一起,就实现了跨主机的容器间的通信。在不同的docker主机中分别创建网桥,并使用这个网桥来连接do...原创 2018-11-19 14:52:29 · 2125 阅读 · 0 评论 -
ROS课程讲义--2 Catkin工作空间和Package
2.2 Catkin工作空间Catkin工作空间是创建、修改、编译catkin软件包的目录。catkin的工作空间,直观的形容就是一个仓库,里面装载着ROS的各种项目工程,便于系统组织管理调用。在可视化图形界面里是一个文件夹。我们自己写的ROS代码通常就放在工作空间中,本节就来介绍catkin工作空间的结构。2.2.1 初始化catkin工作空间介绍完catkin编译系统,我们来建立一...转载 2018-11-02 08:38:14 · 1865 阅读 · 0 评论 -
ROS课程讲义--第一章 ROS简介--单元测试一
单元测试一1.[单选](2分)机器人操作系统的全称是?A.React Operating SystemB.Router Operating SytstemC.Request of ServiceD.Robot Operating System确认查看解释显示正确答案2.[单选](2分)ROS Kinetic最佳适配的Linux版本是?A.CentOS 7B...转载 2018-11-01 17:32:39 · 1314 阅读 · 1 评论