If the developer wants to send a ROS2 application to other (none technical) users, how would they go about packaging everything (dependencies, ROS2, DDS) into one standalone executable, or set of executables? They should not need to go through the ROS2 developer setup process. It should be a simple executable or an installer.

On Linux it looks like the solution is to use snaps, however this does not work on Windows. Docker for Windows is one solution, but that also involves technical expertise. I would like to send the binary (executable or installer) as a download to the user.

What are the current options to do this, and what the pros and cons of each? Would py2Exe or pyinstaller work for rclpy nodes? And is this an area that the ROS2 developers are looking into improving?

  • $\begingroup$ What would the application do? would it be paired with a physical robot? $\endgroup$
    – Chase
    Jan 25 at 2:38
  • $\begingroup$ Potentially. Although the robot and application would be used by a robot operator, not an engineer. Alternatively, the node could be a robot simulator, or a robot graphical user interface. $\endgroup$
    – Blue7
    Jan 25 at 9:00
  • $\begingroup$ *Or other software tool $\endgroup$
    – Blue7
    Jan 25 at 13:00
  • $\begingroup$ You could look at deploying it as an android app, using the android subsystem for windows like Amazon kindle does. Could also use a labview interface, web interface, or just a qt interface that doesn’t use ros but communicates with ethercat/can and a node on the robot that translates those comms to ROS. Just a few ideas $\endgroup$
    – Chase
    Jan 25 at 14:46
  • $\begingroup$ It needs to run on Windows computers I'm afraid. And the whole system needs to run on Windows computers, not just a none-ros2 GUI. I'd like to package all of the dependencies into one thing, so the end-user can simply start the application and it work, without having to install ROS2 first. Sending Virtual Machine Images has been the best solution we have found so far, but that is very heavyweight. A piece of software should not need a whole OS virtual machine sent with it to run. $\endgroup$
    – Blue7
    Jan 25 at 16:33


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.