scholarly journals A Case Study on the Design and Implementation of a Platform for Hand Rehabilitation

2021 ◽  
Vol 11 (1) ◽  
pp. 389
Author(s):  
Tomaž Kosar ◽  
Zhenli Lu ◽  
Marjan Mernik ◽  
Marjan Horvat ◽  
Matej Črepinšek

Rehabilitation aids help people with temporal or permanent disabilities during the rehabilitation process. However, these solutions are usually expensive and, consequently, inaccessible outside of professional medical institutions. Rapid advances in software development, Internet of Things (IoT), robotics, and additive manufacturing open up a way to affordable rehabilitation solutions, even to the general population. Imagine a rehabilitation aid constructed from accessible software and hardware with local production. Many obstacles exist to using such technology, starting with the development of unified software for custom-made devices. In this paper, we address open issues in designing rehabilitation aids by proposing an extensive rehabilitation platform. To demonstrate our concept, we developed a unique platform, RehabHand. The main idea is to use domain-specific language and code generation techniques to enable loosely coupled software and hardware solutions. The main advantage of such separation is support for modular and a higher abstraction level by enabling therapists to write rehabilitation exercises in natural, domain-specific terminology and share them with patients. The same platform provides a hardware-independent part that facilitates the integration of new rehabilitation devices. Experience in implementing RehabHand with three different rehabilitation devices confirms that such rehabilitation technology can be developed, and shows that implementing a hardware-independent rehabilitation platform might not be as challenging as expected.

2021 ◽  
Vol 2 (4) ◽  
pp. 1-37
Author(s):  
X. Fu ◽  
Jintao Yu ◽  
Xing Su ◽  
Hanru Jiang ◽  
Hua Wu ◽  
...  

The increasing control complexity of Noisy Intermediate-Scale Quantum (NISQ) systems underlines the necessity of integrating quantum hardware with quantum software. While mapping heterogeneous quantum-classical computing (HQCC) algorithms to NISQ hardware for execution, we observed a few dissatisfactions in quantum programming languages (QPLs), including difficult mapping to hardware, limited expressiveness, and counter-intuitive code. In addition, noisy qubits require repeatedly performed quantum experiments, which explicitly operate low-level configurations, such as pulses and timing of operations. This requirement is beyond the scope or capability of most existing QPLs. We summarize three execution models to depict the quantum-classical interaction of existing QPLs. Based on the refined HQCC model, we propose the Quingo framework to integrate and manage quantum-classical software and hardware to provide the programmability over HQCC applications and map them to NISQ hardware. We propose a six-phase quantum program life-cycle model matching the refined HQCC model, which is implemented by a runtime system. We also propose the Quingo programming language, an external domain-specific language highlighting timer-based timing control and opaque operation definition, which can be used to describe quantum experiments. We believe the Quingo framework could contribute to the clarification of key techniques in the design of future HQCC systems.


2012 ◽  
pp. 211-218 ◽  
Author(s):  
Agostino Poggi ◽  
Michele Tomaiuolo

Expert systems are successfully applied to a number of domains. Often built on generic rule-based systems, they can also exploit optimized algorithms. On the other side, being based on loosely coupled components and peer to peer infrastructures for asynchronous messaging, multi-agent systems allow code mobility, adaptability, easy of deployment and reconfiguration, thus fitting distributed and dynamic environments. Also, they have good support for domain specific ontologies, an important feature when modelling human experts’ knowledge. The possibility of obtaining the best features of both technologies is concretely demonstrated by the integration of JBoss Rules, a rule engine efficiently implementing the Rete-OO algorithm, into JADE, a FIPA-compliant multi-agent system.


2008 ◽  
pp. 3031-3044
Author(s):  
Karthik Nagarajan ◽  
Herman Lam ◽  
Stanley Y.W. Su

Web services technology is emerging as a promising infrastructure to support loosely coupled, Internet-based applications that are distributed, heterogeneous and dynamic. It provides a standards-based, process-centric framework for achieving the sharing of distributed heterogeneous applications. While Web services technology provides a promising foundation for developing distributed applications for e-business, additional features are required to make this paradigm truly useful in the real world. In particular, interactions among business organizations need to follow the policies, regulations, security and other business rules of the organizations. An effective way to control, restrict and enforce business rules in the use of Web services is to integrate business event and rule management concepts and techniques into the Web services model. In this paper, we focus on incorporating the business event and rule-management concepts into the Web services model at the service provider side. Based on a code-generation approach, we have developed techniques and implemented tools to generate Web service “wrappers” and other objects required to integrate an Event-Trigger-Rule (ETR) technology with the Web services technology.


2014 ◽  
Vol 2014 ◽  
pp. 1-7 ◽  
Author(s):  
Yi Sun ◽  
Qiaoyan Wen ◽  
Yudong Zhang ◽  
Hua Zhang ◽  
Zhengping Jin ◽  
...  

