Giter VIP home page Giter VIP logo

astrobee's Introduction

Astrobee Robot Software

About

Three NASA Astrobee free-flying robots have been operating inside the International Space Station (ISS) since 2019. This astrobee repository contains source code for the Astrobee Robot Software, consisting of the flight software that runs onboard the Astrobee robots, a software simulator, and supporting tools, primarily written in C++.

Astrobee's flight software performs vision-based localization, provides autonomous navigation, docking and perching, manages various sensors and actuators, and supports human-robot interaction with co-located astronauts via screen-based displays, light signaling, and sound. The flight software is hosted on each Astrobee's three internal single board computers and uses the open-source Robot Operating System (ROS) framework as message-passing middleware. It provides a high-level Astrobee Command API for controlling the robot and has multiple operating modes. It can execute a plan (command sequence), individual operator commands (teleoperation), or commands from guest science code running onboard Astrobee.

The Astrobee Robot Software simulator, built using ROS and Gazebo, enables the flight software to be evaluated without the need for robot hardware. The supporting tools include a tool that processes ISS imagery to build maps for Astrobee localization, along with many others.

Released separately, the Astrobee ground data system (GDS) includes Astrobee control station software that communicates with Astrobee flight software via the Data Distribution Service (DDS) network protocol over the ISS Ku-IP space-to-ground link. The control station is written primarily in Java using the Eclipse RCP framework. Source code is in the astrobee_gds repository, or you can download the binary release.

Together, the Astrobee Robot and Ground Software were the NASA Software of the Year Award Runner-Up in 2020!

The Astrobee Robot Software remains a work in progress. Please consult the release notes for the current list of features and limitations.

Usage

Instructions on installing and using the Astrobee Robot Software.

Contributing

The Astrobee Robot Software is open source, and we welcome contributions from the public. Please submit pull requests to the develop branch. The code must follow the Astrobee code style. For us to merge any pull requests, we must request that contributors sign and submit a Contributor License Agreement due to NASA legal requirements. Thank you for your understanding.

Documentation

Extensive documentation is auto-generated from the contents of this repository.

"A Brief Guide to Astrobee’s Flight Software" is a good tutorial, with a particular emphasis on the advanced topic of modifying Astrobee's flight software to enable Guidance, Navigation, & Control (GN&C) research. (Note that most guest science can be implemented as an app that uses the Astrobee Command API without modifying the flight software.)

The "Astrobee ROS Demo" package provides a C++/Python interface to implement custom control methods in ROS.

For more information, read Astrobee-related publications. Learning about the Astrobee platform, software, and localization are good starting points.

Guest Science

The ISS Astrobee Facility maintains a collection of resources for guest scientists interested in conducting research with Astrobee, including the Astrobee Guest Science Guide overview.

Guest science code that runs onboard Astrobee is usually hosted as an Android Java app running on Astrobee's high-level processor (HLP). Guest science apps can use the Astrobee Command API through its Java bindings. The astrobee_android repository contains source code for Astrobee services that run on the HLP, example guest science apps, as well as a Guest Science Readme and Guest Science Developer Guide focused on HLP guest science apps.

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.

astrobee's People

Contributors

albee avatar amoravargas avatar ana-gt avatar bckempa avatar bcoltin avatar flowarko avatar gabrielchuang avatar iandouglas96 avatar jdekarske avatar kbrowne15 avatar krichardsson avatar kristofkekesi avatar marinagmoreira avatar oleg-alexandrov avatar pedro-roque avatar rgarciaruiz avatar rsoussan avatar stephanie-eng avatar trey0 avatar trusktr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

astrobee's Issues

Unit tests

There are currently unit tests made with gtest and rostest. These should be run at every pull request to make sure new code does not break anything.
To do:

  • Incorporate unit tests into docker action
  • Go through unit tests and correct the ones that were deprecated and now fail.

Installing on 64-bit Ubuntu 18.04.1 LTS?

Is it possible to install on 64-bit Ubuntu 18.04.1 LTS?
I went through every step, but I get stuck on this step:

./scripts/configure.sh -l -F -D

