Skip to content

Commit

Permalink
Release 0.15.0 (#238)
Browse files Browse the repository at this point in the history
* Perching functional
* Ubuntu 20 compatibility
* Added astrobee to astrobee coms
* Various other fixes/software improvements
  • Loading branch information
marinagmoreira authored Jul 22, 2021
1 parent c849666 commit e09fba1
Show file tree
Hide file tree
Showing 233 changed files with 6,810 additions and 1,598 deletions.
28 changes: 22 additions & 6 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:

jobs:

build-kinetic:
build-xenial:

runs-on: ubuntu-16.04

Expand All @@ -19,12 +19,12 @@ jobs:
run: git submodule update --init --depth 1 description/media

- name: Build code for Ubuntu 16
run: docker build . -f ./scripts/docker/astrobee_kinetic.Dockerfile -t astrobee/astrobee:latest-kinetic
run: docker build . -f ./scripts/docker/astrobee_xenial.Dockerfile -t astrobee/astrobee:latest-xenial

- name: Test code
run: docker build . -f ./scripts/docker/test_astrobee_kinetic.Dockerfile -t test
run: docker build . -f ./scripts/docker/test_astrobee_xenial.Dockerfile -t test

build-melodic:
build-bionic:

runs-on: ubuntu-18.04

Expand All @@ -35,7 +35,23 @@ jobs:
run: git submodule update --init --depth 1 description/media

- name: Build code for Ubuntu 18
run: docker build . -f ./scripts/docker/astrobee_melodic.Dockerfile -t astrobee/astrobee:latest-melodic
run: docker build . -f ./scripts/docker/astrobee_bionic.Dockerfile -t astrobee/astrobee:latest-bionic

- name: Test code
run: docker build . -f ./scripts/docker/test_astrobee_melodic.Dockerfile -t test
run: docker build . -f ./scripts/docker/test_astrobee_bionic.Dockerfile -t test

build-focal:

runs-on: ubuntu-20.04

steps:
- uses: actions/checkout@v2

- name: Checkout submodule
run: git submodule update --init --depth 1 description/media

- name: Build code for Ubuntu 20
run: docker build . -f ./scripts/docker/astrobee_focal.Dockerfile -t astrobee/astrobee:latest-focal

- name: Test code
run: docker build . -f ./scripts/docker/test_astrobee_focal.Dockerfile -t test
43 changes: 14 additions & 29 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
cmake_minimum_required(VERSION 3.0)
project(Astrobee)

set(ASTROBEE_VERSION 0.14.3)
set(ASTROBEE_VERSION 0.15.0)

# Define our options
option(USE_CCACHE
Expand Down Expand Up @@ -85,7 +85,7 @@ if(DEFINED ENV{ROS_DISTRO})
set(ROS_FOUND TRUE)
else()
message("ROS distro variable not set. Trying to figure it out...")
set(AVAILABLE_ROS_VERSIONS "melodic;lunar;kinetic;jade;indigo")
set(AVAILABLE_ROS_VERSIONS "melodic;kinetic;noetic")
set(ROS_FOUND FALSE)
foreach(version ${AVAILABLE_ROS_VERSIONS})
if(NOT ROS_FOUND)
Expand All @@ -110,17 +110,9 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/cmake")

if (USE_CTC)
if("${ROS_DISTRO}" STREQUAL "kinetic")
list(APPEND CMAKE_PREFIX_PATH "${ARM_CHROOT_DIR}/opt/ros/kinetic")
elseif("${ROS_DISTRO}" STREQUAL "melodic")
list(APPEND CMAKE_PREFIX_PATH "${ARM_CHROOT_DIR}/opt/ros/melodic")
endif()
list(APPEND CMAKE_PREFIX_PATH "${ARM_CHROOT_DIR}/opt/ros/${ROS_DISTRO}")
else (USE_CTC)
if("${ROS_DISTRO}" STREQUAL "kinetic")
list(APPEND CMAKE_PREFIX_PATH "/opt/ros/kinetic")
elseif("${ROS_DISTRO}" STREQUAL "melodic")
list(APPEND CMAKE_PREFIX_PATH "/opt/ros/melodic")
endif()
list(APPEND CMAKE_PREFIX_PATH "/opt/ros/${ROS_DISTRO}")
endif (USE_CTC)

# Enable RPATHs
Expand All @@ -130,11 +122,7 @@ set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
# The following works for then the binaries are not installed, but are
# ran from the build directory.
list(APPEND CMAKE_INSTALL_RPATH "$ORIGIN/../lib")
if("${ROS_DISTRO}" STREQUAL "kinetic")
list(APPEND CMAKE_INSTALL_RPATH "/opt/ros/kinetic/lib")
elseif("${ROS_DISTRO}" STREQUAL "melodic")
list(APPEND CMAKE_INSTALL_RPATH "/opt/ros/melodic/lib")
endif()
list(APPEND CMAKE_INSTALL_RPATH "/opt/ros/${ROS_DISTRO}/lib")

# The following RPATHs work for when the binaries are installed
if (USE_CTC)
Expand All @@ -152,13 +140,13 @@ else(USE_STATIC_LIBS)
set(BUILD_SHARED_LIBS ON)
endif(USE_STATIC_LIBS)

# Check that the compiler supports C++11
# Check that the compiler supports C++14
include(CheckCXXCompilerFlag)
include(CheckCXXSourceCompiles)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX14)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
if(COMPILER_SUPPORTS_CXX14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
elseif(COMPILER_SUPPORTS_CXX0X)
SET(LAMBDA_SRC "int main(int, char*[]) {int r = [] (int x) {return x;}(0); return r;}")
CHECK_CXX_SOURCE_COMPILES("${LAMBDA_SRC}" COMPILER_SUPPORTS_LAMBDAS)
Expand All @@ -168,7 +156,7 @@ elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
endif()
else()
message(SEND_ERROR "Couldn't find compiler which supports C++11 or C++0X.")
message(SEND_ERROR "Couldn't find compiler which supports C++14 or C++0X.")
endif()

if (TEST_COVERAGE)
Expand Down Expand Up @@ -288,8 +276,8 @@ if(USE_CTC)
set(BUILD_LOC_RVIZ_PLUGINS OFF)
endif()

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-unused-local-typedefs -Wno-packed-bitfield-compat -std=c++11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unused-local-typedefs -Wno-packed-bitfield-compat -std=c++11")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-unused-local-typedefs -Wno-packed-bitfield-compat -std=c++14")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unused-local-typedefs -Wno-packed-bitfield-compat -std=c++14")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-undefined")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")

