ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
2020-10-19 10:36:07 -0500 | received badge | ● Notable Question (source) |
2020-10-19 10:36:07 -0500 | received badge | ● Famous Question (source) |
2020-10-19 10:36:07 -0500 | received badge | ● Popular Question (source) |
2019-03-04 08:59:58 -0500 | received badge | ● Notable Question (source) |
2019-03-04 08:59:58 -0500 | received badge | ● Famous Question (source) |
2019-03-04 08:59:58 -0500 | received badge | ● Popular Question (source) |
2017-04-20 16:27:00 -0500 | marked best answer | TCPROS/UDPROS Jumbogram support in IPV6 for lower latency high bandwidth communications Dear ROS Supporters, Why is a ROS UDP Datagram support limited to a block size under 2K? TCP/IP v4 supports a Datagram up to 65535, while IPv6 supports TCPIP, and UDP Jumbogram up to 4GB. It seems that the video latency due to increased CPU processing, and network message bandwidth decrement justifies larger UDP block sizes? Any constructive input will be appreciated. Thanks, Aaron |
2016-10-27 04:18:00 -0500 | received badge | ● Famous Question (source) |
2016-07-27 17:58:11 -0500 | marked best answer | How can UDPROS be turned on for turtlesim topics/services? Dear ROS Community, How can we setUp turtlesim to support UDPROS topics/services? I'd like to test my ROS Client UDPROS implementation on ROS Subscriber Topics, and Services, and do not know what to configure to achieve this. Thanks, Aaron |
2016-07-27 17:56:28 -0500 | received badge | ● Famous Question (source) |
2015-11-26 03:24:33 -0500 | marked best answer | TCPROS message of over gigabyte error, byte array attached for analysis Hi ROSAnswers Friends, I have been developing my own Java based ROS Client, and I am receiving the following error: Below is the message I am attempting to process in the form of a Java byte array. The protocol finished the getTopic method via XMLRPC, and now is my Robot controllers attempt to obtain the following Topic via the returned TCPROS protocol message: public final static byte[] MESSAGE={(byte)0xd6,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x20,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x63,(byte)0x61,(byte)0x6c,(byte)0x6c,(byte)0x65,(byte)0x72,(byte)0x69,(byte)0x64,(byte)0x3d,(byte)0x2f,(byte)0x72,(byte)0x6d,(byte)0x64,(byte)0x6d,(byte)0x69,(byte)0x61,(byte)0x18,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x74,(byte)0x6f,(byte)0x70,(byte)0x69,(byte)0x63,(byte)0x3d,(byte)0x2f,(byte)0x63,(byte)0x6c,(byte)0x6f,(byte)0x63,(byte)0x6b,(byte)0x4e,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x6d,(byte)0x64,(byte)0x35,(byte)0x73,(byte)0x75,(byte)0x6d,(byte)0x3d,(byte)0x61,(byte)0x39,(byte)0x63,(byte)0x39,(byte)0x37,(byte)0x63,(byte)0x31,(byte)0x64,(byte)0x32,(byte)0x33,(byte)0x30,(byte)0x63,(byte)0x66,(byte)0x63,(byte)0x31,(byte)0x31,(byte)0x32,(byte)0x65,(byte)0x32,(byte)0x37,(byte)0x30,(byte)0x33,(byte)0x35,(byte)0x31,(byte)0x61,(byte)0x39,(byte)0x34,(byte)0x34,(byte)0x65,(byte)0x65,(byte)0x34,(byte)0x37,(byte)0x30,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x74,(byte)0x79,(byte)0x70,(byte)0x65,(byte)0x3d,(byte)0x72,(byte)0x6f,(byte)0x73,(byte)0x67,(byte)0x72,(byte)0x61,(byte)0x70,(byte)0x68,(byte)0x5f,(byte)0x6d,(byte)0x73,(byte)0x67,(byte)0x73,(byte)0x2f,(byte)0x43,(byte)0x6c,(byte)0x6f,(byte)0x63,(byte)0x6b}; Can anybody tell me what is wrong with the above message? Thanks, Aaron |
2015-11-26 03:20:07 -0500 | marked best answer | UDPROS more information needed on UDP Header Per the wiki on ROSUDP, the UDP Header starts out with Connection ID (8 bytes), Opcode (1 byte), Msg ID (1 byte), and Block Number(unspecified byte length). What is the byte length of Block#? and what additional fields are missing from the documentation that are required by ROSUDP preceding the Connection Header and Message? I did a UDP trace using Wireshark, and I am not able to explain some of the bits. All help will be appreciated! Thanks, Aaron Connection ID - This 32-bit value is determined during connection negotiation and is used to denote which connection the datagram is destined for. This parameter allows a single socket to service multiple UDPROS connections. Opcode - UDPROS supports multiple datagram types. The opcode specifies the datagram type. This 8-bit field can have the following possible values: Message ID - This 8-bit value is incremented for each new message and is used to determine if datagrams have been dropped. Block # - When the opcode is DATA0, this field contains the total number of UDPROS datagrams expected to complete the ROS message. When the opcode is DATAN, this field contains the current datagram number. |
2015-08-11 19:18:39 -0500 | received badge | ● Famous Question (source) |
2015-07-20 14:36:02 -0500 | received badge | ● Famous Question (source) |
2015-06-16 11:10:06 -0500 | received badge | ● Famous Question (source) |
2014-12-21 00:24:15 -0500 | received badge | ● Famous Question (source) |
2014-09-11 03:53:09 -0500 | received badge | ● Popular Question (source) |
2014-09-11 03:53:09 -0500 | received badge | ● Notable Question (source) |
2014-08-30 23:42:00 -0500 | asked a question | Does the TCPROS probe connection header field work on topics? Dear ROS Answers Users, Does the TCPROS probe connection header field work on topics? Thanks, Aaron |
2014-08-29 20:56:48 -0500 | received badge | ● Notable Question (source) |
2014-08-29 20:56:48 -0500 | received badge | ● Famous Question (source) |
2014-08-05 10:01:42 -0500 | received badge | ● Famous Question (source) |
2014-06-20 13:35:24 -0500 | received badge | ● Famous Question (source) |
2014-06-17 22:04:27 -0500 | received badge | ● Famous Question (source) |
2014-06-14 22:38:09 -0500 | received badge | ● Notable Question (source) |
2014-06-14 19:31:07 -0500 | received badge | ● Famous Question (source) |
2014-06-08 22:26:10 -0500 | answered a question | Please help with requestTopic in ROS XMLRPC Slave API Update: Unknown Error XMLRPC message on requestTopic for UDPROS is caused by invalid base64 UDPROS connection header. @ahendrix - reading the roscpp tutorials, generating talker and listener, then replacing listener with unreliable_listener did the trick. I did not understand the prerequisites of your suggestion, but after a few hours of research I came up with the following Request and Response for requestTopic on XMLRPC for UDPROS (Now I know why multiple implementers have built the UDPROS, and not finished them. The state of my client the last year was hung up on the missing requestTopic documentation that is required to establish a connection on the UDPROS Clients components I wrote. I hope this helps other ROS Client implementers - if you decode the base64 you will discover it is the typical connection header parameters from TCPROS Protocol being passed in as base 64 String. Behavior Note: The Subscriber port is connected to from the Publisher, and in the test I performed the Publisher Port did not match the response port provided by the Publisher in the XMLRPC Request): POST / HTTP/1.1 User-Agent: XMLRPC++ 0.7 Host: thyatira:46120 Content-Type: text/xml Content-length: 590 <?xml version="1.0"?> <methodCall><methodName>requestTopic</methodName> <params><param><value>/listener_unreliable</value></param><param><value>/chatter</value></param><param><value><array><data><value><array><data><value>UDPROS</value><value><base64>HQAAAGNhbGxlcmlkPS9saXN0ZW5lcl91bnJlbGlhYmxlJwAAAG1kNXN1bT05OTJjZThhMTY4 N2NlYzhjOGJkODgzZWM3M2NhNDFkMQ4AAAB0b3BpYz0vY2hhdHRlchQAAAB0eXBlPXN0ZF9t c2dzL1N0cmluZw==</base64></value><value>thyatira</value><value><i4>39861</i4></value><value><i4>1500</i4></value></data></array></value></data></array></value></param></params></methodCall> HTTP/1.1 200 OK Server: XMLRPC++ 0.7 Content-Type: text/xml Content-length: 569 <?xml version="1.0"?> <methodResponse><params><param> <value><array><data><value><i4>1</i4></value><value></value><value><array><data><value>UDPROS</value><value>thyatira</value><value><i4>33184</i4></value><value><i4>1</i4></value><value><i4>1500</i4></value><value><base64>EAAAAGNhbGxlcmlkPS90YWxrZXInAAAAbWQ1c3VtPTk5MmNlOGExNjg3Y2VjOGM4YmQ4ODNl YzczY2E0MWQxHwAAAG1lc3NhZ2VfZGVmaW5pdGlvbj1zdHJpbmcgZGF0YQoOAAAAdG9waWM9 L2NoYXR0ZXIUAAAAdHlwZT1zdGRfbXNncy9TdHJpbmc=</base64></value></data></array></value></data></array></value> </param></params></methodResponse> |
2014-06-06 09:03:19 -0500 | received badge | ● Popular Question (source) |
2014-06-04 23:31:35 -0500 | commented answer | Please help with requestTopic in ROS XMLRPC Slave API I spoke to soon. The stack trace shows that requestTopic is passing in TCPROS as the protocol. I wonder why the UDPROS example is running TCPROS? POST / HTTP/1.1 User-Agent: XMLRPC++ 0.7 Host: thyatira:46487 Content-Type: text/xml Content-length: 302 <methodcall><methodname>requestTopic</methodname> <params><value>/rosout</value><value>/rosout</value><value><array><data><value><array><data><value>TCPROS</value></data></array></value></data></array></value></params></methodcall> |
2014-06-04 22:19:11 -0500 | commented answer | Please help with requestTopic in ROS XMLRPC Slave API Thank you ahendrix! That is exactly what I needed! Aaron |
2014-06-03 22:34:56 -0500 | answered a question | Development boards to use with ROS I'm contemplating building a new controller board for this purpose, to integrate with my java based autonomous robot controller. Nothing I've found available off the shelf has low enough latency response times, power usage, and high enough system resources to handle hundreds of simultaneous ros topics/services and equal numbers of high speed low latency hardware connections. |
2014-06-03 21:03:03 -0500 | asked a question | Please help with requestTopic in ROS XMLRPC Slave API Is it possible somebody who has a functional UDP Subscriber implemented can perform a Wireshark trace on the XML in the XMLRPC call and post it as the answer to this question? It will help me out greatly, as I will be able to cross reference what my client is sending vs what is supposed to be sent. My Java client calls requestTopic by passing in an array of String Protocol names (I am aware the ROS Java client does not support UDPROS, this is a different client). If I pass in using TCPROS, followed by UDPROS, then XMLRPC returns correct protocol information on TCPROS the default protocol. If I reverse the order, or only specify UDPROS, ROS returns an Unknown Error message. I've traced it back to a ROS cpp method called requestTopicCallback (or something like that, I was debugging this morning, and may be off on the exact method name). All help will be appreciated! Sincerely, Aaron |
2014-04-30 08:14:36 -0500 | received badge | ● Notable Question (source) |
2014-04-30 08:08:05 -0500 | commented answer | Does ROS support proxy connections between client/server? Thanks Austin, I see a need for this, and I am going to add proxy support to the Happy Artist Java based ROS Client. Aaron |
2014-04-30 05:56:23 -0500 | commented question | Does ROS support proxy connections between client/server? This seems like a must have for any TCP/IP connection. Does anybody else feel this way if it is not currently implemented? |
2014-04-30 05:54:06 -0500 | asked a question | Does ROS support proxy connections between client/server? Dear ROS Community, Does ROS support proxy connections (like SOCKS) between client/server (to get through firewalls/VPNs)? Thanks, Aaron |
2014-04-20 06:57:04 -0500 | marked best answer | TCPROS connection header probe attribute for discovery Dear ROS Supporters, Is there developer documentation for TCPROS connection header probe attribute for discovery? Thanks, Aaron I believe probe was used by rossrv for introspecting service type information that is not available via the XMLRPC API. This made me wonder what else is not documented. I've been working on a Java client for over a year, and this sort of information would of been like gold. My client did discovery of service types via an auto-generated shell script that is not platform independent, and required the user to manually run the script, then import the discovered data to the client. This data trace was performed in February 2014 on the latest version of ROS. The changelist at the following URL mentioned the probe... http://wiki.ros.org/ROS/ChangeList/1.2 The following is the Hex of a Wireshark data trace: 410000000e000000736572766963653d2f737061776e0700000070726f62653d311400000063616c6c657269643d2f726f7373657276696365080000006d643573756d3d2a The following is printable text of the above hex string: service=/spawn probe=1 callerid=/rosservice md5sum=* |
2014-04-20 06:57:01 -0500 | marked best answer | Is Latching handled by the Master or Node? Is Latching handled by the Master or Node? Thanks, Aaron |
2014-04-20 06:54:11 -0500 | marked best answer | UDPROS Protocol and Lost Packet/Sequencing Algorithms Dear ROS Community, My recent adventure into development of a Java based UDPROS protocol left me with some unanswered questions that will be beneficial for the ROS Community to discuss, and create a specification of some sort. Single Packet Message issues:
Multi-Packet Message issues:
Both options have advantages depending on the topic type, and robot requirements. Option 2 requires more processing power and energy usage to maintain timeouts, and Option 2 handles out of sequence/out of order messages/packets. Option 1 performs more quicker/efficiently, at the cost of more lost messages. Both options seem like they could be valuable if they are implemented in the UDPROS API. |