Darp.Tesseract.Native
0.4.0
dotnet add package Darp.Tesseract.Native --version 0.4.0
NuGet\Install-Package Darp.Tesseract.Native -Version 0.4.0
<PackageReference Include="Darp.Tesseract.Native" Version="0.4.0" />
<PackageVersion Include="Darp.Tesseract.Native" Version="0.4.0" />
<PackageReference Include="Darp.Tesseract.Native" />
paket add Darp.Tesseract.Native --version 0.4.0
#r "nuget: Darp.Tesseract.Native, 0.4.0"
#:package Darp.Tesseract.Native@0.4.0
#addin nuget:?package=Darp.Tesseract.Native&version=0.4.0
#tool nuget:?package=Darp.Tesseract.Native&version=0.4.0
Darp.Tesseract.Native
.NET 10 bindings for Tesseract Robotics. Use them to load robot descriptions, query scene graphs, compute forward and inverse kinematics, and work with collision managers.
The C# API follows the upstream C++ API, including names such as calcFwdKin and
getKinematicGroup. SWIG generates the bindings. This repository also contains
Darp.Geometry, an independent managed vector, matrix and transform library.
Where to start
| If you want to... | Read |
|---|---|
| Load a robot and call FK or IK | Native binding usage |
| Work with vectors, matrices, rotations or views | Darp.Geometry |
| Run tests against source or a NuGet package | Test instructions |
| Build or change the bindings | The instructions below |
Darp.Tesseract.Native uses Aardvark.Base for fixed-size geometry and packages
the native wrapper and its runtime dependencies. Applications consuming the
package do not need Pixi, SWIG or a C++ build environment. Darp.Geometry can
be used independently.
Supported platforms and scope
The build and package-test workflow targets these runtimes on matching hosts:
| Platform | Runtime identifiers | Baseline |
|---|---|---|
| Windows | win-x64 |
x64 only |
| Linux | linux-x64, linux-arm64 |
glibc 2.28 |
| macOS | osx-x64, osx-arm64 |
macOS 11 |
Linux also needs the distribution's C/C++ runtimes and zlib. Windows ARM64 is not supported.
The bindings include resources, geometry, scene graphs, URDF/SRDF parsing, state solvers, environments, collision-manager operations and kinematics. The native wrapper embeds Bullet, FCL, KDL, OPW and UR plugin factories.
Visualization, ROS integration, PCL point-cloud parsing and robot-specific IKFast solvers are outside this package. Some upstream signatures are excluded explicitly in bindings/components. Treat the generated C# declarations as the reference for what is available.
Build from source
Run these commands from the repository root. You need:
- The .NET SDK selected by global.json, currently .NET 10.
- PowerShell 7, available as
pwsh, including on Linux and macOS. - Pixi 0.70.x, as required by pixi.toml.
- A host C++ toolchain supported by the Pixi environment. The Windows configuration uses Visual Studio 2026.
Initialize all pinned upstream sources, then build the host's native runtime:
git submodule update --init --recursive
pixi run build-native
dotnet build Darp.Tesseract.Native.slnx
On Windows, scripts/install_pixi.ps1 can install the
repository's Pixi version. The native build writes to artifacts/native/<rid>/.
The managed project copies those files to its output directory.
Generated sources are committed. Regenerate them when changing SWIG declarations or upstream headers:
pixi run -e bindings generate-bindings
pixi run build-native
dotnet build Darp.Tesseract.Native.slnx
Keep the generated C# and C++ changes together. Do not edit generated files by hand.
Run the integration tests after building the native runtime:
dotnet test --project tests/Darp.Tesseract.Native.IntegrationTests/Darp.Tesseract.Native.IntegrationTests.csproj
Repository layout
| Path | Contents |
|---|---|
src/Darp.Geometry/ |
Managed geometry types, interface extensions and tensor kernels |
src/Darp.Tesseract.Native/Generated/ |
SWIG-generated C# API |
src/Darp.Tesseract.Native/Runtime/ |
Managed geometry copying and native container support |
bindings/components/ |
Upstream headers to expose and signatures to exclude |
bindings/geometry/ |
Eigen mappings, collection mappings and native conversion code |
bindings/support/ |
Shared SWIG rules for ownership, exceptions and other C++ types |
bindings/generated/ |
Generated C++ wrapper |
native/ |
Pinned upstream submodules |
tests/Darp.Tesseract.Native.IntegrationTests/ |
Geometry, native interop and package tests |
The root CMake build copies Tesseract into an ignored build directory and applies the runtime dependency patch there. It leaves the submodule checkout unchanged. The patch disables PCL-backed URDF point-cloud parsing and removes an unnecessary compiled Boost.Graph dependency.
Tesseract components and plugin factories link into tesseract_csharp. Other
required native libraries ship alongside it. KDL remains dynamically linked.
The plugin bootstrap registers the wrapper with Tesseract's plugin loader so
existing SRDF/YAML factory names and search-library entries can be used.
Pack and release
After building native assets, create both packages:
dotnet pack src/Darp.Geometry/Darp.Geometry.csproj -c Release -o artifacts/packages
dotnet pack src/Darp.Tesseract.Native/Darp.Tesseract.Native.csproj -c Release -o artifacts/packages
Packing does not run CMake or Pixi. It includes the runtime directories already
present under artifacts/native/. A local build normally provides only the host's
runtime. CI builds all five runtimes, combines
them into a package, and tests that package on each platform without the native
build environment.
Release automation uses conventional commits on
main to maintain a release-please PR. Merging it creates a version tag, builds
and tests the packages, publishes them to NuGet.org, and attaches package and
symbol files to the GitHub release.
Maintainers must configure NuGet Trusted Publishing for both Darp.Geometry and
Darp.Tesseract.Native, using the rosslight/Darp.Tesseract repository and
release.yml workflow. Set the Actions secret or variable NUGET_USER to the
NuGet profile username associated with that policy. GitHub Actions also needs
permission to create release PRs.
See LICENSE and THIRD-PARTY-NOTICES.md for licensing. Native packages include upstream notices and dependency license materials.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Aardvark.Base (>= 5.3.27)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.