stack-of-tasks / pinocchio

A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
http://stack-of-tasks.github.io/pinocchio/
BSD 2-Clause "Simplified" License
1.92k stars 395 forks source link

Installation on macOS #1700

Closed joansola closed 2 years ago

joansola commented 2 years ago

Trying to install on macOS Monterey, following the MacOS installation instructions:

Starting with

brew upgrade

and then the first instruction line:

brew tap gepetto/homebrew-gepetto

produces the following errors:

(base) vermicelle:hidro_lib jsola$ brew tap gepetto/homebrew-gepetto
==> Tapping gepetto/gepetto
Cloning into '/usr/local/Homebrew/Library/Taps/gepetto/homebrew-gepetto'...
remote: Enumerating objects: 745, done.
remote: Counting objects: 100% (36/36), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 745 (delta 32), reused 27 (delta 27), pack-reused 709
Receiving objects: 100% (745/745), 216.90 KiB | 1.55 MiB/s, done.
Resolving deltas: 100% (356/356), done.
Error: Invalid formula: /usr/local/Homebrew/Library/Taps/gepetto/homebrew-gepetto/Formula/gepetto-viewer-corba.rb
gepetto-viewer-corba: Invalid bottle tag symbol
Error: Invalid formula: /usr/local/Homebrew/Library/Taps/gepetto/homebrew-gepetto/Formula/omniorbpy.rb
omniorbpy: undefined method `cellar' for #<BottleSpecification:0x00007fe894b1ab00>
Error: Invalid formula: /usr/local/Homebrew/Library/Taps/gepetto/homebrew-gepetto/Formula/eigenpy@2.rb
eigenpy@2: Invalid bottle tag symbol
Error: Invalid formula: /usr/local/Homebrew/Library/Taps/gepetto/homebrew-gepetto/Formula/gepetto-viewer.rb
gepetto-viewer: Invalid bottle tag symbol
Error: Invalid formula: /usr/local/Homebrew/Library/Taps/gepetto/homebrew-gepetto/Formula/osgqt.rb
osgqt: undefined method `cellar' for #<BottleSpecification:0x00007fe895c24770>
Error: Invalid formula: /usr/local/Homebrew/Library/Taps/gepetto/homebrew-gepetto/Formula/open-scene-graph-with-colladadom.rb
open-scene-graph-with-colladadom: Invalid bottle tag symbol
Error: Cannot tap gepetto/gepetto: invalid syntax in tap!
olivier-stasse commented 2 years ago

conda is the way to go. conda install pinocchio -c conda-forge

joansola commented 2 years ago

thanks Olivier!

Maybe you want to update the doc :-)

joansola commented 2 years ago

May I ask this here: Does conda apply also to gepetto-viewer and croccoddyl?

olivier-stasse commented 2 years ago

The best doc is the readme.md the website is indeed a bit outdated.

For crocoddyl yes: https://anaconda.org/conda-forge/crocoddyl

As an exercice I let you find by yourself for gepetto-viewer 😀

joansola commented 2 years ago

Hahaha found it!!

thanks!!

cmastalli commented 2 years ago

Hahaha found it!!

thanks!!

Gepetto viewer is not yet available on the Apple chip.

jcarpent commented 2 years ago

I will try to update the recipes on Brew, but honestly, conda is much more flexible.

jcarpent commented 2 years ago

@joansola Happy to see you onboard.

joansola commented 2 years ago

Justin, conda is ok, don't bither to do this brew update!

joansola commented 2 years ago

I will migrate all my brew packages to conda, though, since they seem to conflict quite a lot. Any suggestion?

jcarpent commented 2 years ago

If you have conflicts, I would say just do brew unlink to shadow them from the rest.

joansola commented 2 years ago

It is difficult to see what is going on. I will post here the number of conflicts I had when installing gepetto-viewer via conda, and also all the brew packages I have. Conflicts and packages do not match much... so maybe someone can shed some light to see what is the recommended course of action.

