简介:什么是接口(interfaces)?
在通信过程中,当节点间需要传输数据时,就必然需要以特定格式传输数据,也就是我们常用的数据载体。在ROS2中,数据载体被称之为接口(interfaces)。
常用的接口文件
通信时使用的数据载体一般需要使用接口文件定义。常用的接口文件有三种:msg
文件、srv
文件与 action
文件,分别用于对应前文所述的话题通信、服务通信和动作通信,并且每种文件都需要按照一定格式定义 特定数据类型的 “变量”。
...大约 2 分钟
在通信过程中,当节点间需要传输数据时,就必然需要以特定格式传输数据,也就是我们常用的数据载体。在ROS2中,数据载体被称之为接口(interfaces)。
通信时使用的数据载体一般需要使用接口文件定义。常用的接口文件有三种:msg
文件、srv
文件与 action
文件,分别用于对应前文所述的话题通信、服务通信和动作通信,并且每种文件都需要按照一定格式定义 特定数据类型的 “变量”。
作为一种高度复杂的系统性实现,在机器人中,一个完整的机器人应用程序一般会由若干功能模块组成,其中每个功能模块可能又包含若干功能点,而不同功能模块、不同功能点之间通常需要频繁的进行数据交互。 比如以导航中的路径规划模块为例:
在ROS2节点中,当我们编写C++或Python程序时,都需要引用“初始化”与“资源释放”两个操作,例如:
在C++中:
#include "rclcpp/rclcpp.hpp"
class MyNode: public rclcpp::Node{
public:
MyNode():Node("hello_node_cpp"){
RCLCPP_INFO(this->get_logger(), "helloworld");
}
};
int main(int argc, char const *argv[])
{
//初始化
rclcpp::init(argc, argv);
// 实例化自定义类
auto node = std::make_shared<MyNode>();
// ......
// 资源释放
rclcpp::shutdown();
return 0;
}
这里是我有关ROS2的相关笔记,这些笔记内所使用的相关软硬件配置为:
这些笔记大部分参考以下网站和视频教程写成: