Skip to content

Commit

Permalink
Holiday release of Astrobee Robot Software.
Browse files Browse the repository at this point in the history
  • Loading branch information
Ted Morse committed Dec 22, 2017
1 parent f45cfce commit e74a241
Show file tree
Hide file tree
Showing 838 changed files with 25,962 additions and 16,872 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ Vagrantfile.local
install
.vagrant

build
/build
arm_build
arm_build_release
arm_build_debug
Expand Down
38 changes: 32 additions & 6 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_MAJOR 0)
set(ASTROBEE_VERSION_MINOR 3)
set(ASTROBEE_VERSION_MINOR 2)

if ( "${CMAKE_VERSION}" VERSION_GREATER 3.0.0 )
cmake_policy(SET CMP0045 OLD)
Expand Down Expand Up @@ -178,15 +178,38 @@ find_package(Boost 1.54.0 QUIET REQUIRED COMPONENTS filesystem system iostreams
find_package(Eigen3 REQUIRED)
find_package(ZLIB)
find_package(Luajit20 REQUIRED)
find_package(OpenCV REQUIRED)

# Find OpenCV and fix a 3.3.1 bug
find_package(OpenCV 3 REQUIRED)
if (${OpenCV_VERSION} MATCHES "3.3.1")
foreach(__cvcomponent ${OpenCV_LIB_COMPONENTS})
set (__original_cvcomponent ${__cvcomponent})
if(NOT __cvcomponent MATCHES "^opencv_")
set(__cvcomponent opencv_${__cvcomponent})
endif()
if (TARGET ${__cvcomponent})
set_target_properties(${__cvcomponent} PROPERTIES
MAP_IMPORTED_CONFIG_DEBUG ""
MAP_IMPORTED_CONFIG_RELEASE ""
MAP_IMPORTED_CONFIG_RELWITHDEBINFO ""
MAP_IMPORTED_CONFIG_MINSIZEREL ""
)
endif()
endforeach(__cvcomponent)
endif()
set(OpenCV_LIBRARIES ${OpenCV_LIBS})

find_package(dbow2 REQUIRED)
find_package(Alvar REQUIRED)
find_package(OpenMVG QUIET REQUIRED)
find_package(JsonCpp REQUIRED)
find_package(FFMPEG QUIET) # OPTIONAL
if (ENABLE_PICOFLEXX)
find_package(royale REQUIRED)
endif (ENABLE_PICOFLEXX)



#find_package(PkgConfig REQUIRED)
#
#pkg_check_modules(YAMLCPP REQUIRED yaml-cpp)
Expand Down Expand Up @@ -287,17 +310,20 @@ add_custom_target(version DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/version.txt)
install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" --build \"${CMAKE_CURRENT_BINARY_DIR}\" --target version)")
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/version.txt DESTINATION ${CMAKE_INSTALL_PREFIX} )

# install the env_wrapper.sh for running on astrobee
install(PROGRAMS scripts/deploy/env_wrapper.sh DESTINATION ${CMAKE_INSTALL_PREFIX} )

if (USE_ROS)
add_subdirectory(tools)
add_subdirectory(astrobee)
add_subdirectory(communications)
add_subdirectory(gnc)
add_subdirectory(management)
add_subdirectory(mobility)
add_subdirectory(procedures)
if (NOT USE_CTC AND ENABLE_GAZEBO)
add_subdirectory(simulation)
endif (NOT USE_CTC AND ENABLE_GAZEBO)
add_subdirectory(gnc)
add_subdirectory(mobility)
add_subdirectory(procedures)
add_subdirectory(management)
endif (USE_ROS)

if (USE_DRIVERS)
Expand Down
2 changes: 2 additions & 0 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ Clone the android repository:

Next, install all required dependencies:
*Note: `root` access is necessary to install the compiled debian packages below*
*Note: Before running this please ensure that your system is completely updated
by running 'sudo apt-get update' and then 'sudo apt-get upgrade'*

pushd $SOURCE_PATH
cd scripts/setup
Expand Down
11 changes: 6 additions & 5 deletions NASA_INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ support running Astrobee Robot Software on 32-bit systems.*
## Machine setup

#### General notes before running the scripts below

- The custom debian packages are currently stored on the "volar" server. So you
need to have credentials on `volar` to run these scripts.
- If you are using a VM with a username that does not match your NDC username,
Expand Down Expand Up @@ -42,7 +43,7 @@ First, clone the flight software repository:
Next, install all required dependencies:

pushd $SOURCE_PATH
cd scripts/platform/desktop
cd scripts/setup
./add_local_repository.sh
./add_ros_repository.sh
./install_desktop_16_04_packages.sh
Expand Down Expand Up @@ -78,8 +79,8 @@ Next, download the cross toolchain and install the chroot:

