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

Basic Survey Planning #114

Merged
merged 66 commits into from
Jan 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
f9d1aa4
Add `survey_manager` subdirectory without layout for survey nodes
Bckempa Mar 15, 2023
d69c396
Improve linking to survey manager docs
Bckempa Mar 15, 2023
fe13ff0
Add files via upload
Abster101 Mar 20, 2023
303a939
added files to the correct directory
Abster101 Mar 20, 2023
6333681
adding soft constraints problem files
Abster101 Apr 4, 2023
f095687
Attempt at a complete MVP domain model
trey0 Oct 25, 2023
369591a
Oops, remove redundant effect
trey0 Oct 25, 2023
31a9477
Simplified collision checking predicate
trey0 Oct 25, 2023
e7a8785
In a working state
trey0 Oct 27, 2023
fa9c324
Add sample_output_plan.txt
trey0 Oct 27, 2023
e1d1c6c
Oops, remove obsolete commented-out code
trey0 Oct 27, 2023
191b0c4
Fixed stereo survey part of the model based on analysis of old stereo…
trey0 Nov 9, 2023
5d4d797
Update sample_output_plan.txt to reflect latest domain/problem
trey0 Nov 9, 2023
5513601
Now generate PDDL problem from higher-level problem specification
trey0 Nov 9, 2023
4761d7a
Tune panorama estimated duration
trey0 Nov 9, 2023
d64a8ef
Add plan_interpreter.py. Minor cleanup in problem_generator.py
trey0 Nov 9, 2023
c73d55d
Simplify dynamic config just a bit
trey0 Nov 9, 2023
2b2f5d9
Merge pull request #1 from trey0/planner_model
Bckempa Nov 15, 2023
9da4f5d
Add `survey_manager` subdirectory without layout for survey nodes
Bckempa Mar 15, 2023
86ad3b2
Improve linking to survey manager docs
Bckempa Mar 15, 2023
f87f569
Remove `survey_bridge` capability will be added to `astrobee`
Bckempa Nov 7, 2023
3239e38
Add traclabs plansys2 backport via submodule, thanks @ana-GT
Bckempa Nov 15, 2023
bc69c22
Move sub-modules to `survey_manager` path
Bckempa Nov 21, 2023
0e73b41
Upgrade behaviortree to V4
Bckempa Nov 21, 2023
500a443
Cleanup unused, misplaced sub-modules, again.
Bckempa Nov 21, 2023
1487f6b
Merge branch 'survey_manager' into survey_planner
Bckempa Nov 28, 2023
f5d60dd
Remove `survey_manager` package and organize `survey_planner`
Bckempa Nov 28, 2023
799de4b
Deprecate Ubuntu-16.04 (xenial) builds of Isaac to support Plansys2
Bckempa Dec 7, 2023
d7780f3
Fix python formatting
Bckempa Dec 7, 2023
1faed30
Update to forks of traclabs backports
Bckempa Dec 7, 2023
ba10b12
Add readline development files to setup for plansys2 terminal interface
Bckempa Dec 7, 2023
892bc39
Removed outdated PDDL files per @trey0
Bckempa Dec 12, 2023
78b0f40
Revert CI upgrades for APK builds
Bckempa Dec 12, 2023
c84eff2
Plansys2 on Astrobee Noetic (#107)
Bckempa Dec 12, 2023
2647bac
Update ci_pr.yml
marinagmoreira Dec 14, 2023
16fa901
problem_generator.py: Simplified config, and runs with default args a…
trey0 Dec 18, 2023
76223a0
Removed run number argument from planner actions
trey0 Dec 18, 2023
574cb88
Add support for PlanSys2 terminal output; remove num-orders from config
trey0 Dec 19, 2023
9dba17c
Refactor problem_generator.py to more cleanly support two output formats
trey0 Dec 19, 2023
43d453e
plan_interpreter.py works with default arguments again
trey0 Dec 19, 2023
4016f26
Update .isort.cfg using scripts/git/configure_isort_paths.sh
trey0 Dec 19, 2023
c7bc8ec
jem_survey_dynamic.yaml: Remove unused run parameter.
trey0 Dec 19, 2023
33e62c7
Fix legacy isort styling error in unrelated file so lint passes
trey0 Dec 19, 2023
f607b5c
Merge remote-tracking branch 'upstream/develop' into survey_planner
Bckempa Dec 21, 2023
af9d74e
Merge remote-tracking branch 'trey0/problem_gen_fixes' into survey_pl…
Bckempa Dec 21, 2023
0707dd1
Remove newlines in PDDL domain predicates to work around [1]
Bckempa Dec 21, 2023
bf514c2
Setup planner stack for action tests
Bckempa Dec 21, 2023
059b3eb
Move submodules to avoid nested catkin packages
Bckempa Dec 21, 2023
c186b58
Added let-other-robot-reach constraint so we can solve the full probl…
trey0 Dec 21, 2023
3091d4a
Fix pylint and mypy complaints
trey0 Dec 21, 2023
52c83f6
Add `popf` package and remove vendored solver in favor of built binary
Bckempa Dec 22, 2023
758e25b
Update plansys2 backport to fix domain validation and parameters
Bckempa Dec 22, 2023
8a3db0c
Make predicates on one line.
bcoltin Dec 26, 2023
a378d01
Merge pull request #112 from trey0/problem_gen_fixes
Bckempa Dec 27, 2023
9a55568
Merge remote-tracking branch 'upstream/survey_manager' into survey_pl…
Bckempa Dec 27, 2023
670af7f
Update vendored libraries for cross compilation
Bckempa Jan 3, 2024
6bf2b75
Merge branch 'develop' of github.com:nasa/isaac into survey_planner
marinagmoreira Jan 3, 2024
1871bcf
Merge branch 'survey_planner' of github.com:Bckempa/isaac into survey…
marinagmoreira Jan 3, 2024
24ce517
making submodules their own folder for organization
marinagmoreira Jan 3, 2024
70c8eb5
updating submodule + fix bug in cmake
marinagmoreira Jan 3, 2024
1555212
Merge branch 'develop' into survey_planner
marinagmoreira Jan 4, 2024
690baee
only check isort files that were modified
marinagmoreira Jan 4, 2024
d3e7517
src dir doesn't exist anymore and usually not in include
marinagmoreira Jan 4, 2024
9a9acef
Merge branch 'survey_planner' of github.com:Bckempa/isaac into survey…
marinagmoreira Jan 4, 2024
b91c11f
fix gitmodules link
marinagmoreira Jan 4, 2024
6484d50
fixing PR CI
marinagmoreira Jan 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 10 additions & 5 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
[submodule "isaac_msgs"]
path = communications/isaac_msgs
url = https://github.com/nasa/isaac_msgs.git
[submodule "astrobee/survey_manager/survey_planner/src/ros2_planning_system"]
path = astrobee/survey_manager/survey_planner/src/ros2_planning_system
[submodule "ros2_planning_system"]
path = astrobee/survey_manager/survey_dependencies/ros2_planning_system
url = https://github.com/bckempa/ros2_planning_system
branch = noetic-devel
[submodule "astrobee/survey_manager/survey_planner/src/ros1_lifecycle"]
path = astrobee/survey_manager/survey_planner/src/ros1_lifecycle
url = https://github.com/bckempa/ros1_lifecycle
[submodule "ros1_lifecycle"]
path = astrobee/survey_manager/survey_dependencies/ros1_lifecycle
url = https://github.com/bckempa/ros1_lifecycle.git
branch = noetic-devel
[submodule "popf"]
path = astrobee/survey_manager/survey_dependencies/popf
url = https://github.com/Bckempa/popf.git
branch = noetic-devel

1 change: 1 addition & 0 deletions astrobee/survey_manager/survey_dependencies/popf
Submodule popf added at 13b2a5
38 changes: 38 additions & 0 deletions astrobee/survey_manager/survey_planner/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Copyright (c) 2023, United States Government, as represented by the
# Administrator of the National Aeronautics and Space Administration.
#
# All rights reserved.
#
# The "ISAAC - Integrated System for Autonomous and Adaptive Caretaking
# platform" software is licensed under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

cmake_minimum_required(VERSION 2.8.3)
project(survey_planner)

add_compile_options(-std=c++17)

find_package(catkin REQUIRED)
SET(catkin2_DIR "${CMAKE_SOURCE_DIR}/../../../cmake")
find_package(catkin2 REQUIRED COMPONENTS
roscpp
ff_msgs
)

catkin_package(
CATKIN_DEPENDS
)

foreach( dir pddl launch)
install( DIRECTORY ${dir}/
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/${dir} )
endforeach(dir)
43 changes: 43 additions & 0 deletions astrobee/survey_manager/survey_planner/launch/survey_domain.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?xml version="1.0"?>
<launch>

<!-- arguments -->
<arg name="model_file" default="$(find survey_planner)/pddl/domain_survey.pddl"/>
<arg name="namespace" default="" />
<arg name="params_file" default="$(find plansys2_bringup)/params/plansys2_params.yaml" />

<!-- true: There is a lifecycle management node for the Lifecycles nodes. If false, the nodes start on their own -->
<param name="lifecycle_enabled" value="true"/>

<!-- Domain Expert -->
<include file="$(find plansys2_domain_expert)/launch/domain_expert.launch">
<arg name="model_file" value="$(arg model_file)"/>
<arg name="namespace" value="$(arg namespace)"/>
<arg name="params_file" value="$(arg params_file)"/>
</include>

<!-- Problem Expert -->
<include file="$(find plansys2_problem_expert)/launch/problem_expert.launch">
<arg name="model_file" value="$(arg model_file)"/>
<arg name="namespace" value="$(arg namespace)"/>
<arg name="params_file" value="$(arg params_file)"/>
</include>

<!-- Planner -->
<include file="$(find plansys2_planner)/launch/planner.launch">
<arg name="namespace" value="$(arg namespace)"/>
<arg name="params_file" value="$(arg params_file)"/>
</include>

<!-- Executor -->
<include file="$(find plansys2_executor)/launch/executor.launch">
<arg name="namespace" value="$(arg namespace)"/>
<arg name="params_file" value="$(arg params_file)"/>
</include>

<!-- Manager -->
<node name="lifecycle_manager_node" pkg="plansys2_lifecycle_manager" type="lifecycle_manager_node" output="screen">
</node>

</launch>

34 changes: 34 additions & 0 deletions astrobee/survey_manager/survey_planner/package.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0"?>
<package format="2">
<name>survey_planner</name>
<version>0.1.0</version>
<description>PDDL Planning via Plansys2 on ROS1 Noetic for Astrobee</description>
<license>
Apache License, Version 2.0
</license>
<author email="astrobee-fsw@nx.arc.nasa.gov">
ISAAC Flight Software
</author>
<maintainer email="astrobee-fsw@nx.arc.nasa.gov">
ISAAC Flight Software
</maintainer>

<buildtool_depend>catkin</buildtool_depend>

<depend>roscpp</depend>
<depend>std_srvs</depend>
<depend>lifecycle_msgs</depend>

<depend>plansys2_domain_expert</depend>
<depend>plansys2_problem_expert</depend>
<depend>plansys2_executor</depend>
<depend>plansys2_planner</depend>
<depend>plansys2_msgs</depend>
<depend>tf</depend>

<depend>ff_msgs</depend>

<export>
<nodelet plugin="${prefix}/nodelet_plugins.xml" />
</export>
</package>
5 changes: 3 additions & 2 deletions scripts/docker/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -127,10 +127,11 @@ export MAST_PATH=${mast_source}
######################################################################

files=" -f ${thisdir}/docker_compose/ros.docker-compose.yml"
files+=" -f ${thisdir}/docker_compose/isaac.docker-compose.build.yml"
files+=" -f ${thisdir}/docker_compose/isaac.docker-compose.yml"

if [ $REMOTE == "" ]; then
files+=" -f ${thisdir}/docker_compose/astrobee.docker-compose.build.yml"
files+=" -f ${thisdir}/docker_compose/astrobee.docker-compose.yml"
fi

if [ "$os" == "focal" ]; then
Expand All @@ -144,4 +145,4 @@ if [ $mast == 1 ]; then
files+=" -f ${script_dir}/docker_compose/mast.docker-compose.yml"
fi

docker compose ${files} build
docker compose ${files} -p isaac build
10 changes: 0 additions & 10 deletions scripts/docker/docker_compose/astrobee.docker-compose.build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,8 @@ services:
- astrobee-base

isaac-astrobee:
image: ${REMOTE:-isaac}/isaac:latest-astrobee-ubuntu${UBUNTU_VERSION}
build:
context: ${ISAAC_PATH}
dockerfile: ${ISAAC_PATH}/scripts/docker/isaac_astrobee.Dockerfile
args:
UBUNTU_VERSION: ${UBUNTU_VERSION:-20.04}
REMOTE: ${REMOTE:-astrobee}
ROS_VERSION: ${ROS_VERSION:-noetic}
PYTHON: ${PYTHON:-3}
links:
- astrobee

isaac:
links:
- isaac-astrobee
Expand Down
28 changes: 28 additions & 0 deletions scripts/docker/docker_compose/isaac.docker-compose.build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
version: "3.9"
services:
isaac-astrobee:
image: ${REMOTE:-isaac}/isaac:latest-astrobee-ubuntu${UBUNTU_VERSION}
build:
context: ${ISAAC_PATH}
dockerfile: ${ISAAC_PATH}/scripts/docker/isaac_astrobee.Dockerfile
args:
UBUNTU_VERSION: ${UBUNTU_VERSION:-20.04}
REMOTE: ${REMOTE:-astrobee}
ROS_VERSION: ${ROS_VERSION:-noetic}
PYTHON: ${PYTHON:-3}

isaac:
image: ${REMOTE:-isaac}/isaac:latest-ubuntu${UBUNTU_VERSION}
build:
context: ${ISAAC_PATH}
dockerfile: ${ISAAC_PATH}/scripts/docker/isaac.Dockerfile
args:
UBUNTU_VERSION: ${UBUNTU_VERSION:-20.04}
REMOTE: ${REMOTE:-isaac}
ROS_VERSION: ${ROS_VERSION:-noetic}
PYTHON: ${PYTHON:-3}
links:
- isaac-astrobee



Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,6 @@ version: "3.9"
services:
isaac:
image: ${REMOTE:-isaac}/isaac:latest-ubuntu${UBUNTU_VERSION}
build:
context: ${ISAAC_PATH}
dockerfile: ${ISAAC_PATH}/scripts/docker/isaac.Dockerfile
args:
UBUNTU_VERSION: ${UBUNTU_VERSION:-20.04}
REMOTE: ${REMOTE:-isaac}
ROS_VERSION: ${ROS_VERSION:-noetic}
PYTHON: ${PYTHON:-3}
entrypoint: "/ros_entrypoint.sh"
command: ${cmd}
hostname: isaac
Expand Down
14 changes: 10 additions & 4 deletions scripts/docker/isaac_astrobee.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,16 @@ FROM ${REMOTE}/astrobee:latest-ubuntu${UBUNTU_VERSION}
ARG ROS_VERSION=noetic
ARG PYTHON=3

RUN apt-get update && apt-get install -y \
libmnl-dev \
ros-${ROS_VERSION}-eigen-conversions \
ros-${ROS_VERSION}-pcl-ros \
# Install isaac souce dependecies
COPY ./scripts/setup/*.sh /setup/isaac/
COPY ./scripts/setup/dependencies /setup/isaac/dependencies
RUN apt-get update \
&& /setup/isaac/build_install_dependencies.sh \
&& rm -rf /var/lib/apt/lists/*

# Install isaac package dependencies
COPY ./scripts/setup/packages*.lst /setup/isaac/
RUN /setup/isaac/install_desktop_packages.sh \
&& rm -rf /var/lib/apt/lists/*

# Minimal isaac robot folders
Expand Down
4 changes: 2 additions & 2 deletions scripts/git/pre-commit.linter_python
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,11 @@ echo " Analysing python code style with 'isort'."
# could happen for example if the .isort.cfg src_paths list gets out
# of date.

if $(isort . --extend-skip cmake --profile black --diff --check-only --quiet >/dev/null); then
if $(isort ${py_changed} --profile black --diff --check-only --quiet >/dev/null); then
echo "Linter checks using 'isort' passed."
else
echo "Errors detected with 'isort'. Fixing them. Try to add and commit your files again."
isort . --extend-skip cmake --profile black >/dev/null
isort ${py_changed} --profile black >/dev/null
failed_lint=true
fi

Expand Down
9 changes: 7 additions & 2 deletions scripts/setup/packages_focal.lst
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,14 @@ doxygen
python3-catkin-tools
python3-osrf-pycommon
python3-rosdep
libreadline-dev
ros-noetic-eigen-conversions
ros-noetic-pcl-ros
ros-noetic-behaviortree-cpp
libmnl-dev
libproj-dev
libreadline-dev
ros-noetic-behaviortree-cpp
coinor-libcbc-dev
coinor-libclp-dev
coinor-libcoinutils-dev
bison
flex