ROSCO is a codebase originally developed at NASA/JPL to detect rocks in aerial imagery by by looking for their shadows.
This repository brings several existing sources into a linear history and is the currently active branch of the shadow-based rock detection code from 2006 to present. The sources included:
- code recovered from the original authors, Andres Huertas and Yang Cheng, used for the Mars Phoenix Lander mission
- code handed off by Andres at his retirement (used for the MSL and InSight missions)
- code used for the Mars 2020 mission
- the RockCollect user interface built by Bob Crocco.
- Andres Huertas (retired) - member of the computer vision group at NASA/JPL
- Yang Cheng - member of the Aerial and Orbital Image Analysis group at NASA/JPL
- Marshall Trautman - engineering applications software engineer at NASA/JPL
- Matthew Golombek - senior research scientist at NASA/JPL
- Shane Byrne - faculty member at the Lunar and Planetary Laboratory, University of Arizona
- Bob Crocco - software developer at NASA/JPL, primary author of the RockCollect user interface
- Marsette Vona - software developer at NASA/JPL
The core rock detection algorithms are implemented in a C++ codebase in the RockDetector subdirectory. This code builds on Linux, Mac OS X, and Windows. It creates both a command-line executable and a library.
There are two dependencies:
- OpenMP enables parallelization for a big performance improvement
- SWIG enables a Python interface to the library.
Both are optional, and will be used only if you install them on your system before building RockDetector.
Test instructions are here.
Install cmake.
cd RockDetector
mkdir build
cd build
cmake ..
make
The command line executable will be generated at RockDetector/build/bin/RockDetector
and the shared library will be at RockDetector/build/lib/libRockDetectorShared.*
.
Install the latest version of cmake from here. These instructions were tested with cmake-3.28.3 on windows x86_64.
Install Microsoft Visual Studio Community Edition. These instructions were tested with
- Visual Studio 16 2019, which is also the version currently used by the RockCollect UI.
- a git bash command prompt, but the built-in cmd or cygwin should also work.
Then run the following commands to generate the Visual Studio solution file:
cd RockDetector
mkdir build
cd build
cmake .. -G "Visual Studio 16 2019"
Then open the newly created RockDetector/build/Rockdetector.sln
in Visual Studio. In the "Solution Configurations" pulldown in the toolbar make sure "Release" is chosen. In the adjacent "Solution Platforms" pulldown make sure "x64" is chosen. Then in the Solution Explorer pane right click on "Solution 'RockDetector'" and chose "Build Solution". The command line executable will be generated at RockDetector/build/bin/Release/RockDetector.exe
and the shared library will be at RockDetector/build/Release/RockDetectorShared.dll
.
TODO
- Otero, Richard; Huertas, A.; Almeida, E.; Golombek, M.; Trautman, M.; Rothrock, B., 2017, "Mars 2020 robust rock detection and analysis method", 14th International Planetary Probe Workshop, The Hague, Netherlands, June 12-16, 2017, JPL Open Repository; CL17-2518.pdf.
- L. Matthies, A. Huertas, Y. Cheng and A. Johnson, "Stereo vision and shadow analysis for landing hazard detection," 2008 IEEE International Conference on Robotics and Automation, Pasadena, CA, USA, 2008, pp. 2735-2742, doi: 10.1109/ROBOT.2008.4543625.
- A. Huertas, Yang Cheng and R. Madison, "Passive imaging based multi-cue hazard detection for spacecraft safe landing," 2006 IEEE Aerospace Conference, Big Sky, MT, USA, 2006, pp. 14 pp.-, doi: 10.1109/AERO.2006.1655794.
- Golombek, M. P., et al. (2008), Size-frequency distributions of rocks on the northern plains of Mars with special reference to Phoenix landing surfaces, J. Geophys. Res., 113, E00A09, doi: 10.1029/2007JE003065.
This codebase is released under the Apache 2.0 license.