栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Linux中ROS话题通信基本操作(Python实现)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux中ROS话题通信基本操作(Python实现)

目录

话题通信发布方实现

发布者代码实现

scripts文件添加可执行权限

配置编译文件

验证发布者是否能够运行

话题通信订阅方实现

订阅者代码实现

配置编译文件

ROS中Python代码实现话题通信结果演示


话题通信发布方实现

流程:

1、编写发布方实现;

2、编写订阅方实现;

3、编辑配置文件;

4、编译并执行;

具体实现:

创建一个工作空间

首先创建一个工作空间以及一个src子目录,然后再进入工作空间调用catkin_make命令编译

mkdir -p demo01_ws/src

cd demo01_ws/

catkin_make

 启动VScode

code .

右键点击src,点击Create Catkin Package

输入

plumbing_pub_sub
roscpp rospy std_msgs

在plumbing_pub_sub功能包中的src中新建Python功能包目录 scripts

再到scripts中新建demo01_pub_p.py

发布者代码实现
#! /usr/bin/env python

import rospy
from std_msgs.msg import String #要发布的消息的类型

"""

使用python实现消息发布:
1.导包;
2.初始化ros节点;
3.创建发布者对象;
4.编写发布逻辑并发布数据;

"""

if __name__ == "__main__":

    
    #2.初始化ros节点;
    rospy.init_node("sanDai")  #传入节点名称

    #3.创建发布者对象;
    pub = rospy.Publisher("che",String,queue_size=10)

    #4.编写发布逻辑并发布数据;
    #创建数据
    msg=String()
    #指定发布频率
    rate = rospy.Rate(1)
    #设置计算器
    count = 0
    #先休眠一会,度过pub连接roscore这段时间
    rospy.sleep(3)
    #使用循环发布数据
    print("aa")
    while not rospy.is_shutdown():
        count += 1
        msg.data = "hello" + str(count)
        #发布数据
        pub.publish(msg)
        #设置日志
        rospy.loginfo("发布的数据:%s",msg.data)
        rate.sleep()#休眠一秒中然后醒过来

scripts文件添加可执行权限

右键点击scripts打开终端

chmod +x *.py

配置编译文件

打开plumbing_pub_sub文件中的CMakeLists.txt

找到

# catkin_install_python(PROGRAMS

# scripts/my_python_script

# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}

# )

将其修改为

catkin_install_python(PROGRAMS

scripts/demo01_pub_p.py

DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}

)

Shift+Alt+B编译一下


验证发布者是否能够运行

开三个终端

roscore

cd demo03_ws
source ./devel/setup.bash
rosrun plumbing_pub_sub demo01_pub_p.py

cd demo03_ws
source ./devel/setup.bash
rostopic echo che

话题通信订阅方实现

在scripts中新建python文件demo01_sub_p.py

订阅者代码实现
#! /usr/bin/env python
import rospy
from std_msgs.msg import String 
"""
    订阅实现流程:
    1.导包;
    2.初始化ROS节点;
    3.创建订阅者对象
    4.回调函数处理数据;
    5.spin()
"""

def doMsg(msg):
    rospy.loginfo("我订阅的数据:%s",msg.data)

if __name__ == "__main__":
    #2.初始化ROS节点;
    rospy.init_node("lala")
    #3.创建订阅者对象
    sub = rospy.Subscriber("che",String,doMsg,queue_size=10)
    #4.回调函数处理数据;
    
    #5.spin()
    rospy.spin()

配置编译文件

找到CmakeLists.txt文件

找到

scripts/demo01_pub_p.py

在其后添加

scripts/demo02_sub_p.py

ROS中Python代码实现话题通信结果演示

 开三个终端

roscore

cd demo03_ws
source ./devel/setup.bash
rosrun plumbing_pub_sub demo01_pub_p.py

cd demo03_ws
source ./devel/setup.bash
rosrun plumbing_pub_sub demo02_sub_p.py


 出现下图所示则表明话题通讯成功

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1033084.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号