Giter VIP home page Giter VIP logo

unityros2's Introduction

ROS2 for Unity

Turtebot3 Navigation2

ROSCon 2019 Lighting talk

ROSCon 2019 Macau: Unity for ROS2

Introduction

This is a collection of projects (bindings, code generator, examples and more) for writing ROS2 applications for C# specificly targeted at Unity.

Platform support

This project curretly supports Ubuntu 18.04. Windows 10 was supported in an earlier versions of this project, but is not yet available in the standalone version. It should be possible to get it working on other systems as well.

How can I try this out?

Clone this repo and open the Unity Project using the Unity Hub. We plan to make this be available as a .unitypackage and in the Unity Asset Store as soon as possible.

Installing Unity

Install Unity through Unity Hub https://forum.unity.com/threads/unity-hub-v-1-6-0-is-now-available.640792 (the download link changes sometimes, so look at the newest posts)

After downloading Unity Hub install Unity Editor. Follow this instruction https://docs.unity3d.com/Manual/GettingStartedInstallingHub.html When choosing a version, choose the latest stable one. During installation, wait until the blue line is complete.

Building custom interfaces/messages

Clone https://github.com/samiamlabs/ros2_dotnet (cyclone branch) and run the script create_unity_plugin.bash to build/generate a "Plugins" folder for Unity from source. This script requires that you have docker installed on your system permissions setup to run it without sudo. See https://dyno-system-config.readthedocs.io/en/latest/docker.html

If you want some custom messages included in the prebuilt binaries, you are welcome to submit a pull request with a ROS2 package containing the interfaces/messages to https://github.com/DynoRobotics/rcldotnet_custom_interfaces

To build custom messages yourself, you will need to add the packages containing them to https://github.com/samiamlabs/ros2_dotnet/blob/cyclone/ros2_dotnet_dashing.repos and https://github.com/samiamlabs/ros2_dotnet/blob/cyclone/rcldotnet_utils/rcldotnet_utils/create_unity_plugin.py before running the build script. Note that all the .so files need to be set to preload at startup in Unity. (Can be selected in a checkbox in the "inspector" window)

Features

The current set of features include:

  • Generation of all builtin ROS types, dynamic arrays and nested types.
  • Support for publishers and subscriptions
  • Quality of service profiles
  • Time (limited support)
  • Laser scan
  • Tf publisher
  • Pose publisher
  • Odometry (ground truth, no noise yet)
  • Base controller
  • Basic Navigation2 support
  • Sending nav goals
  • Path visualizer
  • Keyboard teleop
  • Tests
  • and more...

What's missing?

  • More examples
  • Better cross-platform support (Windows IoT Core, UWP, Mac) [should work with minimal modifications, but not tested]
  • Automatic test runner for CI (C#)
  • Costmap visualizer
  • Camera sensor
  • Camera viewer
  • 3d sensor
  • Pointcloud visualizer
  • Video visualiszer
  • ros2_control support
  • Hololens support

Example Applications

Sweepbot Package DropOff

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.