joansola commented 2 years ago
  1. CONDA INSTALLATION OF GEPETTO-VIEWER
    
    [first a super long list of conflicts...]
    // then this:
    Package eigenpy conflicts for:
    hpp-fcl -> eigenpy
    pinocchio -> eigenpy

Package nss conflicts for: qt -> qt-main=5.15.4 -> nss[version='>=3.74,<4.0a0|>=3.77,<4.0a0|>=3.78,<4.0a0'] qt -> nss[version='>=3.39,<4.0a0|>=3.47,<4.0a0|>=3.73,<4.0a0|>=3.46,<4.0a0|>=3.45,<4.0a0']

Package filelock conflicts for: conda-build -> filelock anaconda==2021.05 -> filelock==3.0.12=pyhd3eb1b0_1

Package charls conflicts for: tifffile -> imagecodecs[version='>=2021.11.20'] -> charls[version='>=2.1.0,<2.2.0a0|>=2.2.0,<2.3.0a0|>=2.3.4,<2.4.0a0'] anaconda==2021.05 -> charls==2.2.0=h23ab428_0 anaconda==2021.05 -> imagecodecs==2021.3.31=py39h2ea9c00_0 -> charls[version='>=2.2.0,<2.3.0a0']

Package wurlitzer conflicts for: spyder-kernels -> wurlitzer[version='>=1.0.3'] anaconda==2021.05 -> wurlitzer==2.1.0[build='py37hecd8cb5_0|py39hecd8cb5_0|py38hecd8cb5_0'] spyder -> spyder-kernels[version='>=2.3.1,<2.4.0'] -> wurlitzer[version='>=1.0.3'] anaconda==2021.05 -> spyder-kernels==1.10.2=py37hecd8cb5_0 -> wurlitzer[version='>=1.0.3']

Package jdcal conflicts for: anaconda==2021.05 -> openpyxl==3.0.7=pyhd3eb1b0_0 -> jdcal openpyxl -> jdcal anaconda==2021.05 -> jdcal==1.4.1=py_0

Package immutables conflicts for: sniffio -> contextvars[version='>=2.1'] -> immutables[version='0.5|0.6|>=0.9'] distributed -> contextvars -> immutables[version='0.5|0.6|>=0.9']

Package bkcharts conflicts for: dask -> bokeh -> bkcharts[version='>=0.2'] distributed -> bokeh[version='>=0.12.3'] -> bkcharts[version='>=0.2'] bokeh -> bkcharts[version='>=0.2'] anaconda==2021.05 -> bkcharts==0.2[build='py37_0|py39hecd8cb5_0|py38_0']

Package mock conflicts for: pytables -> mock anaconda==2021.05 -> mock==4.0.3=pyhd3eb1b0_0 anaconda==2021.05 -> pytables==3.6.1=py37h5bccee9_0 -> mock

Package pytoolconfig conflicts for: spyder -> rope[version='>=0.10.5'] -> pytoolconfig rope -> pytoolconfig python-language-server -> rope[version='>=0.10.5'] -> pytoolconfig

Package pyobjc-core conflicts for: watchdog -> pyobjc-framework-cocoa[version='>=4.2.2'] -> pyobjc-core[version='7.3.|8.0.|8.1.|8.2.|8.4.|8.4.1.|8.5.*|>=7.1|>=6.2.2|>=6.2.1|>=6.1|>=5.1'] applaunchservices -> pyobjc-framework-coreservices -> pyobjc-core[version='>=8.5']

Package pyls-spyder conflicts for: spyder -> pyls-spyder[version='>=0.1.1|>=0.3.0|>=0.3.2|>=0.3.2,<0.4.0|>=0.4.0'] anaconda==2021.05 -> pyls-spyder==0.3.2=pyhd3eb1b0_0 anaconda==2021.05 -> spyder==4.2.5=py37hecd8cb5_0 -> pyls-spyder[version='>=0.3.2']

Package ply conflicts for: anaconda==2021.05 -> ply==3.11[build='py37_0|py39hecd8cb5_0|py38_0'] sip -> ply

