![](https://img-blog.csdnimg.cn/20200215194212320.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
ROS 机器人技术
ROS 从入门到进阶
登龙
这个作者很懒,什么都没留下…
展开
-
ROS 八叉树地图构建 - 给 octomap_server 增加半径滤波器!
为了在每帧点云中滤除噪声点,选择了半径滤波器,也用高斯滤波器测试过,但是没有半径效果好,这里记录下在 octomap_server 中增加半径滤波器的步骤,并在 launch 中配置滤波器参数。一、半径滤波器基本原理放一张汇报用的 PPT 截图:原理很简单就是判断一个点云周围(半径 R)有没有足够多(K)的邻居点,如果没有就删除这个点,否则就保留。二、基本用法我一般学习技术喜欢到官网看最原始的教程:Removing outliers using a Conditional or RadiusOu原创 2020-08-09 14:18:51 · 1632 阅读 · 2 评论 -
ROS 八叉树地图构建 - 使用 octomap_server 建图过程总结!
构建语义地图时,最开始用的是 octomap_server,后面换成了 semantic_slam: octomap_generator,不过还是整理下之前的学习笔记。一、增量构建八叉树地图步骤为了能够让 octomap_server 建图包实现增量式的地图构建,需要以下 2 个步骤:1.1 配置 launch 启动参数这 3 个参数是建图必备:地图分辨率 resolution:用来初始化地图对象全局坐标系 frame_id:构建的全局地图的坐标系输入点云话题 /cloud_in:作为建图的原创 2020-08-09 09:14:53 · 7252 阅读 · 6 评论 -
ROS 八叉树地图构建 - 安装 octomap 和 octomap_server 建图包!
项目要用到八叉树库 Octomap 来构建地图,这里记录下安装、可视化,并启用带颜色的 Octomap 的过程。一、Apt 安装 Octomap 库如果你不需要修改源码,可以直接安装编译好的 octomap 库,记得把 ROS 版本「kinetic」替换成你用的:sudo apt-get install ros-kinetic-octomap*上面这一行命令等价于安装以下的 octomap 组件:sudo apt-get install ros-kinetic-octomap ros-kineti原创 2020-08-09 09:07:51 · 5635 阅读 · 7 评论 -
ROS 机器人技术 - ROS 与 PCL 的点云类型转换
<p>在图像和点云的融合节点中,做了一个点云格式的转换:</p><ul><li>ROS 点云 sensor_msgs::PointCloud2 -> PCL 第一代点云 pcl::Point原创 2020-07-27 22:27:12 · 604 阅读 · 0 评论 -
Ubuntu 16.04 安装 NVIDIA 显卡驱动!
<p>新买的电脑装的的英伟达独立显卡,虽然 Ubuntu 上有开源 Nvida 驱动可以用,但是界面总是卡卡的,所以安装了下官方的驱动,瞬间丝滑无比,以下是我的方法,简单粗暴。</p><h3 id=原创 2020-07-27 22:15:51 · 416 阅读 · 0 评论 -
Ubuntu Install kitti2bag
项目需要测试建图效果,但是目前我们自己的语义分割训练的效果不是太好,外参矩阵标定的精度也不高,所以打算使用 KITTI 数据集作为测试,为此需要将 KITTI 数据集转为 bag 包方便回放,这里要安装一个 kitti2bag 的工具,记录下安装过程,并不是一步到位。1. 更新 pip 安装 kitti2bag安装前提示我更新 pip,我用的 Python2.7 使用的是 pip:pip install --upgrade pip安装 kitti2bag:pip install kitti2bag原创 2020-07-27 22:36:45 · 1613 阅读 · 1 评论 -
ROS 机器人技术 - 解决不同工作空间存在相同功能包的问题
昨天把一个工作空间的 lidar_camera_fusion 包拷贝到另外一个工作空间编译,但是名字没有改变,导致 source后系统存在 2 个 lidar_camera_fusion 包,使用的时候总是错误地启动另外一个。解决方式:把其中一个包的配置信息改变即可,要改变的文件有CMakeLists.txtpackage.xml在 CMakeLists.txt 中更改项目名和输出的可执行文件名:project(更换项目名称)add_executable(更换可执行文件名称 src/l原创 2020-07-27 22:36:08 · 948 阅读 · 0 评论 -
ROS 机器人技术 - 编写一个 launch 启动多个节点
1. 增加 source 到 bashrc 中为了不用在小车的 Ubuntu 上每次都 source 自己的工作空间,我把自己的 workspace 加到 ~/.bashrc 文件末尾:然后重启 shell,之后就会自动 source 我得工作空间,可以使用 roscd 直接进入指定包中:roscd pkg_name2. 编写启动 launch每次调试小车,都要分别启动很多节点,比如融合、建图、Loam、Rviz 等,所以我把这些节点全部配置在一个 launch 中启动,直接一行命令启动,这样调原创 2020-07-27 22:35:28 · 831 阅读 · 0 评论 -
ROS 机器人技术 - 添加一个 TF 帧
在实际的机器人中往往有很多个传感器,比如我们组目前用的小车上就有相机,雷达,IMU 等,为了能够在 TF 系统中找到传感器之间的转换,就需要把每个传感器的坐标系加到系统的 TF 树中,方法很简单,下面一起来学习下。一、TF 树的注意事项在实际使用和调试 TF 的时候一定要时刻记住:TF 树中的一个节点可以有多个子节点,但是只能有一个父节点,并且 TF 树中不能出现回环!一个典型的 TF 树如下:这个 TF 树中有 3 个坐标系:world:世界坐标系turtle1:乌龟 1 的坐标系,父节点原创 2020-07-27 22:34:25 · 280 阅读 · 0 评论 -
ROS 机器人技术 - 广播与接收 TF 坐标
上次我们学习了 TF 的基本概念和如何发布静态的 TF 坐标:ROS 机器人技术 - TF 坐标系统基本概念ROS 机器人技术 - 静态 TF 坐标帧这次来总结下如何发布一个自定义的 TF 坐标转换,并监听这个变换。一、编写 TF 广播者进入上次创建的 learning_tf2 包中:roscd learning_tf2在 src 下新建一个 turtle_tf2_broadcaster.cpp 文件,代码如下:#include <ros/ros.h>// 存储要发布的坐原创 2020-07-27 22:31:01 · 599 阅读 · 0 评论 -
ROS 机器人技术 - 静态 TF 坐标帧
上次总结了 ROS 机器人技术 - TF 坐标系统基本概念,这次学习下如何发布静态坐标转换,静态 TF 官方教程在这里。一、我在项目中应用 TF 的方法先说下这个静态坐标转换在我项目中的应用,我在建图的时候需要一个 rslidar -> world 的 TF 变换,但是系统 TF 树中只有师兄 lego_loam 的 base_link -> world的转换,所以为了获取 rslidar -> world,我用 Kinetic 提供的工具手动发布了一个静态的 TF:# 欧拉角ro原创 2020-07-08 23:52:34 · 1011 阅读 · 0 评论 -
ROS 机器人技术 - rosbag 详细使用教程!
在 ROS 系统中,可以使用 bag 文件来保存和恢复系统的运行状态,比如录制雷达和相机话题的 bag 包,然后回放用来进行联合外参标定。这里记录下我学习官方的 rosbag 教程的笔记:ROS rosbag我常用的几个操作虽然命令很多,但是我目前在工作中常用的命令就如下几个:1. 录包录制所有话题:rosbag record -a录制指定话题,设置 bag 包名:rosbag record -O bag_name.bag /topic1_name /topic2_name /xxx有时候原创 2020-06-28 23:49:19 · 3984 阅读 · 0 评论 -
ROS 机器人技术 - 解决 ROS_INFO 不能正确输出 string 的问题!
一、输出「??」项目调试一个节点,打印 ROS 信息时发现设置的节点名称都是问号:ROS_INFO("[%s]: camera_extrinsic_mat", kNodeName);看了下代码发现是自己把节点名称设置为 const,但是没有正确初始化 const 变量,导致输出了「??」,C++ 语法都忘记了,太菜了,以下是第一种初始化 const 的方法:// 1. 先在类中定义private: const std::string kNodeName;// 2.原创 2020-06-07 14:16:14 · 2892 阅读 · 0 评论 -
Camera-LIDAR 联合标定方法总结
项目需要融合雷达和相机,所以要做联合标定,记录下收集的标定方法。一、总体标定步骤标定就是找到雷达到相机的空间转换关系,在不同的坐标系之间转换需要旋转矩阵 R 和平移矩阵 T,为后续的雷达和相机数据融合做准备:Camera-LIDAR 联合标定分为 2 步:相机内参标定雷达相机外参标定相机内参标定方法ROS Camera Calibration ToolsSLAM之相机标...原创 2020-03-21 18:49:28 · 3382 阅读 · 1 评论 -
ROS 初级 - 解析 roslaunch 文件
1. roslaunch 命令roslaunch 命令允许我们一次启动 launch 文件中定义的多个 ROS 节点,启动参数等在启动文件(launch 文件)中配置,并且如果系统之前没有启动 roscore,则 roslaunch 会自动启动它。roslaunch 的命令行用法如下:roslaunch [package] [filename.launch]例如:roslaunch b...原创 2020-02-15 19:46:49 · 650 阅读 · 0 评论 -
ROS 初级 - 服务和参数
1、ROS ServicesROS 服务是 ROS 提供的一种节点之间相互通信的方式,一个服务允许节点发送一个请求 request 或者接收一个响应 response。2、rosservicerosservice 命令可以对服务进行操作,比如调用服务,显示服务类型等,如下:rosservice list print information about active servicesros...原创 2019-11-30 23:06:25 · 287 阅读 · 0 评论 -
ROS 初级 - 文件系统工具
1、准备这篇文章介绍 ROS 文件系统相关工具的使用,需要提前安装个 pkg:sudo apt-get install ros-kinetic-ros-tutorials2、ROS 文件系统基本概念Package:ros pkg 是 ros 中代码的基本组织结构,每个包中都包含库文件,可执行文件,脚本和其他文件。Manifests(package.xml):这个文件定义了 ros 包...原创 2019-11-19 10:42:07 · 174 阅读 · 0 评论 -
Ubuntu 16.04 安装 PCL 库并测试
最近在做点云和图像融合方面的算法,需要使用一个 PCL(Point Cloud Lib)点云库,记录下安装过程。PCL 官网提供了编译好的包,但是网络不好,没有安装成功,所以就直接从源码编译了,一路顺利,没有错误。1、配置依赖包sudo apt-get updatesudo apt-get install git build-essential linux-libc-dev cmake c...原创 2019-11-16 22:58:44 · 447 阅读 · 0 评论 -
ROS 初级 - 安装和配置 ROS 环境
这个 ROS 系列教程主要来自 ROS Wiki,加上自己学习过程中踩过的一些坑和个人理解。1、安装 ROS在配置 ROS 环境前要完全安装 ROS,参看之前的安装 ROS 的文章:Ubuntu 16.04 安装 Kinetic。2、管理 ROS 环境变量学习 ROS 环境变量的目的是为了更好的管理 ROS 项目,不同版本的 ROS 安装完都会提供一个 setup.*sh 文件,当我们使用...原创 2019-11-14 21:53:57 · 303 阅读 · 1 评论 -
ROS 基础概念 - Introduction
1、什么是 ROS ?ROS(Robot Operating System)是一个开源的机器人操作系统,提供比如:硬件抽象,底层设备控制,进程间消息通信以及包管理等功能,ROS 还提供一些用于编写,编译,运行代码的工具和库文件。就像开发上层手机应用的 Android 框架概念类似,你也可以把 ROS 理解为「机器人框架」,使用这个框架可以方便我们学习机器人技术,不用重复造轮子。业界类似于 R...原创 2019-08-13 19:18:16 · 286 阅读 · 0 评论