
ROS2
文章平均质量分 75
首飞爱玩机器人
我是首飞,一个会使用AI工具提效的男人。
展开
-
你的机器人安全吗之SROS介绍
众所周知,ROS2的通信体系是建立在DDS上的。而DDS本身是有一些安全机制的,即。SROS2就是那个可以让我们更方便使用特性的功能包。它提供了一些方便的工具。**通讯加密后,通讯延时会加长。**如下图所示:通过上图可以看到,加密传输的耗时要多于非加密传输。这也是不可避免的。毕竟加密后数据包也变大了。因为要包含加密数据。**跨设备间也可以加密通信。**我们的笔记本电脑和机器间也是可以加密通讯的。只要把机器内生成的加密文件拷贝到笔记本电脑,然后参考下面描述的步骤进行操作即可。...原创 2022-08-17 08:15:52 · 987 阅读 · 0 评论 -
ROS2获取当前系统时间的方法
ROS2中获取系统时间的方法原创 2022-07-24 08:38:11 · 7410 阅读 · 0 评论 -
ROS2节点通信实现零拷贝
内回复“机器人”获取精心推荐的C/C++,Python,Docker,Qt,ROS1/2等机器人行业常用技术资料。,发送端数据的地址和接收端数据地址是一致的。所以发送端只是把数据存放的地址发送给了接收端并没有发生数据拷贝。零拷贝的特性对于传输图像数据尤为有用。关于图像传输的例子请参看。下面的一个例子演示了两个节点之间如何实现零拷贝通讯。编译好代码后使用下面的命令启动示例程序。注意,下面测试例子的。我是首飞,一个帮大家。的机器人开发攻城狮。...原创 2022-07-24 08:36:13 · 1251 阅读 · 0 评论 -
详细分析一个ROS2 CMakeLists.txt文件
ROS2的构建系统是基于CMake改进而来的。本篇文章我们详细介绍一下常用的语句。原创 2022-07-17 14:27:00 · 3145 阅读 · 4 评论 -
ROS2多线程节点
下面介绍一下如何在节点中使用多线程。使用多线程就涉及到回调组()了。创建回调组的函数如下:可以看到,创建回调组时是可以选择使用哪种类型的回调组()的。回调组的类型如下:表示此组的回调函数是互斥的,不能在同一时间被执行。表示回调函数是可重入的,允许同一时刻被多次执行。通常使用的还是类型。创建回调组回调组的另外一个参数是。它的默认值是。这个参数决定了回调组绑定的方式。当为时,采用在节点外部使用的方式绑定。可查看下面的示例程序。当一个节点中有多个线程时,需要用到。上面示例程序中,是有两个线程的。这两个线程中原创 2022-07-10 20:38:57 · 3263 阅读 · 0 评论 -
使用GDB调试ROS2程序
我们使用功能包来快速实现用调试程序。功能包是对包的封装,以便可以简单快速地使用工具。包的介绍可以查看其仓库:https://github.com/bombela/backward-cpp使用功能包实现调试程序只需下面三个步骤:添加到文件中。使用或者 选项编译程序。功能包的地址(程序使用分支):https://github.com/pal-robotics/backward_ros.git获取示例程序:编译时选择或编译类型时可以看到是代码的哪一行出了问题运行测试程序可以看到下面的堆栈信原创 2022-07-03 20:54:59 · 1821 阅读 · 0 评论 -
ROS2中CMake编译选项的设置
编译选项有很多,这里列出一些常用的编译选项设置,并说明作用。可以根据需求设置11, 14, 17, 20等等版本。告警选项:我们加上了告警都转成错误后常常会看到下面的错误信息。有地方设置了变量但没有使用,可以加上下面的代码消除这个类型的错误。代码生成选项:代码优化选项:注意: -O1打开-fomit-frame-pointer选项注意: 无特别需求,优化选项也可不单独设置,直接设置后面提到的编译类型即可选项:注意: 无特别需求,选项也可不单独设置,直接设置后面提到的编译类型即可设置编译类型在编译命原创 2022-07-03 20:54:05 · 1274 阅读 · 0 评论 -
ROS2中的行为树 BehaviorTree
是一个开源的行为树库。在游戏领域,行为树已经比较流行了。主要用于维护游戏角色的各种动作和状态。但在机器人领域还很少使用的。中引入了行为树来组织机器人的工作流程和动作执行。行为树是树状的结构,它的逻辑流程是由文件描述的。我们可以用其配套的工具来可视化行为树。如下图所示:行为树本身并不具体实现机器人的执行内容,它只负责将执行内容进行编排。以为例,具体的执行内容实现是放在各个中的。行为树上的节点与进行通信,请求具体的执行内容,然后获得反馈。根据反馈结果又可以请求另外的执行内容。这些不同执行内容间的跳转就是由行为树原创 2022-06-26 19:52:16 · 3178 阅读 · 2 评论 -
是使用local_setup.bash 还是 setup.bash
编译完程序后,我们会发现目录下有两个脚本 和 。执行程序前,通常需要一下目录下的脚本,以便环境变量准备就绪。这样和就能找到对应的执行文件和依赖。下面的内容是从中截取出来的一段。可以发现它会先一下目录再一下目录,最后再一下当前目录。这样就会把外部的多个工作空间囊括进来。如果多个工作空间中有相同名字的功能包可能就会互相冲突。而只会脚本所在目录。这样只会查找当前目录下的执行文件和依赖。所以如果系统里有多个工作空间,谨慎一点的方法是:1、先一下2、在一下某个用户的工作空间。如果系统里就一个自己建的用户工作空间。那原创 2022-06-26 19:51:13 · 2459 阅读 · 1 评论 -
[ROS2 基础] Navigation2 导航系统介绍
注意:下面的解释说明是以来进行的。其对应的版本为。Nav2具有下列工具:● 加载、提供和存储地图的工具(地图服务器Map Server)● 在地图上定位机器人的工具 (AMCL)● 避开障碍物从A点移动到B点的路径规划工具(Nav2 Planner)● 跟随路径过程中控制机器人的工具(Nav2 Controller)● 将传感器数据转换为机器人世界中的成本地图表达的工具(Nav2 Costmap 2D)● 使用行为树构建复杂机器人行为的工具(Nav2 行为树和BT Navigator)● 发生故障时计算恢原创 2022-06-19 22:14:55 · 3814 阅读 · 0 评论 -
下载TurtleBot4源码来学习
新一代的终于来了。[撒花撒花]是开源的低成本移动机器人平台,希望以低成本的方式帮助更多的开发者学习实践机器人技术。这次发布的共有两个版本:和。它们是以作为移动底盘,配备了摄像头和激光雷达。计算平台是,并运行。软件运行在上,目前只支持版本。它是目前第一个支持的。开发的公司叫,下面是它在上的主页:https://github.com/clearpathrobotics项目介绍网址:https://clearpathrobotics.com/turtlebot-4/https://clearpathrobotic原创 2022-06-12 19:43:27 · 684 阅读 · 1 评论 -
[ROS2 基础] 仿真系统和搭建方法
机器人的开发需要很多的测试。而测试就需要搭建场地。测试项目一多,需要的场地的形式也会更多。搭建这样的场地不仅成本高,耗费的人力和物力都相当可观。有些场景在真实环境中不容易出现,但却可以在仿真环境中制造出来。通过对静态环境的模拟和动态环境的模拟,仿真系统可以帮助开发人员和测试人员触及到很多长尾的情况。而做到这些的代价要比在真实环境中的测试低很多,效率也更高。不管是服务机器人领域还是自动驾驶,仿真技术已经成为一项不可或缺的关键技术。这里对仿真系统做如下简单的定义以方便大家有个整体的概念。1)仿真系统是通过计算机原创 2022-06-12 19:42:40 · 4932 阅读 · 0 评论 -
我的ROS2开发环境
不知道阅读本篇文章的你有没有被环境配置搞的焦头烂额过?想要验证一个功能包,但却需要安装各种依赖。装就装吧!但是安装的依赖可能更新本机中的一些配置或软件版本,导致过去可以运行的软件这么折腾一下后就不能再运行了。这时可能又后悔又懊恼。严重的可能要重新安装电脑系统。本文描述了一种在环境中开发和调试程序的方法。旨在解决环境配置和软件依赖给我们带来的困扰。我们使用+来构建开发环境。下面的操作在上验证过。对于其他操作系统,操作步骤应该也是一致的。按照下面的命令安装。安装Vscode和插件的安装就不多说了。需要安装的原创 2022-06-05 20:49:34 · 548 阅读 · 0 评论 -
[ROS2基础] TF2使用细节
运行示例在不同的命令窗口中运行下面的命令启动小乌龟窗口启动键盘控制节点观察坐标转换的结果示例分析本示例中启动了两只小乌龟和。发布器会将相对于坐标系的位置关系和相对于坐标系的位置关系发布出来。为了实现跟随的效果,程序中获取了相对于的位置关系并且将其折算成速度控制量。代码来自。上面的示例代码可通过下面的方式获取:或者TF2树树表征了各个link的位置关系。一个有且只有一个。所以树是不会形成闭环的。用这个命令可以保存当前系统中树的关系图(以文件的形式保存在运行命令的目录下)。示例代码来自编写原创 2022-06-05 20:47:57 · 2633 阅读 · 0 评论 -
ROS2新版本有哪些改进
ROS2最新的5年长期支持版ROS 2 Humble Hawksbill 发布了。它是第一个运行在Ubuntu 22.04 (Jammy Jellyfish)上的版本。介绍文章:https://discourse.ros.org/t/ros-2-humble-hawksbill-released/25729ROS2 Humble Hawksbill 版本新特性:https://docs.ros.org/en/humble/Releases/Release-Humble-Hawksbill.htm原创 2022-05-29 20:00:00 · 733 阅读 · 0 评论 -
[ROS2基础]launch 文件和多节点进程
launch 文件launch文件可以同时配置和启动多个ros节点。ROS2中的launch文件可以用Python、xml、yaml来写。但ROS2中的Python launch文件更为灵活,功能也更加强大。可以用它执行一些其他的任务(比如新建目录,配置环境变量)。所以官方推荐的是使用python来写。而launch文件一般会放在功能包中的launch文件夹下面。如果想感受一下各种方式写launch文件的效果,可以点开下面的链接体会一下。https://docs.ros.org/en/galactic原创 2022-05-29 20:00:00 · 3340 阅读 · 0 评论 -
[ROS2基础]参数和动作
文本中用于说明的完整示例代码请在下面的仓库中查阅。https://gitee.com/shoufei/ros2_galactic_turorials.githttps://github.com/shoufei403/ros2_galactic_tutorials.git参数理解参数的概念节点的参数通常维护到yaml文件中。节点启动时通常可以加载参数文件,然后读取参数的内容。而且在ROS中参数是可以动态配置的。更多细节参考官方文档:https://docs.ros.org/en/galactic原创 2022-05-22 21:20:24 · 969 阅读 · 0 评论 -
可以用哪些数据类型自定义ROS2消息
这篇文章着重介绍自定义ROS2类型数据时,我们可以使用哪些基础类型。这也是我之前困惑的一个问题。所以这里简单汇总说明一下。关于消息、服务和动作接口的使用说明,请查看本次推送的第一篇推文。自定义msg示例定义msg数据和在C++中定义一个结构体是一样的。只是类型名称有些区别。然后不需要加分号。Header headerfloat64 circle_xfloat64 circle_yfloat32[] ranges自定义service数据示例service数据包含两个部分:请求和应答。这两部分原创 2022-05-15 22:34:34 · 2001 阅读 · 0 评论 -
[ROS2基础]话题与服务
本文介绍ROS2中话题和服务的内容。并配合示例代码来实践以便加深理解。安装依赖安装相应的工具:colcon 编译工具安装sudo apt install python3-colcon-common-extensions git设置colcon_cd,方便用colcon_cd 包名 快速打开到包的目录。需要在工作空间目录下使用,其他路径下使用会出现卡住的情况。echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.原创 2022-05-15 22:33:37 · 687 阅读 · 0 评论 -
rviz远程查看机器人状态数据的方法
ROS1环境匹配机器人和笔记本电脑的网络让笔记本电脑和机器人内部的机载电脑连上相同的局域网络。下面分别配置电脑和机载电脑的/etc/hosts 文件使用hostname 分别查看笔记本电脑和机载电脑板的系统主机名。使用ifconfig 分别查看笔记本电脑和机载电脑的IP地址。使用sudo vim /etc/hosts打开电脑的/etc/hosts文件,添加机载电脑的主机名和IP地址。完成的效果如下:127.0.0.1 localhost127.0.1.1 kevin-Vostro-5568原创 2022-05-08 22:31:36 · 1599 阅读 · 0 评论 -
[ROS2]数据回放伴侣Rviz+plotjuggler
Plotjuggler简介PlotJuggler是一个类似于rqt_plot的基于Qt的数据可视化工具。但PlotJuggler拥有更强大和好用的功能。你可以导入文本文件让它显示文本文件中的数据。你也可以导入ros的bag包,它能自动解析bag包中的数据。并可以回放bag包的数据,然后用Rviz来显示数据。PlotJuggler的功能有很多,这里只介绍几种我常用的功能。应该足以应付日常的机器人开发调试工作。Plotjuggler官方网址:https://www.plotjuggler.io/gith原创 2022-05-01 22:34:04 · 3796 阅读 · 1 评论 -
ROS2 中代码的更新与维护方法
ROS2 中代码的更新与维护方法安装vcssudo apt-get install python3-vcstool下载代码#在ros2_ws目录下运行,代码会存在src目录下(以ros2仓库作为示例)mkdir -p ros2_ws/srccd ros2_wsvcs import src < ros2.repos更新已经下载的代码#在ros2_ws目录下运行vcs pull src导出当前src目录下的git仓库信息vcs export src >> tmp.原创 2022-05-01 22:32:35 · 1774 阅读 · 0 评论 -
Rviz显示不出数据了之一文搞懂Qos
ROS2的通信中间件换成了DDS。这让我们可以精准地控制节点间的通信质量。通信效率也迎来了一次大的提升。但是…但是…一个不小心,看到了类似这样的报错信息:[WARN] [1644578813.965216245] [subscriber_qos_obj]: New publisher discovered on topic '/qos_test', offering incompatible QoS. No messages will be received from it. Last incomp原创 2022-04-24 22:59:53 · 3161 阅读 · 1 评论 -
[ROS2]下载Navigation2源码来学习
下面的操作是基于galactic代码下载#安装git和编译工具sudo apt-get install git python3-vcstool build-essential python3-colcon-common-extensionsmkdir -p turtlebot3_ws/srccd turtlebot3_ws/#下载turtlebot3代码git clone https://ghproxy.com/https://github.com/ROBOTIS-GIT/turtlebot原创 2022-04-24 22:58:15 · 3546 阅读 · 2 评论 -
[ROS2] map_server加载地图文件的三种模式
map的数据类型map话题的类型是nav_msgs::msg::OccupancyGrid。使用下面的命令可以查询该类型的数据结构。ros2 interface show nav_msgs/msg/OccupancyGridnav_msgs::msg::OccupancyGrid的数据结构:# This represents a 2-D grid mapstd_msgs/Header header builtin_interfaces/Time stamp原创 2022-04-17 22:34:19 · 3302 阅读 · 0 评论 -
[ROS2] 动手实践Costmap新特性
废话不多说,我们直接开始。搭建测试环境为了避免花太多时间折腾环境问题。这里使用Docker来跑测试的示例。安装Docker# step 1: 安装必要的一些系统工具sudo apt-get updatesudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common# step 2: 安装GPG证书curl -fsSL http://mirrors.aliyun.com/d原创 2022-04-10 19:37:00 · 1322 阅读 · 2 评论 -
查看Action 信息的常用命令
查看Action 信息的常用命令Action主要用于长时间运行的任务。它们由三部分组成:目标、反馈和结果。查看action列表ros2 action list查看action列表和类型ros2 action list -t查看action信息ros2 action info <action_name>显示actionros2 interface show <action_name>action send goalros2 action send_goal原创 2022-04-10 18:52:06 · 735 阅读 · 0 评论 -
[ROS2] 你应该知道Costmap_2d 的这些细节
Costmap_2d 的插件Costmap_2d 的插件都是继承于CostmapLayer。具体的关系如下图所示:StaticLayerStaticLayer内主要是通过接收map_server发布的地图话题来加载静态地图的。所以StaticLayer内是可以在线更改静态地图的。ObstacleLayerObservationBufferObservationBuffer 是一个障碍物观察数据的buffer。观测到的障碍物数据都将转成sensor_msgs::msg::PointCloud2格原创 2022-04-04 20:46:36 · 1967 阅读 · 2 评论 -
[ROS2] 使用LifecycleNode管理节点起停等状态
有顺序的的启动节点,暂停节点,关闭节点是ROS1的一个痛点。因为在ROS1中节点启动是无序的。ROS1系统设计时并没有考虑节点启动时可能存在的互相依赖。但在实际生产使用环境中,某些节点能正常工作是需要其他一些节点已经启动了的。比如:需要定位功能能正常运行,前提是map_server节点已经正常加载地图文件并且已经把地图话题发布出来。又或者你想从建图功能切到导航功能。在ROS1中,需要先将建图功能的程序杀干净。然后再启动导航程序。在ROS2中,各个节点的状态是可管理的。在这个场景里,大可让建图程序休眠原创 2022-03-27 21:48:09 · 4716 阅读 · 1 评论 -
[ROS2] LifecycleNode 命令行工具
使用ros2 lifecycle --h命令可以看到lifecycle相关的命令有哪些。获取LifecycleNode节点的状态ros2 lifecycle get /lifecycle_node_demo_node其中/lifecycle_node_demo_node为节点名称设置LifecycleNode节点的状态ros2 lifecycle set /lifecycle_node_demo_node configure其中/lifecycle_node_demo_node为节点名称原创 2022-03-27 21:33:24 · 740 阅读 · 0 评论 -
ROS2 发展历程和开发环境安装
ROS2养成计划(一)发展历程和开发环境安装ROS发展历程介绍2006 年,无比好奇的一群人走在一起,组建了一个机器人研究实验室:柳树车库(Willow Garage)2010年5月26日,人类历史上第一个机器人毕业典礼在硅谷这条蜿蜒的柳树街68号的小路旁,临时搭建的一座帐篷中举办。四年思考的三个问题:第一:为什么人类需要机器人?斯科特·哈森的答案是:机器人可以帮助我们提高生产和工作效率。机器人已经在工厂里证明可以大幅度的提供工业的生产效率,在日常生活中,人类也需要机器人提高工作效率和生活质原创 2022-02-20 20:27:51 · 1935 阅读 · 0 评论 -
[ROS2]源码安装turtlebot3用于调试(简易版)
[ROS2]源码安装turtlebot3用于调试(简易版)下面的操作是基于galacticturtlebot3的代码下载:安装git和编译工具sudo apt-get install git python3-vcstool build-essential python3-colcon-common-extensionsmkdir -p turtlebot3_ws/srccd turtlebot3_ws/git clone https://ghproxy.com/https://github.c原创 2022-02-20 20:25:26 · 2322 阅读 · 0 评论 -
ROS2开发环境搭建
开发环境的建立安装虚拟机和Ubuntu20参考如下链接:https://fishros.com/d2lros2foxy/#/chapt2/2.1%E7%B3%BB%E7%BB%9F%E5%AE%89%E8%A3%85_%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%89%88%E6%9C%AC 安装VMware ToolUbuntu 主机https://kb.vmware.com/s/article/1022525windows主机https://www.epinv.com/原创 2022-02-17 13:16:01 · 1387 阅读 · 0 评论