ros2 学习
此专栏决定系统性的从头开始学习ros2.从ros2的wiki开始
系统使用ubuntu18.04 ide 使用clion 和 pycharm 安装ros-dashing和eloquent
越来越胖了_mengleijin
欢迎互粉
展开
-
[ros2学习]-资料准备与环境搭建
目录1.flag2.资料准备3环境搭建①系统准备②安装ide③ros2安装Ⅰ设置语言环境Ⅱ 安装源Ⅲ 安装ros2 软件包Ⅳ 环境设置1.source 安装脚本2.安装自动补全工具3.安装编译工具④ros2 初体验1.flag因为之前使用的ros1还是ros2,自己学习的都比较片面,只是简单的实用主义,用到什么就去查什么,导致在真正的项目中,选用的方案太过单一和复杂,其实可以有更多实现方式,只...原创 2020-03-29 00:42:47 · 3408 阅读 · 13 评论 -
[ros2学习]-Awesome Robot Operating System2
目录1.Packages① 演示套装② 例子③ 性能测试工具参考下 https://fkromer.github.io/awesome-ros2/ ,整理出来方便学习1.Packages① 演示套装展示几个演示套件adlink_ddsbot - 快速搭建一个adlink的小车adlink_neuronbot - 这个车车turtlebot3 - ROS2 based TurtleB...原创 2020-03-29 21:52:21 · 3620 阅读 · 27 评论 -
[ros2学习]-CLI Tools - 配置环境
文章目录① 背景② 前提③ 任务Ⅰsource setup 文件Ⅱ 在shell启动文件中加命令Ⅲ 检测环境变量Ⅳ `ROS_DOMAIN_ID` 变量④ 总结① 背景ROS 2依赖于使用shell环境组合工作空间的概念。“工作区”是一个ROS术语,表示您在系统中使用ROS 2开发的位置。核心ROS 2工作区称为底层。后续的本地工作区称为覆盖。在使用ROS 2开发时,通常会同时激活多个工作区。...原创 2020-04-02 19:33:45 · 2117 阅读 · 10 评论 -
[ros2学习]-CLI Tools - 介绍turtlesim和rqt
① 背景Turtlesim (小乌龟是第一步)就像是 hello world 一样rqt 是命令行的GUI工具,可以点点点的② 前提安装了ROS2配置好了环境dshing 之后的版本才有小乌龟③ 任务Ⅰ turtlesim安装turtlesim命令:sudo apt updatesudo apt install ros-dashing-turtlesim检查下ro...原创 2020-04-02 19:35:43 · 804 阅读 · 3 评论 -
[ros2学习]-CLI Tools - 了解ROS 2节点(node)
① 背景ROS graph是由ROS 2元素同时处理数据的网络。 如果要全部映射可执行文件并将其可视化,则它包含所有可执行文件及其之间的连接。,后面会有可视化的图帮助理解ROS中的每个节点都应负责单个模块,(例如,一个节点用于控制轮式电机,一个节点用于控制激光测距仪等)。 每个节点都可以通过主题,服务,操作或参数向其他节点发送和接收数据。 完整的机器人系统由许多协同工作的节点组成。 在ROS...原创 2020-04-02 19:36:53 · 909 阅读 · 6 评论 -
[ros2学习]-CLI Tools - 了解ROS 2主题(topics)
① 背景ROS 2将复杂的系统分解为许多模块化 节点(node)。 主题(topic)是ROS图的重要元素,它充当节点(node)交换消息的总线。 节点(node)可以将数据发布到任意数量的主题(topic),并同时具有对任意数量的主题(topic)的订阅。 主题(topic)是数据在节点(node)之间以及因此在系统的不同部分之间移动的重要方式之一。说面了就是通过topic来通讯,通过nod...原创 2020-04-02 19:38:46 · 737 阅读 · 2 评论 -
[ros2学习]-CLI Tools - 了解ROS 2服务(service)
① 背景service 也是通讯的一种方式,req/respone 的方式,是触发式的,topic 是订阅式的② 前提装ros2配置环境装小乌龟③ 任务Ⅰ准备启动小乌龟命令:ros2 run turtlesim turtlesim_noderos2 run turtlesim turtle_teleop_keyⅡ ros2 service 命令ros2 servic...原创 2020-04-02 19:39:25 · 857 阅读 · 4 评论 -
[ros2学习]-CLI Tools - 了解ROS 2参数(parameters)
① 背景参数 (parameters) 就是每个节点的配置值,配置文件格式是yaml,可以是integers, floats, booleans, strings and lists,每个节点(node)都维护自己的参数(parameters)。所有参数(parameters)都是可动态重新配置的,并且是基于ROS 2服务(services)构建的。② 前提装ros2配置环境装小乌龟...原创 2020-04-02 19:40:04 · 1298 阅读 · 3 评论 -
[ros2学习]-CLI Tools - 了解ROS 2动作(action)
文章目录① 背景② 前提③ 任务Ⅰ准备Ⅱ 使用actionsactions 命令ros2 action listros2 action inforos action show(ros2 interface show--eloquent 这个版本有)ros2 action send_goal④ 总结① 背景动作是ROS 2中用于长时间运行任务的通信类型之一。它们由三部分组成:目标,结果和反馈。...原创 2020-04-02 19:41:01 · 1022 阅读 · 3 评论 -
[ros2学习]-CLI Tools - 使用rqt_console
文章目录① 背景② 前提③ 任务Ⅰ准备Ⅱ 日志等级设置默认的logger 等级④ 总结① 背景rqt_console是用于检查ROS 2中的日志消息的GUI工具。通常,日志消息显示在终端中。使用rqt_console,您可以随着时间的推移收集这些消息,以更有条理的方式仔细查看它们,过滤它们,保存它们,甚至重新加载保存的文件以在不同的时间进行自我检查。节点使用日志以各种方式输出有关事件和状态的...原创 2020-04-02 19:43:06 · 1195 阅读 · 3 评论 -
[ros2学习]-CLI Tools - 创建启动文件(launch)
文章目录① 背景② 前提③ 任务Ⅰ 准备Ⅱ 写py文件Ⅲ 启动rqt_graph 看系统④ 总结① 背景这个launch 是.py 文件,和ros1 差别很大到目前为止,在教程中,您一直在为运行的每个新节点打开新终端。当您创建越来越多的节点同时运行的更复杂的系统时,打开终端并重新输入配置详细信息将变得乏味。启动文件允许您同时启动和配置许多包含ROS 2节点的可执行文件。使用ros2 la...原创 2020-04-02 19:43:50 · 715 阅读 · 2 评论 -
[ros2学习]-CLI Tools - 记录和播放数据
文章目录① 背景② 前提③ 任务Ⅰ准备Ⅱ 选择一个topicⅢ ros2 bag 记录Ⅳ ros2 bag infoⅤ ros2 bag play④ 总结① 背景ros2 bag是用于记录系统中有关主题发布的数据的命令行工具。它累积在任何数量的主题上传递的数据,并将其保存在数据库中。然后,您可以重播数据以重现测试和实验的结果。录制主题也是共享您的作品并允许其他人重新创建作品的一种好方法。② ...原创 2020-04-02 19:44:51 · 2217 阅读 · 7 评论 -
[ros2学习]-Client Libraries - 创建工作空间
文章目录前言① 背景② 前提③ 任务Ⅰ安装ros 2 环境Ⅱ 创建文件夹Ⅲ clone 教程代码Ⅳ 解决依赖Ⅴ 用colcon 编译Ⅵ 安装自定义工作空间Ⅶ 修改覆盖成④ 总结前言主要学习怎么使用客户端库来实现自己的功能,主要介绍C++ 和python 两种,其他的我不太会。。因为卡面发现dashing版本有很多命令不能用,我这边切eloquent来学习目前ros2 支持的库有以下这么多...原创 2020-04-03 23:11:18 · 771 阅读 · 0 评论 -
[ros2学习]-Client Libraries - 创建第一个自己的ROS 2 包
文章目录① 背景Ⅰ什么手机ROS 2 包Ⅱ ROS 2 包有什么组成cmake 包python 包Ⅲ ROS 2 包和工作空间的关系② 前提③ 任务Ⅰ 创建包Ⅱ 编译包Ⅲ 安装设置文件(setup.bash)Ⅳ 运行包Ⅴ 看看包里面都有啥子Ⅵ 修改 package.xml④ 总结① 背景Ⅰ什么手机ROS 2 包可以将包视为ROS 2代码的容器。如果您希望能够安装代码或与他人共享代码,则需要将...原创 2020-04-03 23:14:02 · 1617 阅读 · 2 评论 -
[ros2学习]-Client Libraries - 写一个简单的发布和订阅(C++)
文章目录① 背景② 前提③ 任务Ⅰ 创建一个包Ⅱ 写发布节点代码解析修改 package.xml修改 CMakeLists.txtⅢ 写订阅节点代码解析修改 package.xml修改 CMakeLists.txtⅣ 编译和运行④ 总结① 背景节点是通过ROS graph 进行通信的可执行程序。在本教程中,节点将通过主题以字符串消息的形式相互传递信息。这里使用的示例是一个简单的“talker”...原创 2020-04-03 23:15:14 · 954 阅读 · 5 评论 -
[ros2学习]-Client Libraries - 写一个简单的发布和订阅(python)
文章目录① 背景② 前提③ 任务Ⅰ 创建一个包Ⅱ 写发布节点代码解析修改 package.xml修改 setup.py检查 setup.cfg写订阅节点代码解析修改 package.xml修改 setup.pyⅣ 编译和运行④ 总结① 背景节点是通过ROS graph 进行通信的可执行程序。在本教程中,节点将通过主题以字符串消息的形式相互传递信息。这里使用的示例是一个简单的“talker”和“...原创 2020-04-03 23:16:19 · 1208 阅读 · 8 评论 -
[ros2学习]-Client Libraries - 写一个简单的服务端和客户端(C++)
文章目录① 背景② 前提③ 任务Ⅰ 创建一个包修改 package.xmlⅡ 写服务节点代码解析添加可执行文件Ⅲ 写客户端节点代码解析添加可执行文件Ⅳ 编译和运行④ 总结① 背景当节点使用服务进行通信时,发送数据请求的节点称为客户机节点,响应请求的节点称为服务节点。请求和响应的结构由.srv文件决定。这里使用的示例是一个简单的整数加法系统;一个节点请求两个整数的和,另一个节点用结果响应。其...原创 2020-04-04 22:33:06 · 638 阅读 · 2 评论 -
[ros2学习]-Client Libraries - 写一个简单的服务端和客户端(python)
文章目录① 背景② 前提③ 任务Ⅰ 创建一个包修改 package.xml修改 setup.pyⅡ 写服务节点解析代码修改setup.pyⅢ 写客户端节点代码解析修改setup.pyⅣ 编译和运行④ 总结① 背景当节点使用服务进行通信时,发送数据请求的节点称为客户机节点,响应请求的节点称为服务节点。请求和响应的结构由.srv文件决定。这里使用的示例是一个简单的整数加法系统;一个节点请求两个整...原创 2020-04-04 23:20:34 · 705 阅读 · 10 评论 -
[ros2学习]-Client Libraries - 创建自定义的ROS2 msg 和 srv 文件
文章目录① 背景② 前提③ 任务Ⅰ 创建包Ⅱ 创建自定义接口msg 定义srv 定义Ⅲ 修改 CMakeLists.txtⅣ 修改 package.xmlⅤ 编译 tutorial_interfacesⅥ 确认下msg和srvⅦ 测试新的接口使用 pub/sub测试 num.msgC++ 版本python 版本AddThreeInts.srv 通过 service/client 测试C++ 版本p...原创 2020-04-05 01:56:46 · 911 阅读 · 10 评论 -
[ros2学习]-Client Libraries - ros2doctor 入门
文章目录① 背景② 前提③ 任务Ⅰ 检查设置Ⅱ 检查系统Ⅲ 生成全面的报告④ 总结① 背景ros2doctor可以用来ros2的一些问题ros2doctor 检查ROS 2的所有方面,包括平台,版本,网络,环境,运行的系统等,并警告您可能的错误和问题原因。还在开发中,谨慎使用,估计会有点问题② 前提确保安装了ros2doctor,ros2cli的组成部分使用小乌龟包来测试③ 任...原创 2020-04-05 11:46:54 · 758 阅读 · 2 评论 -
[ros2学习]-创建自己的包和工作空间
文章目录① 背景② 前提③ 任务Ⅰ创建包的基本命令与配置文件1. CMakeLists.txt2. setup.cfg && setup.pyⅡ 使用colcon编译包1.安装2.创建工作空间3.添加源文件4.编译工作空间5.执行测试6.安装环境7.测试demoⅢ ament_cmake 使用手册④ 总结① 背景之前都是学习一些命令行或者demo操作,现在开始创建自己的开发包② 前提安装 ROS2 (Dashing 或者更新的版本)安装 colcon设置好环境变量③ 任务原创 2020-05-22 17:33:18 · 902 阅读 · 3 评论 -
[ros2学习]-学习ROS 2工具集
文章目录① 背景② 前提③ 任务Ⅰ通过launch启动/管理多个节点1. ROS2的launch系统2. 写一个ROS2 launch文件3.python 包4.c++包5.写一个launch文件6.用法7.ros2 launch的概念8.文档Ⅱ 通过命令行传递参数1.名字重定向示例:2.日志配置3.配置命令行YAML文件Ⅲ 通过命令行工具的自省Ⅳ RQt的回归和使用Ⅴ 多节点运行在单个进程里ROS 1 - Nodes vs. NodeletsROS 2 - Unified API写一个Component原创 2020-05-27 17:28:41 · 1987 阅读 · 1 评论 -
[ros2学习]-进阶 - 同步与异步服务端和客户端
文章目录① 介绍② 同步调用死锁③ 异步调用④ 总结① 介绍本指南旨在警告用户与Python 同步服务客户端 call()API相关的风险。在同步调用服务时,很容易错误地导致死锁,因此我们不建议使用call()。官方虽然提供了demo,但是还是不推荐使用,建议避免同步调用,所以本指南还将介绍推荐的替代方法异步调用(call_async())的功能和用法。C++服务调用API仅在异步中可用,因此本指南中的比较和示例与Python服务和客户端有关。② 同步调用同步客户端会在发送请求直到收到响应这段时原创 2020-05-28 15:44:18 · 1369 阅读 · 0 评论 -
[ros2学习]-进阶 - 使用多个ros2中间件实现
文章目录① 准备② 多个RMW实现③ 默认RMW实现④ 指定RMW实现⑤ 把RMW实现添加到工作空间⑥ 故障排除确保使用特定的RMW实现OSX上的RTI Connext:由于共享内存内核设置不足而失败⑦ 总结① 准备有篇文章要学习下:https://index.ros.org/doc/ros2/Concepts/DDS-and-ROS-middleware-implementations/RWM支持情况② 多个RMW实现当前活动发行版的ROS 2二进制发行版内置了对一些RMW实现的内置支持(Fa原创 2020-05-28 16:59:57 · 1662 阅读 · 2 评论