• 剑来
  • 仙逆
  • Navigation

    第十章 NavigationNavigation是机器人最基本的功能之一,ROS为我们提供了一整套Navigation的解决方案,包括全局与局部的路径规划、代价地图、异常行为恢复、地图服务器等等,这些开源工具包极大地减少了我们开发的工作量,任何一套移动机器人硬件平台经过这套方案就可以快速部署实现。10.1 Navigation Stack10.1.1 Navigation StackNavigation Stack是一个ROS的metapackage,里面包含了ROS在路径规划、定位、地图、异常行为恢复等方面的package,其中运行的算法都堪称经典。Navigation Stack的主要作用就是路径规划,通常是输入各传感器的数据,输出速度。一般我们的ROS都预装了Navigation。Navigation Stack的源代码位于https://github.com/ros-plannin

    作者:易水
    2025年06月19
    607 0 0
  • SLAM

    第九章 SLAM本章简介机器人研究的问题包含许许多多的领域,我们常见的几个研究的问题包括:建图(Mapping)、定位(Localization)和路径规划(Path Planning),如果机器人带有机械臂,那么运动规划(Motion Planning)也是重要的一个环节。而同步定位与建图(SLAM)问题位于定位和建图的交集部分。SLAM需要机器人在未知的环境中逐步建立起地图,然后根据地区确定自身位置,从而进一步定位。 这一章我们来看ROS中SLAM的一些功能包,也就是一些常用的SLAM算法,例如Gmapping、Karto、Hector、Cartographer等算法。这一章我们不会去关注算法背后的数学原理,而是更注重工程实现上的方法,告诉你SLAM算法包是如何工作的,怎样快速的搭建起SLAM算法。9.1 地图9.1.1 直观印象ROS中的地图很好理解,就是一张普通的灰度图像,通常为p

    作者:易水
    2025年06月19
    620 0 0
  • TF与URDF

    第八章 TF与URDF本章简介机器人的坐标变换一直以来是机器人学的一个难点,我们人类在进行一个简单的动作时,从思考到实施行动再到完成动作可能仅仅需要几秒钟,但是机器人来讲就需要大量的计算和坐标转换。其中的坐标转换TF和URDF是本章要详细介绍的内容。首先我们从认识TF开始,然后学习TF消息和TF树,在后面我们还介绍了TF的数据类型和在C++以及Python中的一些函数和类。也简单介绍了统一机器人描述格式URDF.学习了TF和URDF,我们才开始真正的深入认识ROS。8.1 认识TF8.1.1 简介TF是一个ROS世界里的一个基本的也是很重要的概念,所谓TF(TransForm),就是坐标转换.在现实生活中,我们做出各种行为模式都可以在很短的时间里完成,比如拿起身边的物品,但是在机器人的世界里,则远远没有那么简单.观察下图,我们来分析机器人拿起身边的物品需要做到什么,而TF又起到什么样的作用

    作者:易水
    2025年06月19
    603 0 0
  • rospy

    第七章 rospy本章简介上一章我们学习了C++语音的ROS接口roscpp,本章我们来学习ROS的另一个接口rospy,也即是Python语音的接口。客户端库(Client Libarary)不仅仅指的是C++、Python语言的接口,其实是各种语言的接口统称。rospy中函数的定义,函数的用法都和roscpp不相同。本章依旧需要一定的Python编程基础,不熟悉该语言需要先行学习Python编程基础。本章的主要内容有rospy的一些常用的函数,以及一些重要的类。结合这些内容,本章还给出了topic demo和service demo的具体格式和写法,方便读者更直观的学习rospy的编写。7.1 rospy与主要接口7.1.1 rospy vs roscpprospy是Python版本的ROS客户端库,提供了Python编程需要的接口,你可以认为rospy就是一个Python的模块(Mo

    作者:易水
    2025年06月19
    609 0 0
  • roscpp

    第六章 roscpp本章简介从本章开始,我们就要正式的接触ROS编程了。在之前的章节,你了解到用命令行启动ROS程序、发送指令消息,或使用可视化界面来调试机器人。你可能很想知道,这些工具到底是如何实现这些功能的。起始这些工具本质上都是基于ROS的客户端库(Client Libarary)实现的,所谓客户端库,简单的理解就是一套接口,ROS为我们机器人开发者提供了不同语言的接口,比如roscpp是C++语言ROS接口,rospy是python语言的ROS接口,我们直接调用它所提供的函数就可以实现topic、service等通信功能。本章我们介绍roscpp,给你介绍roscpp的基本函数,告诉你用C++开发ROS的基本方法。本章的内容需要有C++的基础,如果你对C++比较陌生,建议先学习C++编程。6.1 Client Library与roscpp6.1.1 Client Library简介

    作者:易水
    2025年06月19
    585 0 0
  • 常用工具

    第五章 常用工具本章简介本章主要介绍了ROS开发时常常使用的工具,分别是:GazeboRVizrqtrosbagrosbridgemoveit!这六个工具是我们开发常常用到的工具,gazebo是一种最常用的ROS仿真工具,也是目前仿真ROS效果最好的工具;RViz是可视化工具,是将接收到的信息呈现出来;rqt则是非常好用的数据流可视化工具,有了它我们可以直观的看到消息的通信架构和流通路径;rosbag则是对软件包进行操作的一个命令,此外还提供代码API,对包进行操作编写。rosbridge是一个沟通ROS和外界的功能包,moveit!是目前为止应用最广泛的开源操作软件。好好学习本章,熟练使用这几款工具对于我们的ROS学习和开发都有极大的好处,可以事半功倍。5.1 Gazebo5.1.1 简介ROS中的工具就是帮助我们完成一系列的操作,使得我们的工作更加轻松高效。ROS工具的功能大概有以下几

    作者:易水
    2025年06月19
    598 0 0
  • ROS通信架构(二)

    第四章 ROS通信架构(二)本章简介继上一章节介绍了ROS通信架构中最常见的话题通信方式,本章节将继续介绍ROS通信方式中的service、parameter server、actionlib。通过学习这四种通信方式,了解他们的通信原理和参数命令。当然还有各自的优缺点和不同的适用方面。通过这两章的学习,大致上会对于ROS的通信架构有一个宏观的理解,为后面的学习和实际应用提供了理论基础。4.1 Service4.1.1 Service上一章我们介绍了ROS的通信方式中的topic(主题)通信,我们知道topic是ROS中的一种单向的异步通信方式。然而有些时候单向的通信满足不了通信要求,比如当一些节点只是临时而非周期性的需要某些数据,如果用topic通信方式时就会消耗大量不必要的系统资源,造成系统的低效率高功耗。 这种情况下,就需要有另外一种请求-查询式的通信模型。这节我们来介绍ROS通信中的

    作者:易水
    2025年06月19
    593 0 0
  • ROS通信架构(一)

    第三章 ROS通信架构(一)本章简介ROS的通信架构是ROS的灵魂,也是整个ROS正常运行的关键所在。ROS通信架构包括各种数据的处理,进程的运行,消息的传递等等。本章主要介绍了通信架构的基础通信方式和相关概念。其中首先介绍了最小的进程单元节点Node,和节点管理器Node master。了解了ROS中的进程都是由很多的Node组成,并且由Node master来管理这些节点。第二节我们介绍了ROS的“发动机”——launch文件,学习它的格式和内容,更深入的理解ROS在启动运行时它的工作都是由什么进程支配的,从而理解启动运行的原理。在后面的几节我们介绍了ROS中通信方式。ROS中的通信方式有四种,主题、服务、参数服务器、动作库。每个通信方式都有自己的特点,本章首先介绍话题通信方式--topic。3.1 Node & Master3.1.1 Node在ROS的世界里,最小的进程单元

    作者:易水
    2025年06月19
    595 0 0
  • ROS文件系统

    第二章 ROS文件系统本章简介本章主要介绍了ROS的工程结构,也就是ROS的文件系统结构。要学会建立一个ROS工程,首先要认识一个ROS工程,了解它们的组织架构,从根本上熟悉ROS项目的组织形式,了解各个文件的功能和作用,才能正确的进行开发和编程。本章的主要内容有,介绍catkin的编译系统,catkin工作空间的创建和结构,package软件包的创建和结构,介绍CMakeLists.txt文件,package.xml以及其他常见文件。从而系统的梳理了ROS文件空间的结构,对于我们ROS学习和开发有着重要的作用。2.1 Catkin编译系统对于源代码包,我们只有编译才能在系统上运行。而Linux下的编译器有gcc、g++,随着源文件的增加,直接用gcc/g++命令的方式显得效率低下,人们开始用Makefile来进行编译。然而随着工程体量的增大,Makefile也不能满足需求,于是便出现了C

    作者:易水
    2025年06月19
    615 0 0
  • ros简介

    1.1 机器人时代的到来机器人时代与ROS诞生他们速度很快,具有非凡智慧与致命力量;他们不受生命周期桎梏,是未来科技的希望。机器人和仿生机器,正要从实验室的襁褓中迸裂而出,投入市场的广阔天地,运算能力的大幅进步加上最新的机器人脑部设计,为机器人科技带来前所未有的改革,毋庸置疑,机器人即将改变人类工作场所及生活状态。神爱世人,人亦钟情所造之物,如今有幸跟随时代步伐,一起创造世界,借不灭之躯,走遍险远之地,看尽世之奇伟瑰怪。曾经,机器人创新的门槛非常高。如果你想在任何应用领域开发出有分量的产品,你需要建立一整套能够实现你想法的系统:包括硬件设备,当然还有控制系统,界面接口,以及让机器人运行并作为测试平台的检测工具。“没有什么是现成的设备,除了一些很差,闭源的东西外。”随着机器人领域的快速发展和复杂化,代码复用和模块化的需求日益强烈,已有的开源系统已不能很好地适应需求,2010年Willow G

    作者:易水
    2025年06月19
    649 0 0
  • 加载中....
  • 点击查看更多
  • cartographer算法调优演练

    算法调优演练Cartographer 是一个复杂的系统,调优需要充分理解其内部工作原理。本页面旨在直观地概述 Cartographer 所使用的不同子系统及其配置值。如果您对 Cartographer 的更多内容感兴趣,请参阅 Cartographer 论文。该论文仅介绍了 2D SLAM,但对本文中提到的大多数概念进行了严格的定义。这些概念通常也适用于 3D SLAM。W. Hess, D. Kohler, H. Rapp 和 D. Andor, 《2D LIDAR SLAM 中的实时环路闭合》,载于 《机器人与自动化(ICRA)》,2016 IEEE 国际会议。IEEE,2016 年,第 1271-1278 页。概述Cartographer 可以看作是两个独立但又相互关联的子系统。第一个是本地 SLAM(有时也称为前端或本地轨迹构建器)。它的作用是构建一系列子图。每个子图都应保持局部一

    作者:易水
    2025年06月15
    546 0 0
  • 在自己的数据包上运行 CartographerROS

    在自己的数据包上运行 CartographerROS¶现在,您已经在几个提供的袋子上运行了 Cartographer ROS,可以继续让 Cartographer 使用您自己的数据了。找到一个您想用于 SLAM 的.bag记录,然后阅读本教程。警告当你想运行 cartographer_ros 时,可能需要先运行source install_isolated/setup.bash(如果你的 shell 是 zsh,请将 bash 替换为 zsh),为你的 ROS 环境添加源代码。验证您的包Cartographer ROS 提供了一个名为cartographer_rosbag_validate的工具,用于自动分析工具包中的数据。一般来说,在尝试调整 Cartographer 以纠正错误数据之前,最好先运行该工具。该工具得益于 Cartographer 作者的经验,可以检测出数据包中常见的各种错

    作者:易水
    2025年06月15
    604 0 0
  • 在演示包上运行CartographerROS

    在演示包上运行制图师ROS¶现在,Cartographer 和 Cartographer 的 ROS 集成已经安装完毕,您可以将示例包(例如德意志博物馆的 2D 和 3D 背包系列)下载到一个已知位置,在本例中为~/Downloads,然后使用roslaunch 启动演示包。启动文件会自动调用roscore和rviz。警告当你想运行 cartographer_ros 时,可能需要先运行source install_isolated/setup.bash(如果你的 shell 是 zsh,请用 zsh 代替bash),为你的 ROS 环境添加源代码。德意志博物馆下载并启动 2D 背包演示:wget -P ~/Downloads <https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartog

    作者:易水
    2025年06月15
    632 0 0
  • Cartographer安装与编译(Ubuntu20.04+ROS Noetic)

    安装Cartographer依赖在Ubuntu 20.04上安装Cartographer所需的依赖项,可以使用以下命令:sudo apt-get install \    clang \    cmake \    g++ \    git \    google-mock \    libboost-all-dev \    libcairo2-dev \    libcurl4-openssl-dev \    libeigen3-dev \    libgflags-dev \    libgoogle-glog-dev \    liblua5.

    作者:易水
    2025年06月15
    629 0 0
  • 置顶 机器人开发--Cartographer详细介绍

    1 介绍1.1 概述Cartographer是一款可以跨多个平台和传感器配置提供2D和3D实时同步定位和绘图(SLAM)的系统。这个项目提供了Cartographer的ROS集成。Cartographer是google推出的一套基于图优化的SLAM算法。Cartographer算法并没有给人惊艳的感觉,但该算法的主要目标是实现低计算资源消耗,达到实时SLAM的目的。该算法主要分为两个部分,第一个部分称为Local SLAM, 该部分通过一帧帧的Laser Scan建立并维护一系列的Submap,而所谓的submap就是一系列的Grid Map。当再有新的Laser Scan中会通过Ceres Scan Matching的方法将其插入到子图中的最佳位置。但是submap会产生误差累积的问题,因此,算法的第二个部分,称为Global SLAM的部分,就是通过Loop Closure来进行闭环检

    作者:易水
    2025年06月17
    621 0 1
  • 加载中....
  • 点击查看更多
top