rosbridge_suite icon indicating copy to clipboard operation
rosbridge_suite copied to clipboard

TransportInitError: remote error reported: [/rosbridge_websocket]

Open MichalDobis opened this issue 3 years ago • 1 comments

Description Hi, I have a problem that rosbridge_websocket lost publishing of some topics:

[rospy.internal][ERROR] 2022-01-13 09:13:09,916: Unable to initiate TCP/IP socket to 127.0.0.1:39767 (http://127.0.0.1:45683/): Traceback (most recent call last):
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros_base.py", line 562, in connect
    self.read_header()
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros_base.py", line 657, in read_header
    self._validate_header(read_ros_handshake_header(sock, self.read_buff, self.protocol.buff_size))
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros_base.py", line 600, in _validate_header
    raise TransportInitError("remote error reported: %s"%header['error'])
TransportInitError: remote error reported: [/rosbridge_websocket] is not a publisher of [/picker/cancel]. Topics are [['/client_count', 'std_msgs/Int32'], ['/rosout', 'rosgraph_msgs/Log'], ['/picker/goal', 'picker_msgs/PickActionGoal'], ['/connected_clients', 'rosbridge_msgs/ConnectedClients']]

I'm not sure if this is a bug in rosbridge_websocket or it is caused by something else. It occurres "randomly" once per week.

  • Library Version: 0.11.13
  • ROS Version: melodic
  • Platform / OS: Ubuntu 18.04

Steps To Reproduce

My node uses an action server, but I haven't any reproduction scenario. I found, that my node was removing connection before throwing exception:

[rospy.internal][INFO] 2022-01-13 09:13:00,157: topic[/picker/status] removing connection to /rosbridge_websocket
[rospy.internal][INFO] 2022-01-13 09:13:00,396: topic[/picker/feedback] removing connection to /rosbridge_websocket
[rospy.internal][INFO] 2022-01-13 09:13:00,898: topic[/picker/result] removing connection to /rosbridge_websocket

I don't know why the connection is removing. Do you have any idea about this or about the TransportInitError exception? Launch file for rosbridge_websocket is following:

<launch>
  <arg name="required" default="true"/>
  <arg name="port" default="9090" />
  <arg name="address" default="0.0.0.0" />
  <arg name="ssl" default="false" />
  <arg name="certfile" default=""/>
  <arg name="keyfile" default="" />

  <arg name="retry_startup_delay" default="5" />

  <arg name="fragment_timeout" default="600" />
  <arg name="delay_between_messages" default="0" />
  <arg name="max_message_size" default="None" />
  <arg name="unregister_timeout" default="10" />
  <arg name="websocket_external_port" default="None" />

  <arg name="use_compression" default="false" />

  <arg name="authenticate" default="false" />

  <arg name="websocket_ping_interval" default="0" />
  <arg name="websocket_ping_timeout" default="30" />
  <arg name="websocket_null_origin" default="true" />

  <arg name="topics_glob" default="[*]" />
  <arg name="services_glob" default="[*]" />
  <arg name="params_glob" default="[*]" />
  <arg name="bson_only_mode" default="false" />
  <!-- Output: screen, log -->
  <arg name="output" default="screen" />

  <!-- Valid options for binary_encoder are "default", "b64" and "bson". -->
  <arg unless="$(arg bson_only_mode)" name="binary_encoder" default="default"/>

  <group if="$(arg ssl)">
    <node name="rosbridge_websocket" pkg="rosbridge_server" type="rosbridge_websocket" output="$(arg output)">
      <param name="certfile" value="$(arg certfile)" />
      <param name="keyfile" value="$(arg keyfile)" />
      <param name="authenticate" value="$(arg authenticate)" />
      <param name="port" value="$(arg port)"/>
      <param name="address" value="$(arg address)"/>
      <param name="retry_startup_delay" value="$(arg retry_startup_delay)"/>
      <param name="fragment_timeout" value="$(arg fragment_timeout)"/>
      <param name="delay_between_messages" value="$(arg delay_between_messages)"/>
      <param name="max_message_size" value="$(arg max_message_size)"/>
      <param name="unregister_timeout" value="$(arg unregister_timeout)"/>
      <param name="use_compression" value="$(arg use_compression)"/>

      <param name="websocket_ping_interval" value="$(arg websocket_ping_interval)" />
      <param name="websocket_ping_timeout" value="$(arg websocket_ping_timeout)" />
      <param name="websocket_external_port" value="$(arg websocket_external_port)" />
      <param name="websocket_null_origin" value="$(arg websocket_null_origin)" />

      <param name="topics_glob" value="$(arg topics_glob)"/>
      <param name="services_glob" value="$(arg services_glob)"/>
      <param name="params_glob" value="$(arg params_glob)"/>
    </node>
  </group>
  <group unless="$(arg ssl)">
    <node name="rosbridge_websocket" pkg="rosbridge_server" type="rosbridge_websocket" output="$(arg output)">
      <param name="authenticate" value="$(arg authenticate)" />
      <param name="port" value="$(arg port)"/>
      <param name="address" value="$(arg address)"/>
      <param name="retry_startup_delay" value="$(arg retry_startup_delay)"/>
      <param name="fragment_timeout" value="$(arg fragment_timeout)"/>
      <param name="delay_between_messages" value="$(arg delay_between_messages)"/>
      <param name="max_message_size" value="$(arg max_message_size)"/>
      <param name="unregister_timeout" value="$(arg unregister_timeout)"/>
      <param name="use_compression" value="$(arg use_compression)"/>

      <param name="websocket_ping_interval" value="$(arg websocket_ping_interval)" />
      <param name="websocket_ping_timeout" value="$(arg websocket_ping_timeout)" />
      <param name="websocket_external_port" value="$(arg websocket_external_port)" />

      <param name="topics_glob" value="$(arg topics_glob)"/>
      <param name="services_glob" value="$(arg services_glob)"/>
      <param name="params_glob" value="$(arg params_glob)"/>

      <param name="bson_only_mode" value="$(arg bson_only_mode)"/>
    </node>
  </group>

  <node name="rosapi" pkg="rosapi" type="rosapi_node" output="$(arg output)" required="$(arg required)">
    <param name="topics_glob" value="$(arg topics_glob)"/>
    <param name="services_glob" value="$(arg services_glob)"/>
    <param name="params_glob" value="$(arg params_glob)"/>
  </node>
</launch>

MichalDobis avatar Jan 13 '22 16:01 MichalDobis

This issue has been marked as stale because there has been no activity in the past 6 months. Please add a comment to keep it open.

github-actions[bot] avatar Jul 13 '22 00:07 github-actions[bot]

This issue has been marked as stale because there has been no activity in the past 12 months. Please add a comment to keep it open.

github-actions[bot] avatar Aug 03 '23 00:08 github-actions[bot]