mkdir -p $ARMHF_TOOLCHAIN
cd $HOME/arm_cross
$SOURCE_PATH/scripts/platform/fetch_toolchain.sh
$SOURCE_PATH/scripts/platform/rootfs/make_xenial.sh dev $ARMHF_CHROOT_DIR
$SOURCE_PATH/submodules/platform/fetch_toolchain.sh
$SOURCE_PATH/submodules/platform/rootfs/make_xenial.sh dev $ARMHF_CHROOT_DIR

## Configuring the build

Expand Down Expand Up @@ -159,9 +160,9 @@ After this command has completed, you should be able to run a simulator from any
directory in your Linux filesystem. So, for example, to start a simulation of a
single Astrobee in the Granite Lab, run the following:

roslaunch astrobee simulator.launch
roslaunch astrobee sim.launch

This command tells ROS to look for the `simulation.launch` file provided by the
This command tells ROS to look for the `sim.launch` file provided by the
`astrobee` package, and use roslaunch to run it. Internally, ROS maintains a
cache of information about package locations, libraries and executables. If you
find that the above command doesn't work, try rebuilding the cache:
Expand Down
52 changes: 30 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<p>
<img src="doc/images/astrobee.png" srcset="../images/astrobee.png 1x" title="Astrobee" align="right" style="display: inline"/>
Astrobee is a free-flying robot that is designed to operate as a payload inside
Astrobee is a free-flying robot designed to operate as a payload inside
the International Space Station (ISS). The Astrobee Robot Software consists of
embedded (on-board) software, supporting tools and a simulator. The Astrobee
Robot Software operates on Astrobee's three internal single board computers and
Expand All @@ -26,40 +26,32 @@ for creating maps for localization. A separate repository,
Java API, which uses the ROS messaging system to communicate with flight
software.

Note that the Astrobee Robot Software is in beta stage. This means that some
features are missing and some functionalities are incomplete. Please consult
The Astrobee Robot Software is in a beta stage. This means that some
features are incomplete, and extensive changes can be expected. Please consult
[RELEASE](RELEASE.md) for the current list of features and limitations.

## License
## Usage instructions

Copyright (c) 2017, United States Government, as represented by the
Administrator of the National Aeronautics and Space Administration.
All rights reserved.
If you don't have access to NASA's internal network, please see the
[usage instructions](INSTALL.md).

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.
If you do, please see the [NASA usage instructions](NASA_INSTALL.md).

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.
## Contributors

