ROS2.Net.Hosting 0.1.0

dotnet add package ROS2.Net.Hosting --version 0.1.0
                    
NuGet\Install-Package ROS2.Net.Hosting -Version 0.1.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="ROS2.Net.Hosting" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ROS2.Net.Hosting" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="ROS2.Net.Hosting" />
                    
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 ROS2.Net.Hosting --version 0.1.0
                    
#r "nuget: ROS2.Net.Hosting, 0.1.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 ROS2.Net.Hosting@0.1.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=ROS2.Net.Hosting&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=ROS2.Net.Hosting&version=0.1.0
                    
Install as a Cake Tool

<p align="center"> <img src="assets/icon-128.png" width="112" alt="ROS2.Net logo" /> </p>

<h1 align="center">ROS2.Net</h1>

<p align="center"> <b>A pure .NET 10 implementation of ROS 2</b> — nodes, topics, services, actions, parameters, lifecycle, DDS-RTPS networking, TF2, rosbag2, navigation, SLAM, control, manipulation, perception, simulation and AI, with Blazor & Avalonia components. <b>No ROS 2 installation required.</b> </p>

<p align="center"> Made by <b>Gravicode Studios</b>, led by <b>Kang Fadhil</b> · Dibuat oleh <b>Gravicode Studios</b> dipimpin oleh <b>Kang Fadhil</b> </p>

<p align="center"><a href="#english">English</a> · <a href="#bahasa-indonesia">Bahasa Indonesia</a></p>

<p align="center"> <img src="docs/images/web/gallery-home.png" width="49%" alt="ROS2.Net Gallery (web)" /> <img src="docs/images/desktop/simulator.png" width="49%" alt="ROS2.Net Robot Simulator" /> </p>


English

Why ROS2.Net

  • Native .NET client library — idiomatic C# (async/await, IAsyncEnumerable, ILogger, DI) mirroring rclcpp concepts.
  • Talks to real ROS 2 — a managed DDS-RTPS middleware (Fast DDS / Cyclone DDS wire protocol, ROS name mangling, graph discovery) and a rosbridge middleware; or zero-copy in-process for composed systems and tests.
  • Batteries included — TF2, rosbag2 (MCAP), Nav2-style navigation, SLAM, AMCL/EKF, ros2_control-style controllers, MoveIt-style kinematics & planning, point-cloud/image perception with Rust acceleration, a robot simulator, RL/ONNX/LLM integration, SROS2 keystores.
  • Tooling — ros2net CLI (topic/service/action/param/bag/interface/security/doctor), dotnet new templates, Blazor & Avalonia components, the ROS2.Net Gallery (web + desktop) and a desktop Robot Simulator.
  • Performance — allocation-aware CDR serialization with array reuse, pooled buffers, per-entity bounded queues, a shared high-resolution timer thread, real-time executor.

Quick start

dotnet add package ROS2.Net
using ROS2.Net;
using StdMsgs = ROS2.Net.Msgs.StdMsgs;

await using var ctx = await Ros2Context.CreateAsync(new Ros2ContextOptions().UseRtps()); // talk to ROS 2 on the LAN
var node = ctx.CreateNode("talker");
var pub = node.CreatePublisher<StdMsgs.String>("chatter");
node.CreateTimer(TimeSpan.FromSeconds(0.5), () => pub.Publish(new() { Data = "Hello from .NET" }));
await ctx.SpinAsync();

Then from a ROS 2 machine: ros2 topic echo /chatter — or with our CLI: ros2net topic echo /chatter.

Packages

Package Contents
ROS2.Net Umbrella: Core, Msgs, RTPS, rosbridge, TF2, Bag, Hosting
ROS2.Net.Core Nodes, pub/sub, services, actions, parameters, lifecycle, executors, QoS, CDR, in-process RMW
ROS2.Net.Msgs Standard interfaces (std/geometry/sensor/nav/tf2/visualization/trajectory/diagnostic/control/nav2 …)
ROS2.Net.Rosidl, ROS2.Net.Rosidl.Generator .msg/.srv/.action parser and Roslyn source generator
ROS2.Net.Rmw.Rtps Managed DDS-RTPS middleware
ROS2.Net.Rmw.Rosbridge rosbridge v2 WebSocket middleware
ROS2.Net.Hosting services.AddRos2(...), DI-constructed nodes
ROS2.Net.Security SROS2 keystores, enclaves, governance/permissions
ROS2.Net.Tf2 Transform buffer, listener, broadcasters
ROS2.Net.Bag rosbag2 MCAP recorder/player/reader/exporter
ROS2.Net.Navigation Costmaps, A*/Theta*/Hybrid-A*, Pure Pursuit/RPP/DWB, BT, AMCL, EKF, SLAM, Nav2 servers
ROS2.Net.Perception, .Perception.Onnx, .Native Point clouds, images, camera models, detection; Rust kernels
ROS2.Net.Control, ROS2.Net.Manipulation ros2_control-style controllers; URDF, FK/IK, RRT-Connect, time parameterization
ROS2.Net.Simulation, ROS2.Net.AI Robot simulator engine; RL gym, ONNX, LLM commander, anomaly detection
ROS2.Net.Blazor, ROS2.Net.Avalonia UI components
ROS2.Net.Cli, ROS2.Net.Templates ros2net tool, dotnet new templates

