ZeroMotion.Core
1.1.0
dotnet add package ZeroMotion.Core --version 1.1.0
NuGet\Install-Package ZeroMotion.Core -Version 1.1.0
<PackageReference Include="ZeroMotion.Core" Version="1.1.0" />
<PackageVersion Include="ZeroMotion.Core" Version="1.1.0" />
<PackageReference Include="ZeroMotion.Core" />
paket add ZeroMotion.Core --version 1.1.0
#r "nuget: ZeroMotion.Core, 1.1.0"
#:package ZeroMotion.Core@1.1.0
#addin nuget:?package=ZeroMotion.Core&version=1.1.0
#tool nuget:?package=ZeroMotion.Core&version=1.1.0
ZeroMotion
ZeroMotion is an industrial robotics kinematics and motion planning substrate for .NET with zero external dependencies. It provides:
- Robotic Kinematics Engine: Forward kinematics, geometric Jacobians, Denavit-Hartenberg (DH) parameterization, Cyclic Coordinate Descent (CCD) numerical inverse kinematics, and sub-microsecond analytical closed-form inverse kinematics for SCARA and spherical wrist manipulators.
- Trajectory Planning Engine: Linear, Cubic Hermite Spline, Quintic Spline, and 7-Phase Jerk-Limited S-Curve motion profiles eliminating mechanical vibration and gearbox resonance.
- ROS URDF Robot Model Parser: Pure C# XML parsing of standard ROS Unified Robot Description Format files.
๐๏ธ Architecture & Governance
ZeroMotion strictly adheres to SPEC-ARCH-001 as a Tier 3 (Perception & Intelligence / Motion & Robotics) substrate. It decouples motion mathematics, kinematics, and trajectory generation from presentation/visualization layers (Tier 4 ZeroTwin3D), allowing headless execution in real-time PLC gateways, edge IPCs, and robot controllers.
Tier 1: ZeroTensor / ZeroCompute (Level-3 BLAS & Fast Matrix Inversion)
โ
Tier 3: ZeroMotion (Kinematics, Jacobians, S-Curve Trajectories, URDF)
โโโโโโโโโโโโโโดโโโโโโโโโโโโโ
โ โ
Tier 4: ZeroTwin3D Tier 5: ZeroPipeline
(3D Spatial Digital Twin) (Robot Motion Nodes)
๐ฆ Developer API Examples
1. Forward & Analytical Inverse Kinematics (SCARA)
using ZeroMotion.Kinematics;
using ZeroMotion.Math;
// 1. Instantiate 4-Axis SCARA Manipulator
var scara = RobotKinematics.CreateStandardScaraRobot(l1: 300f, l2: 250f, baseHeight: 200f);
// 2. Solve closed-form Analytical Inverse Kinematics (< 1 us)
var target = new Vec3(350f, 150f, 100f);
var ik = AnalyticalInverseKinematics.SolveScara(300f, 250f, 200f, target);
// 3. Forward Kinematics verification
var fk = scara.ComputeForwardKinematics(new float[] { ik.Theta1Deg, ik.Theta2Deg, ik.ZPrismatic, ik.Theta4Deg });
Console.WriteLine($"End-Effector: {fk.EndEffectorPosition}");
2. 7-Phase Jerk-Limited S-Curve Motion Profile
using ZeroMotion.Trajectory;
// Configure S-Curve with max velocity, acceleration, and jerk limits
var scurve = new SCurvePlanner(
startPos: 0.0,
targetPos: 500.0, // 500 mm stroke
maxVel: 250.0, // 250 mm/s
maxAcc: 1000.0, // 1000 mm/s^2
maxJerk: 5000.0 // 5000 mm/s^3 (finite jerk prevents mechanical resonance)
);
// Sample position, velocity, and acceleration along profile
for (double t = 0.0; t <= scurve.TotalDuration; t += 0.001)
{
var (pos, vel, acc) = scurve.Evaluate(t);
}
3. Multi-Axis Synchronized S-Curve Trajectory
using ZeroMotion.Trajectory;
// Synchronizes N axes so all axes start and arrive simultaneously at T_sync
var multi = new MultiAxisSCurvePlanner(
startPositions: new double[] { 0, 0, 0 },
targetPositions: new double[] { 300, 100, 50 },
maxVelocities: new double[] { 150, 150, 150 },
maxAccelerations: new double[] { 400, 400, 400 },
maxJerks: new double[] { 2000, 2000, 2000 }
);
var (positions, velocities, accelerations) = multi.Evaluate(t);
4. Cartesian Straight-Line (MoveL) & Quaternion SLERP
using ZeroMotion.Trajectory;
using ZeroMotion.Math;
var planner = new CartesianTrajectoryPlanner(
startPos: new Vec3(100f, 200f, 300f),
startRot: Quat.Identity,
targetPos: new Vec3(400f, 200f, 600f),
targetRot: Quat.FromEuler(0f, 1.57f, 0f),
maxLinearVel: 250.0, maxLinearAcc: 1000.0, maxLinearJerk: 5000.0
);
var waypoint = planner.Evaluate(t);
// waypoint.Position, waypoint.Orientation (SLERP), waypoint.LinearVelocity
5. Yoshikawa Manipulability & Damped Least Squares (DLS) IK
// Evaluate distance from kinematic singularities
float w = robot.ComputeManipulability(jointAngles);
if (w < 0.01f) Console.WriteLine("Warning: Manipulator near singularity!");
// Singularity-robust differential inverse kinematics
float[] deltaQ = robot.SolveDampedLeastSquaresIK(jointAngles, deltaLinear, deltaAngular, dampingLambda: 0.05f);
๐ License
MIT License ยฉ 2026 Phong Vรต. Part of the ZeroPlatform project.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- System.Buffers (>= 4.5.1)
- System.Memory (>= 4.5.5)
- System.Numerics.Vectors (>= 4.5.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
- System.Threading.Tasks.Extensions (>= 4.5.4)
- System.ValueTuple (>= 4.5.0)
- ZeroPrimitives.Core (>= 1.7.0)
- ZeroTensor.Core (>= 1.5.0)
-
.NETStandard 2.0
- System.Buffers (>= 4.5.1)
- System.Memory (>= 4.5.5)
- System.Numerics.Vectors (>= 4.5.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
- System.Threading.Tasks.Extensions (>= 4.5.4)
- System.ValueTuple (>= 4.5.0)
- ZeroPrimitives.Core (>= 1.7.0)
- ZeroTensor.Core (>= 1.5.0)
-
net8.0
- ZeroPrimitives.Core (>= 1.7.0)
- ZeroTensor.Core (>= 1.5.0)
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 |
|---|---|---|
| 1.1.0 | 64 | 10/7/2026 |