• ros之话题


     在工作空间下创建一个包

    使用roscreat-pkg  name   depend

    roscreat-pkg basic rospy  roscpp std_msgs

    以下为路径:~/catkin_ws/src/basic/src

    建立一个话题来发布消息

    #!/usr/bin/env python
    import rospy
    from std_msgs.msg import Int32
    rospy.init_node('topic_publisher')
    pub = rospy.Publisher('counter',Int32)
    rate = rospy.Rate(2)
    count = 0
    while not rospy.is_shutdown():
        pub.publish(count)
        count += 1
        rate.sleep()

    第一行的

    #!/usr/bin/env python

    所谓的shebang告诉 操作系统这是一个python文件应该传给python解释器,在linux系统下要运行这个需要使用chmod u+x name.py 来增加权限

    第二行

    import rospy

    负责导入将用到的基础功能

    第三行

    from std_msgs.msg import Int32

    这里使用的是32位的整数为了使导入正常需要从<包名>.msg导入因为这是定义存储的地方,

    因为使用了来自其他包的消息需要在package.xml中添加依赖  <depend package = "std_msgs"  />

    ##在实现过程中添加了,在执行的时候会出现错误,有可能是我添加的位置不正确=.=

    pub = rospy.Publisher('counter',Int32)

    定义话题一个名字(counter) 并且说明发布消息的类型(Int32),roscore会和publisher建立连接,当另一个话题订阅的时候则将两个话题连接

    ##在实现过程中出现了错误并提示需要在其中加入queue_size = 'number'   但在这里没有加  在之后的也是成功运行的

    rate = rospy.Rate(2)

    设置速率,单位是赫兹,这里每秒发送两次

    如果节点准备好关闭is_shutdown()函数返回一个Ture反之则会返回一个False,整句表示不关闭则持续循化

    ratee.sleep()调用会让程序休眠一段时间,来保证循环的执行频率大约是2Hz

    !!!!!!!!!!!!

    在调试过程中出现的错误,以此记录

    该文件需要建立在catkin的工作空间中,如果手写的这段代码记得要chmod来设置运行权限

    并且上面的#!/usr/bin/env python 时不能改变的

    重点:在代码中时不能添加注释,具体原因还不清楚

    运行前要先运行roscore,在另一个终端运行rosrun basic topic_publisher.py,然后在另一个终端执行rostopic list来查看counter话题是否被声明

    执行成功的图:

    然后 建立一个订阅的话题:

    #!/usr/bin/env python
    
    import rospy
    
    from std_msgs.msg import Int32
    
    def callback(msg):
        print msg.data
    
    rospy.init_node('topic_subscriber')
    
    sub = rospy.Subscriber('counter',Int32,callback)
    
    rospy.spin()
  • 相关阅读:
    如何得到需要下载文件的链接(路径)?
    Python之内存泄漏和内存溢出
    IO多路复用
    python-socket和进程线程协程(代码展示)
    Xshell(远程)连接不上linux服务器(防火墙介绍)
    Shell--变量
    Python读写配置文件模块--Configobj
    python文件处理之fileinput
    python之commands和subprocess入门介绍(可执行shell命令的模块)
    linux下 > /dev/null 2 > &1 的意思和如何在后台启动进程
  • 原文地址:https://www.cnblogs.com/miaorn/p/11710326.html
Copyright © 2020-2023  润新知