Ask Your Question

About TCP protocol implementation

asked 2012-09-13 09:49:14 -0500

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

I'm making a client from Pharo smalltalk (Pharo 1.4 with the latest CogVM) (To be used from a different machine of the ROS installed). My first goal is make work the turtle simulator from my client.


  • a remote client (without direct access to server)
  • an ubuntu ROS instalation

  • How can i get the message definition related to a topic? Can i ask to the topic? Does the topic answer me in the error text something about the type? (AFAIK, browsing the topic-tools implementation, this kind of data is based on file browsing)

  • Is any definition of a common TCPROS package to take as example of topic usage?

    In this case, i'd spend a lot of time today trying to send messages to the turtle throgh the velocity topic without any response (no movement, no error, no feedback at all) and i tried with the logs, but without any useful data.

    The process i'm following is:

    start roscore start turtle node

    then, from the client

    register as publisher in Velocity topic via XMLRPC layer with the IP:PORT recived connect to the node with a TCP/ip connection then i send a message with:

header type: master getTopicTypeRelated:/turtle1/command_velocity; #here i get the topicType from getTopicTypes topic: /turtle1/command_velocity; latching: false; callerId: anArbitraryId; messageDefinition: 'float32 linear float32 angular'; md5Sum:'9d5c2dcd348ac8f76ce2a4307bd63a13'.

in the body of the request i tried with float numbers (2.0 0.0) for example.

All this data in binary.

I browse a lot of roscpp, rospy and rosjava code trying to find how them create and serialize the data, but i dont find meaningful differences. I browse the site and the questions several times and i didnt find extensive explanations of the protocol. Maybe am i missing steps?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2012-09-13 11:05:36 -0500

ahendrix gravatar image

If you haven't yet, take a look at the ROS master and slave APIs: . If you're writing a client implementation, it should provide the slave API.

There's some documentation on the TCPROS protocol here, that should help with your development:

There's a lot of debugging built into the C++ client library, but it's turned off by default. If you use rxconsole or rxloggerlevel, you can turn on debug statements that should give some insight into why the C++ subscribers are having a hard time with your messages.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools


Asked: 2012-09-13 09:49:14 -0500

Seen: 1,167 times

Last updated: Sep 13 '12