ROS学习笔记 您所在的位置:网站首页 节点服务例程 ROS学习笔记

ROS学习笔记

2023-10-23 11:51| 来源: 网络整理| 查看: 265

一个简单的ROS包,一个发布者,一个订阅者

刚开始学习ROS,参考网上的资料完成了测试节点的编写,记录一下。

个人习惯在home/Develop目录中做开发,于是在Develop目录下面创建了一个ROS目录,专门用作ROS开发

1,创建工作空间

在自己的ROS目录(随便一个目录即可)下面新建一个工程目录demo,在demo目录下面创建一个工作空间

创建相关目录

cd /home/Develop/ROS mkdir demo cd demo mkdir src 初始化工作空间 cd ~/Develop/ROS/demo/src/ catkin_init_workspace cd ~/Develop/ROS/demo/ catkin_make

完成之后会在demo目录下面新增两个目录,一个是build目录(编译目录),另外一个是devel目录(开发目录) 在这里插入图片描述

接下来需要将我们的工作空间添加到环境变量,以便让ros可以在我们的工作空间下找ros包 source ~/Develop/ROS/demo/devel/setup.bash

2,创建功能包

上面创建的工作空间是没有功能包的,我们可以使用catkin_create_pkg创建自己的功能包

cd ~/Develop/ROS/demo/src catkin_create_pkg mytest std_msgs roscpp 上面的命令在src目录下面创建了一个依赖于std::msgs和 roscpp的mytest功能包,创建包完成后,我们的目录下面多出了一些文件和目录。 在这里插入图片描述 在这里插入图片描述

通过命令可以查看功能包的依赖项 rospack depends mytest 在这里插入图片描述

3,编译功能包

cd ~/Develop/ROS/demo catkin_make 此时因为我们未编写任何节点,因此不会编译出可执行程序

4,创建节点

在mytest包中添加两个节点,一个发布者node_publisher,一个订阅者node_subscriber

在我们的mytest包目录下的src文件夹下面创建两个cpp源文件,作为两个节点的源文件 cd ~/Develop/ROS/demo/src/mytest/src touch node_publisher.cpp touch node_subscriber.cpp

两个文件内容如下 发布者节点 node_publisher.cpp

#include #include #include int main(int argc, char** argv) { ros::init(argc, argv,"node_publisher"); ros::NodeHandle nd; /*publish string msg, 100 is the catch queue*/ ros::Publisher pub = nd.advertise("mytest_msg", 100); /*10 Hz*/ ros::Rate loop_rate(10); int cnt = 0; while(ros::ok()) { std_msgs::String msg; std::stringstream ss; ss ros::init(argc, argv,"node_subscriber"); ros::NodeHandle nd; /*publish string msg, 100 is the catch queue*/ ros::Subscriber sub = nd.subscribe("mytest_msg", 100, msgCallBack); ros::spin(); return 0; } 5,修改CMakeLists文件,并编译节点

修该mytest包的CMakeLists.txt文件,将cpp文件编译成节点

gedit ~/Develop/ROS/demo/mytest/CMakeLists.txt 在文件末尾添加如下语句 add_executable(node_publisher src/node_publisher.cpp) add_executable(node_subscriber src/node_subscriber.cpp) target_link_libraries(node_publisher ${catkin_LIBRARIES}) target_link_libraries(node_subscriber ${catkin_LIBRARIES}) 在这里插入图片描述

编译节点

cd ~/Develop/ROS/demo catkin_make

6,运行测试节点

打开一个终端,运行如下命令,打开rosmaster主节点

roscore 在这里插入图片描述

打开另一个终端,运行如下命令,打开node_publisher节点,开始发布字符串类型的消息

rosrun mytest node_publisher 在这里插入图片描述

打开另一个终端,运行如下命令,打开node_subscriber节点,开始接收并打印字符串消息

rosrun mytest node_subcriber 在这里插入图片描述

使用如下命令查看结点之间的关系

上面编写的发布者节点node_publisher和订阅者节点node_subscriber之间的关系 rosrun rqt_graph rqt_graph 在这里插入图片描述

参考资料

古月大神 ROS节点订阅与发布 ros学习笔记–如何看可视化的话题与节点



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有