Skip to content
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

Plansys2 on Astrobee Noetic #107

Merged
merged 33 commits into from
Dec 12, 2023
Merged

Conversation

Bckempa
Copy link
Contributor

@Bckempa Bckempa commented Nov 20, 2023

Provides PDPL planning and behavior tree executors using plansys2 back ported to ROS1 by @ana-GT.

Note that this adds two submodules that will need to be initialized and synced as well as a new apt installed system dependency ros-noetic-behaviortree-cpp-v3 that should be installed manually on systems that have already worked though the setup scripts processes.

Bckempa and others added 22 commits March 15, 2023 15:41
Includes placeholder directories with hyperlinked `readme.md` files in
the documentation hierarchy for the manger, planner, and bridge.

Per discussion with @marinagmoreira `survey_manager` lives under
`astrobee` to signify the code is intended for cross-compilation.
Adding planning domain, problem, and xml of the atomic actions of the robotic agents
… surveys by Marina - unfortunately causes additional planner flakiness
Attempt at a complete MVP domain model for survey planning
Includes placeholder directories with hyperlinked `readme.md` files in
the documentation hierarchy for the manger, planner, and bridge.

Per discussion with @marinagmoreira `survey_manager` lives under
`astrobee` to signify the code is intended for cross-compilation.
@Bckempa Bckempa marked this pull request as draft November 20, 2023 21:04
Copy link
Contributor

@trey0 trey0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Glad to see this coming along...

astrobee/survey_manager/survey_manager/readme.md Outdated Show resolved Hide resolved
Copy link
Contributor

@Abster101 Abster101 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving these changes.

- Remove Ubuntu-16.04 (xenial) CI builds
- Update dockerfile ubuntu version defaults to Ubuntu-20.04 (focal)
- Update apk build environment to Ubuntu-20.04 (focal)
If you have already built your VM, run `sudo apt install libreadline-dev`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Per the meeting notes here (find in page "Writing action executors"), I think we may not need these behavior tree node definitions anymore.

Instead, if we agree on the approach recommended there, we would write an ActionExecutorClient subclass that invokes Marina's Python action executor script, and a corresponding ROS node to wrap around it. And then I guess launch multiple instances of that node, configured to respond to different action types. (Or maybe it's cleaner for one ROS node to wrap multiple clients.)