Expand Down Expand Up @@ -338,11 +326,7 @@ if (USE_ROS)
find_package(Octomap MODULE REQUIRED)
#pkg_check_modules(OROCOS_KDL REQUIRED orocos_kdl)
if (USE_CTC)
if("${ROS_DISTRO}" STREQUAL "kinetic")
set(OROCOS_KDL_LIBRARIES ${ARM_CHROOT_DIR}/opt/ros/kinetic/lib/liborocos-kdl.so)
elseif("${ROS_DISTRO}" STREQUAL "melodic")
set(OROCOS_KDL_LIBRARIES ${ARM_CHROOT_DIR}/opt/ros/melodic/lib/liborocos-kdl.so)
endif()
set(OROCOS_KDL_LIBRARIES ${ARM_CHROOT_DIR}/opt/ros/${ROS_DISTRO}/lib/liborocos-kdl.so)
endif (USE_CTC)
set(catkin_FOUND ${catkin2_FOUND})
endif(USE_ROS)
Expand Down Expand Up @@ -424,3 +408,4 @@ add_subdirectory(localization)
if (USE_DDS)
add_subdirectory(wdock)
endif (USE_DDS)

7 changes: 7 additions & 0 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Releases

## Release 0.15.0

* Perching functional
* Ubuntu 20 compatibility
* Added astrobee to astrobee coms
* Various other fixes/software improvements

## Release 0.14.3

* Rotation fallback fix
Expand Down
2 changes: 1 addition & 1 deletion astrobee.doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ PROJECT_NAME = "NASA Astrobee Robot Software"
# control system is used.


PROJECT_NUMBER = 0.14.3
PROJECT_NUMBER = 0.15.0

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down
22 changes: 11 additions & 11 deletions astrobee/commands/freeFlyerPlanSchema.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,11 @@
"valueType": "string",
"notes": "Setting the flight mode updates the GN&C gains, hard limits, tolerances, etc., as specified in the world config file. See e.g. astrobee/astrobee/config/worlds/iss.config. Note that executing certain operations, such as docking, automatically switches the flight mode as needed. Values:<ul><li>Off: Turns off propulsion.</li><li>Quiet: Sets propulsion impeller speed to QUIET (low speed) with gains and limits tuned to safely fly within the reduced performance.</li><li>Nominal: Sets propulsion impeller speed to NOMINAL (medium speed), with gains and limits tuned for typical utility flying.</li><li>Difficult: Sets propulsion impeller speed to AGGRESSIVE (high speed), with gains and limits tuned for maximum performance.</li><li>Precision: Sets propulsion impeller speed to AGGRESSIVE, with gains and limits tuned for precise motion (slow speed, tight position and attitude tolerances).</li></ul>",
"choices": [
["Off", "Off"],
["Quiet", "Quiet"],
["Nominal", "Nominal"],
["Difficult", "Difficult"],
["Precision", "Precision"]
["off", "Off"],
["quiet", "Quiet"],
["nominal", "Nominal"],
["difficult", "Difficult"],
["precision", "Precision"]
]
},