Package lazy-object-proxy conflicts for: anaconda==2021.05 -> astroid==2.5=py37hecd8cb5_1 -> lazy-object-proxy[version='>=1.4,<2'] anaconda==2021.05 -> lazy-object-proxy==1.6.0[build='py37h9ed2024_0|py39h9ed2024_0|py38h9ed2024_0'] astroid -> lazy-object-proxy[version='1.4.|>=1.4,<2|>=1.4.0'] pylint -> astroid[version='>=2.11.6,<2.12.0'] -> lazy-object-proxy[version='1.4.|>=1.4,<2|>=1.4.0']

Package assimp conflicts for: gepetto-viewer -> assimp[version='>=5.0.1,<5.1.0a0|>=5.2.3,<5.2.4.0a0|>=5.2.4,<5.2.5.0a0'] pinocchio -> hpp-fcl[version='>=2.0.1,<2.1.0a0'] -> assimp[version='>=4.1.0,<4.2.0a0|>=5.0.1,<5.1.0a0|>=5.2.0,<5.3.0a0|>=5.2.1,<5.3.0a0|>=5.2.3,<5.2.4.0a0|>=5.2.4,<5.2.5.0a0'] hpp-fcl -> assimp[version='>=4.1.0,<4.2.0a0|>=5.0.1,<5.1.0a0|>=5.2.0,<5.3.0a0|>=5.2.1,<5.3.0a0|>=5.2.3,<5.2.4.0a0|>=5.2.4,<5.2.5.0a0']

Package conda-content-trust conflicts for: conda-token -> conda-content-trust anaconda-navigator -> conda-token -> conda-content-trust

Package python-pathlib2 conflicts for: ipython -> pickleshare -> python-pathlib2 pickleshare -> python-pathlib2 spyder -> pickleshare[version='>=0.4'] -> python-pathlib2

Package imagecodecs-lite conflicts for: tifffile -> imagecodecs-lite[version='>=2019.4.20'] scikit-image -> tifffile[version='>=2019.7.26'] -> imagecodecs-lite[version='>=2019.4.20']

Package fastcache conflicts for: anaconda==2021.05 -> fastcache==1.1.0[build='py38h1de35cc_0|py37h1de35cc_0|py39h9ed2024_0'] sympy -> fastcache

Package qtconsole conflicts for: anaconda==2021.05 -> jupyter==1.0.0=py37_7 -> qtconsole[version='>=5.0.3'] spyder -> qtconsole[version='>=4.2|>=4.6.0|>=4.7.7|>=5.0.1|>=5.0.3|>=5.1.0|>=5.1.0,<5.2.0|>=5.2.1,<5.3.0|>=5.3.0,<5.4.0'] anaconda==2021.05 -> qtconsole==5.0.3=pyhd3eb1b0_0 jupyter -> qtconsole

Package pyqtwebengine conflicts for: spyder -> pyqtwebengine[version='<5.16'] spyder -> pyqt[version='>=5.6,<5.16'] -> pyqtwebengine==5.12.1[build='py38h721a93c_5|py39hef7122c_6|py38hb240fba_8|py39he44290a_8|py37hab5ec1f_8|py310hea9ccf3_8|py38h721a93c_7|py37h5ae2165_7|py39hef7122c_7|py36hb40023b_7|py36hb40023b_6|py38h721a93c_6|py37h5ae2165_6']

Package qtconsole-base conflicts for: spyder -> qtconsole[version='>=5.3.0,<5.4.0'] -> qtconsole-base[version='>=5.2.2,<5.2.3.0a0|>=5.3.0,<5.3.1.0a0|>=5.3.1,<5.3.2.0a0'] qtconsole -> qtconsole-base[version='>=5.2.2,<5.2.3.0a0|>=5.3.0,<5.3.1.0a0|>=5.3.1,<5.3.2.0a0'] jupyter -> qtconsole -> qtconsole-base[version='>=5.2.2,<5.2.3.0a0|>=5.3.0,<5.3.1.0a0|>=5.3.1,<5.3.2.0a0']

Package ripgrep conflicts for: anaconda==2021.05 -> ripgrep==12.1.1=0 conda-build -> ripgrep

