Big refactor
This commit is contained in:
parent
327d559f71
commit
335a5ede21
25 changed files with 304 additions and 247 deletions
1
.envrc
Normal file
1
.envrc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
use flake . --impure
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
[Cachix Cache](https://robossembler.cachix.org)
|
[Cachix Cache](https://robossembler.cachix.org)
|
||||||
|
|
||||||
Для установки в свою систему blender 3.4.1
|
Для установки в свою систему Blender с настройками Robossembler
|
||||||
* `nix profile install gitlab:robossembler/nix-robossembler-overlay#blender`
|
* `nix profile install gitlab:robossembler/nix-robossembler-overlay#blender`
|
||||||
|
|
||||||
Запуск локальных окружений для разработки
|
Запуск локальных окружений для разработки
|
||||||
* Python-модуль bpy: `nix develop gitlab:robossembler/nix-robossembler-overlay#bpy`
|
* Python-окружение для Perception навыков робота: `nix develop gitlab:robossembler/nix-robossembler-overlay#perception`
|
||||||
* ROS2 Rolling `nix develop gitlab:robossembler/nix-robossembler-overlay#ros`
|
* ROS2 Rolling `nix develop gitlab:robossembler/nix-robossembler-overlay#ros`
|
||||||
|
|
||||||
Для внесения изменений в репозиторий:
|
Для внесения изменений в репозиторий:
|
||||||
|
|
63
default.nix
63
default.nix
|
@ -1,4 +1,4 @@
|
||||||
{ mkDerivation, mayo, wrapQtAppsHook, lib }:
|
{ mkDerivation, pkgs, mayo, wrapQtAppsHook, lib, rbs-workbench, cad-gen, cg-gen }:
|
||||||
let
|
let
|
||||||
step2stl =
|
step2stl =
|
||||||
name: file:
|
name: file:
|
||||||
|
@ -20,6 +20,63 @@ let
|
||||||
rm ${pname}
|
rm ${pname}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
rlib = { inherit step2stl; };
|
|
||||||
|
freecad2parts =
|
||||||
|
file:
|
||||||
|
let
|
||||||
|
pname = "${file}-parts";
|
||||||
|
extension = lib.last (lib.strings.splitString "." file);
|
||||||
|
cad_export_script = pkgs.writers.writePython3 "cad_export_script.py"
|
||||||
|
{ libraries = [ rbs-workbench ]; }
|
||||||
|
''
|
||||||
|
import FreeCAD as App
|
||||||
|
import freecad.robossembler.utils.freecad_exporters as rbs
|
||||||
|
import sys
|
||||||
|
|
||||||
|
path = sys.argv[4]
|
||||||
|
print(path)
|
||||||
|
doc = App.openDocument(path)
|
||||||
|
rbs.publish_project_database(doc)
|
||||||
|
App.closeDocument(doc.Name)
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
lib.throwIfNot
|
||||||
|
(lib.elem extension ["FCStd"])
|
||||||
|
''Input file have a "${extension}" extension, but valid FreeCAD file should have "FCStd" extention''
|
||||||
|
mkDerivation rec {
|
||||||
|
inherit pname;
|
||||||
|
version = "unstable";
|
||||||
|
src = ./.;
|
||||||
|
nativeBuildInputs = [ cad-gen pkgs.freecad ] ++ pkgs.freecad.buildInputs;
|
||||||
|
buildInputs = [ ];
|
||||||
|
dontWrapQtApps = true;
|
||||||
|
buildPhase = ''
|
||||||
|
export PYTHONPATH="${rbs-workbench}/${pkgs.python3.sitePackages}"
|
||||||
|
${pkgs.freecad}/bin/freecadcmd ${cad_export_script} -- --pass $1
|
||||||
|
#${pkgs.freecad}/bin/freecadcmd -h
|
||||||
|
#${cad-gen}/bin/cad-gen ${file}
|
||||||
|
mv parts* trees* $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
parts-packages =
|
||||||
|
parts-package:
|
||||||
|
let
|
||||||
|
parts = lib.trivial.importJSON "${parts-package.src}/parts.json";
|
||||||
|
pkgSet = builtins.listToAttrs (map ({ material_path, name, part_path }: { inherit name; value = part_path; }) parts );
|
||||||
|
mkPkg =
|
||||||
|
{ name, value }:
|
||||||
|
mkDerivation {
|
||||||
|
src = "${parts-package}";
|
||||||
|
pname = name;
|
||||||
|
installPhase = ''
|
||||||
|
outputs = [ "stl" ];
|
||||||
|
ln ${parts-package}/${value} $stl
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
lib.lists.forEach mkPkg pkgSet;
|
||||||
|
|
||||||
|
rlib = { inherit step2stl freecad2parts parts-packages; };
|
||||||
in
|
in
|
||||||
rlib
|
rlib
|
||||||
|
|
24
flake.lock
generated
24
flake.lock
generated
|
@ -33,15 +33,15 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gazebo": {
|
"gazebo-overlay": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": [
|
"flake-utils": [
|
||||||
"ros-flake",
|
"ros-overlay",
|
||||||
"flake-utils"
|
"flake-utils"
|
||||||
],
|
],
|
||||||
"nixgl": "nixgl",
|
"nixgl": "nixgl",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"ros-flake",
|
"ros-overlay",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -128,25 +128,29 @@
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": [
|
"flake-utils": [
|
||||||
"ros-flake",
|
"ros-overlay",
|
||||||
"flake-utils"
|
"flake-utils"
|
||||||
],
|
],
|
||||||
"gazebo": "gazebo",
|
"gazebo-overlay": "gazebo-overlay",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"ros-flake": "ros-flake"
|
"ros-nixpkgs": [
|
||||||
|
"ros-overlay",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"ros-overlay": "ros-overlay"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ros-flake": {
|
"ros-overlay": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_2",
|
"flake-utils": "flake-utils_2",
|
||||||
"nixpkgs": "nixpkgs_3"
|
"nixpkgs": "nixpkgs_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1711215320,
|
"lastModified": 1715462692,
|
||||||
"narHash": "sha256-dIjE3NR/sTED8uOLUzqSgj+OaRDQuZK6d9U1EAWamx4=",
|
"narHash": "sha256-ClDP5aXC46y4wyHhEETWHitqIoNLDrt6uRX2HpZtmd0=",
|
||||||
"owner": "lopsided98",
|
"owner": "lopsided98",
|
||||||
"repo": "nix-ros-overlay",
|
"repo": "nix-ros-overlay",
|
||||||
"rev": "1b9585ae8f529b2b392203f2dda6fb96311621a9",
|
"rev": "f1c32375c27e59a2e8107d52357a5ee44b3c4413",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
288
flake.nix
288
flake.nix
|
@ -2,247 +2,51 @@
|
||||||
description = "Robossembler Development Environments on Nix";
|
description = "Robossembler Development Environments on Nix";
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs?ref=master";
|
nixpkgs.url = "github:NixOS/nixpkgs?ref=master";
|
||||||
flake-utils.follows = "ros-flake/flake-utils";
|
flake-utils.follows = "ros-overlay/flake-utils";
|
||||||
ros-flake.url = "github:lopsided98/nix-ros-overlay?ref=develop";
|
ros-overlay.url = "github:lopsided98/nix-ros-overlay?ref=develop";
|
||||||
gazebo = {
|
ros-nixpkgs.follows = "ros-overlay/nixpkgs";
|
||||||
|
gazebo-overlay = {
|
||||||
url = "github:movefasta/gazebo-sim-overlay";
|
url = "github:movefasta/gazebo-sim-overlay";
|
||||||
inputs.flake-utils.follows = "ros-flake/flake-utils";
|
inputs.flake-utils.follows = "ros-overlay/flake-utils";
|
||||||
inputs.nixpkgs.follows = "ros-flake/nixpkgs";
|
inputs.nixpkgs.follows = "ros-overlay/nixpkgs";
|
||||||
|
|
||||||
# Transitive inputs "not in registry" https://github.com/NixOS/nix/issues/5790
|
# Transitive inputs "not in registry" https://github.com/NixOS/nix/issues/5790
|
||||||
# inputs.nixgl.inputs.nixpkgs.follows = "ros-flake/nixpkgs";
|
# inputs.nixgl.inputs.nixpkgs.follows = "ros-overlay/nixpkgs";
|
||||||
# inputs.nixgl.inputs.flake-utils.follows = "ros-flake/flake-utils";
|
# inputs.nixgl.inputs.flake-utils.follows = "ros-overlay/flake-utils";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, ros-flake, gazebo, flake-utils }:
|
outputs = { self, nixpkgs, ros-overlay, ros-nixpkgs, gazebo-overlay, flake-utils }:
|
||||||
flake-utils.lib.eachDefaultSystem
|
flake-utils.lib.eachDefaultSystem
|
||||||
(system:
|
(system:
|
||||||
let
|
let
|
||||||
# pkgs = nixpkgs.legacyPackages.${system}.extend overlay;
|
pkgs = import nixpkgs { inherit system; overlays = [
|
||||||
ros = ros-flake.legacyPackages.${system};
|
(import ./overlay.nix)
|
||||||
|
gazebo-overlay.overlays.default
|
||||||
# single source for Robossembler Framework packages
|
|
||||||
rbsFrameworkSrc = pkgs.fetchgit {
|
|
||||||
url = "https://gitlab.com/robossembler/framework";
|
|
||||||
hash = "sha256-K6vnCQn129TWiMEKe81eBx/1H6PaIriCnkHGRwL8fg0=";
|
|
||||||
rev = "e8bb59124d56c5aee0180b4c7d5c7bfeec9cb1ea";
|
|
||||||
};
|
|
||||||
|
|
||||||
pkgs = import nixpkgs { inherit system; overlays = [ overlay gazebo.overlays.default ]; };
|
|
||||||
|
|
||||||
overlay = final: prev: {
|
|
||||||
# -- PLACEHOLDER for overlay
|
|
||||||
# freecad = prev.freecad.overrideAttrs
|
|
||||||
# (old: { cmakeFlags = old.cmakeFlags ++ [ "-DBUILD_GUI=OFF" ]; });
|
|
||||||
# cmakeFlag -BUILD_GUI=OFF for build without gui
|
|
||||||
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
|
|
||||||
(
|
|
||||||
python-final: python-prev: {
|
|
||||||
iopath = python-prev.iopath.overridePythonAttrs (oldAttrs: {
|
|
||||||
version = "unstable";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "facebookresearch";
|
|
||||||
repo = "iopath";
|
|
||||||
rev = "9dcb63a46447556460fdb65c21aa6d094a7a788c";
|
|
||||||
hash = "sha256-X1LTOfbIAMy6gToNYS0JpeJpHi0jHPsEjrnCq2c9U0E=";
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
)
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
ros = import ros-nixpkgs { inherit system; overlays = [
|
||||||
# overrided packages and attributes for nix-ros-overlay
|
ros-overlay.overlays.default
|
||||||
humble-overrided = ros.humble.overrideScope (final: prev: {
|
(import ./ros)
|
||||||
# remove after update github:lopsided98/nixpkgs/nix-ros for https://github.com/NixOS/nixpkgs/pull/224099
|
];};
|
||||||
behaviortree-cpp-v3 = prev.behaviortree-cpp-v3.overrideAttrs (old: {
|
|
||||||
propagatedBuildInputs = old.propagatedBuildInputs ++ [ pkgs.zeromq ];
|
|
||||||
});
|
|
||||||
moveit-core = prev.moveit-core.overrideAttrs (old: {
|
|
||||||
propagatedBuildInputs = old.propagatedBuildInputs ++ [ prev.tf2-kdl ];
|
|
||||||
});
|
|
||||||
moveit-kinematics = prev.moveit-kinematics.overrideAttrs (old: {
|
|
||||||
propagatedBuildInputs = old.propagatedBuildInputs ++ [ final.moveit-ros-planning ];
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
# robossembler custom packages; defined here for share between devShells and packages
|
|
||||||
cg_preferences = pkgs.fetchgit {
|
|
||||||
url = "https://gitflic.ru/project/brothermechanic/cg_preferences.git";
|
|
||||||
sha256 = "sha256-/mNNjvrhIxSZVv1/LSJ7+c/dXH3E0Orh5Zr0oVPLquY=";
|
|
||||||
};
|
|
||||||
rs_logo = pkgs.fetchgit {
|
|
||||||
url = "https://gitlab.com/robossembler/logo.git";
|
|
||||||
rev = "0a0235cd154a59b711e87456206ccd7ba69a7e4e";
|
|
||||||
sha256 = "sha256-/QsgKdtDHNymsTEmhIzSrOKNUqqkXl8coy+5LwIEkas=";
|
|
||||||
fetchLFS = true;
|
|
||||||
};
|
|
||||||
blender' = pkgs.blender.override {
|
|
||||||
cudaSupport = true;
|
|
||||||
spaceNavSupport = false;
|
|
||||||
waylandSupport = false;
|
|
||||||
};
|
|
||||||
blender = blender'.overrideAttrs (old: {
|
|
||||||
optix = pkgs.fetchzip {
|
|
||||||
# url taken from the archlinux blender PKGBUILD
|
|
||||||
url = "https://developer.download.nvidia.com/redist/optix/v7.4/OptiX-7.4.0-Include.zip";
|
|
||||||
sha256 = "sha256-ca08XetwaUYC9foeP5bff9kcDfuFgEzopvjspn2s8RY=";
|
|
||||||
};
|
|
||||||
patches = old.patches ++ [ "${cg_preferences}/patches/cg-defaults.patch" ];
|
|
||||||
buildInputs = old.buildInputs ++ [ pkgs.imath pkgs.git ];
|
|
||||||
postPatch = old.postPatch + ''
|
|
||||||
cp ${cg_preferences}/share/00_cg_preferences_service.py scripts/startup/
|
|
||||||
cp ${cg_preferences}/share/startup.blend release/datafiles/
|
|
||||||
cp ${rs_logo}/raster/robossembler_1024x512_roboty-rossii.png release/datafiles/splash.png
|
|
||||||
'';
|
|
||||||
env.NIX_CFLAGS_COMPILE = old.env.NIX_CFLAGS_COMPILE + " -I${pkgs.imath}/include/Imath";
|
|
||||||
postInstall = old.postInstall + ''
|
|
||||||
cp -r ${cg_preferences}/cg_preferences $out/share/blender/${
|
|
||||||
pkgs.lib.versions.majorMinor pkgs.blender.version
|
|
||||||
}/scripts/addons/
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
bpy = blender.overrideAttrs (old: {
|
|
||||||
pname = "bpy";
|
|
||||||
src = pkgs.fetchurl {
|
|
||||||
url = "https://download.blender.org/source/${old.pname}-${old.version}.tar.xz";
|
|
||||||
hash = "sha256-3AAtguPDQMk4VcZoRzDQGAG2aaKbHMa3XuuZC6aecj8=";
|
|
||||||
};
|
|
||||||
cmakeFlags = old.cmakeFlags ++ [
|
|
||||||
"-DWITH_PYTHON_INSTALL=OFF"
|
|
||||||
"-DWITH_AUDASPACE=OFF"
|
|
||||||
"-DWITH_PYTHON_MODULE=ON"
|
|
||||||
"-DWITH_MEM_JEMALLOC=OFF"
|
|
||||||
"-DWITH_INSTALL_PORTABLE=ON"
|
|
||||||
];
|
|
||||||
postInstall = ''
|
|
||||||
mkdir -p $out/nix-support
|
|
||||||
mkdir -p $out/lib/python${pkgs.python3.pythonVersion}/site-packages
|
|
||||||
ln -s $out/bpy $out/lib/python${pkgs.python3.pythonVersion}/site-packages/bpy
|
|
||||||
echo ${pkgs.python3} >> $out/nix-support/propagated-build-inputs
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
bpy-wheel = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/bpy-wheel { };
|
|
||||||
pysdf = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/pysdf { };
|
|
||||||
pytorch3d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/pytorch3d { };
|
|
||||||
mayo = pkgs.libsForQt5.callPackage ./pkgs/misc/mayo { };
|
|
||||||
fstl = pkgs.libsForQt5.callPackage ./pkgs/misc/fstl { };
|
|
||||||
open3d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/open3d { };
|
|
||||||
unified-planning = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/unified-planning { };
|
|
||||||
blenderproc = pkgs.python3Packages.callPackage ./blenderproc.nix { };
|
|
||||||
test-script = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/test-script { };
|
|
||||||
webdataset = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/webdataset { };
|
|
||||||
ansitable = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/ansitable { };
|
|
||||||
megapose6d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/megapose6d { inherit webdataset; };
|
|
||||||
spatialmath = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/spatialmath { inherit ansitable; };
|
|
||||||
rcg-pipeline = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/rcg-pipeline { bpy = bpy-lib; inherit rbsFrameworkSrc; };
|
|
||||||
rbs-workbench = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/freecad.robossembler { inherit freecad-lib; inherit rbsFrameworkSrc; };
|
|
||||||
freecad-lib = pkgs.python3Packages.toPythonModule (pkgs.callPackage ./pkgs/misc/freecad-lib { });
|
|
||||||
bpy-lib = pkgs.python3Packages.toPythonModule bpy;
|
|
||||||
cad-gen =
|
|
||||||
let
|
|
||||||
cad_export_script = pkgs.writers.writePython3 "cad_export_script.py"
|
|
||||||
{ libraries = [ rbs-workbench ]; }
|
|
||||||
''
|
|
||||||
import FreeCAD as App
|
|
||||||
import freecad.robossembler.utils.freecad_exporters as rbs
|
|
||||||
import sys
|
|
||||||
|
|
||||||
path = sys.argv[4]
|
|
||||||
print(path)
|
|
||||||
doc = App.openDocument(path)
|
|
||||||
rbs.publish_project_database(doc)
|
|
||||||
App.closeDocument(doc.Name)
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
pkgs.writeShellScriptBin "cad-gen"
|
|
||||||
''
|
|
||||||
export PYTHONPATH="${rbs-workbench}/${pkgs.python3.sitePackages}"
|
|
||||||
${pkgs.freecad}/bin/freecadcmd ${cad_export_script} -- --pass $1
|
|
||||||
'';
|
|
||||||
cg-gen = pkgs.writers.writePython3Bin "cg-gen"
|
|
||||||
{ libraries = [ rcg-pipeline ]; }
|
|
||||||
''
|
|
||||||
from rcg_pipeline import rcg_full_pipeline
|
|
||||||
import sys
|
|
||||||
rcg_full_pipeline(sys.argv[1])
|
|
||||||
'';
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
inherit pkgs;
|
|
||||||
|
|
||||||
rlib = import ./. {
|
rlib = import ./. {
|
||||||
|
inherit pkgs;
|
||||||
|
inherit (pkgs) lib mayo rbs-workbench cad-gen cg-gen;
|
||||||
inherit (pkgs.stdenv) mkDerivation;
|
inherit (pkgs.stdenv) mkDerivation;
|
||||||
inherit (pkgs) lib;
|
|
||||||
inherit mayo;
|
|
||||||
inherit (pkgs.libsForQt5) wrapQtAppsHook;
|
inherit (pkgs.libsForQt5) wrapQtAppsHook;
|
||||||
};
|
};
|
||||||
|
|
||||||
packages = {
|
packages = {
|
||||||
inherit unified-planning test-script cad-gen cg-gen blender bpy;
|
inherit (pkgs) cad-gen cg-gen blender;
|
||||||
};
|
};
|
||||||
|
|
||||||
devShells.ci = pkgs.mkShell { buildInputs = [ pkgs.jq ]; };
|
inherit ros pkgs;
|
||||||
|
|
||||||
devShells.gazebo = gazebo.devShells.${system}.default;
|
devShells = {
|
||||||
|
default =
|
||||||
devShells.ros =
|
|
||||||
pkgs.mkShell {
|
|
||||||
buildInputs = (with humble-overrided; [
|
|
||||||
ros2run
|
|
||||||
rmw-fastrtps-dynamic-cpp
|
|
||||||
urdf
|
|
||||||
ament-pep257
|
|
||||||
ament-lint-auto
|
|
||||||
xacro
|
|
||||||
ament-cmake
|
|
||||||
rclcpp-action
|
|
||||||
tf2
|
|
||||||
action-msgs
|
|
||||||
ament-copyright
|
|
||||||
pythonPackages.pytest
|
|
||||||
rosidl-default-generators
|
|
||||||
behaviortree-cpp-v3
|
|
||||||
geometry-msgs
|
|
||||||
rosidl-default-runtime
|
|
||||||
rclpy
|
|
||||||
std-msgs
|
|
||||||
ament-lint-common
|
|
||||||
ament-flake8
|
|
||||||
tf2-ros
|
|
||||||
rclcpp
|
|
||||||
moveit-core
|
|
||||||
moveit-msgs
|
|
||||||
moveit-ros-planning
|
|
||||||
moveit-ros-planning-interface
|
|
||||||
gazebo-ros2-control
|
|
||||||
plansys2-bringup
|
|
||||||
image-transport
|
|
||||||
cv-bridge
|
|
||||||
example-interfaces
|
|
||||||
]) ++ (with pkgs; [ nlohmann_json glog lua5_3_compat gazebo_sim ]);
|
|
||||||
RMW_IMPLEMENTATION = "rmw_fastrtps_dynamic_cpp";
|
|
||||||
};
|
|
||||||
|
|
||||||
devShells.all = pkgs.mkShell {
|
|
||||||
packages = [ blender fstl mayo ];
|
|
||||||
};
|
|
||||||
|
|
||||||
devShells.perception =
|
|
||||||
let
|
|
||||||
rbs-packages = p: with p; [
|
|
||||||
torch
|
|
||||||
torchvision
|
|
||||||
torchaudio
|
|
||||||
detectron2
|
|
||||||
];
|
|
||||||
in
|
|
||||||
pkgs.mkShell {
|
|
||||||
packages = [ (pkgs.python3.withPackages rbs-packages) ];
|
|
||||||
};
|
|
||||||
|
|
||||||
devShells.default =
|
|
||||||
let
|
let
|
||||||
my-python-packages = p: with p; [
|
my-python-packages = p: with p; [
|
||||||
unified-planning
|
unified-planning
|
||||||
|
@ -251,22 +55,46 @@
|
||||||
spatialmath
|
spatialmath
|
||||||
rcg-pipeline
|
rcg-pipeline
|
||||||
rbs-workbench
|
rbs-workbench
|
||||||
ledger
|
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
pkgs.mkShell {
|
pkgs.mkShell {
|
||||||
packages = with pkgs; [
|
packages = (with pkgs; [ freecad mayo ]) ++ [ (pkgs.python3.withPackages my-python-packages) ];
|
||||||
freecad
|
|
||||||
mayo
|
|
||||||
bashInteractive
|
|
||||||
] ++ [ (pkgs.python3.withPackages my-python-packages) ];
|
|
||||||
buildInputs = [ ];
|
|
||||||
|
|
||||||
# Run when the shell is started up
|
|
||||||
shellHook = ''
|
|
||||||
${pkgs.python3}/bin/python --version
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ros = pkgs.mkShell {
|
||||||
|
name = "ROS environment";
|
||||||
|
packages = [
|
||||||
|
ros.colcon
|
||||||
|
(with ros.rosPackages.humble; buildEnv {
|
||||||
|
paths = [
|
||||||
|
ros-core
|
||||||
|
rmw-fastrtps-dynamic-cpp
|
||||||
|
];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
# ROS 2 middleware variants, for Cyclone DDS replace with "rmw_cyclonedds_cpp" and add rmw-cyclonedds-cpp to paths
|
||||||
|
RMW_IMPLEMENTATION = "rmw_fastrtps_dynamic_cpp";
|
||||||
|
};
|
||||||
|
|
||||||
|
all = pkgs.mkShell { packages = with pkgs; [ fstl mayo cad-gen cg-gen ]; };
|
||||||
|
|
||||||
|
ci = pkgs.mkShell { buildInputs = [ pkgs.jq ]; };
|
||||||
|
|
||||||
|
gazebo = gazebo-overlay.devShells.${system}.default;
|
||||||
|
|
||||||
|
perception =
|
||||||
|
let
|
||||||
|
perception-packages = p: with p; [
|
||||||
|
torch
|
||||||
|
torchvision
|
||||||
|
torchaudio
|
||||||
|
detectron2
|
||||||
|
];
|
||||||
|
in
|
||||||
|
pkgs.mkShell {
|
||||||
|
packages = [ (pkgs.python3.withPackages perception-packages) ];
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
5
overlay.nix
Normal file
5
overlay.nix
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
final: prev: with prev.lib;
|
||||||
|
foldr composeExtensions (_: _: {}) [
|
||||||
|
(import ./pkgs)
|
||||||
|
(import ./ros)
|
||||||
|
] final prev
|
34
pkgs/blender/default.nix
Normal file
34
pkgs/blender/default.nix
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
{ fetchgit, fetchzip, blender, imath, git, lib, ... }:
|
||||||
|
let
|
||||||
|
cg_preferences = fetchgit {
|
||||||
|
url = "https://gitflic.ru/project/brothermechanic/cg_preferences.git";
|
||||||
|
sha256 = "sha256-FkF1c5MhqtG2COIpSBdoJ1aE0r8/ABtmqFLqNkF0zT0=";
|
||||||
|
};
|
||||||
|
|
||||||
|
rs_logo = fetchgit {
|
||||||
|
url = "https://gitlab.com/robossembler/logo.git";
|
||||||
|
rev = "0a0235cd154a59b711e87456206ccd7ba69a7e4e";
|
||||||
|
sha256 = "sha256-/QsgKdtDHNymsTEmhIzSrOKNUqqkXl8coy+5LwIEkas=";
|
||||||
|
fetchLFS = true;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
blender.overrideAttrs (old: {
|
||||||
|
optix = fetchzip {
|
||||||
|
# url taken from the archlinux blender PKGBUILD
|
||||||
|
url = "https://developer.download.nvidia.com/redist/optix/v7.4/OptiX-7.4.0-Include.zip";
|
||||||
|
sha256 = "sha256-ca08XetwaUYC9foeP5bff9kcDfuFgEzopvjspn2s8RY=";
|
||||||
|
};
|
||||||
|
patches = old.patches ++ [ "${cg_preferences}/patches/cg-defaults.patch" ];
|
||||||
|
buildInputs = old.buildInputs ++ [ imath git ];
|
||||||
|
postPatch = old.postPatch + ''
|
||||||
|
cp ${cg_preferences}/share/00_cg_preferences_service.py scripts/startup/
|
||||||
|
cp ${cg_preferences}/share/startup.blend release/datafiles/
|
||||||
|
cp ${rs_logo}/raster/robossembler_1024x512_roboty-rossii.png release/datafiles/splash.png
|
||||||
|
'';
|
||||||
|
env.NIX_CFLAGS_COMPILE = old.env.NIX_CFLAGS_COMPILE + " -I${imath}/include/Imath";
|
||||||
|
postInstall = old.postInstall + ''
|
||||||
|
cp -r ${cg_preferences}/cg_preferences $out/share/blender/${
|
||||||
|
lib.versions.majorMinor blender.version
|
||||||
|
}/scripts/addons/
|
||||||
|
'';
|
||||||
|
})
|
111
pkgs/default.nix
Normal file
111
pkgs/default.nix
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
self: super: with self.lib; let
|
||||||
|
|
||||||
|
# single source for Robossembler Framework packages
|
||||||
|
|
||||||
|
rbsFrameworkSrc = self.fetchgit {
|
||||||
|
url = "https://gitlab.com/robossembler/framework";
|
||||||
|
hash = "sha256-K6vnCQn129TWiMEKe81eBx/1H6PaIriCnkHGRwL8fg0=";
|
||||||
|
rev = "e8bb59124d56c5aee0180b4c7d5c7bfeec9cb1ea";
|
||||||
|
};
|
||||||
|
|
||||||
|
bpy = self.blender.overrideAttrs (old: {
|
||||||
|
pname = "bpy";
|
||||||
|
src = self.fetchurl {
|
||||||
|
url = "https://download.blender.org/source/${old.pname}-${old.version}.tar.xz";
|
||||||
|
hash = "sha256-3AAtguPDQMk4VcZoRzDQGAG2aaKbHMa3XuuZC6aecj8=";
|
||||||
|
};
|
||||||
|
cmakeFlags = old.cmakeFlags ++ [
|
||||||
|
"-DWITH_PYTHON_INSTALL=OFF"
|
||||||
|
"-DWITH_AUDASPACE=OFF"
|
||||||
|
"-DWITH_PYTHON_MODULE=ON"
|
||||||
|
"-DWITH_MEM_JEMALLOC=OFF"
|
||||||
|
"-DWITH_INSTALL_PORTABLE=ON"
|
||||||
|
];
|
||||||
|
postInstall = ''
|
||||||
|
mkdir -p $out/nix-support
|
||||||
|
mkdir -p $out/lib/python${self.python3.pythonVersion}/site-packages
|
||||||
|
ln -s $out/bpy $out/lib/python${self.python3.pythonVersion}/site-packages/bpy
|
||||||
|
echo ${self.python3} >> $out/nix-support/propagated-build-inputs
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
in {
|
||||||
|
|
||||||
|
# Robossembler custom packages; defined here for share between devShells and packages
|
||||||
|
|
||||||
|
# General packages
|
||||||
|
|
||||||
|
mayo = self.libsForQt5.callPackage ./mayo { };
|
||||||
|
fstl = self.libsForQt5.callPackage ./fstl { };
|
||||||
|
blender = self.callPackage ./blender { blender = super.blender.override {
|
||||||
|
cudaSupport = true;
|
||||||
|
spaceNavSupport = false;
|
||||||
|
waylandSupport = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Python packages
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
pythonPackagesExtensions = super.pythonPackagesExtensions ++ [
|
||||||
|
(
|
||||||
|
python-final: python-prev: {
|
||||||
|
iopath = python-prev.iopath.overridePythonAttrs (oldAttrs: {
|
||||||
|
version = "unstable";
|
||||||
|
src = self.fetchFromGitHub {
|
||||||
|
owner = "facebookresearch";
|
||||||
|
repo = "iopath";
|
||||||
|
rev = "9dcb63a46447556460fdb65c21aa6d094a7a788c";
|
||||||
|
hash = "sha256-X1LTOfbIAMy6gToNYS0JpeJpHi0jHPsEjrnCq2c9U0E=";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
unified-planning = self.python3Packages.callPackage ./unified-planning { };
|
||||||
|
bpy-wheel = self.python3Packages.callPackage ./bpy-wheel { };
|
||||||
|
pysdf = self.python3Packages.callPackage ./pysdf { };
|
||||||
|
pytorch3d = self.python3Packages.callPackage ./pytorch3d { };
|
||||||
|
blenderproc = self.python3Packages.callPackage ./blenderproc.nix { };
|
||||||
|
test-script = self.python3Packages.callPackage ./test-script { };
|
||||||
|
webdataset = self.python3Packages.callPackage ./webdataset { };
|
||||||
|
ansitable = self.python3Packages.callPackage ./ansitable { };
|
||||||
|
megapose6d = self.python3Packages.callPackage ./megapose6d { inherit (python-final) webdataset; };
|
||||||
|
spatialmath = self.python3Packages.callPackage ./spatialmath { inherit (python-final) ansitable; };
|
||||||
|
rcg-pipeline = self.python3Packages.callPackage ./rcg-pipeline { inherit (python-final) bpy-lib; inherit rbsFrameworkSrc; };
|
||||||
|
rbs-workbench = self.python3Packages.callPackage ./freecad.robossembler { inherit (python-final) freecad-lib; inherit rbsFrameworkSrc; };
|
||||||
|
freecad-lib = self.python3Packages.toPythonModule (self.callPackage ./freecad-lib { });
|
||||||
|
bpy-lib = self.python3Packages.toPythonModule bpy;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
|
||||||
|
# Assets Generators
|
||||||
|
cad-gen =
|
||||||
|
let
|
||||||
|
cad_export_script = self.writers.writePython3 "cad_export_script.py"
|
||||||
|
{ libraries = [ self.python3Packages.rbs-workbench ]; }
|
||||||
|
''
|
||||||
|
import FreeCAD as App
|
||||||
|
import freecad.robossembler.utils.freecad_exporters as rbs
|
||||||
|
import sys
|
||||||
|
|
||||||
|
path = sys.argv[4]
|
||||||
|
print(path)
|
||||||
|
doc = App.openDocument(path)
|
||||||
|
rbs.publish_project_database(doc)
|
||||||
|
App.closeDocument(doc.Name)
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
self.writeShellScriptBin "cad-gen"
|
||||||
|
''
|
||||||
|
export PYTHONPATH="${self.python3Packages.rbs-workbench}/${self.python3.sitePackages}"
|
||||||
|
${self.freecad}/bin/freecadcmd ${cad_export_script} -- --pass $1
|
||||||
|
'';
|
||||||
|
|
||||||
|
cg-gen = self.writers.writePython3Bin "cg-gen"
|
||||||
|
{ libraries = [ self.python3Packages.rcg-pipeline ]; }
|
||||||
|
''
|
||||||
|
from rcg_pipeline import rcg_full_pipeline
|
||||||
|
import sys
|
||||||
|
rcg_full_pipeline(sys.argv[1])
|
||||||
|
'';
|
||||||
|
}
|
|
@ -8,7 +8,7 @@
|
||||||
, cudaSupport ? config.cudaSupport
|
, cudaSupport ? config.cudaSupport
|
||||||
, numpy
|
, numpy
|
||||||
, setuptools
|
, setuptools
|
||||||
, bpy
|
, bpy-lib
|
||||||
, rbsFrameworkSrc
|
, rbsFrameworkSrc
|
||||||
, ... }:
|
, ... }:
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ buildPythonPackage rec {
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
numpy
|
numpy
|
||||||
bpy
|
bpy-lib
|
||||||
];
|
];
|
||||||
|
|
||||||
# TODO - see later, pyproject.toml duntime deps check doesnt work
|
# TODO - see later, pyproject.toml duntime deps check doesnt work
|
17
ros/default.nix
Normal file
17
ros/default.nix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
self: super:
|
||||||
|
{
|
||||||
|
humble = super.rosPackages.humble.overrideScope (
|
||||||
|
final: prev: {
|
||||||
|
# remove after update github:lopsided98/nixpkgs/nix-ros for https://github.com/NixOS/nixpkgs/pull/224099
|
||||||
|
behaviortree-cpp-v3 = prev.behaviortree-cpp-v3.overrideAttrs (old: {
|
||||||
|
propagatedBuildInputs = old.propagatedBuildInputs ++ [ self.zeromq self.pkg-config ];
|
||||||
|
});
|
||||||
|
moveit-core = prev.moveit-core.overrideAttrs (old: {
|
||||||
|
propagatedBuildInputs = old.propagatedBuildInputs ++ [ prev.tf2-kdl ];
|
||||||
|
});
|
||||||
|
moveit-kinematics = prev.moveit-kinematics.overrideAttrs (old: {
|
||||||
|
propagatedBuildInputs = old.propagatedBuildInputs ++ [ final.moveit-ros-planning ];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue