cxdcxd / ros2cs

A C# (.Net) implementation of ros2 client library (rcl), enabling communication between ros2 ecosystem and C#/.Net applications such as Unity3D

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ros2cs

A C# .NET library for ROS2, including C# implementation of rcl APIs, message generation, tests and examples.

Ros2cs is also an independent part of Ros2 For Unity, which enables high-performance communication between simulation and ROS2 robot packages. Follow instructions there instead if you are intending to use ros2cs with Unity3D.

Features

  • A set of core abstractions such as Node, Publisher, Subscription, QoS, Clock
  • Comes with support for all standard ros2 messages
  • Custom messages can be easily generated from unmodified ROS2 packages
  • A logger that can be hooked to your application callbacks (e.g. in Unity3D)

Platforms

Supported OSes:

  • Ubuntu 20.04 (bash)
  • Windows 10 (powershell)

Supported ROS2 distributions:

  • Foxy
  • Galactic

On Windows, ros2cs libraries can be built in two flavors:

  • standalone (no ROS2 installation required on target machine, e.g. your Unity3D simulation server). All required dependencies are installed and can be used e.g. as a complete set of Unity3D plugins.
  • overlay (assuming existing (supported) ROS2 installation on target machine). Only ros2cs libraries and generated messages are installed.

Building

Generating custom messages

After cloning the project and importing .repos, you can simply put your message package next to other packages in the src/ros2 sub-folder. Then, build your project and you have all messages generated. You can also modify and use the custom_message.repos template to automate the process with get_repos script.

Build instructions

Please follow the OS-specific instructions for your build:

Testing

Make sure your NuGet repositories can resolve xUnit dependency. You can call dotnet nuget list source to see your current sources for NuGet packages. Please note that Microsoft Visual Studio Offline Packages is usually insufficient. You can fix it by adding nuget.org repository: dotnet nuget add source --name nuget.org https://api.nuget.org/v3/index.json.

  • Make sure you built tests ( OS-specific build script with --with-tests flag).
  • Run OS-specific test script (test.sh - Linux; test.ps1 - Windows)
  • Run a manual test with basic listener/publisher examples - ros2cs_talker and ros2cs_listener.
  • Run a manual performance test - ros2cs_performance_talker and ros2cs_performance_listener.

Acknowledgements

The project started as a fork of ros2_dotnet but moved away from its root through new features and design choices. Nevertheless, ros2cs is built on foundation of open-source efforts of Esteve Fernandez (esteve), Lennart Nachtigall (firesurfer), Samuel Lindgren (samiamlabs) and other contributors to ros2_dotnet project.

Open-source release of ros2cs was made possible through cooperation with Tier IV. Thanks to encouragement, support and requirements driven by Tier IV the project was significantly improved in terms of portability, stability, core structure and user-friendliness.

About

A C# (.Net) implementation of ros2 client library (rcl), enabling communication between ros2 ecosystem and C#/.Net applications such as Unity3D

License:Apache License 2.0


Languages

Language:C# 64.0%Language:EmberScript 16.2%Language:CMake 12.3%Language:Python 3.4%Language:C 2.6%Language:PowerShell 0.8%Language:Shell 0.7%