The Astrobee Robot Software is open source, and we welcome contributions
from the public. However, for us to merge any pull requests, we must request
that contributors sign and submit a [Contributor License Agreement](https://www.nasa.gov/sites/default/files/atoms/files/astrobee_individual_contributor_license_agreement.pdf)
due to NASA legal requirements. Thank you for your understanding.

## Documentation
If you would like to generate the astrobee documentation, please run
To generate the Astrobee documentation, run

doxygen freeflyer.doxyfile

after checking out the code. The documentation will be generated in the doc/html
folder. Open the index.html to get to the main page of the documentation.

## Usage instructions

If you don't have access to NASA's internal network, please see the
[usage instructions.](INSTALL.md)

If you do, please see the [NASA usage instructions.](NASA_INSTALL.md)

## Guest Science

If you are interested in guest science, please do one of the following for more
Expand All @@ -73,3 +65,19 @@ located in the `astrobee_android/guest_science folder`.

If you are a NASA user, please make sure the `android` submodule was checked out
and then visit `submodules/android/guest_science/readme.md`.

## License

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.

98 changes: 76 additions & 22 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,55 @@
# Astrobee Robot Software v1, release 0.1.2
# Astrobee Robot Software v1

## Simulator
- Use the same flight software stack that is run on the platform (but the HW drivers)
## Release 0.2.0

### Simulator
- Perching Arm motion (and dynamics) functional
- PerchCam and HazCam depth sensors enabled
- Improved performance

### Guest Science
- Guest Science Manager implementation available on Android
- Guest Science library for communication between the manager and guest apps
- Executive can command Guest Science apps

### Architecture
- GN&C decomposed into three separate ROS nodes for easier customization / extension:
- EKF
- Control
- Force Allocation Module
- Management of FlightModes handled on all levels (Exec, Mobility,
GN&C and Propulsion)

### Localization
- Feature map much smaller
- Faster sparse mapping (3Hz on 2 cores only versus 2Hz on 4 cores)
- Visualization tool for localization features
- Calibration of depth cameras relative to IMU

### Mobility
- Fixed 6DoF face-forward bug with the trapezoidal path planner
- Asynchronous, state-based mobility and control pipeline with improved debugging output
- Multiple speed gains now supported by FAM, with a controlled ramp up/down
- Robot now starts in "off" flight mode by default
- Asychronous, state-based procedures for
- Arm control
- Docking and undocking
- Perching and unperching

### Executive
- Changed to new motion system
- Flight mode propagation

### Hardware drivers
- Picoflexx driver produces depth images in addition to point clouds
- Picoflexx internal core (Royale) driver bumped to v3.9.0 LTS
- PMC actuator now determines its state (ramping up/down, ready) based on telemetry feedback

## Release 0.1.2

### Simulator
- Use the same flight software stack that is run on the platform (but the HW
drivers)
- Dynamics of the Astrobee using Gazebo at 1KHz
- One ISS module environment from Gazebo
- GNC control running at 62.5Hz (same as real platform)
Expand All @@ -16,7 +64,7 @@
- Supports muti-Astrobee simulation (no communication between them)
- Collision between Astrobee and ISS walls simulated

### Limitations
#### Limitations
- No AR target tracking
- No Handrail detection
- Depthcam point cloud disabled (efficiency)
Expand All @@ -26,15 +74,16 @@
- No noise in the system


## Guest Science
### Guest Science
- JAVA API generated from XP-JSON command dictionary
- Commands can be send to the Executive using the API and provided ROS Java framework
- Commands can be send to the Executive using the API and provided ROS Java
framework

### Limitations
#### Limitations
- Android framework to support ROS Java in development
- No guest science manager (life cycle of Guest Science apps)

## Localization
### Localization
- Localize without external infrastructure (beacons, etc.)
- EKF works with following inputs:
- Sparse mapping with BRISK (regular nav), ~2Hz
Expand All @@ -48,7 +97,7 @@
- Tools to test localization performance from rosbag
- Custom visualizer (gViz) for EFK inspection

### Limitations
#### Limitations
- Sparse mapping runs only at 2Hz (vision processing + feature matching)
- High distortion limits the usable features
- Handrail localization needs improvements
Expand All @@ -58,7 +107,7 @@
- No tiling of large maps
- No perched localization (low power localization when perched)

## Mobility
### Mobility
- Provides 4 different motion types:
- IDLE (drifting)
- STOP (zeros velocity, hold position if not externally moved)
Expand All @@ -68,15 +117,16 @@
- trapezoidal (default)
- QP planner
- Move primitive are position based
- Validation of trajectories: stationary end-point, hard limits (velocity and acceleration) and control frequency 
- Validation of trajectories: stationary end-point, hard limits (velocity and
acceleration) and control frequency
- Velocity control is not allowed

### Limitations
#### Limitations
- On-board validation of trajectories against keep-in and keep-out not enabled
- Planner type cannot be changed from ground (DDS)
- Hazard detection not implemented

## Executive
### Executive
- Arbitrates commands regarding operating mode and current state
- Sequencer supports plan execution
- Supports essential commands (see list of currently supported commands)
Expand All @@ -85,26 +135,30 @@
- Camera management
- System management

### Limitations
#### Limitations
- Full command dictionary is not implemented
- Guest Science management not supported yet

## Fault Management
- Faults are managed in a spreadsheet, converted to a fault table read by the system
### Fault Management
- Faults are managed in a spreadsheet, converted to a fault table read by the
system
- Heart beat monitor for most nodes
- System monitor framework can trigger responses to published faults

### Limitations
#### Limitations
- Very few faults are published

## Framework
### Framework
- Leverages ROS framework for on-board framework
- All software stack works on Ubuntu 16.04 on Intel and ArmHF (target platform)
- All software stack works on Ubuntu 16.04 on Intel and ArmHF (target
platform)
- Dependencies packaged as Debian
- Software updates delivered as Debian
- Unify launch file system supports multiple scenarios, on-robot, simulator or processor in the loop configuration
- Unify launch file system supports multiple scenarios, on-robot, simulator or
processor in the loop configuration
- Leverages rViz and Gazebo 7 integration
- Improved HTC Vive tracker, calibration procedure and integration for ground truth
- Improved HTC Vive tracker, calibration procedure and integration for ground
truth

### Limitations
#### Limitations
- Documentation is incomplete
5 changes: 3 additions & 2 deletions astrobee/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ catkin_package(
)

install(DIRECTORY config/ DESTINATION config)
install(DIRECTORY resources/ DESTINATION resources)
# resources will be installed separately
# install(DIRECTORY resources/ DESTINATION resources)

install_launch_files()

install(PROGRAMS scripts/check_env.sh
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
2 changes: 2 additions & 0 deletions astrobee/config/communications/dds/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/NDDS_DISCOVERY_PEERS
/RAPID_QOS_PROFILES.xml
Loading

0 comments on commit e74a241

Please sign in to comment.