鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    ROS关于编写节点时无法同时订阅和发布

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    ros节点间通讯 rosrun
    2
    2
    472
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 30536533793
      火海一舟
      最后由 编辑

      我在编写ROS节点的时候发现冲突,不能同时订阅和发布了,但屏蔽pub之后能完美打印2了,这是为什么?
      这时我的节点文件
      def callback(msg):
      pad_id = msg.data
      if pad_id == 2:
      rospy.loginfo('2')
      pub.publish('two')

      if name == "main":
      rospy.init_node('pad_to_led', anonymous=False)
      sub = rospy.Subscriber('mission_pad_id', UInt8, callback)
      pub = rospy.Publisher('mled', String, queue_size=10)
      rospy.spin()
      然后这是报错
      Exception in thread Thread-9:
      Traceback (most recent call last):
      File "/opt/ros/noetic/lib/python3/dist-packages/std_msgs/msg/_UInt8.py", line 54, in serialize
      buff.write(_get_struct_B().pack(_x))
      struct.error: ubyte format requires 0 <= number <= 255

      During handling of the above exception, another exception occurred:

      Traceback (most recent call last):
      File "/opt/ros/noetic/lib/python3/dist-packages/rospy/topics.py", line 882, in publish
      self.impl.publish(data)
      File "/opt/ros/noetic/lib/python3/dist-packages/rospy/topics.py", line 1066, in publish
      serialize_message(b, self.seq, message)
      File "/opt/ros/noetic/lib/python3/dist-packages/rospy/msg.py", line 152, in serialize_message
      msg.serialize(b)
      File "/opt/ros/noetic/lib/python3/dist-packages/std_msgs/msg/_UInt8.py", line 55, in serialize
      except struct.error as se: self._check_types(struct.error("%s: '%s' when writing '%s'" % (type(se), str(se), str(locals().get('_x', self)))))
      File "/opt/ros/noetic/lib/python3/dist-packages/genpy/message.py", line 393, in _check_types
      check_type(n, t, getattr(self, n))
      File "/opt/ros/noetic/lib/python3/dist-packages/genpy/message.py", line 267, in check_type
      raise SerializationError('field %s must be unsigned integer type' % field_name)
      genpy.message.SerializationError: field data must be unsigned integer type

      During handling of the above exception, another exception occurred:

      Traceback (most recent call last):
      File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
      self.run()
      File "/opt/ros/noetic/lib/python3/dist-packages/rospy/timer.py", line 237, in run
      self._callback(TimerEvent(last_expected, last_real, current_expected, current_real, last_duration))
      File "rmtt_core.py", line 317, in rmtt_core_dev.scripts.rmtt_core.RoboMasterTelloTalent._drone_info_handler
      File "rmtt_core.py", line 395, in rmtt_core_dev.scripts.rmtt_core.RoboMasterTelloTalent._drone_info_publisher
      File "/opt/ros/noetic/lib/python3/dist-packages/rospy/topics.py", line 886, in publish
      raise ROSSerializationException(str(e))
      rospy.exceptions.ROSSerializationException: field data must be unsigned integer type
      查找了一群资料也不知道为什么,求大神帮助

      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小鱼小
        小鱼 技术大佬 @3053653379
        最后由 编辑

        @3053653379 注意格式哈

        @3053653379 在 ROS关于编写节点时无法同时订阅和发布 中说:

        rospy.exceptions.ROSSerializationException: field data must be unsigned integer type

        看起来像是收到的数据类型有问题,贴下完成代码和操作,你这个看不太出缩进

        @小鱼 在 提问前必看!一定要看!必须看一下! 中说:

        问题一定要描述清楚,终端打印一定复制粘贴,方便回答者检索和引用(你可以在linux系统上打开浏览器进社区)
        基本的Markdown语法一定要学习下,有的小伙伴图片代码一团糟
        提问时一定要提供尽可能多的信息(系统版本,ROS版本,前后操作,终端日志),包括你的目的,比如你其实想装装某个库遇到问题,不要只说这个问题,因为可能有更好的替代方案
        先搜索再提问,很多问题其实都有解决方案,确保你自己对自己的问题有一定了解再提问
        尽量一句话说完,不要把社区当微信聊天一样用,每一个回复都尽量提供更多的的信息。

        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

        1 条回复 最后回复 回复 引用 0
        • 第一个帖子
          最后一个帖子
        皖ICP备16016415号-7
        Powered by NodeBB | 鱼香ROS