I’m a software consultant that works with a lot of startups and companies building robot or robot-like products. I’m constantly recommending ROS as the starting point for a project because it solves so much! However, some people always ask me for an example or place to start to look at how they might deploy ROS to a product in a production sort of sense and do things like updating the software and collecting ROS bags to a central server, etc.
Does anyone know if such an open-source example project exists?
I’m thinking something like the great nanosaur project, but with OTA-Software Updates and Remote logs collection as an example.
If you don’t know of one, but would be interested in the development of something like this, please give this post a like! I’m considering what it would take to create this and might start if there is sufficient interest.
I know of several industry/consumer systems from personal experience that are actively deployed and in use (one or two for sure meet your logging/update criteria), but that doesn’t meet your open-source criteria and I don’t know how much detail I can provide there anyway.
Clearpath Robotics produces/maintains a lot of the hardware in use in lab and scientific use cases. PicNik Robotics maintains the widely-used MoveIt library. Perhaps one of those would have a ‘success story’ marketing material that does what you’re looking for?
You could just build those features for TurtleBot4. it really isn’t necessary to build yet another education robot.
What we really need is people spending the time to extend and better document the robots that are already on the market.
I agree that having clear examples of some of these typical features required in a production system would be fantastic. We are especially interested in understanding standard approaches to logging and alarming as we look to transition our industrial automation systems from proprietary stacks to ROS - I’ll keep an eye on this thread to see if there are any suggestions.
And I reckon using TurtleBot or nanosaur (or both?) as the example platform would be the way to go.
Yes, I’m definitely not interested in building another educational robot kit haha, but more so interested in looking at any open-source projects around an existing kit or putting together some software around one to improve an existing design.
Was just curious if any of the kits out there had open-source implementations of these things
To answer the following,
how they might deploy ROS to a product in a production sort of sense and do things like updating the software […] OTA-Software Updates
I’d like to point you to the snap packaging which has the features listed here and more. Have a look at the dedicated robotics doc or the blog series “How to set up TurtleBot3 in minutes with snaps” in which we create a snap for the TurtleBot3 robot.
Hey @Jeremie !
Thanks for the response! Yea I’m familiar with Snap, but my understanding is it’s only really a package manager like apt or npm and doesn’t handle coordination of when a specific robot should update? It also doesn’t handle management of things like a parameter files I believe?
Maybe that is possible in Snap and I’m just not aware however.
Not open-source (yet?) but you might be interested in https://www.airbotics.io/, which is focused entirely on deployment-management for robots. cc: @airbotics
You are right in that it is a packaging solution, but it is also more than that.
With features such as strictly confined containerization - your app runs on dozens of linux distro and across releases (e.g. Humble snap running on Mint 18), OTA-delta updates, transactional update, auto-rollback shall something fail, release/version management, update management etc etc. A little more than apt
So it does not indeed manages specific things like parameter files update. But you could totally update them, issue a new snap release and deploy it (OTA-delta etc), or ship that altogether in a separate snap with a parameter manager of sort.
Do you have any links to tutorials or examples showing how to manage a fleet of ROS-bots using Snap @Jeremie that I could check out and possibly point people to?
Not sure if I understand well, you’re looking for something that is already established so you could experiment on that and possibly be able to add to the software? Tell me if I’m wrong.
In Leo Rover we’re open source, but not exactly community-made, which means we keep stuff developed internally, but show everything publicly. But, this still doesn’t limit members of the community to add something even to the defaul deployment, just we don’t focus on that actively.
If you want to check the Rover, the best way is to get into its Gazebo simulation built around what we did organising Euripean Rover Challenge. All is public and I’d say pretty accurate.
Leo rover looks like a great project, but I didn’t see any examples for how to do things like updating the software automatically (no SSH) and collecting ROS bags to a central server, etc. which is what my post was about, so I’m not sure if it is a good example to point people to.
Ah now I get it - you’re more looking for a project/piece of sotware, not exactly a harware platform. The nanosaur example misleaded me
I’d say in our case software updating could be done using the Internet connection and a simple script that would check the software version on boot, if there’s newer release on Github it would perform an update (which itself is pretty hands free in Leo). As for the ROS bags, connecting a remote storage (cloud) to Ubuntu and then using it as a directory when recording the bags should be straightforward as well.
Yet, these are not centalized methods. Even though we have production-ready software, our policy is not to interfere with the clients, so we don’t gather any data and don’t push for updates. Different perspective, I believe.