Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology The CISST Software Package Peter Kazanzides.

Slides:



Advertisements
Similar presentations
Pulan Yu School of Informatics Indiana University Bloomington Web service based Varuna.Net.
Advertisements

COM vs. CORBA.
HP Quality Center Overview.
Building Enterprise Applications Using Visual Studio ®.NET Enterprise Architect.
Network Management Overview IACT 918 July 2004 Gene Awyzio SITACS University of Wollongong.
CASE Tools CIS 376 Bruce R. Maxim UM-Dearborn. Prerequisites to Software Tool Use Collection of useful tools that help in every step of building a product.
SCRIPTING LANGUAGE. The first interactive shells were developed in the 1960s to enable remote operation of the first time-sharing systems, and these,
Supplement 02CASE Tools1 Supplement 02 - Case Tools And Franchise Colleges By MANSHA NAWAZ.
Copyright Arshi Khan1 System Programming Instructor Arshi Khan.
Chapter 3 Software Two major types of software
Slide 1 of 9 Presenting 24x7 Scheduler The art of computer automation Press PageDown key or click to advance.
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering End-user Platform Steve Pieper Isomics, Inc.
Linux Operations and Administration
Getting Started with ITK in Python Language
JCE A Java-based Commissioning Environment tool Hiroyuki Sako, JAEA Hiroshi Ikeda, Visible Information Center Inc. SAD Workshop.
SCRAM Software Configuration, Release And Management Background SCRAM has been developed to enable large, geographically dispersed and autonomous groups.
Framework for Automated Builds Natalia Ratnikova CHEP’03.
1 CSE 2102 CSE 2102 CSE 2102: Introduction to Software Engineering Ch9: Software Engineering Tools and Environments.
German National Research Center for Information Technology Research Institute for Computer Architecture and Software Technology German National Research.
CIS 375—Web App Dev II Microsoft’s.NET. 2 Introduction to.NET Steve Ballmer (January 2000): Steve Ballmer "Delivering an Internet-based platform of Next.
4 - 1 Copyright © 2006, The McGraw-Hill Companies, Inc. All rights reserved.
COM vs. CORBA Computer Science at Azusa Pacific University September 19, 2015 Azusa Pacific University, Azusa, CA 91702, Tel: (800) Department.
AUTOBUILD Build and Deployment Automation Solution.
XML in Development of Distributed Systems Tooling Programming Runtime.
Nightly Releases and Testing Alexander Undrus Atlas SW week, May
Introduction to MDA (Model Driven Architecture) CYT.
Fundamentals of Database Chapter 7 Database Technologies.
The IRE Project Interactive Robot Environment Spring 2004.
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
Chapter 4 System Software. Software Programs that tell a computer what to do and how to do it. Sets of instructions telling computers to perform actions.
Computational Methods of Scientific Programming Lecturers Thomas A Herring, Room A, Chris Hill, Room ,
Contents 1.Introduction, architecture 2.Live demonstration 3.Extensibility.
Invitation to Computer Science 5 th Edition Chapter 6 An Introduction to System Software and Virtual Machine s.
PVSSProxy The first piece of the MACS procedure framework (ProShell) Angela Brett.
Fundamental Programming: Fundamental Programming K.Chinnasarn, Ph.D.
William Schroeder, Ph.D. §, Andy Cedilnik §, Sebastien Barré, Ph.D. §, William Lorensen ‡, James Miller, Ph.D. ‡, Daniel Blezek, Ph.D. ‡ § Kitware Inc.,
Week #3 Objectives Partition Disks in Windows® 7 Manage Disk Volumes Maintain Disks in Windows 7 Install and Configure Device Drivers.
07/09/04 Johan Muskens ( TU/e Computer Science, System Architecture and Networking.
6/1/2001 Supplementing Aleph Reports Using The Crystal Reports Web Component Server Presented by Bob Gerrity Head.
Confidential Continuous Integration Framework (CIF) 5/18/2004.
Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Development of Open Source Software.
August 2003 At A Glance The IRC is a platform independent, extensible, and adaptive framework that provides robust, interactive, and distributed control.
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
INFSO-RI Enabling Grids for E-sciencE ARDA Experiment Dashboard Ricardo Rocha (ARDA – CERN) on behalf of the Dashboard Team.
CIS 601 Fall 2003 Introduction to MATLAB Longin Jan Latecki Based on the lectures of Rolf Lakaemper and David Young.
CIS 595 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages.
Viewpoint Modeling and Model-Based Media Generation for Systems Engineers Automatic View and Document Generation for Scalable Model- Based Engineering.
Project Paper Presentation Hanlin Wan March 15, 2011.
Introduction to Operating Systems Concepts
Chapter Goals Describe the application development process and the role of methodologies, models, and tools Compare and contrast programming language generations.
INTRO. To I.T Razan N. AlShihabi
CIS 375 Bruce R. Maxim UM-Dearborn
Building Enterprise Applications Using Visual Studio®
CST 1101 Problem Solving Using Computers
CSE775 - Distributed Objects, Spring 2006
Computer Aided Software Engineering (CASE)
Pipeline Execution Environment
Lecture 1 Runtime environments.
Many-core Software Development Platforms
Introduction to MATLAB
National Library of Medicine Segmentation and Registration Toolkit
Compiler Back End Panel
Compiler Back End Panel
Module 01 ETICS Overview ETICS Online Tutorials
What's New in eCognition 9
Simulation And Modeling
Continuous Integration
What's New in eCognition 9
Plug-In Architecture Pattern
Presentation transcript:

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology The CISST Software Package Peter Kazanzides Johns Hopkins University November 16, 2005

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Outline Background and Motivation Where are we going? CISST Libraries –Foundation libraries –Real time support Development process and tools Tour of web site

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Historical Background ERC-developed software was captured in: –CIS library Common tools, such as logging Vectors, matrices, transformations Interface to tracking systems Numerical methods, registration, … –MRC library Common interface to different robots Essentially a “wrapper” around API for hardware that provides low-level control

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Robot Controller Architecture Supervisory/Trajectory Control (~100 Hz) Application (non-real-time) Hardware Read Sensors Compute Joint Goals Compute Goal on Trajectory Interpolate Setpoint Compute Control Read Sensors Servo Control (~1000 Hz) Application API MRC cisstMRC

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Motivation for CISST Package Improve process, design, testing, portability, maintainability for open source release and to facilitate clinical use: –Programming standards –Design reviews –Portable build tools –Automated testing –User documentation Enable the development of real-time software for physical devices such as robots and trackers

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Motivation for Real Time Support Motivated by transition from motion controller boards (with processor and vendor’s software) to I/O boards (no processor) and research software Motion Controller Boards (intelligent hardware) I/O Boards (non-intelligent)

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Example: Teleoperation of Snake Robot LoPoMoCo Control PC (RTAI/Linux) I/O and Amps LoPoMoCo Control PC (RTAI/Linux) Master Robots Slave Robots

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Example: Image-Guided Robot for Rodent Research PC (Windows) Servo Control and Amps (Galil) DMC-2143 Robot 3D Slicer

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Where are we going? C++ Software Libraries cisst libraries other libraries Frameworks Based on system complexity Component of larger system Binary components hardware interfaces research algorithms static linking frozen spots hot spots Distributed Interface dynamic loading

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology CISST Libraries (Mostly) Stable –Open source* Sept 2005 cisstInteractive ~Nov 2005 Beta version –Open source ~Jan 2006 Work in process –cisstTracker ~Jan 2006 –cisstMRC ~June 2006 Foundation libraries cisstCommon cisstVector cisstNumerical cisstInteractive Real Time Support cisstOSAbstraction cisstDeviceInterface cisstRealtime Interventional Devices cisstTracker cisstMRC … * current license based on Slicer 2.x, goal is Slicer 3.0

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology cisstVector Vectors, Matrices and Transformations Extensive use of C++ templates (metaprogramming) Fixed size and dynamic –Fixed size especially suited for real-time code Operations on slices and sub-regions References to vectors and matrices –Improves interoperability with other libraries Matrices in row-major or column-major format C++ wrapping of NetLib (numerical methods, including CLAPACK, MINPACK)

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Fixed Size Vectors and Matrices Templated by: –Element type (int, double, etc.) –Dimension (number of rows, columns, etc.) Efficiency considerations (for templated dimension): –Loop is easy, but not efficient for small vectors: int Sum() { sum = 0 for (i=0; i < _size; i++) sum += data[i]; return sum; } –Recursive function also not efficient: int RecursiveSum(int size){ return (size == 1) ? data[0] : RecursiveSum(size-1) + data[size-1]; } int Sum() { return RecursiveSum(_size); } –Recursive template (template metaprogramming) is efficient: Compiler “unwraps” recursive template into straight-line code

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Fixed Size Vectors and Matrices Operations provided by “recursive engines”: –Classify operations by: Number of operands Type of operands Type of result Storage location for result –Small number of engines handle all operations Example: same engine for addition, subtraction, …

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology cisstNumerical C++ Interface to NetLib code (Fortran) Versions for fixed size and dynamic operands Can pre-allocate solution object –More efficient if multiple calls made vctDynamicMatrix A(rows,cols,VCT_COL_MAJOR); nmrSVDSolutionDynamic solution; solution.Allocate(A); while (1) { vctRandom(A,0.0,10.0); nmrSVD(A, solution); // A = U*S*V’ cout << solution.GetU() << … }

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology cisst vs. VNL cisstVector/cisstNumerical benefits: –More efficient fixed size vectors (few loops) –Stride allows operations on slices (e.g., can access matrix columns as vectors) –Matrices can be in column-major format (more efficient with NetLib) VNL benefits: –Mature package, larger development community –More features (polynomials, Matlab file I/O, …) –Support for more compilers

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Python Interface Automatic wrapping of C++ for Python (Swig) Object registry to share objects between languages Can load cisst libraries into Python shell Can start Python shell from C++ program GUI features provided by cisstInteractive (using wxWidgets)

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Device Interface Device Hierarchies : Tracker Tool GetPosition Robot Tool GetPosition MoveToPosition Should be able to use robot in place of a tracker Can lead to complexity!

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Device Interface Our solution: query with string to obtain command object (Command Pattern) Tracker Tool Provides Robot Tool Provides ddiDeviceInterface Configure Provides GetMethodByName … Initialize (e.g., from XML) Return list of implemented operations (strings) Return command object for specified operation (string) Abstract Base Class { “GetPosition” } { “GetPosition”, “MoveToPosition” }

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Device Interface · · · dev = ptr to device dev  Configure(…); cmd = dev  GetMethodByName(“GetPosition”); · · · public: void Startup(); void Run(); }; · · · cmd  Execute(data); · · · class myTask : public rtsTask { private: ddiDeviceInterface* dev; ddiCommand* cmd; Non-real-time Real-time

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Real Time Support 1.Devices and Tasks should be interchangeable: –Example: Servo control via an intelligent device or via a software task –Solution: Task class derived from device class, but also includes a device ddiDeviceInterface rtsTask

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Real Time Support 2.Maintain time history of important state data –State Data Table (SDT), indexed by time and data id 3.Task communication with Command Pattern: –Read from Task SDT or Device –Write to Task Mailbox or Device –Command object can handle remote communications High-level task (low frequency) Low-level task (high frequency) Device Interface mailbox SDT mailbox SDT Hardware Command objects

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology cisstRealTime

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Development Tools CTest Build Environment LaTeX Doxygen SWIG Compile Library Binaries (static & dynamic, e.g., cisstVector, cisstCommon) Test Programs Applications Optional Interpreter (IRE) Wrapped Source Formatted Documentation (e.g., pdf, html) (e.g., VC++, gcc/make) Test Results Link CVSTrac (bug/feature requests) CMake CVS Repository (source control) CMake Build Instructions Documentation Libraries Test App Applications Scripts CppUnit Dart2 (dashboard) PyUnit Link

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Quick Tour of the Web Site

Copyright © CISST ERC, 2005 NSF Engineering Research Center for Computer Integrated Surgical Systems and Technology Development Summary Tools adequately manage implementation, (unit) testing and maintenance phases of development –Automated testing will be hard for physical devices Much documentation is manually created (not enforced by the process) –Requirements, risk analysis, (high-level) design, validation –User guide, tutorial, quickstart We needed Dart sooner than we expected! –gcc is getting pickier! –Windows static/shared libraries (dll export)