diff --git a/.github/workflows/ci_pr.yml b/.github/workflows/ci_pr.yml
index cdbb846794..c8f5361792 100644
--- a/.github/workflows/ci_pr.yml
+++ b/.github/workflows/ci_pr.yml
@@ -7,38 +7,6 @@ on:
jobs:
- build-xenial:
-
- runs-on: ubuntu-20.04
-
- steps:
- - uses: actions/checkout@v3
- with:
- fetch-depth: 0
-
- - name: Checkout submodule
- run: git submodule update --init --depth 1 description/media
-
- - name: Build, test
- run: ./scripts/docker/build.sh --xenial --remote
- astrobee test_astrobee
-
- build-bionic:
-
- runs-on: ubuntu-20.04
-
- steps:
- - uses: actions/checkout@v3
- with:
- fetch-depth: 0
-
- - name: Checkout submodule
- run: git submodule update --init --depth 1 description/media
-
- - name: Build, test
- run: ./scripts/docker/build.sh --bionic --remote
- astrobee test_astrobee
-
build-focal:
runs-on: ubuntu-20.04
diff --git a/.github/workflows/ci_push.yml b/.github/workflows/ci_push.yml
index 8d0314f897..f6ed14c486 100644
--- a/.github/workflows/ci_push.yml
+++ b/.github/workflows/ci_push.yml
@@ -8,78 +8,6 @@ on:
jobs:
- build-xenial:
-
- runs-on: ubuntu-20.04
-
- steps:
- - uses: actions/checkout@v3
-
- - name: Checkout submodule
- run: git submodule update --init --depth 1 description/media
-
- - name: Log in to registry
- run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.repository_owner }} --password-stdin
-
- - name: Build, test, push docker
- run: >
- revision="latest";
- build_arg="astrobee";
- push_arg="";
- branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}};
- if [ "${{ github.repository_owner }}" == "nasa" ]; then
- if [ $branch == "develop" ]; then
- push_arg="push_astrobee";
- fi;
- if [ $branch == "master" ]; then
- export VERSION=`grep -w -m 1 "Release" RELEASE.md | awk '{print $3}'`;
- revision="v${VERSION}";
- build_arg="astrobee_base astrobee";
- push_arg="push_astrobee_base push_astrobee";
- fi;
- fi;
- command="./scripts/docker/build.sh --xenial --remote --revision ${revision} \
- --owner ${{ github.repository_owner }} \
- ${build_arg} test_astrobee ${push_arg}";
- echo "$command";
- eval "$command";
-
- build-bionic:
-
- runs-on: ubuntu-20.04
-
- steps:
- - uses: actions/checkout@v3
-
- - name: Checkout submodule
- run: git submodule update --init --depth 1 description/media
-
- - name: Log in to registry
- run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.repository_owner }} --password-stdin
-
- - name: Build, test, push docker
- run: >
- revision="latest";
- build_arg="astrobee";
- push_arg="";
- branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}};
- if [ "${{ github.repository_owner }}" == "nasa" ]; then
- if [ $branch == "develop" ]; then
- push_arg="push_astrobee";
- fi;
- if [ $branch == "master" ]; then
- export VERSION=`grep -w -m 1 "Release" RELEASE.md | awk '{print $3}'`;
- revision="v${VERSION}";
- build_arg="astrobee_base astrobee";
- push_arg="push_astrobee_base push_astrobee";
- fi;
- fi;
- command="./scripts/docker/build.sh --bionic --remote --revision ${revision} \
- --owner ${{ github.repository_owner }} \
- ${build_arg} test_astrobee ${push_arg}";
- echo "$command";
- eval "$command";
-
build-focal:
runs-on: ubuntu-20.04
diff --git a/.github/workflows/docker_push_latest_base.yml b/.github/workflows/docker_push_latest_base.yml
index 21d54b6e4c..a178bfa702 100644
--- a/.github/workflows/docker_push_latest_base.yml
+++ b/.github/workflows/docker_push_latest_base.yml
@@ -8,42 +8,6 @@ on: ['workflow_dispatch']
jobs:
- build-xenial:
-
- runs-on: ubuntu-20.04
-
- steps:
- - uses: actions/checkout@v3
-
- - name: Checkout submodule
- run: git submodule update --init --depth 1 description/media
-
- - name: Log in to registry
- run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.repository_owner }} --password-stdin
-
- - name: Build base, build, test, push base docker
- run: ./scripts/docker/build.sh --xenial
- --owner ${{ github.repository_owner }}
- astrobee_base astrobee test_astrobee push_astrobee_base
-
- build-bionic:
-
- runs-on: ubuntu-20.04
-
- steps:
- - uses: actions/checkout@v3
-
- - name: Checkout submodule
- run: git submodule update --init --depth 1 description/media
-
- - name: Log in to registry
- run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.repository_owner }} --password-stdin
-
- - name: Build base, build, test, push base docker
- run: ./scripts/docker/build.sh --bionic
- --owner ${{ github.repository_owner }}
- astrobee_base astrobee test_astrobee push_astrobee_base
-
build-focal:
runs-on: ubuntu-20.04
diff --git a/.github/workflows/msgs_jar.yaml b/.github/workflows/msgs_jar.yaml
index d090339dba..ba9cdc8694 100644
--- a/.github/workflows/msgs_jar.yaml
+++ b/.github/workflows/msgs_jar.yaml
@@ -11,19 +11,12 @@ jobs:
steps:
- uses: actions/checkout@v3
- - name: Build image astrobee/astrobee:msgs-ubuntu16.04
+ - name: Build image astrobee/astrobee:msgs-ubuntu20.04
run: docker build . -f ./scripts/docker/astrobee_msgs.Dockerfile
- --build-arg UBUNTU_VERSION=16.04
- --build-arg ROS_VERSION=kinetic
- --build-arg PYTHON=''
- -t astrobee/astrobee:msgs-ubuntu16.04
+ -t astrobee/astrobee:msgs-ubuntu20.04
- - name: Build image astrobee/astrobee:latest-msgs-jar-ubuntu16.04
+ - name: Build image astrobee/astrobee:latest-msgs-jar-ubuntu20.04
run: docker build . -f ./scripts/docker/build_msgs_jar.Dockerfile
- --build-arg UBUNTU_VERSION=16.04
- --build-arg ROS_VERSION=kinetic
- --build-arg PYTHON=''
- --build-arg REPO=astrobee
-t ghcr.io/${{ github.repository_owner }}/astrobee:latest-msgs-jar
- name: Copy jar files
diff --git a/INSTALL.md b/INSTALL.md
index 6787eb800a..61f3a99066 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -2,13 +2,15 @@
## System requirements
-Ubuntu 20.04 is the preferred host OS for most Astrobee developers to use.
+Ubuntu 20.04 is currently the only supported platform.
-Here are the available host OS options with development roadmap details (use 64-bit PC (AMD64) desktop image):
-- [Ubuntu 20.04](http://releases.ubuntu.com/20.04): This is the preferred host OS for most Astrobee developers to use. The Astrobee Facility team is currently preparing to upgrade the robots on ISS from Ubuntu 16.04 to Ubuntu 20.04, but we aren't yet ready to announce a deployment date for that upgrade.
-- [Ubuntu 18.04](http://releases.ubuntu.com/18.04): We are not aware of any current robot users that still need Ubuntu 18.04 support, and expect to discontinue support in the near future. New users should not select this host OS.
-- [Ubuntu 16.04](http://releases.ubuntu.com/16.04): The Astrobee robot hardware on ISS currently runs Ubuntu 16.04. Only developers with NASA internal access can cross-compile software to run on the robot, and must use 16.04 for that. Most developers shouldn't need to work with 16.04, especially when just getting started. Support will eventually be discontinued after the robot hardware on ISS is upgraded to Ubuntu 20.04.
-(Ubuntu 22.04 not supported)
+Here are the currently available host OS options with development roadmap details (use 64-bit PC (AMD64) desktop image):
+- [Ubuntu 20.04](http://releases.ubuntu.com/20.04): This is currently the only supported platform. The Astrobee hardware on ISS has been running Ubuntu 20.04 since it was upgraded during the "Crew-Minimal S14" activity on December 19, 2023.
+
+Specifically not supported:
+- ~~[Ubuntu 16.04](http://releases.ubuntu.com/16.04)~~: No longer supported. The Astrobee robot hardware ran Ubuntu 16.04 from its launch in 2019 until it was upgraded to run Ubuntu 20.04. Ubuntu 16.04 support was discontinued in February 2024. Ending Ubuntu 16.04 support removed important limitations. For example, going forward, Astrobee's software will no longer need to be backward-compatible with Python 2 and OpenCV 3.
+- ~~[Ubuntu 18.04](http://releases.ubuntu.com/18.04)~~: Ubuntu 18.04 support as a software development platform was discontinued as of November 2023. (It was never supported on the robot hardware.)
+- ~~[Ubuntu 22.04](http://releases.ubuntu.com/22.04)~~: There is currently no plan for Ubuntu 22.04 support on the Astrobee roadmap. However, note that Astrobee ROS2 support, when it eventually becomes available, is currently expected to use the ROS2 Humble Hawksbill distribution that normally runs on 22.04, but backported to run on 20.04 (the last Ubuntu version supported by ROS1). This will facilitate migrating from ROS1 to ROS2 without requiring a simultaneous Ubuntu distribution upgrade.
Graphical interfaces will perform best if your host OS is running natively (not in a virtual machine).
diff --git a/RELEASE.md b/RELEASE.md
index 4fefde59e7..dea20defdf 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -1,5 +1,11 @@
# Releases
+# Release 0.17.2
+
+ * Adding Generic comms bridge
+ * Multiple bug fixes
+ * Ubuntu 20 only supported now
+
# Release 0.17.1
* Multiple bug fixes
diff --git a/astrobee.doxyfile b/astrobee.doxyfile
index 6cc696edf4..7bb0ffe858 100644
--- a/astrobee.doxyfile
+++ b/astrobee.doxyfile
@@ -39,7 +39,7 @@ PROJECT_NAME = "NASA Astrobee Robot Software"
# control system is used.
-PROJECT_NUMBER = 0.17.1
+PROJECT_NUMBER = 0.17.2
# 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
diff --git a/astrobee/CMakeLists.txt b/astrobee/CMakeLists.txt
index 7e4c3d7e02..e47ad4b0b5 100644
--- a/astrobee/CMakeLists.txt
+++ b/astrobee/CMakeLists.txt
@@ -18,7 +18,7 @@
cmake_minimum_required(VERSION 3.0)
project(astrobee)
-set(ASTROBEE_VERSION 0.17.1)
+set(ASTROBEE_VERSION 0.17.2)
## Compile as C++14, supported in ROS Kinetic and newer
add_compile_options(-std=c++14)
diff --git a/astrobee/config/communications/comms_bridge.config b/astrobee/config/communications/comms_bridge.config
new file mode 100644
index 0000000000..4662f05c56
--- /dev/null
+++ b/astrobee/config/communications/comms_bridge.config
@@ -0,0 +1,105 @@
+-- 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.
+
+require "context"
+
+-- Enable DDS communications on start --
+-- If false, a trigger call will be needed to start communications --
+initialize_dds_on_start = false
+
+-- Request an advertisement info message if a content message was received
+-- before the advertisement info message in case the advertisement message
+-- never comes.
+-- DDS has been setup such that this shouldn't be needed and it can cause more
+-- information to be sent then needed. By default, it will be set to false
+-- but if communications on the ISS are not working as expected, it can be
+-- enabled.
+enable_advertisement_info_request = false
+
+-- The verbosity is used to control the output of the underlying ros
+-- publisher/subscriber. Level 2 is the most verbose and will output all of the
+-- output including debug statements. Level 1 will output all output except
+-- debug statements and level 0 will only output warnings and errors. Since
+-- all output statements go directly to the ros log, it is safest to keep it
+-- set to 2.
+verbose = 2
+
+-- ad2pub_delay is a time amount in seconds. The bridge publisher must receive
+-- the adverttisement info message for a topic before it can publish a content
+-- message for that topic. If the bridge publisher receives the content message
+-- before the advertisement info, it will save the content message if the
+-- ad2pub_delay is greater than 0. If the bridge publisher receives the
+-- advertisement info message within the ad2pub_delay time, it will process
+-- and publish the content message. If the comms bridge seems to be dropping
+-- the first few messages, try increasing this value.
+ad2pub_delay = 3.0
+
+links = {
+ -- Logically, there could be up to three two-way links between the three robots. In practice, we
+ -- will probably only have one link.
+ {
+ -- A single link entry has required fields "from" and "to" that specify the robot roles involved
+ -- in the link.
+ -- This link will only work on the ISS since it uses the names of the
+ -- robots on the ISS. Please add more links if Queen goes back to the ISS.
+ from = "Bumble", -- manager
+ to = "Honey", -- actor
+
+ -- The link entry has three optional fields: relay_forward (messages to be relayed only in the
+ -- `from` to `to` direction), relay_backward (to be relayed only in the `to` to `from` direction),
+ -- and relay_both (to be relayed in both directions). Providing all three fields gives the user
+ -- full directional control while minimizing repetition and copy/paste errors.
+
+ -- Each topic entry can contain an input topic and an output topic. The
+ -- in topic is the topic being published on the robot sending the data and
+ -- must be specified. The optional out topic is the name of the topic a
+ -- user wants the data published on in the receiving robot. If the
+ -- out topic is not specified, the comms bridge will set it to be the name
+ -- of the robot sending the data combined with the in topic name. For
+ -- instance, if the from robot was Bumble and the to robot was Honey and
+ -- one of the in topics in the relay forward list was "mgt/ack", then it
+ -- would be published on Honey on topic "bumble/mgt/ack".
+ -- Please note that only one unique in topic can exist in the relay forward
+ -- and relay both lists and the relay backward and relay both lists. It is
+ -- fine to have the same in topic in the relay forward and relay backward
+ -- lists.
+
+ relay_forward = {
+ },
+ relay_backward = {
+ },
+ relay_both = {
+ {in_topic = "gnc/ekf"},
+ {in_topic = "gs/data"},
+ },
+ },
+ {
+ -- This link will only work in the granite lab since it uses the names of
+ -- the robots in the granite lab.
+ from = "Bsharp", -- manager
+ to = "Wannabee", -- actor
+
+ relay_forward = {
+ },
+ relay_backward = {
+ },
+ relay_both = {
+ {in_topic = "gnc/ekf"},
+ {in_topic = "gs/data"},
+ }
+ }
+}
diff --git a/astrobee/config/communications/dds_generic_comms/NDDS_DISCOVERY_PEERS b/astrobee/config/communications/dds_generic_comms/NDDS_DISCOVERY_PEERS
new file mode 100644
index 0000000000..dc71e38323
--- /dev/null
+++ b/astrobee/config/communications/dds_generic_comms/NDDS_DISCOVERY_PEERS
@@ -0,0 +1,6 @@
+;; NDDS_DISCOVERY_PEERS - Discovery Configuration File
+;; This file is used to configure the dds portion of the comms bridge
+; EVERY LINE IN THIS FILE MUST END IN A COMMENT. Even blank lines.
+;
+;; Add the IP addresses of the robots to communicate with
+127.0.0.1 ; Local host is added by default
diff --git a/astrobee/config/communications/dds_generic_comms/RAPID_QOS_PROFILES.xml b/astrobee/config/communications/dds_generic_comms/RAPID_QOS_PROFILES.xml
new file mode 100644
index 0000000000..27bb1ff25f
--- /dev/null
+++ b/astrobee/config/communications/dds_generic_comms/RAPID_QOS_PROFILES.xml
@@ -0,0 +1,994 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 50, 48, 49, 49, 48, 54,0x32,0x39,0x2e,0x30,0x39,0x34,0x33,0x30,0x30,0x2e,0x48,0x55,0x2d,0x41,0x52,0x43
+
+
+
+
+ 7400
+ 250
+ 2
+ 0
+ 10
+ 1
+ 11
+
+ MASK_DEFAULT
+
+
+ UDPv4
+
+
+
+
+
+ true
+
+
+
+ 4096
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
+ dds.flow_controller.token_bucket.MeshFlowController.scheduling_policy
+ DDS_EDF_FLOW_CONTROLLER_SCHED_POLICY
+
+
+ dds.flow_controller.token_bucket.MeshFlowController.token_bucket.max_tokens
+ 12
+
+
+ dds.flow_controller.token_bucket.MeshFlowController.token_bucket.tokens_added_per_period
+ 4
+
+
+ dds.flow_controller.token_bucket.MeshFlowController.token_bucket.tokens_leaked_per_period
+ 0
+
+
+ dds.flow_controller.token_bucket.MeshFlowController.token_bucket.bytes_per_token
+ 1250
+
+
+ dds.flow_controller.token_bucket.MeshFlowController.token_bucket.period.sec
+ 0
+
+
+ dds.flow_controller.token_bucket.MeshFlowController.token_bucket.period.nanosec
+ 5000000
+
+
+
+
+
+
+ dds.transport.UDPv4.builtin.parent.message_size_max
+ 1250
+
+
+ dds.transport.UDPv4.builtin.send_socket_buffer_size
+ 65535
+
+
+ dds.transport.UDPv4.builtin.recv_socket_buffer_size
+ 65535
+
+
+
+
+ dds.transport.shmem.builtin.received_message_count_max
+ 512
+
+
+ dds.transport.shmem.builtin.receive_buffer_size
+ 1048576
+
+
+
+
+ dds.transport.UDPv4.builtin.parent.deny_interfaces
+ 128.102.*,10.10.1.*,10.30.10.*,192.168.3.255,169.254.194.2,192.9.202.1,192.168.5.*,192.168.10.*,192.168.122.*
+
+
+ dds.transport.UDPv4.builtin.parent.deny_multicast_interfaces
+ 128.102.*,10.10.1.*,10.30.10.*,192.168.3.255,169.254.194.2,192.9.202.1,192.168.5.*,192.168.10.*,192.168.122.*
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+ ALIVE_THEN_DISPOSED_INSTANCE_REPLACEMENT
+
+
+ ASYNCHRONOUS_PUBLISH_MODE_QOS
+
+
+
+
+
+
+
+
+
+ BEST_EFFORT_RELIABILITY_QOS
+
+
+ KEEP_LAST_HISTORY_QOS
+ 5
+
+
+
+
+ BEST_EFFORT_RELIABILITY_QOS
+
+
+ KEEP_LAST_HISTORY_QOS
+ 5
+
+
+
+
+
+
+
+
+
+ RELIABLE_RELIABILITY_QOS
+
+
+ KEEP_ALL_HISTORY_QOS
+
+
+
+
+ RELIABLE_RELIABILITY_QOS
+
+
+
+ KEEP_ALL_HISTORY_QOS
+
+
+
+
+
+
+
+
+
+ RELIABLE_RELIABILITY_QOS
+
+
+ TRANSIENT_LOCAL_DURABILITY_QOS
+
+
+ KEEP_LAST_HISTORY_QOS
+ 20
+
+
+
+
+ RELIABLE_RELIABILITY_QOS
+
+
+ TRANSIENT_LOCAL_DURABILITY_QOS
+
+
+ KEEP_LAST_HISTORY_QOS
+ 20
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RELIABLE_RELIABILITY_QOS
+
+
+
+
+ RELIABLE_RELIABILITY_QOS
+
+
+
+
+
+
+
+ TRANSIENT_LOCAL_DURABILITY_QOS
+
+
+ KEEP_LAST_HISTORY_QOS
+ 6
+
+
+
+
+ TRANSIENT_LOCAL_DURABILITY_QOS
+
+
+ KEEP_LAST_HISTORY_QOS
+ 6
+
+
+
+
+
+
+
+ TRANSIENT_LOCAL_DURABILITY_QOS
+
+
+ KEEP_LAST_HISTORY_QOS
+ 1
+
+
+
+
+ TRANSIENT_LOCAL_DURABILITY_QOS
+
+
+ KEEP_LAST_HISTORY_QOS
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+ KEEP_LAST_HISTORY_QOS
+ 1
+
+
+ 512
+ 4
+ 128
+ 128
+ 512
+ 380
+
+
+
+ 32
+
+ 0
+ 500000000
+
+ 8
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LAST_HISTORY_QOS
+ 10
+
+
+
+
+ KEEP_LAST_HISTORY_QOS
+ 100
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LAST_HISTORY_QOS
+ 1000
+
+
+
+
+ KEEP_LAST_HISTORY_QOS
+ 200
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EXCLUSIVE_OWNERSHIP_QOS
+
+
+ 100
+
+
+
+
+ EXCLUSIVE_OWNERSHIP_QOS
+
+
+
+
+
+
+
+
+ 50
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1000
+
+
+
+
+
+
+
+ 1000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ dds.flow_controller.token_bucket.MeshFlowController
+
+
+ KEEP_LAST_HISTORY_QOS
+ 1
+
+
+ 32
+ 32
+ 1
+ 1
+ 32
+
+
+
+
+ 4096
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10
+ 0
+
+
+
+
+
+
+ 10
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10
+ 0
+
+
+
+
+
+
+ 10
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LAST_HISTORY_QOS
+ 5
+
+
+
+
+ KEEP_LAST_HISTORY_QOS
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 7400
+ 250
+ 2
+ 0
+ 10
+ 1
+ 11
+
+
+
+
+ 30000
+ 64
+ 2048
+
+
+
+ UDPv4 | SHMEM
+
+
+ Monitoring UI Application
+
+
+ 65530
+
+
+
+
+ 100
+ 0
+
+
+ 10
+ 0
+
+ LIVELINESS_BASED_REMOTE_PARTICIPANT_PURGE
+
+ 10
+ 0
+
+ 1
+
+ 2
+ 0
+
+
+ 2
+ 0
+
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 100000000
+
+
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 100000000
+
+
+
+ 0
+ 1
+
+ 5
+ 0
+
+
+ 0
+ 200000000
+
+
+ 0
+ 200000000
+
+ 1000
+ 8
+
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+
+ 65530
+
+
+ 0
+ 1
+
+ 5
+ 0
+
+
+ 0
+ 200000000
+
+
+ 0
+ 200000000
+
+ 1000
+ 8
+
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+
+ 65530
+
+
+
+
+
+
+ dds.transport.UDPv4.builtin.recv_socket_buffer_size
+ 1048576
+
+
+
+ dds.transport.UDPv4.builtin.parent.message_size_max
+ 65530
+
+
+ dds.transport.UDPv4.builtin.send_socket_buffer_size
+ 65530
+
+
+
+
+ dds.transport.shmem.builtin.parent.message_size_max
+ 65530
+
+
+ dds.transport.shmem.builtin.receive_buffer_size
+ 65530
+
+
+ dds.transport.shmem.builtin.received_message_count_max
+ 32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TRANSIENT_LOCAL_DURABILITY_QOS
+
+
+
+ RELIABLE_RELIABILITY_QOS
+
+
+
+ KEEP_LAST_HISTORY_QOS
+ 1
+
+
+
+
+
+
+
+
+ BEST_EFFORT_RELIABILITY_QOS
+
+
+ KEEP_LAST_HISTORY_QOS
+ 2
+
+
+
+
+
+ TRANSIENT_LOCAL_DURABILITY_QOS
+
+
+
+ RELIABLE_RELIABILITY_QOS
+
+
+
+ KEEP_LAST_HISTORY_QOS
+ 1
+
+
+
+
+
+
+ KEEP_LAST_HISTORY_QOS
+ 10
+
+
+
+
+
+
+ KEEP_LAST_HISTORY_QOS
+ 10
+
+
+
+
+
diff --git a/astrobee/config/management/cpu_mem_monitor.config b/astrobee/config/management/cpu_mem_monitor.config
index 3bdae428a1..512be2f818 100644
--- a/astrobee/config/management/cpu_mem_monitor.config
+++ b/astrobee/config/management/cpu_mem_monitor.config
@@ -18,7 +18,6 @@
-- frequency to check and publish cpu stats
llp = {
- update_pid_hz = 0.1,
update_freq_hz = 1,
temperature_scale = 0.001,
cpu_avg_load_limit = 100,
@@ -40,7 +39,6 @@ llp = {
}
mlp = {
- update_pid_hz = 0.1,
update_freq_hz = 1,
temperature_scale = 1.0,
cpu_avg_load_limit = 100,
diff --git a/astrobee/config/management/fault_table.config b/astrobee/config/management/fault_table.config
index d1f0f7cf1d..aab193af50 100644
--- a/astrobee/config/management/fault_table.config
+++ b/astrobee/config/management/fault_table.config
@@ -110,8 +110,8 @@ subsystems={
}},
}},
{name="communication", nodes={
- {name="astrobee_astrobee_bridge", faults={
- {id=51, warning=false, blocking=false, response=command("noOp"), key="HEARTBEAT_MISSING", description="No Heartbeat from Atrobee to Astrobee Bridge", heartbeat={timeout_sec=1.1, misses=1.0}},
+ {name="comms_bridge", faults={
+ {id=51, warning=false, blocking=false, response=command("noOp"), key="HEARTBEAT_MISSING", description="No Heartbeat from Comms Bridge", heartbeat={timeout_sec=1.1, misses=1.0}},
}},
{name="dds_ros_bridge", faults={
{id=33, warning=false, blocking=true, response=command("fault"), key="HEARTBEAT_MISSING", description="No Heartbeat form DDS ROS Bridge", heartbeat={timeout_sec=1.1, misses=5.0}},
diff --git a/astrobee/config/management/sys_monitor.config b/astrobee/config/management/sys_monitor.config
index cb0cc55ec4..050fffb979 100644
--- a/astrobee/config/management/sys_monitor.config
+++ b/astrobee/config/management/sys_monitor.config
@@ -41,8 +41,8 @@ time_drift_thres_sec = 0.25
nodelet_info={
{name="access_control", manager="mlp_management", type="access_control/AccessControl"},
{name="arm", manager="mlp_arm", type="arm/ArmNodelet"},
- {name="astrobee_astrobee_bridge", manager="mlp_multibridge", type="dds_ros_bridge/AstrobeeAstrobeeBridge"},
{name="choreographer", manager="mlp_mobility", type="choreographer/ChoreographerNodelet"},
+ {name="comms_bridge", manager="mlp_multibridge", type="comms_bridge/CommsBridgeNodelet"},
{name="ctl", manager="llp_gnc", type="ctl/ctl"},
{name="data_bagger", manager="mlp_recording", type="data_bagger/DataBagger"},
{name="dds_ros_bridge", manager="mlp_communications", type="dds_ros_bridge/DdsRosBridge"},
diff --git a/astrobee/config/robots/honey.config b/astrobee/config/robots/honey.config
index fc8b814061..5c22798c94 100644
--- a/astrobee/config/robots/honey.config
+++ b/astrobee/config/robots/honey.config
@@ -46,14 +46,14 @@ robot_geometry = {
robot_camera_calibrations = {
nav_cam = {
- distortion_coeff = 0.99872,
+ distortion_coeff = 0.998757,
intrinsic_matrix = {
- 607.64218, 0.0, 624.85552,
- 0.0, 606.53899, 514.57737,
+ 610.12594, 0.0, 628.35064,
+ 0.0, 610.12594, 514.89592,
0.0, 0.0, 1.0
},
- gain=100,
- exposure=150
+ gain=50,
+ exposure=175
},
dock_cam = {
distortion_coeff = 1.00882,
diff --git a/astrobee/config/robots/sim_pub.config b/astrobee/config/robots/sim_pub.config
index a0ad5be8a3..e47e2f5f6e 100644
--- a/astrobee/config/robots/sim_pub.config
+++ b/astrobee/config/robots/sim_pub.config
@@ -16,4 +16,4 @@
-- under the License.
require "robots/sim"
-nodes_not_running = {"dds_ros_bridge", "astrobee_astrobee_bridge", "light_flow"}
+nodes_not_running = {"dds_ros_bridge", "comms_bridge", "light_flow"}
diff --git a/astrobee/launch/robot/MLP.launch b/astrobee/launch/robot/MLP.launch
index 096cafee64..37b473170a 100644
--- a/astrobee/launch/robot/MLP.launch
+++ b/astrobee/launch/robot/MLP.launch
@@ -287,8 +287,8 @@
-
-
+
+
diff --git a/astrobee/launch/sim.launch b/astrobee/launch/sim.launch
index 9701e3e1ca..414f0be244 100644
--- a/astrobee/launch/sim.launch
+++ b/astrobee/launch/sim.launch
@@ -165,6 +165,9 @@
+
+
+
@@ -188,6 +191,9 @@
+
+
+
@@ -211,6 +217,9 @@
+
+
+
@@ -234,9 +243,10 @@
+
+
+
-
-
diff --git a/astrobee/scripts/cpu_print_version.sh b/astrobee/scripts/cpu_print_version.sh
index 190127cd6c..ed0a17a6a8 100755
--- a/astrobee/scripts/cpu_print_version.sh
+++ b/astrobee/scripts/cpu_print_version.sh
@@ -9,7 +9,7 @@ function deb_version {
fi
}
-source /opt/ros/kinetic/setup.bash
+source /opt/ros/noetic/setup.bash
date
echo "Kernel: $(uname -r)"
lsb_release -r
diff --git a/communications/comms_bridge/CMakeLists.txt b/communications/comms_bridge/CMakeLists.txt
new file mode 100644
index 0000000000..a9f6aaf995
--- /dev/null
+++ b/communications/comms_bridge/CMakeLists.txt
@@ -0,0 +1,141 @@
+# 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.
+
+
+cmake_minimum_required(VERSION 3.0)
+project(comms_bridge)
+
+## Compile as C++14, supported in ROS Kinetic and newer
+add_compile_options(-std=c++14)
+
+if (USE_DDS)
+## Find catkin macros and libraries
+find_package(catkin2 REQUIRED COMPONENTS
+ roscpp
+ nodelet
+ message_generation
+ message_runtime
+ image_transport
+ std_msgs
+ sensor_msgs
+ config_reader
+ ff_util
+ ff_msgs
+ topic_tools
+ dds_msgs
+)
+
+
+# System dependencies are found with CMake's conventions
+# find_package(Eigen3 REQUIRED)
+find_package(Boost 1.54.0 QUIET REQUIRED COMPONENTS filesystem system iostreams thread program_options timer)
+
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../../cmake")
+
+if (USE_CTC)
+ set(SORACORE_ROOT_DIR ${ARM_CHROOT_DIR}/usr)
+else (USE_CTC)
+ set(SORACORE_ROOT_DIR /usr)
+endif (USE_CTC)
+
+set(MIRO_ROOT_DIR ${SORACORE_ROOT_DIR})
+
+SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
+# find Qt version according to OS
+find_program(LSB_RELEASE_EXEC lsb_release)
+execute_process(COMMAND "${LSB_RELEASE_EXEC}" --short --release OUTPUT_VARIABLE LSB_RELEASE_VERSION_SHORT OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+if (${LSB_RELEASE_VERSION_SHORT} VERSION_GREATER 18.04)
+ find_package(Qt5Xml REQUIRED)
+else ()
+ find_package(Qt4 4.6.0 REQUIRED QtXml)
+endif ()
+
+find_package(Miro REQUIRED)
+find_package(RtiDds REQUIRED)
+find_package(Soracore REQUIRED)
+
+catkin_package(
+ LIBRARIES comms_bridge
+ CATKIN_DEPENDS message_runtime std_msgs nodelet config_reader ff_util ff_msgs dds_msgs
+)
+
+###########
+## Build ##
+###########
+
+# Specify additional locations of header files
+include_directories(
+ include
+ ${catkin_INCLUDE_DIRS}
+ ${RTIDDS_INCLUDE_DIR}
+ ${SORACORE_INCLUDE_DIRS}
+ ${MIRO_INCLUDE_DIR}
+ ${QT_INCLUDE_DIR}
+ ${QT_INCLUDE_DIR}/Qt
+ ${Boost_INCLUDE_DIRS}
+)
+
+file(GLOB cc_files
+ "src/*.cpp"
+)
+
+# Declare C++ libraries
+add_library(comms_bridge
+ ${cc_files}
+)
+target_compile_definitions(comms_bridge PUBLIC ${RTIDDS_DEFINE_FLAGS})
+add_dependencies(comms_bridge ${catkin_EXPORTED_TARGETS})
+target_link_libraries(comms_bridge rapidIo Qt5::Xml ${catkin_LIBRARIES} ${Boost_LIBRARIES})
+
+
+#add_library(comms_bridge_pub
+# src/bridge_publisher.cpp
+# src/dds_ros_bridge_publisher.cpp
+# src/bridge_publisher_nodelet.cpp
+#)
+#add_dependencies(comms_bridge_pub ${catkin_EXPORTED_TARGETS} )
+#target_link_libraries(comms_bridge_pub
+# rapidIo Qt5::Xml ${catkin_LIBRARIES} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} )
+
+
+#############
+## Install ##
+#############
+# Mark libraries for installation
+install(TARGETS ${PROJECT_NAME}
+ ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
+ LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
+ RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}
+)
+
+# Mark nodelet_plugin for installation
+install(FILES nodelet_plugins.xml
+ DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
+)
+
+# Mark launch files for installation
+install(DIRECTORY launch/
+ DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch
+ PATTERN ".svn" EXCLUDE)
+
+else (USE_DDS)
+ find_package(catkin REQUIRED COMPONENTS)
+ catkin_package()
+endif (USE_DDS)
diff --git a/communications/comms_bridge/include/comms_bridge/bridge_publisher.h b/communications/comms_bridge/include/comms_bridge/bridge_publisher.h
new file mode 100644
index 0000000000..d8a4202697
--- /dev/null
+++ b/communications/comms_bridge/include/comms_bridge/bridge_publisher.h
@@ -0,0 +1,138 @@
+/* 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.
+ */
+
+#ifndef COMMS_BRIDGE_BRIDGE_PUBLISHER_H_
+#define COMMS_BRIDGE_BRIDGE_PUBLISHER_H_
+
+/*
+ Virtual base class for the subscriber (input side) of a generic ROS bridge
+ Actual implementation depends on an inheriting class
+ */
+
+#include
+
+#include
+#include
+
+#include
+#include
+#include