diff --git a/pkgs/development/libraries/crocoddyl/default.nix b/pkgs/development/libraries/crocoddyl/default.nix new file mode 100644 index 000000000000..2a8267f9d6b9 --- /dev/null +++ b/pkgs/development/libraries/crocoddyl/default.nix @@ -0,0 +1,49 @@ +{ lib +, stdenv +, fetchFromGitHub +, cmake +, example-robot-data +, pinocchio +, pythonSupport ? false +, python3Packages +}: + +stdenv.mkDerivation rec { + pname = "crocoddyl"; + version = "1.9.0"; + + src = fetchFromGitHub { + owner = "loco-3d"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-IQ+8ZZXVTTRFa4uGetpylRab4P9MSTU2YtytYA3z6ys="; + fetchSubmodules = true; + }; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + ]; + + propagatedBuildInputs = lib.optionals (!pythonSupport) [ + example-robot-data + pinocchio + ] ++ lib.optionals pythonSupport [ + python3Packages.example-robot-data + python3Packages.pinocchio + ]; + + cmakeFlags = lib.optionals (!pythonSupport) [ + "-DBUILD_EXAMPLES=OFF" + "-DBUILD_PYTHON_INTERFACE=OFF" + ]; + + meta = with lib; { + description = "Crocoddyl optimal control library"; + homepage = "https://github.com/loco-3d/crocoddyl"; + license = licenses.bsd3; + maintainers = with maintainers; [ wegank ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/development/libraries/example-robot-data/default.nix b/pkgs/development/libraries/example-robot-data/default.nix new file mode 100644 index 000000000000..08a650dbca00 --- /dev/null +++ b/pkgs/development/libraries/example-robot-data/default.nix @@ -0,0 +1,42 @@ +{ lib +, stdenv +, fetchFromGitHub +, cmake +, pythonSupport ? false +, python3Packages +}: + +stdenv.mkDerivation rec { + pname = "example-robot-data"; + version = "4.0.3"; + + src = fetchFromGitHub { + owner = "Gepetto"; + repo = pname; + rev = "v${version}"; + fetchSubmodules = true; + sha256 = "sha256-rxVyka8tcF/CmGTVNyh3FPR1LVa6JOAN+9zjElgqCak="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + ]; + + buildInputs = lib.optionals pythonSupport [ + python3Packages.pinocchio + ]; + + cmakeFlags = lib.optionals (!pythonSupport) [ + "-DBUILD_PYTHON_INTERFACE=OFF" + ]; + + meta = with lib; { + description = "Set of robot URDFs for benchmarking and developed examples."; + homepage = "https://github.com/Gepetto/example-robot-data"; + license = licenses.bsd3; + maintainers = with maintainers; [ wegank ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/development/libraries/pinocchio/default.nix b/pkgs/development/libraries/pinocchio/default.nix new file mode 100644 index 000000000000..8b48e74476a6 --- /dev/null +++ b/pkgs/development/libraries/pinocchio/default.nix @@ -0,0 +1,57 @@ +{ lib +, stdenv +, fetchFromGitHub +, cmake +, boost +, eigen +, urdfdom +, pythonSupport ? false +, python3Packages +}: + +stdenv.mkDerivation rec { + pname = "pinocchio"; + version = "2.6.12"; + + src = fetchFromGitHub { + owner = "stack-of-tasks"; + repo = pname; + rev = "v${version}"; + fetchSubmodules = true; + sha256 = "sha256-DJX/njNX8l7ngSl3yCeN7ZoQaH65pQTsZrKwmY7EZ+E="; + }; + + # error: use of undeclared identifier '__sincos' + postPatch = lib.optionalString (stdenv.isDarwin && stdenv.isx86_64) '' + substituteInPlace src/math/sincos.hpp \ + --replace "__APPLE__" "0" + ''; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + ]; + + propagatedBuildInputs = [ + urdfdom + ] ++ lib.optionals (!pythonSupport) [ + boost + eigen + ] ++ lib.optionals pythonSupport [ + python3Packages.boost + python3Packages.eigenpy + ]; + + cmakeFlags = lib.optionals (!pythonSupport) [ + "-DBUILD_PYTHON_INTERFACE=OFF" + ]; + + meta = with lib; { + description = "A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives"; + homepage = "https://github.com/stack-of-tasks/pinocchio"; + license = licenses.bsd2; + maintainers = with maintainers; [ wegank ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/development/python-modules/eigenpy/default.nix b/pkgs/development/python-modules/eigenpy/default.nix new file mode 100644 index 000000000000..a13b8e52ed53 --- /dev/null +++ b/pkgs/development/python-modules/eigenpy/default.nix @@ -0,0 +1,44 @@ +{ lib +, stdenv +, fetchFromGitHub +, cmake +, boost +, eigen +, numpy +}: + +stdenv.mkDerivation rec { + pname = "eigenpy"; + version = "2.8.1"; + + src = fetchFromGitHub { + owner = "stack-of-tasks"; + repo = pname; + rev = "v${version}"; + fetchSubmodules = true; + sha256 = "sha256-nofB5TDvEArhPcYe/Pb1LQBC+W6MrE3NuapaZmKIO68="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + ]; + + buildInputs = [ + boost + ]; + + propagatedBuildInputs = [ + eigen + numpy + ]; + + meta = with lib; { + description = "Bindings between Numpy and Eigen using Boost.Python"; + homepage = "https://github.com/stack-of-tasks/eigenpy"; + license = licenses.bsd2; + maintainers = with maintainers; [ wegank ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cd08b4415220..d83f1d3fe9bd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -18786,6 +18786,8 @@ with pkgs; croaring = callPackage ../development/libraries/croaring { }; + crocoddyl = callPackage ../development/libraries/crocoddyl { }; + crossguid = callPackage ../development/libraries/crossguid { }; cryptopp = callPackage ../development/libraries/crypto++ { }; @@ -18957,6 +18959,8 @@ with pkgs; liberasurecode = callPackage ../applications/misc/liberasurecode { }; + example-robot-data = callPackage ../development/libraries/example-robot-data { }; + exiv2 = callPackage ../development/libraries/exiv2 { }; expat = callPackage ../development/libraries/expat { }; @@ -22051,6 +22055,8 @@ with pkgs; pico-sdk = callPackage ../development/libraries/pico-sdk { }; + pinocchio = callPackage ../development/libraries/pinocchio { }; + pipelight = callPackage ../tools/misc/pipelight { stdenv = stdenv_32bit; wine-staging = pkgsi686Linux.wine-staging; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 51719fbde161..b9d16de47750 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2028,6 +2028,11 @@ self: super: with self; { criticality-score = callPackage ../development/python-modules/criticality-score { }; + crocoddyl = toPythonModule (callPackage ../development/libraries/crocoddyl { + pythonSupport = true; + python3Packages = self; + }); + cron-descriptor = callPackage ../development/python-modules/cron-descriptor { }; croniter = callPackage ../development/python-modules/croniter { }; @@ -2897,6 +2902,8 @@ self: super: with self; { eggdeps = callPackage ../development/python-modules/eggdeps { }; + eigenpy = toPythonModule (callPackage ../development/python-modules/eigenpy { }); + einops = callPackage ../development/python-modules/einops { }; eiswarnung = callPackage ../development/python-modules/eiswarnung { }; @@ -3068,6 +3075,11 @@ self: super: with self; { ewmh = callPackage ../development/python-modules/ewmh { }; + example-robot-data = toPythonModule (pkgs.example-robot-data.override { + pythonSupport = true; + python3Packages = self; + }); + exdown = callPackage ../development/python-modules/exdown { }; exceptiongroup = callPackage ../development/python-modules/exceptiongroup { }; @@ -6963,6 +6975,11 @@ self: super: with self; { pinboard = callPackage ../development/python-modules/pinboard { }; + pinocchio = toPythonModule (pkgs.pinocchio.override { + pythonSupport = true; + python3Packages = self; + }); + pint = callPackage ../development/python-modules/pint { }; pint-pandas = callPackage ../development/python-modules/pint-pandas { };