<p align="center"> <img src="docs/images/desktop/gallery-home.png" width="49%" alt="Gallery desktop" /> <img src="docs/images/web/gallery-navigation.png" width="49%" alt="Gallery web navigation" /> </p>

dotnet run --project apps/ROS2.Net.Gallery.Web       # web gallery (Blazor)
dotnet run --project apps/ROS2.Net.Gallery.Desktop   # desktop gallery (Avalonia)
dotnet run --project apps/ROS2.Net.Simulator         # robot simulator
dotnet run --project apps/ROS2.Net.Cli -- doctor     # CLI

Build from source

cargo build --release --manifest-path native/ros2net_native/Cargo.toml   # optional native acceleration
dotnet build ROS2.Net.slnx
dotnet test ROS2.Net.slnx

Documentation

docs/en — getting started, concepts, interfaces, every library, tools. See also PLAN.md and Progress.md.

Status

Version 0.1 (preview). Interoperability with Fast DDS / Cyclone DDS and rosbridge follows the specifications and is tested ROS2.Net-to-ROS2.Net; validation against real ROS 2 installations is the next milestone — see Progress.md.

License: MIT.


Bahasa Indonesia

Mengapa ROS2.Net

  • Client library .NET asli — C# idiomatis (async/await, IAsyncEnumerable, ILogger, DI) yang mengikuti konsep rclcpp.
  • Berbicara dengan ROS 2 sungguhan — middleware DDS-RTPS terkelola (protokol kabel Fast DDS / Cyclone DDS, penamaan ROS, discovery graph) dan middleware rosbridge; atau in-process tanpa salinan untuk sistem terkomposisi dan pengujian.
  • Lengkap — TF2, rosbag2 (MCAP), navigasi ala Nav2, SLAM, AMCL/EKF, controller ala ros2_control, kinematika & perencanaan ala MoveIt, persepsi point cloud/citra dengan akselerasi Rust, simulator robot, integrasi RL/ONNX/LLM, keystore SROS2.
  • Tooling — CLI ros2net, template dotnet new, komponen Blazor & Avalonia, ROS2.Net Gallery (web + desktop), dan Robot Simulator desktop.
  • Performa — serialisasi CDR hemat alokasi dengan pemakaian ulang array, buffer pool, antrean terbatas per entitas, satu thread timer resolusi tinggi bersama, executor real-time.

Mulai cepat

dotnet add package ROS2.Net
await using var ctx = await Ros2Context.CreateAsync(new Ros2ContextOptions().UseRtps()); // berbicara dengan ROS 2 di LAN
var node = ctx.CreateNode("talker");
var pub = node.CreatePublisher<StdMsgs.String>("chatter");
node.CreateTimer(TimeSpan.FromSeconds(0.5), () => pub.Publish(new() { Data = "Halo dari .NET" }));
await ctx.SpinAsync();

Lalu dari mesin ROS 2: ros2 topic echo /chatter — atau dengan CLI kami: ros2net topic echo /chatter.

Galeri & simulator

dotnet run --project apps/ROS2.Net.Gallery.Web       # galeri web (Blazor)
dotnet run --project apps/ROS2.Net.Gallery.Desktop   # galeri desktop (Avalonia)
dotnet run --project apps/ROS2.Net.Simulator         # simulator robot

Dokumentasi

docs/id — memulai, konsep, interface, setiap library, dan tool. Lihat juga PLAN.md dan Progress.md.

Status

Versi 0.1 (pratinjau). Interoperabilitas dengan Fast DDS / Cyclone DDS dan rosbridge dibangun mengikuti spesifikasi dan diuji antar-ROS2.Net; validasi terhadap instalasi ROS 2 sungguhan adalah tahap berikutnya — lihat Progress.md.

Lisensi: MIT.

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 (2)

Showing the top 2 NuGet packages that depend on ROS2.Net.Hosting:

Package Downloads
ROS2.Net

ROS2.Net: a pure .NET 10 ROS 2 client library. This umbrella package brings Core, the standard messages, the RTPS (DDS) and rosbridge middlewares, TF2, rosbag2 and hosting integration.

ROS2.Net.Blazor

Blazor components for ROS2.Net: teleop joystick, LiDAR, occupancy grid and point cloud views, topic monitor, node graph, TF tree, parameter editor, image view, /rosout console, live plots, battery gauge, joint states and lifecycle control — live-bound to ROS 2 topics.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 100 10/25/2026