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.
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.
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.
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.
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.
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 (email@example.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.