Darp.Tesseract.Native 0.4.0

This package has a SemVer 2.0.0 package version: 0.4.0+tesseract.0.35.0.
dotnet add package Darp.Tesseract.Native --version 0.4.0
                    
NuGet\Install-Package Darp.Tesseract.Native -Version 0.4.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Darp.Tesseract.Native" Version="0.4.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Darp.Tesseract.Native" Version="0.4.0" />
                    
Directory.Packages.props
<PackageReference Include="Darp.Tesseract.Native" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Darp.Tesseract.Native --version 0.4.0
                    
#r "nuget: Darp.Tesseract.Native, 0.4.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Darp.Tesseract.Native@0.4.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Darp.Tesseract.Native&version=0.4.0
                    
Install as a Cake Addin
#tool nuget:?package=Darp.Tesseract.Native&version=0.4.0
                    
Install as a Cake Tool

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.4.0 20 9/23/2026
0.3.0 24 9/22/2026
0.2.0 30 9/16/2026