The output says:

CMake Error at cmake/FindGlog.cmake:79 (MESSAGE):
Failed to find glog - Could not find glog include directory, set
GLOG_INCLUDE_DIR to directory containing glog/logging.h
Call Stack (most recent call first):
cmake/FindGlog.cmake:113 (GLOG_REPORT_NOT_FOUND)
CMakeLists.txt:162 (find_package)

-- Configuring incomplete, errors occurred!

Does the installation process get affected because I recently installed ROS (Melodic Morenia)?

Any help is appreciated. Thanks

I have problem sim.launch

***@ubuntu:~$ roslaunch astrobee sim.launch dds:=false robot:=sim_pub rviz:=true

[sim.launch] is neither a launch file in package [astrobee] nor is [astrobee] a launch file name
The traceback for the exception was written to the log file

Likely bug in arm collision checking

if (new_t > K_TILT_SAFE && fabs(new_p - K_PAN_STOW) > joints_[PAN].tol) {

This logic for avoiding collisions looks like it prevents a collision if you command the arm to a stowed tilt angle and incorrectly specify a non-zero pan value (good).

But what about the case when the arm is currently at a stowed tilt angle, and you command the arm to tilt to a deployed angle, but incorrectly specify a non-zero pan value? I expect the arm would pan first (causing a collision) before tilting. (Or is there perhaps another check elsewhere that prevents that?)

Simulation of acoustic/RFID sensors?

Hi. Just wondering if there are some plans to add plugins for simulating RFID/acousting sensors in the Gazebo simulation. I took a look at the xacro files and don't seem to find a reference. Thank you very much!

What to do with Android submodule?

Should we remove the android submodule and have people check it out manually? Marina's further thoughts:

"Yeah I agree, we should still reference it in the main page such that users are aware of it, also add mention of the GDS repo in the main readme.
I'll look into how to make submodules optional. Maybe we can add it to the install instructions, clearly stating what the repos are for and letting the user decide according to the needs as an add-on?"

Launching other robots other than default not working

When starting the fsw with a robot other than default:
roslaunch astrobee sim.launch rviz:=true gds:=true default:=false honey:=true
You can see by doing "rqt &" on a new command line, that the imu augmentor is publishing the transform from world->body instead of world->honey/body.

This is because the function GetPlatform() is not returning anything because those nodes are not starting the nodelet normally.
The affected nodes are imu_augmentor and graph_localizer, that are not running the functio void FreeFlyerNodelet::onInit() that should be called at startup by the nodelet manager that calls void FreeFlyerNodelet::Setup(ros::NodeHandle & nh, ros::NodeHandle & nh_mt) that define variables like the platform name and node name.
This bugs affects the simulation only and is critical to the April demo.

Static assertion error during build

Hello,

I am trying to build the project, but when I run make -j2 I get the following error:

Scanning dependencies of target marker_tracking
[ 44%] Building CXX object localization/marker_tracking/CMakeFiles/marker_tracking.dir/src/arconfigio.cc.o
In file included from /usr/include/c++/8/map:61,
                 from $SOURCE_PATH/localization/marker_tracking/include/marker_tracking/arxmlio.h:25,
                 from $SOURCE_PATH/localization/marker_tracking/include/marker_tracking/arconfigio.h:24,
                 from $SOURCE_PATH/localization/marker_tracking/src/arconfigio.cc:19:
/usr/include/c++/8/bits/stl_map.h: In instantiation of ‘class std::map<int, Eigen::Matrix<float, 4, 3>, std::less<int>, Eigen::aligned_allocator<std::pair<int, Eigen::Matrix<float, 4, 1> > > >’:
$SOURCE_PATH/localization/marker_tracking/src/arconfigio.cc:54:27:   required from here
/usr/include/c++/8/bits/stl_map.h:122:21: error: static assertion failed: std::map must have the same value_type as its allocator
       static_assert(is_same<typename _Alloc::value_type, value_type>::value,
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
localization/marker_tracking/CMakeFiles/marker_tracking.dir/build.make:62: recipe for target 'localization/marker_tracking/CMakeFiles/marker_tracking.dir/src/arconfigio.cc.o' failed
make[2]: *** [localization/marker_tracking/CMakeFiles/marker_tracking.dir/src/arconfigio.cc.o] Error 1
CMakeFiles/Makefile2:19279: recipe for target 'localization/marker_tracking/CMakeFiles/marker_tracking.dir/all' failed
make[1]: *** [localization/marker_tracking/CMakeFiles/marker_tracking.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 44%] Linking CXX executable ../../devel/lib/camera/test_camera_params
[ 44%] Built target test_camera_params
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

I really do not know how to fix this. Could someone please help me? Any help would be appreciated!

Not able to install required dependencies

Hi,
I am getting stuck in the process of installing the dependencies, specifically at this step:

./install_desktop_16_04_packages.sh

in the README file here.

The errors I am getting are as follows:

screenshot_1

I've tried multiple times, however, none of my attempts have been fruitful. Because the dependencies are not satisfied, the code doesn't build as well. Could you please help me resolve this issue?

The system specs are as follows:
Ubuntu 16.04.4 | 16 GB RAM | Core i9

Gnc

Is it possible to use gnc software with other platform like quadrotor and is the msckf written in MATLAB not c++.

Install on "dirty" environment.

This is rather improvement then actual bug report.
I was trying to install Astro Bee on my development laptop which has already some libraries and dependencies installed, such as GCC, OpenCV, eigen3, boost, etc ... and these libraries are of diferent versions, most likely higher then required by this project.
What I was ended up is not able to perform make command right after beginning.
First, gtest was not able to compile because of empty build directory.
Then, if gtest commented out, OpenCV version was not properly assigned, pointed out to something like opencv_calib3d-NOTFOUND for each module.
I believe that having differnt versions of dependencies should not be a problem if configure the project in right way and build scripts can be potentialy improved.
Attached is a log of steps described at this document
InstallLog.txt

Confusingly unused flight modes in granite.config

granite.config specifies some special-purpose flight modes: docking, undocking, perching, unperching.

Of these modes, it looks like only docking (MotionGoal::DOCKING) is used as you would expect in the relevant behavior. The others use MotionGoal::NOMINAL.

I'm not sure if the unused flight modes should be removed or the behaviors should be changed to use them as you would expect.

Mode definitions:

Non-usage examples:

Move(COMPLETE_POSE, ff_msgs::MotionGoal::NOMINAL);

Move(APPROACH_POSE, ff_msgs::MotionGoal::NOMINAL);

Move(APPROACH_POSE, ff_msgs::MotionGoal::NOMINAL);

Add clang-format lint action on commit

Add clang-format lint action on commit
Specs:
BasedOnStyle: Google
ColumnLimit: 120
BraceWrapping:
BeforeElse: false
DerivePointerAlignment: false
PointerAlignment: Left

bash: pushd: no other directory

Hey everyone! I'm having trouble with installing the dependencies. In the instructions, it said that I need to have root access. I have root access. Now, however:

What I type-
pushd $SOURCE_PATH

What I get back-
bash: pushd: no other directory

Can someone help me please? I'm not sure what's going on or what I'm doing wrong. Thank you in advance for your help and response!

Sparse Mapping Orientations Displayed in Gviz Incorrect

In the last activity, gviz sparse mapping updates were showing orientation estimates inconsistent with the pose estimate. However, the pose seemed correct in GDS and the robot was moving fine. We suspect there may be a bug in displaying the orientations of sparse map poses in gviz.

Sci Cam Driver Stills Broken

The sci cam driver has been regularly crashing. Our script to work around this also crashes, although less frequently.

Dockerfile action

This action will build the code upon pull requests for the ubuntu 16 and 18 versions

Investigate Localization Failures / Near Failures

When we pitched up the first time, localization drifted a little but recovered. When we moved vertically towards the deck, the robot became briefly lost and had some difficulty recovering. We should investigate both the initial failures and why it didn't recover more quickly.

Perching is broken

The new graph localizer has not been integrated into perching localization yet. Thus perching doesn't work. Please use release 0.13.0 if you need to perch astrobee.

Change docking behavior

Docking behavior always switches to sparse mapping at the beginning of a dock action. Change this to check if we are in ar tag localization and to not switch to mapped landmarks if we are.

QP planner fails to plan face forward mode trajectories

After using the QP planner for some time I've noticed that there is some weird behaviors when using this planner. These weird behaviors are related to attitude, not positions.

  1. When Astrobee is following a generated trajectory by the QP planner, the error of the attitude feedback from the controller exceeds the threshold in iss.config, parameter tolerance_att. This causes the choreographer to stop the execution of the trajectory.

  2. When Astrobee has approached the goal position, the robot starts to do some weird attitude maneuvers. And when the trajectory is finished, Astrobee is rarely on the desired end orientation.

I have looked into the problems, and have come to the following results:

  • The desired states are correctly received by the QP planner. Thus the error should be constrained to the planner.
  • I have plotted the generated trajectory/segment from the QP planner and found out that it looks like enabling face forward mode is the cause of these problems. I have attached four files, showing the trajectories generated by having enable_faceforward set to false and true in choreographer.config. These are commented and shown bellow.

enable_faceforward = false
These two plots shows that the generated trajectory in blue converges with the desired positions and quaternions in green.
face_forward_off_position
face_forward_off_quaternion

enable_faceforward = true
These two plots shows that the generated positions in blue converges with the desired positions in green. The quaternions however, does not converge to the desired quaternions in green. Also notice the non-smooth trajectories for q_z and q_w. This also helps to explain the problem listed in 1. above.
face_forward_enabled_position
face_forward_enabled_quaternion

Conclusion
The QP planner fails to generate smooth trajectories satisfying the end attitude constraints when face forward mode is enabled. This seems to be a problem with the planner, and not something else.
Since the return to dock behavior and re planning with obstacle avoidance uses the QP planner, this issue should be fixed in order to use these behaviors responsibly.

Project build error

Hi,

I have been able to successfully install the dependencies of the project. I was even able to configure the build of the project. However, when I try to compile it, I get the following errors,

Scanning dependencies of target gtest_noros
Scanning dependencies of target interest_point
[  1%] Creating directories for 'gtest_noros'
[  1%] No download step for 'gtest_noros'
[  1%] No patch step for 'gtest_noros'
[  1%] No update step for 'gtest_noros'
[  1%] Performing configure step for 'gtest_noros'
[  1%] Building CXX object localization/interest_point/CMakeFiles/interest_point.dir/src/agast_score.cc.o
-- Configuring done
CMake Error: Cannot open file for write: /usr/src/gtest/CMakeCache.txt.tmp
CMake Error: : System Error: Permission denied
CMake Error: Unable to open cache file for save. /usr/src/gtest/CMakeCache.txt
CMake Error: : System Error: Permission denied
external/gtest/CMakeFiles/gtest_noros.dir/build.make:123: recipe for target 'external/gtest/src/gtest_noros-stamp/gtest_noros-configure' failed
make[2]: *** [external/gtest/src/gtest_noros-stamp/gtest_noros-configure] Error 1
CMakeFiles/Makefile2:4405: recipe for target 'external/gtest/CMakeFiles/gtest_noros.dir/all' failed
make[1]: *** [external/gtest/CMakeFiles/gtest_noros.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[  1%] Building CXX object localization/interest_point/CMakeFiles/interest_point.dir/src/brisk.cc.o
[  1%] Building CXX object localization/interest_point/CMakeFiles/interest_point.dir/src/essential.cc.o
make[2]: *** No rule to make target 'opencv_calib3d-NOTFOUND', needed by 'devel/lib/libinterest_point.so'.  Stop.
make[2]: *** Waiting for unfinished jobs....
Makefile:157: recipe for target 'all' failed
make: *** [all] Error 2

Can I get some help on how to fix this issue? Seems like the problem stems from sudo access and a weird NOTFOUND flag. I have cmake 3.17 which meets the minimum requirement of the project. I even tried to run the make command with sudo but still faced the same NOTFOUND issue.

[  0%] Performing configure step for 'gtest_noros'
make[2]: *** No rule to make target 'opencv_calib3d-NOTFOUND', needed by 'devel/lib/libinterest_point.so'.  Stop.
CMakeFiles/Makefile2:15385: recipe for target 'localization/interest_point/CMakeFiles/interest_point.dir/all' failed
make[1]: *** [localization/interest_point/CMakeFiles/interest_point.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/src/gtest
[  0%] Performing build step for 'gtest_noros'
make[3]: *** No targets specified and no makefile found.  Stop.
external/gtest/CMakeFiles/gtest_noros.dir/build.make:128: recipe for target 'external/gtest/src/gtest_noros-stamp/gtest_noros-build' failed
make[2]: *** [external/gtest/src/gtest_noros-stamp/gtest_noros-build] Error 2
CMakeFiles/Makefile2:4405: recipe for target 'external/gtest/CMakeFiles/gtest_noros.dir/all' failed
make[1]: *** [external/gtest/CMakeFiles/gtest_noros.dir/all] Error 2
Makefile:157: recipe for target 'all' failed
make: *** [all] Error 2

Any help is appreciated!

Likely bug in logic of multi-Astrobee sync via setTimeSync command

reftime.sec += reftime.sec % cfg_.Get<int>("discrete_time_unit");

I'm pretty sure the '+=' should be a '-=' to achieve the synchronization effect that we are looking for.

Btw, I would not suggest investing time in fixing this feature. Rather, I take this as an indication that it has never been tested, and likely has other bugs as well. Besides, the sync protocol is inherently not robust. Probably it should be abandoned.

Script to Record Version Information

Could be run on the robot to print out all relevant version information.

Astrobee Robot Software Debian Version
Config Debian Version
Avionics Debian Version
Firmware Versions?
Git Hash
Changes to Debian files
Map Name and Hash
Ubuntu Version
ROS Version
Other key dependencies?
Double Check Everything on LLP
HLP Versions

Freeflyer Sensor Plugins with embedded names

Right now, the way the class FreeFlyerSensorPlugin is build, the name of the node is embedded, which means that each plugin can only be spawned once. This causes some trouble as multiple plugin codes are necessary just to change the name (e.g. right and left flashlight are different plugins).

I've Installed Ubuntu...Now What?

I've installed the version of Ubuntu that is required for this project but I'm not really sure how to do the next steps. How exactly do I clone the repositories? Am I supposed to download additional software, in addition to the OS? If so, what else do I need to install? Thank you so much in advance for any responses. I apologize for causing any inconvenience. I'm new to this sort of thing and want to understand it. Again, thank you to anyone who responds! I really appreciate it.

Docker File potential error

Hi I was having a look at the docker file provided for Ubuntu18 and while doing that I found that the astrobee_init.sh file created depends on ROS Kinetic instead of Melodic. This is evident here. I think it should have been melodic.

Localization Slightly Jittery while Station Keeping

While station keeping, the robot would move back and forth approximately ten centimeters. However, it would not get lost. It would be good if we could smooth the pose estimate to reduce these oscillations.

Catkinize build system

The goal is to make this repo a pure catkin build, and add cross-compile to the standard check actions

cannot display image in cv_bridge

hello, i'm new in ROS, and i get trouble that i don't know how to fix it
after i had done with my astrobee instalation, i make made another workspace to control astrobee position based on camera. but when i try to get topic for image, this result some error.

[ERROR] [1578215988.986783663, 37.688000000] : (ros.roscpp) Client [/pose] wants topic /hw/cam_dock to have datatype/md5sum [sensor_msgs/CompressedImage/8f7a12909da2c9d3332d540a0977563f], but our version has [sensor_msgs/Image/060021388200f6f0f447d0fcd9c64743]. Dropping connection.

'executive' package not found

i'm trying to simulate astrobee in VMWare, the rviz and sviz was showed up perfectly but when I try to send a command to undock, I came up with this error
[rospack] Error: package 'executive' not found

executive not found

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.