We focus on how to securely outsource computation task to the cloud and propose a secure outsourcing multiparty computation protocol on lattice-based encrypted data in two-cloud-servers scenario. Our main idea is to transform the outsourced data respectively encrypted by different users’ public keys to the ones that are encrypted by the same two private keys of the two assisted servers so that it is feasible to operate on the transformed ciphertexts to compute an encrypted result following the function to be computed. In order to keep the privacy of the result, the two servers cooperatively produce a custom-made result for each user that is authorized to get the result so that all authorized users can recover the desired result while other unauthorized ones including the two servers cannot. Compared with previous research, our protocol is completely noninteractive between any users, and both of the computation and the communication complexities of each user in our solution are independent of the computing function.


2021 ◽  
Vol 33 (5) ◽  
pp. 181-204
Author(s):  
Vladimir Frolov ◽  
Vadim Sanzharov ◽  
Vladimir Galaktionov ◽  
Alexander Shcherbakov

In this paper we propose a high-level approach to developing GPU applications based on the Vulkan API. The purpose of the work is to reduce the complexity of developing and debugging applications that implement complex algorithms on the GPU using Vulkan. The proposed approach uses the technology of code generation by translating a C++ program into an optimized implementation in Vulkan, which includes automatic shader generation, resource binding, and the use of synchronization mechanisms (Vulkan barriers). The proposed solution is not a general-purpose programming technology, but specializes in specific tasks. At the same time, it has extensibility, which allows to adapt the solution to new problems. For single input C++ program, we can generate several implementations for different cases (via translator options) or different hardware. For example, a call to virtual functions can be implemented either through a switch construct in a kernel, or through sorting threads and an indirect dispatching via different kernels, or through the so-called callable shaders in Vulkan. Instead of creating a universal programming technology for building various software systems, we offer an extensible technology that can be customized for a specific class of applications. Unlike, for example, Halide, we do not use a domain-specific language, and the necessary knowledge is extracted from ordinary C++ code. Therefore, we do not extend with any new language constructs or directives and the input source code is assumed to be normal C++ source code (albeit with some restrictions) that can be compiled by any C++ compiler. We use pattern matching to find specific patterns (or patterns) in C++ code and convert them to GPU efficient code using Vulkan. Pattern are expressed through classes, member functions, and the relationship between them. Thus, the proposed technology makes it possible to ensure a cross-platform solution by generating different implementations of the same algorithm for different GPUs. At the same time, due to this, it allows you to provide access to specific hardware functionality required in computer graphics applications. Patterns are divided into architectural and algorithmic. The architectural pattern defines the domain and behavior of the translator as a whole (for example, image processing, ray tracing, neural networks, computational fluid dynamics and etc.). Algorithmic pattern express knowledge of data flow and control and define a narrower class of algorithms that can be efficiently implemented in hardware. Algorithmic patterns can occur within architectural patterns. For example, parallel reduction, compaction (parallel append), sorting, prefix sum, histogram calculation, map-reduce, etc. The proposed generator works on the principle of code morphing. The essence of this approach is that, having a certain class in the program and transformation rules, one can automatically generate another class with the desired properties (for example, the implementation of the algorithm on the GPU). The generated class inherits from the input class and thus has access to all data and functions of the input class. Overriding virtual functions in generated class helps user to carefully connect generated code to the other Vulkan code written by hand. Shaders can be generated in two variants: OpenCL shaders for google “clspv” compiler and GLSL shaders for an arbitrary GLSL compiler. Clspv variant is better for code which intensively uses pointers and the GLSL generator is better if specific HW features are used (like hardware ray tracing acceleration). We have demonstrated our technology on several examples related to image processing and ray tracing on which we get 30-100 times acceleration over multithreaded CPU implementation.


Author(s):  
А.С. Фролов

Представлена реализация модуля генерации параллельного программного кода на Charm++ в компиляторе проблемно-ориентированного языка программирования Green-Marl, предназначенного для разработки параллельных алгоритмов анализа статических графов. Приводится описание представления графа в генерируемом коде и способов отображения основных конструкций языка Green-Marl в параллельный код на Charm++. Проведенное оценочное тестирование с использованием типовых графовых задач (поиск кратчайших путей от заданной вершины до остальных вершин графа (SSSP), поиск связных компонент (CC) и вычисление рангов вершин с использованием алгоритма PageRank) показало, что производительность программ на Green-Marl, странслированных в Charm++, находится на одном уровне с реализациями на Charm++, разработанными вручную. The implementation of a code generation mechanism in the domain-specific language (DSL) Green-Marl compiler targeted in the Charm++ framework is presented. Green-Marl is used for the parallel static graph analysis and adopts an imperative shared memory programming model, whereas Charm++ implements a message-driven execution model. The graph representation in the generated Charm++ code and the translation of the basic Green-Marl constructs to Charm++ are described. The evaluation of the typical graph algorithms: Single-Source Shortest Path (SSSP), Connected Components (CC), and PageRank shows that the performance of Green-Marl programs translated to Charm++ is the same as for native Charm++ implementations.


Sign in / Sign up

Export Citation Format

Share Document