Expand Down Expand Up @@ -1040,7 +1040,7 @@
"type": "CommandSpec",
"id": "Admin.loadNodelet",
"isRapidNative": false,
"notes": "Not implemented. This command is intended to load a ROS nodelet in the Astrobee flight software.<p/>There is an internal service advertised by the system monitor that provides a method very similar to this command, but as of Oct 2020, there is no way to invoke it through a standard Astrobee API call. Also note, the underlying system monitor service can't load nodelets that run on the HLP.",
"notes": "This command is intended to load a ROS nodelet in the Astrobee flight software. Please note, the underlying system monitor service can't load nodelets that run on the HLP.",
"availableContext": [
"teleop"
],
Expand All @@ -1054,17 +1054,17 @@
},
{
"type": "ParamSpec",
"id": "type",
"id": "managerName",
"valueType": "string",
"default": "",
"notes": "Type of nodelet (namespace/classname). If left blank, the system monitor will default to the type specified in its config file, which should normally work fine."
"notes": "Which nodelet manager should load the nodelet. If left blank, the system monitor will default to using the managerName specified in the last heartbeat it received from the requested nodelet. (That should normally work fine, assuming the nodelet sent out at least one valid heartbeat.)"
},
{
"type": "ParamSpec",
"id": "managerName",
"id": "type",
"valueType": "string",
"default": "",
"notes": "Which nodelet manager should load the nodelet. If left blank, the system monitor will default to using the managerName specified in the last heartbeat it received from the requested nodelet. (That should normally work fine, assuming the nodelet sent out at least one valid heartbeat.)"
"notes": "Type of nodelet (namespace/classname). If left blank, the system monitor will default to the type specified in its config file, which should normally work fine."
},
{
"type": "ParamSpec",
Expand All @@ -1080,7 +1080,7 @@
"type": "CommandSpec",
"id": "Admin.unloadNodelet",
"isRapidNative": false,
"notes": "Not implemented. This command is intended to unload a ROS nodelet in Astrobee's flight software. Its primary use is in the system monitor's fault response table, where it is the usual response if initialization of a nodelet fails. As of Oct 2020, there is an internal service that implements this function, but there is no way to invoke it through a standard Astrobee API call. Also, the internal service can't unload nodes running on the HLP.",
"notes": "This command is intended to unload a ROS nodelet in Astrobee's flight software. Its primary use is in the system monitor's fault response table, where it is the usual response if initialization of a nodelet fails. Please note, the internal service can't unload nodes running on the HLP.",
"availableContext": [
"teleop"
],
Expand Down
4 changes: 2 additions & 2 deletions astrobee/config/commands.config
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,11 @@ commandConfig = {
type="RAPID_STRING"
},
{
key="type",
key="managerName",
type="RAPID_STRING"
},
{
key="managerName",
key="type",
type="RAPID_STRING"
},
{
Expand Down
99 changes: 99 additions & 0 deletions astrobee/config/communications/astrobee_astrobee_bridge.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
-- Copyright (c) 2017, United States Government, as represented by the
-- Administrator of the National Aeronautics and Space Administration.
--
-- All rights reserved.
--
-- The Astrobee platform 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.

-- SHARE TOPICS lists all local topics to be published to DDS.
-- RAPID SUBSCRIBERS lists all rapid subscribers that will be created to listen
-- external data. Must be a subscriber for every agent enabled or a failure
-- will occur.
-- AGENTS section allows to enable/disable and add more robots. It also allows to listen
-- more topics once they are implemented.
--
-- DO NOT change structure or topic names.

require "context"

-- Enable DDS communications on start --
-- If false, a trigger call will be needed to start communications --
started = false;

-- Shared individual topics from local instance --
share_topics = {
{
name = "TOPIC_GNC_EKF",
enable = true,
rate = 2
}
}

-- Shared topic groups from local instance (for compatibility with DDS bridge) --
share_topic_groups = {
-- Share TOPIC_GUEST_SCIENCE_DATA --
-- TOPIC_GUEST_SCIENCE_MANAGER_STATE --
-- TOPIC_GUEST_SCIENCE_MANAGER_CONFIG --
{
name = "TOPIC_GROUP_GS",
enable = true,
rate = -1
}
}

-- Rapid subscribers --
rapid_sub_names = {"Bumble", "Honey", "Queen", "Bsharp", "Wannabee"}

-- External data management
agents = {
{
name = "Bumble",
enable = true,
topics = {
{ name = "TOPIC_GNC_EKF", enable = true },
{ name = "TOPIC_GUEST_SCIENCE_DATA", enable = true }
}
},
{
name = "Honey",
enable = true,
topics = {
{ name = "TOPIC_GNC_EKF", enable = true },
{ name = "TOPIC_GUEST_SCIENCE_DATA", enable = true }
}
},
{
name = "Queen",
enable = true,
topics = {
{ name = "TOPIC_GNC_EKF", enable = true },
{ name = "TOPIC_GUEST_SCIENCE_DATA", enable = true }
}
},
{
name = "Bsharp",
enable = true,
topics = {
{ name = "TOPIC_GNC_EKF", enable = true },
{ name = "TOPIC_GUEST_SCIENCE_DATA", enable = true }
}
},
{
name = "Wannabee",
enable = true,
topics = {
{ name = "TOPIC_GNC_EKF", enable = true },
{ name = "TOPIC_GUEST_SCIENCE_DATA", enable = true }
}
}
}
Loading

0 comments on commit e09fba1

Please sign in to comment.