[ros-users] rosinstall refactoring

Thibault Kruse kruset at in.tum.de
Wed May 18 17:35:18 UTC 2011


Hi ROS users,

I quite like the rosinstall tool for all the magic it provides. However
my personal intuition from my experience is that it is a bit complex to
understand for beginners with ROS (who are busy learning plenty of other
ROS concepts). As a consequence, I observed several new ROS users from
shying away from rosinstall and creating ROS_PKG_PATH and such manually,
or modifying setup.sh manually, with results that vary with the users
unix skills.

So I suggest to change rosinstall to use an SCM-like command
distinction.

Assuming that current rosinstall Signature is: rosinstall PATH
{/path/to/URI}*

Signature change:

rosinstall init PATH? /path/to/ros {/path/to/URI}*
rosinstall add PATH? {/path/to/URI}*
rosinstall change-ros /path/to/ros
rosinstall remove PATH? {localname}*
rosinstall update PATH?
rosinstall info PATH?
rosinstall sort PATH? {localpath}*

Semantics:

init: generates .rosenv and setup.sh, etc.
info: lists ROS_ROOT and localpaths registered in .rosenv (plus info
like SCM URI)
add: adds uri, calls rosmake, etc. in new ones, updates setup.sh, etc.
change-ros: selects a different local dir to use as ros root
remove: removes localpath from .rosinstall, updates setup.sh, etc.
update: calls SCM update and rosmake, etc.
sort: changes order in setup.sh, etc.
When PATH is omitted, use "." for all except create

Rationale:

Reduce FUD (Fear, Uncertainty, Doubt) about rosinstall

Allows changes to .rosinstall to be made by tool rather than editing
the .rosinstall file (such as removing a path)

Breaking down functionality helps self-explaining of the tool

Having the user specify his intention allows to generate
context-specific error messages, options and help

Also this makes it easier to extend rosinstall with other functions, and
to use rosintall in scripts (e.g. provide a curses/tk-based rosinstall
ui).

Changes in workflow: rosinstall workflow remains almost unchanged. New
users do not get confused by signature syntax being the same for
different purposes

Risks:

Never change a running system + Keep it simple stupid.
However, core functionality of rosinstall remains unchanged, and
simplicity is in the eye of the beholder.


I would be happy to hear your thoughts on that, and I volunteer to make
the required changes if the community were in favor.

In particular, I would like to know:
Do you share my intuition that rosinstall as it is now creates FUD?
Do you approve of the change I suggest?
Do you know further commands that you would like to see included in
rosinstall?


best regards,
  Thibault Kruse




More information about the ros-users mailing list