ros之话题通信

工作空间的目录结构

ros之话题通信_第1张图片

创建功能包

进入工作空间 ros_ws 下的 src 文件夹
cd ~/ros_ws/src
创建功能包demo1_topic,并加载依赖项roscpprospystd_msgs
catkin_create_pkg demo1_topic roscpp rospy std_msgs
进入功能包 demo1_topic
cd demo1_topic
创建 scripts (存放python脚本文件)
mkdir scripts

创建python文件

在scripts下创建python文件 :talker.py ,listener.py
在python文件的开头 必写
#! /usr/bin/env python
talker.py 的程序
#! /usr/bin/env python

import rospy
from std_msgs.msg import Int32

if __name__ == '__main__':
    # 初始化节点
    rospy.init_node("publish_number_p")  

    # 创建发布对象
    pub = rospy.Publisher("number",Int32,queue_size=10)  

    # 创建频率对象(1HZ)
    rate = rospy.Rate(1)

    # 创建消息对象
    message = Int32()
    message = 0

    while not rospy.is_shutdown():

    	# 创建发布的消息内容
    	message += 1 
        
        # 发布
        pub.publish(message)  
        rate.sleep()
        rospy.loginfo("发布的消息:%d", message)

listener.py 的程序

#! /usr/bin/env python

import rospy
from std_msgs.msg import Int32

# 回调函数
def print_talker(msg):
    rospy.loginfo("订阅到的消息内容: %s",msg)

if __name__ == '__main__':
    # 初始化节点
    rospy.init_node("subcribe_number_p")  

    sub = rospy.Subscriber("number",Int32,print_talker,queue_size=10)

    # 阻塞函数
    rospy.spin()
修改该功能包目录下的 CMakeLists.txt

在其162-165行的注释去掉,并修改

ros之话题通信_第2张图片

运行程序

进入 scripts文件夹
cd scripts
增加可执行权限
chmod +x *.py 
进入工作空间 ros_ws
cd ~/ros_ws
编译工作空间
catkin_make
启动一个节点管理器(ros服务器)
roscore

ros之话题通信_第3张图片

新开终端2

进入ros_ws文件夹
cd ~/ros_ws/
刷新
source ./devel/setup.bash
运行程序(包名,程序)
rosrun demo1_topic talker.py

ros之话题通信_第4张图片

*新开终端3

进入ros_ws文件夹
cd ~/ros_ws/
刷新
source ./devel/setup.bash
运行程序(包名,程序)
rosrun demo1_topic listener.py

ros之话题通信_第5张图片

你可能感兴趣的:(ROS,ros)