I'm not particularly familiar with DDS, but does it work nicely with browsers? either through some sort of translation or better yet, natively?
I'm interested as the current ROS to WebSockets bridge is particularly ugly: the bridge has to subscribe to all the messages that any web client would need to listen to and then rebroadcast them, which introduces additional delays making it horribly painful to use for things like teleop with large messages like images or point clouds.
From my perspective, interest, especially commercially, in getting ROS to work with the web have only grown over time. There has been push by Bosch and Brown for a while, and then Willow joined in, right before it closed shop, to build a complementary web toolkit [1] for ROS. Savioke, from their job postings, seem to be doing something webby behind the scenes too. And even for hobby/research projects, it's just so much easier to access robots over a browser compared to with Ubuntu/RViz. The fact that you get iOS and Android support, no ROS java [2] needed, almost for free through their browsers is just fantastic (and I suggest trying this if you haven't already).
I might have missed it in my superficial lurking, but I haven't seen this issue of communicating with web clients raised with any seriousness yet. It would be a big missed opportunity if ROS 2.0 only supports talking to browsers at the level that it does now. Most projects are moving to the web. These days even my humble ipython runs a full-fledged web server in its default installation. Certainly, in the future, I feel like this will become a much more pressing issue.
--
You received this message because you are subscribed to the Google Groups "ROS SIG NG ROS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-ng-ro...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "ROS SIG NG ROS" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ros-sig-ng-ros/BfvcjD6Rsg0/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ros-sig-ng-ro...@googlegroups.com.
I am not a WebSocket expert but from my understanding, HTTP is used just for the initial handshake so high frequency tf messages should work.
And although I don't have measurements either, the current process where we encode to ROS, send, decode from ROS, encode to JSON, send, and finally decode from JSON is certainly much slower (high latency) and processor intensive than if messages started out as JSON. You also don't strictly need to send JSON at the server end—not that it's that much different from ROS messages—as WebSockets doesn't define a serialization format. For example, you can always send just binary blobs.
I agree that having WebSockets in each node, in addition to existing protocols, would be nice but perhaps complex. From what I can see with that linked DDS document, they're just talking about another bridge solution and that is the solution that we have now, which is kind of terrible. Although I didn't expect much since OMG, as you put it, is "slow to adapt to changes and therefore arguably doesn’t always keep up with the latest trends in software engineering." It looks like, for OMG, the web falls into this category of "latest trend in software engineering" that they don't "always keep up with."
Personally, I feel like maybe having WebSockets be specifiable as a transport, instead of TCP or more exotic protocols, would seem like a good compromise.
Totally not related, but I've just (re)noticed that rosmaster and the parameter server runs on XMLRPC, which is a whole lot simpler to use and more sophisticated than ROS services (supporting things like exceptions), so why does ROS services need to be there at all? I feel like the master, in ROS 2.0, should hand out plain xmlrpc connections to services when requested by name.
I think there is a somewhat obscured issue here. The issue is not necessarially the efficency of sending json or xml from a bridge but more fundamental one of data rate. A web user does not necessarially need/want the full fire hose of tf data, but rather updates at 1-5Hz. At these slower rates the overhead of converting to a web native format is trivial.
To the best of my knowledge, under current ROS1, there is no way to throttle the data flow from a publisher to subscribers on an individual basis. The throttling is done on the client side, yes?
Does DDS and/or the ros 2.0 design provide for a client stating "give me data X on topic Y at rate Z"? This capability is potentially incredibly useful for managing run time resources.
--
You received this message because you are subscribed to the Google Groups "ROS SIG NG ROS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-ng-ros+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-ng-ro...@googlegroups.com.
You are right that it's usually more ideal to have just one web socket connection rather than a connection for each topic. I was accepting it as an unfortunate downside of talking to ROS nodes, but now that you've raised the point, it seems to be more serious of a downside than I thought. Specifically, it'd be difficult to do things like implement access control for each topic, which is particularly vital for being on the web.
After looking into this a little more, however, it looks like whichever DDS system is used, if there is support for some sort of shared memory communication then having a bridge shouldn't be a big performance hit anyway, especially if the marshaling format ends up being JSON.Since it's all contingent on shared memory access, is OSRF leaning towards a particular implementation of DDS that has this feature?
I do agree with Chad though. It's rather bold to assume that most of the best feedback for ROS 2.0 will be from people that are interested enough to join yet another mailing list, especially since this one is so relevant. From the earliest days, ROS's design has been informed and improved by constant interactions with roboticists. For the benefit of ROS 2.0, I think this process should continue since there is a very real possibility that bad design decisions will result in developers just continuing to use ROS 1.x or even worse, not updating their libraries to support it.
Am 19.09.2014 00:03 schrieb "Hai Nguyen" <hai...@gmail.com>:
>
> You are right that it's usually more ideal to have just one web socket connection rather than a connection for each topic.
Many Middleware packages can multiplex multiple streams over one TCP connection. Might be simmering to look for.
> I do agree with Chad though. It's rather bold to assume that most of the best feedback for ROS 2.0 will be from people that are interested enough to join yet another mailing list, especially since this one is so relevant. From the earliest days, ROS's design has been informed and improved by constant interactions with roboticists.
As someone whose research interests are founded on making teams more efficient, I can say that talking about the means of communication, while important, is secondary. The most important thing is the process (yeah, I know, that's what the architecture astronauts also say, and nobody likes those, but there is always a process anyway, so better consciously simplify it).
You don't get large involvement by exposing all people to every messy, technical discussion. That'll just scare them away, or make them ignore mails. You *also* don't get it by doing everything behind closed doors, of course.
Both you and Chad have asked for discussing, essentially, important things here. However, who's going to make that call?
*I* think there's always a tradeoff here, and that the only way to get around it is not to discuss more initially, but to release early and often, and taking release feedback into account.
For that to work, we can look at the Linux kernel approach, e.g. its commitment to compatibility between releases and Linus's style in general. We can also look at apache httpd 1.3 to 2.0, for what *not* to do (cf second system syndrome).
In that vein, it seems that the biggest problem right now is that ROS 2.0 is trying to do very many things at once, instead of staggering them. That's bound to be difficult, however you go about it.
I don't know the technical reasons for that, but I think it's interesting that other groups apparently managed to get DDS with ROS 1.0 APIs. Maybe something can be learned from that.
In any case, ROS has become larger and more complex now, and the core team actually became smaller. So, what worked the first time around is not necessarily the way to go now. Some adaptation will likely be necessary.
I for one would certainly be willing to help osrf by joining a special list. I can't commit to that right now because I'll be starting a new job soon, but just saying that I wouldn't consider that too large a burden. Of course, not everybody can or wants do that, that's why I think we need different forms of involvement.
Cheers,
Ingo
> _______________________________________________
> ros-users mailing list
> ros-...@lists.ros.org
> http://lists.ros.org/mailman/listinfo/ros-users
>