Package pywavelets conflicts for: anaconda==2021.05 -> scikit-image==0.18.1=py37hb2f4e1b_0 -> pywavelets[version='>=0.4.0'] scikit-image -> pywavelets[version='>=0.4.0|>=1.1.1'] anaconda==2021.05 -> pywavelets==1.1.1[build='py37haf1e3a3_2|py39he3068b8_4|py38haf1e3a3_2']

Package mysql-libs conflicts for: qt -> mysql-libs[version='>=8.0.21,<8.1.0.0a0|>=8.0.22,<8.1.0.0a0|>=8.0.23,<8.1.0.0a0|>=8.0.27,<8.1.0a0'] qt -> qt-main=5.15.4 -> mysql-libs[version='>=8.0.28,<8.1.0a0|>=8.0.29,<8.1.0a0']The following specifications were found to be incompatible with your system:

Your installed version is: 10.16

joansola commented 2 years ago
  1. BREW LIST
(base) vermicelle:install jsola$ brew list
==> Formulae
adns            ffmpeg          gnutls          libarchive      libsamplerate       meson           poco            srt
android-platform-tools  ffmpeg@4        go          libass          libsndfile      metis           protobuf        subversion
aom         flac            gobject-introspection   libassuan       libsodium       mpdecimal       pugixml         suite-sparse
apr         fltk            gpgme           libavif         libsoxr         mpfr            pyqt@5          szip
apr-util        fontconfig      graphite2       libb2           libtasn1        mysql@5.7       python          tbb
autoconf        freetype        graphviz        libbluray       libtiff         netcdf          python3         tbb@2020
automake        frei0r          gts         libcerf         libtool         netpbm          python@2        tcl-tk
bash-completion     fribidi         gtsam           libconfig       libunistring        nettle          python@3.10     telnet
bdw-gc          gcc         guile           libde265        libusb          nghttp2         python@3.8      tesseract
bibtex2html     gd          harfbuzz        libev           libvidstab      ninja           python@3.9      theora
boost           gdb         hdf5            libevent        libvmaf         npth            qcachegrind     tinyxml2
boost@1.57      gdbm            hevea           libffi          libvorbis       numpy           qhull           unbound
boost@1.60      gdk-pixbuf      hugo            libgcrypt       libvpx          ocaml           qt          utf8cpp
brotli          gettext         icu4c           libgpg-error        libx11          openblas        qt5         utf8proc
c-ares          gflags          ilmbase         libheif         libxau          opencore-amr        qt@5            vtk
ca-certificates     ghostscript     imagemagick     libidn          libxcb          opencv          rav1e           webp
cairo           giflib          imath           libidn2         libxdmcp        openexr         readline        wget
ceres-solver        git         isl         libksba         libxext         openjpeg        rtmpdump        x264
cjson           git-flow        jasper          liblqr          libxrender      openssl@1.1     rubberband      x265
clang-format        git-gui         jbig2dec        libmpc          libyaml         opus            sdl2            xmlto
cmake           gl2ps           jemalloc        libnghttp2      liquidprompt        p11-kit         shared-mime-info    xorgproto
cmocka          glew            jpeg            libogg          little-cms2     pango           sip         xvid
dav1d           glib            jpeg-turbo      libomp          lua         pcre            six         xz
docbook         glog            jpeg-xl         libpng          lz4         pcre2           snappy          yaml-cpp
docbook-xsl     gmp         jsoncpp         libpthread-stubs    lzo         picocom         speex           zeromq
double-conversion   gnu-getopt      lame            libraw          m4          pinentry        sphinx          zimg
doxygen         gnupg           leptonica       librist         mbedtls         pixman          sphinx-doc      zstd
eigen           gnuplot         libaec          librsvg         mercurial       pkg-config      sqlite

==> Casks
qlmarkdown
joansola commented 2 years ago

This installation process took several hours.

jcarpent commented 2 years ago

