As robotic systems are expected to perform complex tasks, system developers require tools for application programming that are more advanced than the current state of the art. Robot application programs need to allow the system to respond to different, and possibly unforeseen, situations either autonomously or by enabling operators to modify these programs quickly in the field.

The robot task commander architecture consists of a single graphical front end and at least one execution engine.
The Robot Task Commander (RTC) framework and integrated development environment (IDE) were created to distribute robot application-level software, i.e., software that is not real-time-critical. The RTC may be embodied as a set of programs running on one or more computer devices, including the IDE with a graphical user interface (GUI) and one or more programs configured to function as respective script engines. The GUI acts as a graphical “front end” to the RTC, allowing an expert or non-expert user to interface with the script engines in an intuitive manner. The GUI also enables a user to view run-time diagnostic information, compose new scripts that can be stored in memory and accessed via a graphical file browser, and drag-and-drop such stored scripts as code library blocks into new sequences.

The RTC facilitates automated robot task planning in a networked environment wherein one or more robots are controlled over a network transport layer (NTL) by multiple computing devices. The RTC is designed to support multiple network protocols.

The script engines used by the RTC may reside on different computers on the network. Each script engine can send trigger commands to other script engines as a set of coordinated state machines executing in parallel. In such an environment, the GUI allows a user to understand, at a glance, precisely what is occurring throughout the various distributed script engines. Also, the distributed approach allows for computational load across the network to be balanced if particular library scripts or sequence blocks are particularly intensive.

The RTC uses script blocks that are specifically written to accept input data from a robot, and/or sensor data being published over the NTL, as well as to publish output data to the NTL itself. Upon composition in the GUI of the RTC, the scripts must be written abstractly, i.e., agnostic to any specific input/output (I/O) data bindings. In such a way, each individual script block only knows about the type of information, e.g., joint positions, joint velocities, image coordinates, etc., and not the specific source of that information. It is left to the user to bind the sources and sinks of this I/O data in the VPL using an intuitive graphical interface when composing code blocks in task sequences and/or applications. Thus, central to the present approach is the ability to use and reuse such abstract functionality in the form of library scripts, in different applications, while possibly connecting to different hardware devices.

This work was done by Dustin R. Gooding of Johnson Space Center, Stephen Hart of General Motors, and John D. Yamokoski, Brian J. Wightman, and Duy “Paul” Dinh of Oceaneering. For further information, contact the JSC Technology Transfer Office at (281) 483-3809. MSC-25632-1


NASA Tech Briefs Magazine

This article first appeared in the March, 2016 issue of NASA Tech Briefs Magazine.

Read more articles from this issue here.

Read more articles from the archives here.