【ROS发布者publisher和订阅者subscriber编程实现】

创建工作空间

首先创建文件夹 catkin_ws / src
工作空间是一个存放工程开发相关文件的文件夹,包含:
src:代码空间
build :编译空间
devel:开发空间
install:安装空间

可以在主文件夹下通过右键创建新文件夹,也可以通过mkdir指令创建文件夹:
在主目录下执行指令:mkdir catkin_ws

yue@yue-HP-288-Pro-G6-Microtower-PC:~$ mkdir catkin_ws

转到catkin_ws目录下执行:mkdir src

yue@yue-HP-288-Pro-G6-Microtower-PC:~$ cd catkin_ws
yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws$ mkdir src

创建工作空间
在src目录下执行:catkin_init_workspace

yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws$ cd src
yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws/src$ catkin_init_workspace

这样工作空间就创建好了,在catkin_ws目录才执行编译指令 catkin_ws

yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws/src$ cd ..
yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws$ catkin_make

没有报错就创建成功了
在这里插入图片描述
这时候catkin_ws文件夹下会有三个子文件夹:

在这里插入图片描述少了一个install安装空间,需要在catkin_ws目录下另外执行 catkin_make install 添加

yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws$ catkin_make install

发布者publisher

创建功能包
在src目录执行 catkin_create_pkg learning_topic rospy roscpp geometry_msgs std_msgs turtlesim
learning_topic为功能包命名,可以随便命名,同一个工作空间下不允许存在同名功能包,不同工作空间下,允许存在同名功能包。rospy、roscpp、geometry_msgs、std_msgs、turtlesim 是功能包添加的依赖。
rospy、roscpp:Python和C++ 编译依赖;
std_msgs:ros定义的消息结构;
turtlesim:小海龟节点依赖;

下提示为成功创建功能包

yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws/src$ catkin_create_pkg learning_topic rospy roscpp geometry_msgs std_msgs turtlesim
Created file learning_topic/package.xml
Created file learning_topic/CMakeLists.txt
Created folder learning_topic/include/learning_topic
Created folder learning_topic/src
Successfully created files in /home/yue/catkin_ws/src/learning_topic. Please adjust the values in package.xml.

这时回到catkin_ws目录下,进行编译:catkin_make
获得结果会显示存在的功能包:

yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws$ catkin_make

在这里插入图片描述
设置环境变量(重要)
在catkin_ws目录下执行source devel/setup.bash 即设置环境变量
通过echo命令检查环境变量。ROS_PACKAGE_PATH是ROS本身的环境变量,通过环境变量查找所有ROS功能包的路径设置setup.bash之后,PATH里才会包含工作空间的路径,找到所添加的功能包。

yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws$ source devel/setup.bash
yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws$ echo $ROS_PACKAGE_PATH  
/home/yue/catkin_ws/src:/opt/ros/melodic/share

接下来添加C++文件
将文末资料中的 velocity_publisher.cpp 文件添加到learning_topic文件下的src文件中:
在这里插入图片描述编译时需要修改learning_topic中下 CMakeLists.txt 的编译规则:

add_executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})

添加位置:在这里插入图片描述添加好后点击保存。添加好后进行编译,在catkin_ws目录下执行catkin_make,下图,编译成功。
在这里插入图片描述
编译完成后一定要设置环境变量:

yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws$ source devel/setup.bash

设置完成后,调用发布命令,首先打开小海龟节点,如何打开参考:ROS玩转Turtlesim小海龟
打开一个新终端,输入:rosrun learning_topic velocity_publisher

yue@yue-HP-288-Pro-G6-Microtower-PC:~$ rosrun learning_topic velocity_publisher

程序发布数据指令让海龟转起来:
在这里插入图片描述这样就完成了发布者的实现。

订阅者subscriber

与添加发布者publisher相同的添加方法
将文末资料包中的 pose_subscriber.cpp 文件也添加到learning_topic文件下的src文件中:
在这里插入图片描述
添加learning_topic中下 CMakeLists.txt 的编译规则:

add_executable(pose_subscriber src/pose_subscriber.cpp)
target_link_libraries(pose_subscriber ${catkin_LIBRARIES})

相同的位置添加
在这里插入图片描述
添加完成后同样的编译设置环境变量

yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws$ catkin_make
yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws$ source devel/setup.bash

发布指令订阅小海龟的位置信息:

yue@yue-HP-288-Pro-G6-Microtower-PC:~$ rosrun learning_topic pose_subscriber

终端中就能够实时显示小海龟的位置坐标了。
在这里插入图片描述

Python代码及C++实验代码获取

点击获取实验例程代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聪明小張

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值