Giter Club home page Giter Club logo

ornis's Introduction

ORNIS (Open.Ros.Notcurses.Interface.System)

ORNIS build

What is it?

A waste of time (A Terminal User Interface for ROS2 (a ROS2 TUI)).

Current features

  • View currently active topics/nodes/services
  • Get information on currently active topics/nodes/services
  • Support for service calls
  • Streaming topics
  • *Kind of* Supports mouse workflows

Videos

Small demo video of topic selection and service calls.

ornis_topic_selection.mp4

Prerequisites

Notcurses
ROS2 Humble or above \

FastRTPS's default configuration doesn't work, so you're going to need to do the following if you're using it:

apt-get install ros-${distro}-rmw-fastrtps-dynamic-cpp
echo 'alias ornis="RMW_IMPLEMENTATION=rmw_fastrtps_dynamic_cpp ornis"' >> ~/.bashrc

CycloneDDS works out of the box, so no extra config required.

Windows and mac also aren't currently supported. Mac might work, feel free to try it and let me know how it goes.

Installation

You're going to need Notcurses. You can either initialise it as a submodule to this repo, and compile alongside ORNIS, or you can install it using your favourite package manager. Ensure you have ROS2 (Humble or newer) installed and sourced.

Install notcurses deps

apt-get install build-essential cmake doctest-dev libavdevice-dev libdeflate-dev libgpm-dev libncurses-dev libqrcodegen-dev libswscale-dev libunistring-dev pandoc pkg-config

Build ornis

mkdir ornis_ws && cd ornis_ws
git clone https://github.com/juraph-dev/ornis.git --depth 1
cd ornis
git submodule update --init
cd tools && ./compile.sh

Usage

Ensure ornis has been sourced by sourcing its setup.bash from your .bashrc

cd ornis_ws
echo 'source '$(pwd)'/install/setup.bash' >> ~/.bashrc
source ~/.bashrc
ornis

From here on out, you can just run ornis, then trust the bar at the top that tells you how to use it. You can probably click things too, if you're one of those kinds of people.

Future roadmap

I still have a ton of things I'd like to implement. To name a few:

  1. Proper topic visualisation, ala rosshow. At the moment, you only get the raw data displayed, I'd like to provide a meaningful and intuitive way to actually see the data being thrown around.
  2. Action support. I don't personally use Actions frequently, so it wasn't a very high priority for me. It'll be pretty easy for me to add it, the hard part of ORNIS has already been layed out, I just need to get around to doing it.
  3. Add support for multiple topic streams at once. The foundation is already there to allow the user to, for example: view a topic, while sending out a service call.
  4. I want to add a "graph view" for all of the currently launched nodes. In the same vein as Graphviz, with nodes linked by publishers/subscribers. I can see it being very useful (And fun) to be able to get an easy to digest visualisation of the node structure currently running on the robot.

Ackowledgements

ros2_introspection I blatantly stole a ton of code from here
dynamic message introspection tools And here
rosshow I actually started ORNIS before I found rosshow (Promise), but once I saw it, it really fueled the fire, having shown me the potential of clever data visualisation. It's a pretty great piece of software.
Notcurses, the library powering the visuals of ORNIS. Nick Black (The creator) is a super interesting dude, and I've enjoyed reading his guidebook, which is how I was introduced to Notcurses.
Arnav Borborah Their cpp14 template is pretty great, allowed me to quickly get ORNIS up and running with barely any hassle. Having a template to look at how things like CI and test modules should be layed out was also extremely useful (Even though I don't use either, ha)

Further reading

I wrote a long winded posted about ORNIS on my blog, for if you have absolutely nothing better to do with your time.

ornis's People

Contributors

juraph-dev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ornis's Issues

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.