在上一节中我们已经实现了SLAM,接下来就可以在创建好的地图上导航啦。 一、安装功能包 安装Navigation2导航相关的功能包: $ sudo apt install ros-foxy-navigation2 $ sudo apt install ros-foxy-nav2-bringup 二、开始导航 运行turtlebot3仿真环境后,运行导航功能节点: $ export TU
ROS2目前对移动机器人的的支持较为丰富,SLAM和导航这些基础功能包都已经具备了,今天我们就以turtlebot3为例,试一试在Gazebo中如何把SLAM跑起来。 一、依赖包安装 首先需要安装Gazebo11,默认安装完的ROS2是不包含的: $ sudo apt-get install ros-foxy-gazebo-* 后续我们会使用Cartographer进行SLAM,所以还
前边学习了如何创建广播器,接下来我们来试试如何创建监听器,从而通过代码获取任意两个坐标系之间的关系。 一、编写监听器节点 依然使用之前创建的learning_tf2_py功能包,在其中的learning_tf2_py/learning_tf2_py文件夹中创建如下监听器节点的代码文件turtle_tf2_listener.py,内容如下: import math from geomet
前边学习了如何创建广播器,接下来我们来试试如何创建监听器,从而通过代码获取任意两个坐标系之间的关系。 一、编写监听器节点 依然使用之前创建的learning_tf2_cpp功能包,在其中的src文件夹中创建如下监听器节点的代码文件turtle_tf2_listener.cpp,内容如下: #include <geometry_msgs/msg/transform_stamped.h
前边我们学习了如何在ROS2中创建一个tf2的静态广播器,机器人系统中还有很多位姿关系会变化的坐标系,这就需要我们在代码中动态广播坐标系的变换,本篇我们就来学习如何使用C++编写一个动态的广播器。 一、编写广播器节点 继续使用之前创建的learning_tf2_py功能包,在src文件夹中创建今天需要用到的代码文件turtle_tf2_broadcaster.py,然后复制粘贴如下代码:
前边我们学习了如何在ROS2中创建一个tf2的静态广播器,机器人系统中还有很多位姿关系会变化的坐标系,这就需要我们在代码中动态广播坐标系的变换,本篇我们就来学习如何使用C++编写一个动态的广播器。 一、编写广播器节点 继续使用之前创建的learning_tf2_cpp功能包,在src文件夹中创建今天需要用到的代码文件turtle_tf2_broadcaster.cpp,然后复制粘贴如下代码:
静态变换在机器人系统中非常有用,一般用来描述机器人基坐标系与相对其静止的其他坐标系之间的关系,比如雷达坐标系、相机坐标系等。本篇我们就来看一下,如何通过Python编程,实现静态坐标系变换的广播。 一、创建功能包 首先我们创建一个名为learning_tf2_py的功能包,需要依赖rclpy、tf2_ros、geometry_msgs和turtlesim这几个依赖项。 ros2 pkg c
静态变换在机器人系统中非常有用,一般用来描述机器人基坐标系与相对其静止的其他坐标系之间的关系,比如雷达坐标系、相机坐标系等。本篇我们就来看一下,如何通过C++编程,实现静态坐标系变换的广播。 一、创建功能包 首先我们创建一个名为learning_tf2_cpp的功能包,需要依赖rclspp、tf2、tf2_ros、geometry_msgs和turtlesim这几个依赖项。 ros2 pk
坐标变换是机器人中重要的基础功能,ROS1中提供了tf作为坐标变换库,在ROS2中依然沿用,使用方法类似,今天我们就来试一试ROS2中的坐标变化系统tf2。 一、小海龟跟随例程 和ROS1一样,ROS2中依然使用了两只海龟跟随的例程,可以使用如下命令安装: sudo apt-get install ros-foxy-turtle-tf2-py ros-foxy-tf2-tools 此外
在ROS1中,Parameter参数机制默认是无法实现动态监控的(需要配合专门的动态机制),比如正在使用的参数被其他节点改变了,如果不重新查询的话,就无法确定改变之后的值。ROS2最新版本中添加了参数的事件触发机制ParameterEventHandler, 当参数被改变后,可以通过回调函数的方式,动态发现参数修改结果。 注意:此功能目前只支持Galactic及以上的ROS2版本 一、创建功
今天我们用Python继续实现之前参数的使用。 1.创建功能包 在dev_ws工作空间的src文件夹中,创建一个功能包cpp_parameters: ros2 pkg create --build-type ament_python python_parameters --dependencies rclpy 由于在创建功能包时,使用了 --dependencies参数,会自动添加一些依赖
当我们自己编写节点功能时,总有一些配置需要在启动过程中通过外部参数来配置,这一篇我们就来一起学习如何在C++的类和Launch文件中使用ROS2的参数功能。 1. 创建功能包 在dev_ws工作空间的src文件夹中,创建一个功能包cpp_parameters: ros2 pkg create --build-type ament_cmake cpp_parameters --dependenc
在之前的学习中,我们在话题和服务中使用的都是预定义好的消息和服务接口,在很多时候,ROS中预定义的接口并不能完全满足我们的需求,接下来我们就学习下如何自定义这些接口。 1.创建功能包 在dev_ws的src文件夹下创建接下来使用的功能包 tutorial_interfaces: ros2 pkg create --build-type ament_cmake tutorial_interfac
节点之间通过服务通信时,发送请求的一端称之为客户端(Client),应答的一端称之为服务器(Server),请求和应答的数据结构使用srv文件描述。 接下来我们就尝试实现一个简单的服务通信模型,客户端发送两个加数,服务器完成加数求和之后应答求和结果。 1.创建功能包 在dev_ws工作空间的src文件夹下,使用如下命令创建一个新的功能包。 ros2 pkg create --build-t
节点之间通过服务通信时,发送请求的一端称之为客户端(Client),应答的一端称之为服务器(Server),请求和应答的数据结构使用srv文件描述。 接下来我们就尝试实现一个简单的服务通信模型,客户端发送两个加数,服务器完成加数求和之后应答求和结果。 1.创建功能包 在dev_ws工作空间的src文件夹下,使用如下命令创建一个新的功能包。 ros2 pkg crea
上一篇我们通过C++实现了发布者和订阅者,本篇我们试试用Python来实现同样的功能。 1.创建功能包 首先我们在之前创建的dev_ws工作空间中来创建一个放置节点代码的功能包。 打开一个新的终端,cd到dev_ws/src目录下,然后运行创建功能包的指令: ros2 pkg create --build-type ament_python py
ROS2计算图中的每个节点都各司其职的在运行某个功能单元,节点之间也难以避免会有数据的传输,也就是通过我们之前介绍的话题和服务实现通信。之前我们已经通过命令行实现过话题的发布和订阅,本篇我们就来尝试下如何通过C++代码来实现发布者和订阅者。 1.创建功能包 首先我们在之前创建的dev_ws工作空间中来创建一个放置节点代码的功能包。 打开一个新的终端
功能包是ROS2中组织代码的基本容器,方便我们编译、安装、分发开发的代码,一般来讲,每个功能包都是用来完成某项具体的功能相对完整的单元。 ROS2中的功能包可以使用CMake或者Python两种方式来编译,其本身是一个“文件夹”,但和文件夹不同的是,每个功能包中都会有这些文件: CMake包: package.xml:功能包的描述信息
ROS2中的工作空间类似我们常说的概念——“工程”,是我们在ROS中开发具体项目的空间,所有功能包的源码、配置、编译都在该空间下完成。 我们可能会同时开发多个项目,就会产生多个工作空间,所以工作空间之间也有一个层次的问题,类似于优先级的概念,比如不同工作空间中有同名的功能包,那运行的时候是启动哪一个呢?ROS默认是启动最上层的工作空间( overlay),上层工作空间中的
有的时候我们希望在别人已有的数据集上做开发,或者复现之前已经构建好的场景数据,这时候就可以用ROS2中的ros2 bag工具啦。 ros2 bag是一个命令行工具,可以实现对ROS2系统中话题数据的录制和回放,选定的数据会被打包放到一个数据库文件中,未来使用该工具即可按照时间轴回放所有话题数据。 在使用rosbag前,需要确认是否安装好了: s
一起从零学习ROS2
博客
泡泡
积分
勋章
ROS2入门教程——31. 在Gazebo仿真环境中实现自主导航
ROS2入门教程——30. 在Gazebo仿真环境中实现SLAM
ROS2入门教程——29. 创建一个tf2监听器(Python)
ROS2入门教程——28. 创建一个tf2监听器(C++)
ROS2入门教程——27. 创建一个tf2广播器(Python)
ROS2入门教程——26. 创建一个tf2广播器(C++)
ROS2入门教程——25. 创建一个tf2的静态广播器(Python)
ROS2入门教程——24. 创建一个tf2的静态广播器(C++)
ROS2入门教程——23. ROS2中的坐标变换系统tf2
ROS2入门教程——22. 监控ROS2参数的动态变化(C++)
ROS2入门教程——21. 如何使用ROS2的参数(Python)
ROS2入门教程——20. 如何使用ROS2的参数(C++)
ROS2入门教程——19. 自定义话题及服务消息类型
ROS2入门教程——18. 创建一个简单的服务器和客户端(Python)
ROS2入门教程——17. 创建一个简单的服务器和客户端(C++)
ROS2入门教程——16. 创建一个简单的订阅者和发布者(Python)
ROS2入门教程——15. 创建一个简单的订阅者和发布者(C++)
ROS2入门教程——14. 创建ROS2功能包
ROS2入门教程——13. 创建ROS2工作空间
ROS2入门教程——12. 使用ros2 bag录制/回放数据
ROS2入门教程——11. 创建一个launch文件
ROS2入门教程——10. rqt_console工具的使用
ROS2入门教程——9. 理解动作(Action)
ROS2入门教程——8. 理解参数(Parameter)
ROS2入门教程——7. 理解服务(Service)
ROS2入门教程——6. 理解话题(Topic)
ROS2入门教程——5. 理解节点(Node)
ROS2入门教程——4. 小海龟仿真器基础使用
ROS2入门教程——3. ROS2环境配置
ROS2入门教程——2. Ubuntu20.04安装ROS2 Foxy
ROS2入门教程——1. Ubuntu 20.04硬盘多系统安装
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信