Creating a web interface for a ROS robot
Hi, I want to create a web interface for controlling my ROS application.
Some of the interface will be very generic for machine control: e.g. screens like "main overview", "setup", "job control" with start/stop/options etc.. User login also required.
I recognize much if this is not very ROS specific except for the controls that needs to interact with the ROS topics/services/actions, but on the other hand it is very generic so I hope work exists that I could benefit from.
I hope to find some good advice here.
- Maybe some ROS projects comes with much of this as a good starting point?
- Any tutorials that demonstrate a solution to look at?
- Maybe something that demonstrates a full robot web application with angular or react (which I don't know much about either)?
As someone who has only used html/css/php 15 years ago, and never used javascript I am in bit in doubt where to start.
- Will I need to install a fullfledged webserver like Apache or does some ROS package provide a more dedicated web server?
I have found several packages that could be part of the solution, but most of them look rather old and unmaintained. Feel free to comment on:
Rostful ... latest commit is 5 years ago. However I like that it aims for: "services, topics, and actions to be provided as web services ... without exposing underlying ROS concepts"
Rosauth ... authentication is a must-have, but I am not really sure how I glue this in.
WebUI ... old and unmaintained. Specific to PR2 robot.
Robot Web Tools Seems like a good and up-to-date resource, but I am not sure how much of the stack it contains.
Ros Industrial ... mentions future plans for "standard industrial UI" which could be exactly what I need. Do open source projects already exists with such a (fairly standard) web UI to start from?
One 'industrial option': ros-industrial/flexgui_industrial.
There's also some discussion on ROS Discourse: QtQuick support for RViz to build fancy HMIs.
Robot web tools has full applications under Tools->Systems. Check them out. Since I don't think that there is a single good answer to your questions I suggest to do some basic javascript tutorials first and make yourself comfortable in backend & frontend.
Thanks for these inputs. Flexgui looks interesting, I will give it a try. The robot web tools also looks interesting: rms looks good but maybe no longer actively developed.
ros-control-center seems actively maintained, very basic, maybe too basic. rosweb looks very limited. Let me know if anyone has concrete experiences with some of these systems.