ROS学习笔记
bai君
这个作者很懒,什么都没留下…
展开
-
ROS笔记(十八)Karto Hector
Karto1. 计算图Karto SLAM和Gmapping SLAM在工作方式上类似:输入的Topic同样是/tf和/scan,其中/tf里有odom_frame和laser_frame,laser_frame和base_frame,与GmappingSLAM的完全一样。唯一不同的是输出:slam_katro的输出比slam_gmapping的车、输出少了一个位子位姿估计的分散程度。2. 服务与Gmapping相同,提供/dynamic_map服务3. 参数test/param/katro原创 2020-09-10 15:07:35 · 695 阅读 · 0 评论 -
CMake实践(二)
让 HelloWorld 看起来更像一个工程让前面的 Hello World 更像一个工程,我们需要做的是:添加一个子目录src,放置工程源代码添加一个子目录doc,放置这个工程的文档 hello.txt在工程目录添加一个COPYRIGHT,README工程目录添加一个runhello.sh脚本,用来调用 hello 二进制将构建后的目标文件放入构建目录的bin子目录安装这些文件: 将 hello 二进制与 runhello.sh 安装至/usr/bin,将 doc 目录的内容以及 COPY原创 2020-08-08 18:31:59 · 454 阅读 · 0 评论 -
CMake实践(一) CMake介绍
CMake介绍cmake 是 kitware 公司以及一些开源开发者在开发几个工具套件(VTK)的过程中衍生品,最终形成体系,成为一个独立的开放源代码项目。项目的诞生时间是 2001 年。其官方网站是 www.cmake.org,可以通过访问官方网站获得更多关于 cmake 的信息。cmake的流行其实要归功于 KDE4 的开发(似乎跟当年的 svn 一样,KDE 将代码仓库从 CVS 迁移到SVN,同时证明了 SVN 管理大型项目的可用性),在 KDE 开发者使用了近 10 年 autotools之后,原创 2020-08-08 15:50:22 · 1718 阅读 · 0 评论 -
ROS学习笔记(十七) SLAM介绍(一)
SLAM介绍(一)地图ROS中的地图就是一张普通的灰度图像,通常为pgm格式,黑色像素表示障碍物,白色像素表示可行区域,灰色是未探索的区域。SLAM建图中,可以在RViz看到一张地图北极爱呢里起来的过程,类似于一块块拼图被拼接成一张完整的地图。这张地图对于我们定位、路径规划都是不可缺少的信息。地图在ROS中是以Topic的形式维护和呈现的,这个Topic就是/map,消息类型是nav_msgs/OccupancuGrid。锁存/map中实际储存的是一张图片,为了减少开销,这个Topic往往采用锁原创 2020-08-08 11:58:52 · 2411 阅读 · 1 评论 -
ROS学习笔记(十六) 统一机器人描述格式URDF
统一机器人描述格式URDFURDF(Unified Robot DScription Fornat)机器人统一描述格式(XML格式)。语法规范:参考链接:http://wiki.ros.org/urdf/XMLURDF组件,是由不同的功能包和组件组成:urdf_paser_plugin是URDF基础的插件,衍生出了urdfdom(面向URDF文件)collar_parser(面向相互文件)(\qquad其中urdf_parser和urder_interface已经在hydro之后的版本中去除了)。原创 2020-08-07 10:17:33 · 1004 阅读 · 0 评论 -
ROS学习笔记(十五)TF介绍(三)
TF介绍(三)tf in pythontf中有C++接口,也有Python接口,tf在Python中的具体实现相对比较简单。数据类型:TF的相关数据类型,向量、点、四元数。矩阵的=都可以表示成类似于数组的形式(Tuple、List、Numpy Array表示)。如:t = (1.0,1.5,1.0) #平移q = [1,0,0,0] #四元数m = numpy.identity(3) #旋转矩阵t平移数据用Tuple表示的,也可以用List表示(t = [1.0,1.5,1.0]),也能原创 2020-08-06 11:15:20 · 3058 阅读 · 2 评论 -
ROS学习笔记(十四) TF介绍(二)
TF介绍(二)tf in c++C++提供的TF数据类型:名称数据类型向量tf::Vector3点tf::Point四元数tf::Quaternion3*3矩阵(旋转矩阵)tf::Matrix3x3位姿tf::pose变换tf::Transform带时间戳的以上类型tf::Stamped带时间戳的变换tf::StampedTransform注意tf::StampedTransform 和 geometry_msgs/T原创 2020-08-05 16:17:08 · 3736 阅读 · 0 评论 -
ROS学习笔记(十三) TF介绍(一)
TF介绍(一)TF:机器人不停部位之间的坐标转换。坐标转换包括位置和姿态两方面,ROS中的tf是一个让用户随时记录多个坐标系的软件包。tf保持缓存的树形结构中的坐标系之间的关系,并允许用户在任何期望的时间点在任何两个坐标系之间转换点、矢量等。tf可以被当做是一种标准规范,定义了坐标转换的数据格式和数据结构。tf本质是树状的数据结构(通常称之为tf tree),可以看成是一个topic:/tf,message保存的是tf tree的数据结构格式,维护了整个机器人(甚至是地图)的坐标转换关系。也可以看做pa原创 2020-08-04 10:34:14 · 4187 阅读 · 0 评论 -
ROS学习笔记(十二) roscpp介绍(二)
roscpp介绍(一)service利用Service通信的节点:创建一个节点,发布模拟的gps信息,另一个接收和计算距离原点的距离。7.3.1 srv文件建立Greeting.srv的服务文件:test/string name #短横线上边部分是服务请求的数据int32 age— #短横线下面是服务回传的内容string feedback然后修改CMakeLists.txt文件。ROS的catkin编译系统会将你自定义的msg、srv(甚至还有action)文件自动编译构建,生成对应的C原创 2020-08-03 22:11:40 · 809 阅读 · 0 评论 -
ROS学习笔记(十一) rospy介绍(一)
rospy介绍(一)rospy是Python版本的ROS客户端库,提供了Python程序需要的接口(rospy就是一个Python模块),位于/opt/ros/kineetic/lib/python2.7/dist-packages/rospy。rospy和roscpprospy功能与roscpp相似,都有关于node、topic、service、param、time相关操作,也有一些区别:rospy没有NodeHandle。创建publisher、subscriber等操作被直接封装成了ros原创 2020-08-03 16:14:15 · 27640 阅读 · 5 评论 -
ROS学习笔记(十) roscpp介绍(四)
roscpp介绍(三)时钟ROS中计算机器人移动距离、设定程序的等待时间、设定计时器等,都需要时钟。roscpp中有两种表示时间的方法:一种是时刻(ros::Time),一种是时长(ros::Duration).TIme和Duration都有相同的表示方法:...//Time和Duration都由秒和纳秒组成int32 secint32 nsec...要使用TIme和Duration,需要#include<ros/time.h>和#include<ros/duratio原创 2020-08-02 09:37:35 · 571 阅读 · 0 评论 -
ROS学习笔记(九) roscpp介绍(三)
roscpp介绍(三)param in roscpproscpp提供了两套关于param的API,一套在ros::paramnamespace下,另一套在ros::NodeHandle下,操作都一样,用哪套都可以。示例:文件位置:test/param.cpp#include<ros/ros.h>int main(int argc,char** argv){ ros::init(argc,argv,,"param"); ros::NodeHandle nh; int para原创 2020-08-01 16:28:31 · 487 阅读 · 0 评论 -
ROS学习笔记(八) roscpp介绍(二)
roscpp介绍(二)Serviceservice是请求-反馈通信机制,消息的传输是双向的,有反馈的,service的传输与topic不同,不是以固定的频率传输,不连续,而是在需要的时候向服务器发起请求。请求的一方为客户端(Client),提供服务的一方为服务器端(Server)。1. 创建Service服务创建test/Greeting.srv文件string name //短横线上边部分是服务请求的数据int32 age ---string feedback //短横线下面是服务回传的内原创 2020-07-31 22:16:18 · 418 阅读 · 0 评论 -
ROS学习笔记(七) roscpp介绍(一)
roscpp1.Client Library 简介lient Library简介ROS为机器人开发者们提供了不同语言的编程接口,比如C++接口叫做roscpp,Python接口叫做rospy,Java接口叫做rosjava。尽管语言不通,但这些接口都可以用来创建topic、service、param,实现ROS的通信功能。Clinet Lirary有点类似开发中的Helper Class,把一些常用的基本功能做了封装。目前ROS支持的Clinet Library包括:Client Library原创 2020-07-31 18:31:58 · 3376 阅读 · 0 评论 -
ROS学习笔记(六) ROS通信架构(四)
ROS通信架构(四)ROS的通信方式有以下四种:Topic 主题Service 服务Parameter Service 参数服务器Actionlib 动作库Actionlibactionlib是ROS中的一个库,也是请求响应机制的通信方式(类似service),主要弥补了service通信的一个不足:若执行长时间任务时,利用service通信机制,Client会长时间接收不到reply,通信受阻。actionlib比较适合较长时间的通信过程,actionlib通信过程随时查看过程进度,也可以原创 2020-07-30 16:33:05 · 368 阅读 · 0 评论 -
ROS学习笔记(五) ROS通信架构(三)
ROS通信架构(三)ROS的通信方式有以下四种:Topic 主题Service 服务Parameter Service 参数服务器Actionlib 动作库Servicetopic是单向异步通信方式,当一些节点只是临时而非周期性的需要某些数据,topic会消耗大量内部资源,效率低。此时就需要请求-查询式通信的service(服务)。service通信是双向的,接收消息同时有反馈。Service包括请求方(Client),应答方/服务提供方(server)。Client发送一个request原创 2020-07-30 11:10:35 · 677 阅读 · 0 评论 -
ROS学习笔记(四) ROS通信架构(二)
ROS通信架构(二)ROS的通信方式有以下四种:Topic 主题Service 服务Parameter Service 参数服务器Actionlib 动作库Topic:topic常用于传输实时性、周期性的消息,是一种点(node)对点的单向通信方式。1.public节点和subscriber节点到master进行注册2.public发布topic3.subscriber在master指挥下订阅改topic4.public和subscriber建立单向通信subscriber接受到消原创 2020-07-29 21:56:10 · 668 阅读 · 0 评论 -
ROS学习笔记(三) ROS通信架构(一)
ROS通信架构(一)node:最小的进程单元。一个软件包里有多个可执行文件,一个可执行文件在运行执行之后会变成一个进程,进程在ROS中就叫做node节点。从程序来看,node就是一个可执行文件(C++或Python脚本)被执行;功能上来说,一个node负责一个独立的功能,很多个node完成机器人的各种操作任务(如一个node控制底盘轮子,一个node驱动摄像头获取图像,一个node驱动激光雷达,一个node传感器信息进行路径规划等)。基于模块化分工的思路,ROS不同功能模块之间的通信,就是节点之间的通原创 2020-07-29 17:46:21 · 690 阅读 · 0 评论 -
ROS学习笔记(二) package介绍
package介绍├── CMakeLists.txt #package的编译规则(必须)├── package.xml #package的描述信息(必须)├── src/ #源代码文件(.cpp)├── include/ #C++头文件(.h)├── scripts/ #可执行脚本(shell python)├── msg/ #自定义消息(.msg)原创 2020-07-29 12:12:05 · 1632 阅读 · 0 评论 -
ROS学习笔记(一) catkin
一、catkincatkin编译过程:1.查找workspace(catkin_ws)下的src的package2. catkin编译系统依据 Cmakelists.txt 和 package.xml 文件,生成 makefiles(catkin_ws/build/)3. make makefiles文件,生成可执行文件 (放在catkin_ws/devel中)cakin 相当于cmake 和 make 的封装完成编译的工具命令:catkin_makemkdir -p ~/catk原创 2020-07-28 11:49:14 · 1118 阅读 · 0 评论