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.git
I 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 strict
This 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 eigen
We 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-apriltags
While 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.git
SymForce 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.