Pamoja.Ros2
0.1.17
dotnet add package Pamoja.Ros2 --version 0.1.17
NuGet\Install-Package Pamoja.Ros2 -Version 0.1.17
<PackageReference Include="Pamoja.Ros2" Version="0.1.17" />
<PackageVersion Include="Pamoja.Ros2" Version="0.1.17" />
<PackageReference Include="Pamoja.Ros2" />
paket add Pamoja.Ros2 --version 0.1.17
#r "nuget: Pamoja.Ros2, 0.1.17"
#:package Pamoja.Ros2@0.1.17
#addin nuget:?package=Pamoja.Ros2&version=0.1.17
#tool nuget:?package=Pamoja.Ros2&version=0.1.17
Pamoja.Ros2
ROS 2 names, RIHS01 type hashes, CDR encoding, and rmw_zenoh key assembly, with no ROS 2 installed. One capability of pamoja, one memory-safe Rust core with bindings for TypeScript, Python, and C#.
Install
dotnet add package Pamoja.Ros2
using Pamoja.Ros2;
This pulls in Pamoja.Native, the compiled engine. dotnet add package Pamoja is the whole framework in one package.
Example
The guide project's example, spliced here as it ran in CI.
From bindings/dotnet/samples/Pamoja.Guides/Ros2Guide.cs:
// A name is slash-separated tokens. A token may hold letters, digits, and
// underscores, and may not begin with a digit, which is the rule that catches most
// generated names.
foreach (string candidate in new[] { "/robot1/camera_left/image_raw", "/2foo" })
{
Console.WriteLine($"{candidate} is a valid name: {Ros2.IsValidName(candidate)}");
}
Console.WriteLine($"chatter is fully qualified: {Ros2.IsFullyQualified("chatter")}");
Console.WriteLine($"/chatter is fully qualified: {Ros2.IsFullyQualified("/chatter")}");
// On the wire a topic carries a prefix that says what kind of endpoint it is, so a
// subscription and a service request never collide in the same DDS partition.
string? published = Ros2.DdsTopic("/robot1/cmd_vel", EntityKind.Topic);
string? asked = Ros2.DdsTopic("/robot1/add", EntityKind.ServiceRequest);
string? answered = Ros2.DdsTopic("/robot1/add", EntityKind.ServiceResponse);
Console.WriteLine($"a topic becomes {published}");
Console.WriteLine($"a request becomes {asked}");
Console.WriteLine($"a response becomes {answered}");
// A message type maps to a DDS type name the same way, so both ends agree on what
// is being carried before a byte is exchanged.
Console.WriteLine(
$"std_msgs/msg/String becomes {Ros2.DdsTypeName("std_msgs/msg/String")}");
Console.WriteLine(
$"a malformed type name becomes {Ros2.DdsTypeName("not a type") ?? "nothing"}");
The same capability in every language
| Language | Package | Reference |
|---|---|---|
| Rust | pamoja-ros2 |
reference, docs.rs, install |
| TypeScript | @pamoja/ros2 |
reference, install |
| Python | pamoja-ros2 |
reference, install |
| C# | Pamoja.Ros2 |
reference, install |
Documentation
Pamoja.Ros2reference, every type in this namespace.- The ROS 2 rules guide, with the same example in Rust, TypeScript, and Python.
- Every capability, and the install page.
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. |
-
net8.0
- Pamoja.Native (>= 0.1.17)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Pamoja.Ros2:
| Package | Downloads |
|---|---|
|
Pamoja.Profiles
Profiles and robotics: A node instantiated by name with its policy and schedule, and the naming and encoding rules a robot's topics follow, with no ROS 2 or Zenoh installed. |
|
|
Pamoja
The whole pamoja framework in one package: every capability of one memory-safe Rust core, behind an idiomatic C# facade, for IoT, robotics, and drones. |
GitHub repositories
This package is not used by any popular GitHub repositories.