-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move demo/docker/simulation contents of demo packages within demo repository #178
Comments
Thanks for the feedback, @franklinselva. That repo structure pre-dates most people currently on the project, but @quarkytale might know why We're actually in the middle of a significant refactor aimed to resolve a similar issue between the Since we're closing in on the quarterly release I've added a note to the agenda for the next technical committee meeting to make sure this gets reviewed: #179 |
@Bckempa Considering the issues and discussions mentioned, my proposal would be unaffected for most part. This proposal can be worked comfortably on considering a solution found for building moveit2 and nav2-related layers for the docker image. I see the Will I be able to join the next technical committee meeting by any chance? |
Note that part of the previously linked issue is moving the demo docker files to the demo repo as well so it seems this is already some overlap and what you are proposing is a viable next step to improving the organization. Do I understand correctly? Meeting attendance is managed by @EzraBrooks |
@Bckempa I think there is no dependency either way. However, moving the docker files to the demo repository first will impose additional work before improving the organization (if docker files are expected to be merged to main). Reorganizing the higher level items first will help less changes to the docker files since the moveit2 and nav2 will be already staged and ready for demos package. I believe this is mostly done in the discussion #140. My thought is if the demos are not released as packages through snap/docker/apt yet, we should get started with this and let the docker design take shape in the meantime. This way, we can work on both the parts in parallel. I think making this change in a single PR would make sense. I can get started with this after the discussion in the meeting. |
@Bckempa Adding more context from the discussion on docker. The image tags |
Mostly because earlier there were plans to add the same models to play with in different demo worlds. Since the goal of demos is changing, we could reorganize. |
I think each demo should have it's own |
Agreed. Something like this for the docker entry points is expected # Canardarm demo
FROM osrf/space-ros:moveit2
... and # Rover demo
FROM osrf/space-ros:nav2
... I don't see if these two demos can be shared in the same environment. But using |
Can you share some examples of what you'd like to use Makefiles for? I'm always hesitant to add a runtime dependency without a strong use-case. |
I could think of a few usecases at the moment. I want to mention that the proposal is structuring the demos repository as a mono repo. With that said, we should have multiple examples and demos for each robot (e.g. rover can have demos related to perception, navigation, exploration, mission planning, etc.) and to keep things modular, it is better to structure each section of demos in a separate ROS package. Now, to build the demos, If I am concentrating only on perception for Rover, I am not required to build the mission planning and nav2-related examples of Rover or any other robots in general. This will save a lot of build time when the repository grows. Something like this would be useful at this point, make build curiosity_rover nav2_example # Nav2 related demo
make build curiosity_rover all # All demos of the rover Even though it is not meant to be, I sometimes take the |
why dont we use Earthfiles for something like this? they mix makefile functionality with docker functionality in a good way. |
To address this, I believe the question to be analyzed is how the demos should be built and run from this point of change? Should we still have all the demos prebuilt inside image? My idea here is to build a base docker image for a robot or a family of robots and use makefiles to build demos dynamically within the containers instead of building directly into images. |
Just to ensure everyone has the context of how we got here; like @asimonov mentioned on #107 (comment), not everyone was sold on Earthly so we decided to use it initially only for the base image build and keep the demos on Docker. Recently there has been more acceptance for moving the demos over as well which would automate many of the higher level build logic @franklinselva is referring to, but there was fairly strong consensus that at least one demo showing a vanilla docker setup should be maintained.
I agree this is the right question to ask.
I personally haven't given much thought to the demo workflow, but the system I've seen others like @mkhansenbot work toward was a preference for running multiple images over building a monolithic image. There are some major advantages to that at the cost of complexity. |
I think we have considerable acceptance now. Should I start working on this change? |
You don't need permission to work on things; however, I'm still not clear on the exact scope and timing of this change. We're still progressing on our big build-system and repo organization migration, tracked by #107. Currently we are finishing #177 including addressing the consequences like space-ros/docker#160, and then propagating the change through to the other repositories space-ros/docker#162. Are you proposing completing the reorg proposed above which would address space-ros/demos#27 and space-ros/demos#28 or something else? If you are what does that top-level docker file look like and did we resolve the monolithic vs disparate docker file discussion? You are more than welcome to open a PR with your vision for comment if you feel that is easier, or if you'd prefer for the issues listed above to filter though so you can assess their impact we can try to hammer out the design here a bit more. |
Having worked with the build system closely, I think most of the issues listed in #107 don't need to be carried down. #177 is already handled by #186 to an extent which needs to be split down to stick with the guidelines and NASA standards (I will still need some help on this). To expand on the situation for #107, I have created a new issue #188 which should help determine the changes needed before proceeding. This is what I would propose to be done in order
This leaves the other changes of the demo to be performed in parallel. I believe the above list is essential and has ended up as a part of restructuring the organization's content. |
resolves space-ros/space-ros#178 - Add canadarm_description - Fix model asset paths - Reverse control configuration for canadarm model
resolves space-ros/space-ros#178 - Add curiosity_description - Strip third party dependencies of mars_rover
resolves space-ros/space-ros#178 - Fix control parameters for curiosity_description - Move curiosity_path world to curiosity_gazebo - Add launch file for spinning of gazebo world
related to space-ros/space-ros#178 - Cleaned up rover launch file for the demo - Updated comments for demo node
related to space-ros/space-ros#178 - Add dockerfile for demo - Add makefile for build, run and clean automation
related to space-ros/space-ros#178 - Add README.md for Curiosity Rover demo - Update Main README.md of the demos repository
resolves space-ros/space-ros#178 - Add canadarm_description package - Move earth and iss world models to canadarm_gazebo
related to space-ros/space-ros#178 - Cleaned up canadarm launch file for the demo - Updated comments for demo node - Strip Moveit Redundant Node - Cleanup packages.xml - Remove ros control parameters for gazebo
related to space-ros/space-ros#178 - Add README.md for Canadarm2 demo - Update Main README.md of the demos repository
Related to space-ros/space-ros#178 - Update package.xml for canadarm2 packages - Update package.xml for curiosity_rover packages
Related to space-ros/space-ros#178 - Revert the purpose of makefiles - Add a new shell script for building and running the demos - Update README.md for shell script usage
Related to space-ros/space-ros#178 Related to space-ros#18 - Moved the simulation assets to space-ros/demos#31 - Repurpose the repository for the simulation assets of Nvidia's Isaac Sim
@franklinselva super minor nit, but would you mind updating the issue title to be a bit more specific? Every time I triage I forget exactly what it is referring to since the current wording is very broad and since it is hosted in the space-ros repo seems to imply work to be done here rather than docker/demos/simulation, etc. |
Sure. I will do that. We can also move this issue if it is easier. |
I think it is fine to keep it in this repo since it touches so many, just the title update helps when sorting through all the open issues. Thanks! |
Related to space-ros/space-ros#178 - Remove makefiles for canadarm2 and curiosity rover demo - Add build.sh for building canadarm2 and curiosity rover demo - Add run.sh for running the demos - Update README.md of demos to the new process
Related to space-ros/space-ros#178 Related to space-ros#18 - Moved the simulation assets to space-ros/demos#31 - Repurpose the repository for the simulation assets of Nvidia's Isaac Sim
resolves space-ros/space-ros#178 - Add canadarm_description - Fix model asset paths - Reverse control configuration for canadarm model
resolves space-ros/space-ros#178 - Add curiosity_description - Strip third party dependencies of mars_rover
resolves space-ros/space-ros#178 - Fix control parameters for curiosity_description - Move curiosity_path world to curiosity_gazebo - Add launch file for spinning of gazebo world
related to space-ros/space-ros#178 - Cleaned up rover launch file for the demo - Updated comments for demo node
related to space-ros/space-ros#178 - Add dockerfile for demo - Add makefile for build, run and clean automation
related to space-ros/space-ros#178 - Add README.md for Curiosity Rover demo - Update Main README.md of the demos repository
resolves space-ros/space-ros#178 - Add canadarm_description package - Move earth and iss world models to canadarm_gazebo
related to space-ros/space-ros#178 - Cleaned up canadarm launch file for the demo - Updated comments for demo node - Strip Moveit Redundant Node - Cleanup packages.xml - Remove ros control parameters for gazebo
related to space-ros/space-ros#178 - Add README.md for Canadarm2 demo - Update Main README.md of the demos repository
Related to space-ros/space-ros#178 - Update package.xml for canadarm2 packages - Update package.xml for curiosity_rover packages
Related to space-ros/space-ros#178 - Remove makefiles for canadarm2 and curiosity rover demo - Add build.sh for building canadarm2 and curiosity rover demo - Add run.sh for running the demos - Update README.md of demos to the new process
related to space-ros/space-ros#178 - Add README.md for Curiosity Rover demo - Update Main README.md of the demos repository
related to space-ros/space-ros#178 - Add README.md for Curiosity Rover demo - Update Main README.md of the demos repository
related to space-ros/space-ros#178 - Add README.md for Curiosity Rover demo - Update Main README.md of the demos repository
I am trying to run the demos from space-ros and realized I need to clone three different repositories to play with the nodes and scripts since each one is coupled with the other. I see why it is detached and coupled in specific areas using
vcs
tool. But the question is why the approach is set up the way it has been.The trouble of starting this issue somewhere different than the
demos
repository is already hinting at the confusion that will arise. I recently came across this comment and the issue didn't fit in the repository either. Plus, I feel the changes represented in this comment are hard for both the developers and reviewers to work with.Scenarios
I want to run the demos using dockerization, meaning I need to clone the
docker
repository and not thedemos
repo. This is misleading since the way I can kick off the demos is by building the docker images from thedocker
repo.Feature request
Reorganize the structure so the demos can be run in a much simpler way
Feature description
The demos are meant to be a quick start and entry guide for new developers into the space-ros. This means there is less need to isolate the simulation assets from the demo packages. I feel like the simulation assets and the corresponding demo ros packages can be coupled together by repackaging the
simulation
repository to berover-description
andcanardarm-description
. The essence of docker can be added to thedemos
repository directly instead of setting up at the organization level.What this feature can offer
Implementation considerations
The
demos
repository could be structured something like this.This is going to be a breaking change if the request is accepted and is assigned to the milestone. But this will remove the need for two organization-level repositories
simulation
anddocker
and easier management of changes in the longer run.The text was updated successfully, but these errors were encountered: