Skip to content
dantard edited this page Mar 28, 2013 · 10 revisions

The ros-rt-wmp node

The ros_rt_wmp is a ROS node capable of replicating whatever ROS topic or service in another computer wirelessly connected with the source without the need of sharing the same roscore.

As an example consider a team of robots building cooperatively a map. The robots have to exchange their laser and pose information. However if the network that connect the robots is not completely connected and they can't use an infrastructure network there is no way to share data among robots using the ROS unless a routing protocol is set up on top of the IP protocol.

The ros_rt_wmp nodes allow that, creating a multi-hop firm real-time network.

Important Notice

Even if we are using the ros_rt_wmp and specially the RT-WMP in our research continuously, '''this project is very young''' and bugs can appear during its use. We encourage the users to communicate it to the authors in order to be solved. This node is often updated and new features added frequently. We are working, for example, on making source/destination specification definable through a configuration file.

In any case we would love to hear about your experience, bugs, feature requests and feel free of asking about the operation of the node at the address [email protected]. On the other hand, any help on developing/testing/debugging/documenting is highly appreciated.

What's new

This package was published for the first time almost 2 years ago. Recently it has been completely rewritten and offers now a much higher user bandwidth. Check this video where an image topic (24 fps) was replicated over a 3-nodes chain network both using a raw 802.11 protocol with fixed routing and using a single roscore (left) and the use of ros_rt_wmp (right).

Moreover it has been introduced the possibility of using the ros_rt_wmp taking advantage of the kernel-space implementation of RT-WMP. This offers the possibility of remoting access far away nodes by means of standard commands like ssh (see below).

Introduction

Suppose that robot R0 has to share its \laser data with R4 that is, from the point of view of the network topology, 5 hops away and '''can't/don't want to''' share the same roscore. To do that is sufficient to instanciate two ros_rt_wmp nodes, the first on R0 and the second on R4. The \laser topic on R0 is remapped to the ros_rt_wmp "input" topic called (for example) /R0/tx/laser. It will provoke the node to send the data published in that topic to node R4 through the network.

At the destination node a topic /R4/rx/R0/laser that replicates the /laser topic on R0 will appear automatically. It means that on R4 we are receiving data from R0 of type laser.

The communication can be bidirectional if we follow the same steps on node R4. It is possible to use whatever number of topics and of whatever type. It is possible to do a similar thing with service also. If we have a service at R1 called /factorial, and we want to call it from R5, we can configure the ros_rt_wmp nodes to have a service /R4/R0/factorial on R4 that, if called, will transparently call the service /factorial on R0 and will return the result to the caller.

To summarize, ros_rt_wmp allows to distribute/decentralize a complex robotics system in multiple computation unit in a transparent form: the only requisite is to know which data from other robots we need in each one of them.

Under the hood

The ros_rt_wmp nodes uses the RT-WMP protocol [1-5] that allows real time communication in wireless mobile ad-hoc networks and supports multi-hop and message priorities.

The data published in the topics are packed by the source ros_rt_wmp node in RT-WMP messages and delivered to the destination node. The latter unpack them and publish data to the correspondent topic. A similar (but two-way) process takes place for services. Since the RT-WMP is capable of managing efficiently the mobility of the nodes, the process is completely transparent to the users that have only to configure the needed topic/services and source/destination for each one of them.

References

[1] D. Tardioli, '''Real-Time Communication in Wireless ad-hoc networks. The RT-WMP protocol''', PhD Thesis, Universidad de Zaragoza, October, 2010

[2] D. Tardioli, J. L. Villarroel, '''Routing Wireless Real-Time Traffic Using Minimum Spanning Trees''', International Conference on Computing, Networking and Communications, To appear, 2012

[3] D. Tardioli, L. Almeida, J. L. Villarroel, '''Adding Alien Traffic Endurance to Wireless Token-Passing Real-Time Protocols''', In the 2010 Asia-Pacific Services Computing Conference, 2010

[4] D. Sicignano, D. Tardioli and J. L. Villarroel, '''QoS over Real Time wireless multihop Network''', In the First International Conference on Ad-hoc Networks, 2009

[5] D. Tardioli and J. L. Villarroel, '''Real-Time Communications over 802.11: RT-WMP''', In the fourth IEEE international Conference on Mobile Ad-hoc and Sensor Systems, 2007

Complete Documentation

The complete documentation and step by step tutorial can be found at here