Hi Joan. You cannot mix brew and conda ... This is not compatible. I would say that gepetto-viewer is not the right choice as it is no more maintained by Gepetto. On the other side, I would encourage you to use meshcat as main viewer: it simple and easy to use and install.

What are your needs?

jcarpent commented 2 years ago

I will update gepetto-viewer recipe from conda to account for latest release. You also should use mamba instead of conda (c++ version of conda with better conflict managers).

joansola commented 2 years ago

I need to install pinoccio, croccoddyl, and a viewer. Pep Marti, oru student, is using them in his PhD thesis. Also, he is using gepetto-viewer. But maybe we can change to this other viewer meshcat.

Thanks for all this. Since I barely started with conda, and I still have to get rid of brew packages, I will then switch directly to mamba if you say it's more convenient!

olivier-stasse commented 2 years ago

mamba is working beautifully with robostack.

joansola commented 2 years ago

robostack is kind of an improved robotpkg?

joansola commented 2 years ago

Sorry I'm super newbie on these things

jcarpent commented 2 years ago

robostack is ROS in conda. Nice port by the conda creators, which is pretty useful for computations over clusters, etc.

jcarpent commented 2 years ago

For me, brew is too restrictive and too monolithic. Conda is very flexible and very powerful.

joansola commented 2 years ago

Oh, having ROS in MacOS is allso something that I would like. So robostack offers this? cool!

Then between conda and mamba, what should I chose?

jcarpent commented 2 years ago

both. Install conda and mamba within your conda base environment.

jcarpent commented 2 years ago

Oh, having ROS in MacOS is allso something that I would like. So robostack offers this? cool!

Yes.

joansola commented 2 years ago

ah ok

joansola commented 2 years ago

OK I'll do all this and see how it works. Thanks!

jcarpent commented 2 years ago

See https://arxiv.org/abs/2104.12910

olivier-stasse commented 2 years ago

An alternative is that with the robotstack you have use rviz (noetic) or rviz2 (galactic).

joansola commented 2 years ago

Cool! Should I use this (closed issue) communication channel with you guys until I have my system running?

jcarpent commented 2 years ago

Could you move to Gepetto's riot channel instead?

joansola commented 2 years ago

Sure. Can you put a link here?

jcarpent commented 2 years ago

https://matrix.to/#/%23pinocchio:matrix.org

cmastalli commented 2 years ago

@joansola I am preparing a large PR next week, which it will contain more support of meshcat in Crocoddyl. Currently, you can use it but without the display of contact forces (only robot motion)

The only thing you will need to compile Crocoddyl by source, as it might take a month to release this code.

joansola commented 2 years ago

OK I got you on Matrix, but for what concerns this thread I will just post updates here. Thanks Justin, Olivier and Carlos for your inputs!

So: I managed to get my Mac clean of Brew and reinstalled all from conda. It is indeed quite powerful and I could find all packages I needed --- with the exception of yaml-cpp which I compiled from source. -- Actually apriltag also because the only package I could find was on robostack.

Now on to croccoddyl and other geppetto packages :-D

traversaro commented 2 years ago

So: I managed to get my Mac clean of Brew and reinstalled all from conda. It is indeed quite powerful and I could find all packages I needed --- with the exception of yaml-cpp which I compiled from source. -- Actually apriltag also because the only package I could find was on robostack.

Hi @joansola ! In theory there is yaml-cpp in conda-forge (see https://github.com/conda-forge/yaml-cpp-feedstock). There is any feature missing there for which you had to compile it from source? Thanks!

joansola commented 2 years ago

Hi Silvio @traversaro ! Nice to meet you here

Let me recap a little bit and tell you what I found missing. It was a bit of a chaos and I am not sure of all the details.

I think it was only the apriltag library. The only option through conda was via a robostack ros module and I did not like it. I tried however, but conda replied it was incompatible with my OS version (Monterey). So since I had the sources, I compiled from source, here

Regarding yaml-cpp, I did install from conda, so OK. I just wrote my last comment a little too quick I guess :-D

traversaro commented 2 years ago

Perfect! Sorry for the direct question, I was just afraid something was wrong with the yaml-cpp package from conda-forge .