Code Monkey home page Code Monkey logo

semu.robotics.ros_bridge's Introduction

ROS Bridge (external extension) for NVIDIA Omniverse Isaac Sim

This extension enables the ROS action server interfaces for controlling robots (particularly those used by MoveIt to talk to robot controllers: FollowJointTrajectory and GripperCommand) and enables services for agile prototyping of robotic applications in ROS


Target applications: NVIDIA Omniverse Isaac Sim

Supported OS: Linux

Changelog: CHANGELOG.md

Table of Contents:


showcase


Prerequisites

All prerequisites described in ROS & ROS2 Bridge must be fulfilled before running this extension


Extension setup

  1. Add the extension using the Extension Manager or by following the steps in Extension Search Paths

    • Git url (git+https) as extension search path

      โš ๏ธ There seems to be a bug when installing extensions using the git url (git+https) as extension search path in Isaac Sim 2022.1.0. In this case, it is recommended to install the extension by importing the .zip file

      git+https://github.com/Toni-SM/semu.robotics.ros_bridge.git?branch=main&dir=exts
      
    • Compressed (.zip) file for import

      semu.robotics.ros_bridge.zip

  2. Enable the extension using the Extension Manager or by following the steps in Extension Enabling/Disabling


Extension usage

Enabling the extension initializes a ROS node named /SemuRosBridge (configurable in the extension.toml file). This node will enable, when the simulation starts, the ROS topics, services and actions protocols according to the ROS prims (and their configurations) existing in the current stage

Disabling the extension shutdowns the ROS node and its respective active communication protocols

Note: The current implementation only implements position control (velocity or effort control is not yet supported) for the FollowJointTrajectory and GripperCommand actions


Supported components

showcase


The following components are supported:

  • Attribute (ROS service): enables the services for getting and setting the attributes of a prim according to the service definitions described bellow

    To add an Attribute service action search for ActionGraph nodes and select ROS1 Attribute Service

    The ROS package add_on_msgs contains the definition of the messages (download and add it to a ROS workspace). A sample code of a python client application is also provided

    Prim attributes are retrieved and modified as JSON (applied directly to the data, without keys). Arrays, vectors, matrixes and other numeric classes (pxr.Gf.Vec3f, pxr.Gf.Matrix4d, pxr.Gf.Quatf, pxr.Vt.Vec2fArray, etc.) are interpreted as a list of numbers (row first)

    • add_on_msgs.srv.GetPrims: Get all prim path under the specified path

      string path             # get prims at path
      ---
      string[] paths          # list of prim paths
      string[] types          # prim type names
      bool success            # indicate a successful execution of the service
      string message          # informational, e.g. for error messages
    • add_on_msgs.srv.GetPrimAttributes: Get prim attribute names and their types

      string path             # prim path
      ---
      string[] names          # list of attribute base names (name used to Get or Set an attribute)
      string[] displays       # list of attribute display names (name displayed in Property tab)
      string[] types          # list of attribute data types
      bool success            # indicate a successful execution of the service
      string message          # informational, e.g. for error messages
    • add_on_msgs.srv.GetPrimAttribute: Get prim attribute

      string path             # prim path
      string attribute        # attribute name
      ---
      string value            # attribute value (as JSON)
      string type             # attribute type
      bool success            # indicate a successful execution of the service
      string message          # informational, e.g. for error messages
    • add_on_msgs.srv.SetPrimAttribute: Set prim attribute

      string path             # prim path
      string attribute        # attribute name
      string value            # attribute value (as JSON)
      ---
      bool success            # indicate a successful execution of the service
      string message          # informational, e.g. for error messages

  • FollowJointTrajectory (ROS action): enables the actions for a robot to follow a given trajectory

    To add a FollowJointTrajectory action search for ActionGraph nodes and select ROS1 FollowJointTrajectory Action

    Select, by clicking the Add Target(s) button under the inputs:targetPrims field, the root of the robot's articulation tree to control and edit the fields that define the namespace of the communication. The communication will take place in the namespace defined by the following fields:

    controllerName + actionNamespace
    

  • GripperCommand (ROS action): enables the actions to control a gripper

    To add a GripperCommand action search for ActionGraph nodes and select ROS1 GripperCommand Action

    Select, by clicking the Add Target(s) button under the inputs:targetPrims field, the root of the robot's articulation tree to which the end-effector belongs and add the joints (of the gripper) to control using the inputs:targetGripperJoints field

    Also, edit the fields that define the namespace of the communication. The communication will take place in the namespace defined by the following fields:

    controllerName + actionNamespace
    

    Note: The GripperCommand action definition doesn't specify which joints will be controlled. The value manage by this action will affect all the specified joints equally

semu.robotics.ros_bridge's People

Contributors

eferreirafilho avatar toni-sm avatar

Stargazers

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

Watchers

 avatar

semu.robotics.ros_bridge's Issues

Application Extension Name

Hey I would recommend changing the extension name because omni is reserved for NVIDIA Application or Extensions.

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.