Strict Standards: Declaration of action_plugin_safefnrecode::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/brownrob/public_html/rosbridge.org/lib/plugins/safefnrecode/action.php on line 14

Strict Standards: Declaration of action_plugin_popularity::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/brownrob/public_html/rosbridge.org/lib/plugins/popularity/action.php on line 57

Warning: Cannot modify header information - headers already sent by (output started at /home/brownrob/public_html/rosbridge.org/lib/plugins/safefnrecode/action.php:14) in /home/brownrob/public_html/rosbridge.org/inc/auth.php on line 352

Warning: Cannot modify header information - headers already sent by (output started at /home/brownrob/public_html/rosbridge.org/lib/plugins/safefnrecode/action.php:14) in /home/brownrob/public_html/rosbridge.org/inc/actions.php on line 180
start - rosbridge.org

News

What is rosbridge?

It is an applications layer network protocol specification for robotics emphasising the client/server model, although it is not limited to this case. Created at Brown University, rosbridge was originally intended for arbitrary non-ROS client processes to work with the Robot Operating System (ROS). Specifically, rosbridge allows clients to publish and subscribe topic messages and invoke services in the server's runtime environment. rosbridge transports JSON-formatted messages over TCP sockets and websockets.

In addition, rosbridge can refer to a reference implementation of the rosbridge protocol. The implementation is a server written for the ROS middleware.

What language can I write a rosbridge client in?

Rosbridge clients can be written in any language that supports websockets. Many rosbridge examples are for javascript and web clients, but rosbridge is in no way restricted to just the web browser. For example, open source websocket client libraries are available for python, java, android, C# / .NET, C++ / Boost and many more.

Do I have to use the Robot Operating System (ROS)?

No! The reference server implementation is written for ROS, but the rosbridge protocol is a specification and as such not tied to any programming language or runtime. The JSON-based rosbridge protocol has been designed to enable data publishing, subscribing, and service invocation between any combination of clients and servers, regardless of platform. Implementations have been successfully created using Linux, Windows, Android, iOS, Arduino, common web browsers, and more.

Which version of rosbridge should I use?

The current version of rosbridge is version 2.0.

There are two major versions of the rosbridge protocol, version 1.0 and 2.0. Alongside each version of the protocol, there is a corresponding ROS server implementation.

Version 1.0 is the first version of the protocol, released when few people were actively involved in the domain of web robotics. Version 2.0 is a more recent release, which draws much from the lessons learnt from version 1.0. They are both JSON protocols and they look very similar; version 2.0 is an update on version 1.0 with more well-defined semantics and a broader set of features.

There is a separate ROS server implementation for each version of the protocol. Different protocol and server versions are not interoperable. The v1.0 server is only compatible the v1.0 protocol, and the v2.0 server is only compatible with the v2.0 protocol.

The ROS server for version 2.0 of the rosbridge protocol is a much more robust server and is currently in active development and support. Whilst we will continue to provide help to version 1.0 users going forward, version 1.0 is now considered deprecated and we recommend migrating to version 2.0.

How do I know which rosbridge server I'm using?

The answer is based on the stack that rosbridge is contained in:

  • Version 1.0 of the rosbridge server is part of the brown-ros-pkg stack. It is typically brought up by running the rosbridge.py file inside the rosbridge package.
  • Version 2.0 of the rosbridge server is its own stack, called rosbridge_suite. It is typically brought up by running the rosbridge.py file inside the rosbridge_server package, or launching the rosbridge.launch file inside the rosbridge stack.

More Information

To read more about rosbridge, continue to the rosbridge v2.0 page.

To learn more about the deprecated version 1.0 of rosbridge, continue to the rosbridge version 1.0 page.

Projects using rosbridge

Contribute

Are you using rosbridge? Do you have questions or comments about rosbridge? If so:

Announce your project. Please tell us about how you are using rosbridge through the rosbridge-users mailing list (rosbridge-users@googlegroups.com), as well as announce any projects using rosbridge.

Contribute. We also welcome contributions to the rosbridge effort through the Robot Web Tools organization on GitHub. You can raise bug and feature requests and submit pull requests on the rosbridge v2.0 GitHub repository at https://github.com/RobotWebTools/rosbridge_suite

Ask. General rosbridge ROS queries can also be posted on ROS Answers. We do our best to respond to question posted to ROS Answers.

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 3.0 Unported