10 likes | 132 Vues
This project addresses the challenges in debugging and prototyping MFC-based robot applications by integrating Python with CISST C++ libraries via SWIG. The limitations of current MFC interactions, reliant on complex dialog menus and configuration files, can be overcome through a Python-based programming environment. This allows for rapid prototyping, easy debugging, and seamless integration of future systems. By creating a virtual workspace, users can interact intuitively with integrated systems, enhancing reliability and extensibility in complex software architectures.
E N D
We can script whole programs! We can interact with running MFC applications at the command line! MFC Windows Application (Edit boxes, Dialog boxes, buttons, etc) SWIG Wrapper Registry (Shared Object) C++ Object Python Workspace SWIG Class Wrapper SWIG Class Wrapper SWIG Class Wrapper C++ Robot Control Library C++ Numerical Library C++ Vector/Matrix Libraries cmnObjectRegister Interactive Robot Environment • THE PROBLEM • Currently difficult to debug ERC/CISST C++ robot applications • Interaction is via MFC dialogs only • Configuration/action is via many nested menus • No explicit technology to integrate the various systems • Prototyping demands unnecessary programming skills from non-software engineers MFC Windows Application (Edit boxes, Dialog boxes, buttons, etc) No scripting! No Command Line Interaction! Incomprehensible Configuration Files! Figure 2. ERC/CISST Robot Application with the IRE • THE SOLUTION • Python is powerful, object-orientated, strongly typed, Internet-aware scripting language and well suited to systems integration • Wrap CISST C++ libraries using SWIG, allowing them to be used from within Python • SWIG wrapping has been modified to afford dynamic void pointer casting to Python • Create a Python-based programming environment to permit easy prototyping and debugging of the multi-modal ERC technologies, which: • Creates a virtual workspace for interacting with integrated systems and persisting data and state • Creates a command shell feature to allow debugging/development from within executing C++ applications C++ Robot Control Library C++ Vector/Matrix Libraries C++ Numerical Library Figure 1. Typical ERC/CISST Robot Application • THE IMPACT • Permit and promote rapid prototyping • Aid users in debugging • Provide convenient “glue” language for integration with future systems • Integrate seamlessly with the re-designed CISST software architecture • Reduce complexity, increase reliability, and provide extensibility to large, complex software systems SWIG User + IRE User Library • THE FUTURE • Develop entire applications in Python • Port data-file configuration to IRE/XML executables • Integration experiments with open-source, open-architecture robot libraries (e.g. Pyro) • PEOPLE INVOLVED • Undergraduate Student: Chris Abidin • Graduate Student: Andy LaMora • Engineering Faculty: Peter Kazanzides • Engineering Staff: Anton Deguet Figure 3. A View of the Python-based Programming Environment REFERENCES “AML/X: A Programming Language for Design and Manufacturing” Nackman, LR, Lavin, M, Taylor, RH, Dietrich, Jr., WC, and Grossman, DD (1986) “Python Robotics: An Environment for Exploring Robotics Beyond LEGOs” Blank, D, Meeden, L, and Kumar, Deepak (2002) • SUPPORTED BY • Core NSF CISST/ERC Engineering Research Center for Computer Integrated Surgical Systems and Technology