- 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)
- uses GNC Simulink blower propulsion module
- EKF inputs:
- IMU model (no noise in this release)
- Sparse mapping features (sampled from point cloud)
- Visual features from synthetic images for optical flow
- Camera models (from Gazebo with radial distortion)
- Flashlight and laser representation
- Can run with Gazebo 7 GUI and RViz or headless
- Supports muti-Astrobee simulation (no communication between them)
- Collision between Astrobee and ISS walls simulated
- No AR target tracking
- No Handrail detection
- Depthcam point cloud disabled (efficiency)
- Camera raytracing runs at 2Hz
- Conservative limit on angular velocity
- Arm simulation disabled
- No noise in the system
- JAVA API generated from XP-JSON command dictionary
- Commands can be send to the Executive using the API and provided ROS Java framework
- Android framework to support ROS Java in development
- No guest science manager (life cycle of Guest Science apps)
- Localize without external infrastructure (beacons, etc.)
- EKF works with following inputs:
- Sparse mapping with BRISK (regular nav), ~2Hz
- Optical flow ~15Hz
- AR targets (docking)
- Handrail detection (perching)
- Produce 62.5Hz output
- Localization manager allows switching safely between localization modes
- Tools to calibrate intrinsics and extrinsics (IMU to Camera)
- Tools to build maps from monocular vision (SURF + BRISK)
- Tools to test localization performance from rosbag
- Custom visualizer (gViz) for EFK inspection
- Sparse mapping runs only at 2Hz (vision processing + feature matching)
- High distortion limits the usable features
- Handrail localization needs improvements
- No extrinsics calibration between depthcam and IMU
- Better tuning for noise model and "lost" threshold required
- No incremental map building
- No tiling of large maps
- No perched localization (low power localization when perched)
- Provides 4 different motion types:
- IDLE (drifting)
- STOP (zeros velocity, hold position if not externally moved)
- MOVE (moves to given end pose)
- EXECUTE (follows a time/space trajectory)
- Provides 2 motion planners:
- trapezoidal (default)
- QP planner
- Move primitive are position based
- Validation of trajectories: stationary end-point, hard limits (velocity and acceleration) and control frequency
- Velocity control is not allowed
- 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
- Arbitrates commands regarding operating mode and current state
- Sequencer supports plan execution
- Supports essential commands (see list of currently supported commands)
- Plan
- Motion
- Camera management
- System management
- Full command dictionary is not implemented
- Guest Science management not supported yet
- 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
- Very few faults are published
- Leverages ROS framework for on-board framework
- 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
- Leverages rViz and Gazebo 7 integration
- Improved HTC Vive tracker, calibration procedure and integration for ground truth
- Documentation is incomplete