@Bckempa Bckempa changed the base branch from develop to survey_manager December 11, 2023 19:48
@Bckempa Bckempa marked this pull request as ready for review December 12, 2023 19:12
@trey0 trey0 merged commit c84eff2 into nasa:survey_manager Dec 12, 2023
3 checks passed
marinagmoreira added a commit that referenced this pull request Jan 3, 2024
* Plansys2 on Astrobee Noetic (#107)

* Add `survey_manager` subdirectory without layout for survey nodes

Includes placeholder directories with hyperlinked `readme.md` files in
the documentation hierarchy for the manger, planner, and bridge.

Per discussion with @marinagmoreira `survey_manager` lives under
`astrobee` to signify the code is intended for cross-compilation.

* Improve linking to survey manager docs

* Add files via upload

Adding planning domain, problem, and xml of the atomic actions of the robotic agents

* added  files to the correct directory

* adding soft constraints problem files

* Attempt at a complete MVP domain model

* Oops, remove redundant effect

* Simplified collision checking predicate

* In a working state

* Add sample_output_plan.txt

* Oops, remove obsolete commented-out code

* Fixed stereo survey part of the model based on analysis of old stereo surveys by Marina - unfortunately causes additional planner flakiness

* Update sample_output_plan.txt to reflect latest domain/problem

* Now generate PDDL problem from higher-level problem specification

* Tune panorama estimated duration

* Add plan_interpreter.py. Minor cleanup in problem_generator.py

* Simplify dynamic config just a bit

* Add `survey_manager` subdirectory without layout for survey nodes

Includes placeholder directories with hyperlinked `readme.md` files in
the documentation hierarchy for the manger, planner, and bridge.

Per discussion with @marinagmoreira `survey_manager` lives under
`astrobee` to signify the code is intended for cross-compilation.

* Improve linking to survey manager docs

* Remove `survey_bridge` capability will be added to `astrobee`

* Add traclabs plansys2 backport via submodule, thanks @ana-GT

* Move sub-modules to `survey_manager` path

* Upgrade behaviortree to V4

NOTE: If already installed, remove V3 before installing V4

* Cleanup unused, misplaced sub-modules, again.

* Remove `survey_manager` package and organize `survey_planner`

* Deprecate Ubuntu-16.04 (xenial) builds of Isaac to support Plansys2

- Remove Ubuntu-16.04 (xenial) CI builds
- Update dockerfile ubuntu version defaults to Ubuntu-20.04 (focal)
- Update apk build environment to Ubuntu-20.04 (focal)

* Fix python formatting

* Update to forks of traclabs backports

* Add readline development files to setup for plansys2 terminal interface

If you have already built your VM, run `sudo apt install libreadline-dev`

* Removed outdated PDDL files per @trey0

#107 (comment)

* Revert CI upgrades for APK builds

---------

Co-authored-by: Abiola Akanni <[email protected]>
Co-authored-by: Trey Smith <[email protected]>

* Update ci_pr.yml

make survey manager PR's run CI

* problem_generator.py: Simplified config, and runs with default args again

* Removed run number argument from planner actions

* Add support for PlanSys2 terminal output; remove num-orders from config

* Refactor problem_generator.py to more cleanly support two output formats

* plan_interpreter.py works with default arguments again

* Update .isort.cfg using scripts/git/configure_isort_paths.sh

* jem_survey_dynamic.yaml: Remove unused run parameter.

* Fix legacy isort styling error in unrelated file so lint passes

* Added let-other-robot-reach constraint so we can solve the full problem with POPF/OPTIC

* Fix pylint and mypy complaints

* Make predicates on one line.

* update submodules

* update submodule

---------

Co-authored-by: Bckempa <[email protected]>
Co-authored-by: Abiola Akanni <[email protected]>
Co-authored-by: Trey Smith <[email protected]>
Co-authored-by: Brian Coltin <[email protected]>
marinagmoreira added a commit that referenced this pull request Jan 5, 2024
* Add `survey_manager` subdirectory without layout for survey nodes

Includes placeholder directories with hyperlinked `readme.md` files in
the documentation hierarchy for the manger, planner, and bridge.

Per discussion with @marinagmoreira `survey_manager` lives under
`astrobee` to signify the code is intended for cross-compilation.

* Improve linking to survey manager docs

* Add files via upload

Adding planning domain, problem, and xml of the atomic actions of the robotic agents

* added  files to the correct directory

* adding soft constraints problem files

* Attempt at a complete MVP domain model

* Oops, remove redundant effect

* Simplified collision checking predicate

* In a working state

* Add sample_output_plan.txt

* Oops, remove obsolete commented-out code

* Fixed stereo survey part of the model based on analysis of old stereo surveys by Marina - unfortunately causes additional planner flakiness

* Update sample_output_plan.txt to reflect latest domain/problem

* Now generate PDDL problem from higher-level problem specification

* Tune panorama estimated duration

* Add plan_interpreter.py. Minor cleanup in problem_generator.py

* Simplify dynamic config just a bit

* Add `survey_manager` subdirectory without layout for survey nodes

Includes placeholder directories with hyperlinked `readme.md` files in
the documentation hierarchy for the manger, planner, and bridge.

Per discussion with @marinagmoreira `survey_manager` lives under
`astrobee` to signify the code is intended for cross-compilation.

* Improve linking to survey manager docs

* Remove `survey_bridge` capability will be added to `astrobee`

* Add traclabs plansys2 backport via submodule, thanks @ana-GT

* Move sub-modules to `survey_manager` path

* Upgrade behaviortree to V4

NOTE: If already installed, remove V3 before installing V4

* Cleanup unused, misplaced sub-modules, again.

* Remove `survey_manager` package and organize `survey_planner`

* Deprecate Ubuntu-16.04 (xenial) builds of Isaac to support Plansys2

- Remove Ubuntu-16.04 (xenial) CI builds
- Update dockerfile ubuntu version defaults to Ubuntu-20.04 (focal)
- Update apk build environment to Ubuntu-20.04 (focal)

* Fix python formatting

* Update to forks of traclabs backports

* Add readline development files to setup for plansys2 terminal interface

If you have already built your VM, run `sudo apt install libreadline-dev`

* Removed outdated PDDL files per @trey0

#107 (comment)

* Revert CI upgrades for APK builds

* Plansys2 on Astrobee Noetic (#107)

* Add `survey_manager` subdirectory without layout for survey nodes

Includes placeholder directories with hyperlinked `readme.md` files in
the documentation hierarchy for the manger, planner, and bridge.

Per discussion with @marinagmoreira `survey_manager` lives under
`astrobee` to signify the code is intended for cross-compilation.

* Improve linking to survey manager docs

* Add files via upload

Adding planning domain, problem, and xml of the atomic actions of the robotic agents

* added  files to the correct directory

* adding soft constraints problem files

* Attempt at a complete MVP domain model

* Oops, remove redundant effect

* Simplified collision checking predicate

* In a working state

* Add sample_output_plan.txt

* Oops, remove obsolete commented-out code

* Fixed stereo survey part of the model based on analysis of old stereo surveys by Marina - unfortunately causes additional planner flakiness

* Update sample_output_plan.txt to reflect latest domain/problem

* Now generate PDDL problem from higher-level problem specification

* Tune panorama estimated duration

* Add plan_interpreter.py. Minor cleanup in problem_generator.py

* Simplify dynamic config just a bit

* Add `survey_manager` subdirectory without layout for survey nodes

Includes placeholder directories with hyperlinked `readme.md` files in
the documentation hierarchy for the manger, planner, and bridge.

Per discussion with @marinagmoreira `survey_manager` lives under
`astrobee` to signify the code is intended for cross-compilation.

* Improve linking to survey manager docs

* Remove `survey_bridge` capability will be added to `astrobee`

* Add traclabs plansys2 backport via submodule, thanks @ana-GT

* Move sub-modules to `survey_manager` path

* Upgrade behaviortree to V4

NOTE: If already installed, remove V3 before installing V4

* Cleanup unused, misplaced sub-modules, again.

* Remove `survey_manager` package and organize `survey_planner`

* Deprecate Ubuntu-16.04 (xenial) builds of Isaac to support Plansys2

- Remove Ubuntu-16.04 (xenial) CI builds
- Update dockerfile ubuntu version defaults to Ubuntu-20.04 (focal)
- Update apk build environment to Ubuntu-20.04 (focal)

* Fix python formatting

* Update to forks of traclabs backports

* Add readline development files to setup for plansys2 terminal interface

If you have already built your VM, run `sudo apt install libreadline-dev`

* Removed outdated PDDL files per @trey0

#107 (comment)

* Revert CI upgrades for APK builds

---------

Co-authored-by: Abiola Akanni <[email protected]>
Co-authored-by: Trey Smith <[email protected]>

* Update ci_pr.yml

make survey manager PR's run CI

* problem_generator.py: Simplified config, and runs with default args again

* Removed run number argument from planner actions

* Add support for PlanSys2 terminal output; remove num-orders from config

* Refactor problem_generator.py to more cleanly support two output formats

* plan_interpreter.py works with default arguments again

* Update .isort.cfg using scripts/git/configure_isort_paths.sh

* jem_survey_dynamic.yaml: Remove unused run parameter.

* Fix legacy isort styling error in unrelated file so lint passes

* Remove newlines in PDDL domain predicates to work around [1]

[1] PlanSys2/ros2_planning_system#286

* Setup planner stack for action tests

* Move submodules to avoid nested catkin packages

* Added let-other-robot-reach constraint so we can solve the full problem with POPF/OPTIC

* Fix pylint and mypy complaints

* Add `popf` package and remove vendored solver in favor of built binary

* Update plansys2 backport to fix domain validation and parameters

* Make predicates on one line.

* Update vendored libraries for cross compilation

* making submodules their own folder for organization

* updating submodule + fix bug in cmake

* only check isort files that were modified

* src dir doesn't exist anymore and usually not in include

* fix gitmodules link

* fixing PR CI

---------

Co-authored-by: Abiola Akanni <[email protected]>
Co-authored-by: Trey Smith <[email protected]>
Co-authored-by: Marina Moreira <[email protected]>
Co-authored-by: Brian Coltin <[email protected]>
Co-authored-by: Marina Moreira <[email protected]>
marinagmoreira added a commit that referenced this pull request Jan 20, 2024
* making spawn changes and adding double handed cargo

* adding a proof of concept example of the executor

* running through isort

* committing before changing things around

* sockets working

* fix lint

* adding example action node

* update to scripts with new requirements

* thread join safeguard

* running isort

* Plansys2 on Astrobee Noetic (#107)

* Add `survey_manager` subdirectory without layout for survey nodes

Includes placeholder directories with hyperlinked `readme.md` files in
the documentation hierarchy for the manger, planner, and bridge.

Per discussion with @marinagmoreira `survey_manager` lives under
`astrobee` to signify the code is intended for cross-compilation.

* Improve linking to survey manager docs

* Add files via upload

Adding planning domain, problem, and xml of the atomic actions of the robotic agents

* added  files to the correct directory

* adding soft constraints problem files

* Attempt at a complete MVP domain model

* Oops, remove redundant effect

* Simplified collision checking predicate

* In a working state

* Add sample_output_plan.txt

* Oops, remove obsolete commented-out code

* Fixed stereo survey part of the model based on analysis of old stereo surveys by Marina - unfortunately causes additional planner flakiness

* Update sample_output_plan.txt to reflect latest domain/problem

* Now generate PDDL problem from higher-level problem specification

* Tune panorama estimated duration

* Add plan_interpreter.py. Minor cleanup in problem_generator.py

* Simplify dynamic config just a bit

* Add `survey_manager` subdirectory without layout for survey nodes

Includes placeholder directories with hyperlinked `readme.md` files in
the documentation hierarchy for the manger, planner, and bridge.

Per discussion with @marinagmoreira `survey_manager` lives under
`astrobee` to signify the code is intended for cross-compilation.

* Improve linking to survey manager docs

* Remove `survey_bridge` capability will be added to `astrobee`

* Add traclabs plansys2 backport via submodule, thanks @ana-GT

* Move sub-modules to `survey_manager` path

* Upgrade behaviortree to V4

NOTE: If already installed, remove V3 before installing V4

* Cleanup unused, misplaced sub-modules, again.

* Remove `survey_manager` package and organize `survey_planner`

* Deprecate Ubuntu-16.04 (xenial) builds of Isaac to support Plansys2

- Remove Ubuntu-16.04 (xenial) CI builds
- Update dockerfile ubuntu version defaults to Ubuntu-20.04 (focal)
- Update apk build environment to Ubuntu-20.04 (focal)

* Fix python formatting

* Update to forks of traclabs backports

* Add readline development files to setup for plansys2 terminal interface

If you have already built your VM, run `sudo apt install libreadline-dev`

* Removed outdated PDDL files per @trey0

#107 (comment)

* Revert CI upgrades for APK builds

---------

Co-authored-by: Abiola Akanni <[email protected]>
Co-authored-by: Trey Smith <[email protected]>

* bug fixes

* fixes

* Update ci_pr.yml

make survey manager PR's run CI

* moving executor to different package hierarchy

* consolidating packages; action compiling

* tested action

* submodule update

* move scripts into package

* changing static config to be more general

* fixing config name + install data folder

* restoring comms to readline

* getting details sorted

* making output more readable

* installing script to be found in robot install

* adding move action starting correct process

* adding parameters for easy testing

* fixes on command astrobee

* add remaining actions + documentation

* running isort

* Use exec and waitpid instead of reading output.

* Change all action nodes to use the same class.

* install all nodes

* adding remote option with no parameter adjusting, we'll do panoramas using geometry

* reset progress after one action

* adding inspection lib; fixing output

* fixing robot install

* tested all 5 actions in the granite table

* remote plansys2 submodules from doxygen

* splitting documentation

* addressing tons of comments on PR, lab tested

* more PR reviews

* more PR reviews

* more PR reviews

---------

Co-authored-by: Bckempa <[email protected]>
Co-authored-by: Abiola Akanni <[email protected]>
Co-authored-by: Trey Smith <[email protected]>
Co-authored-by: Brian Coltin <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants