Create a directory in which to put all of your work this semester. Let's suppose you call this directory AE598-3DV-Dev. Clone the repo you're looking at into this directory, as usual:
git clone https://github.com/tbretl/ae598-3dv.gitI use miniforge to install conda.
I do not suggest you use anaconda for this purpose - it causes trouble. If you already have anaconda installed, I suggest you remove it.
It is ok to use miniconda - I used to do this - but if you do, I suggest that you configure your conda environment to use conda-forge as the only channel. To do this, you'd run the following commands just after creating and activating an empty envirionment:
conda config --env --add channels conda-forge
conda config --env --set channel_priority strictThis configuration is done by default in every environment if you use miniforge.
I use mamba as a drop-in replacement for conda (all the cool kids do this). Both come with miniforge. So, the instructions that follow will all use mamba. You can use conda instead if you like.
This will get us started:
mamba create -n ae598-3dv
mamba activate ae598-3dv
mamba install python=3 numpy scipy sympy matplotlib notebook ipywidgets ipympl opencv cmake eigenWe will add more packages as we need them.
We will make use of a fiducial marker system called AprilTags this semester. I have never been able to install the Python bindings that come with AprilTags, however, so instead I use the bindings from pupil-apriltags. These are available on PyPi and can be installed with pip (again, don't forget to activate your conda environment first):
pip install pupil-apriltagsWhile you're at it, please go ahead and clone the apriltag-imgs repository, which has images of several pre-generated tag families (again, I suggest putting this repository in the AE598-3DV-Dev directory):
git clone https://github.com/AprilRobotics/apriltag-imgs.gitSymForce is a library for nonlinear least-squares minimization. I like it because, unlike other libraries of this sort, it has a Python interface that is reasonably easy to use and is reasonably well documented. It also allows you, if you like, to autogenerate C++ code that is competitive with other state-of-the-art solvers (e.g., ceres, g2o, and GTSAM).
Although SymForce can be installed using pip, I suggest you build it from source. There are two reasons for this. First, some recent bug fixes haven't made it to the version that's available on PyPi yet. Second, the C++ headers are only available if you build and install from source.
It takes just a couple minutes to follow the instructions to build from source on my mac. First, I installed brew and used brew to install gmp (brew install gmp). Then, I cloned the SymForce repository (putting it in AE598-3DV-Dev) and used pip to compile and install (don't forget to activate your ae598-3dv environment first):
git clone https://github.com/symforce-org/symforce.git
cd symforce
pip install .
cd ..The details will be a little different if you use Linux or Windows.
Don't forget to verify your installation after you install SymForce.