-
Posts
393 -
Joined
-
Last visited
-
Days Won
32
Content Type
Profiles
Forums
Downloads
Gallery
Files posted by vugie
-
lvODE
Author: Wojciech Golebiowski (vugie), w_golebiowski at tlen dot pl
Name: lvODE
Type: Library
LabVIEW Version: 2009
Description
lvODE is a set wrappers, an interface to ODE (Open Dynamics Engine) library written in C and used to simulate dynamics of rigid body systems, including interactivity and in real time. In the present state lvODE allows you to use almost the full functionality of ODE in the LabVIEW environment using object-oriented programming (LVOOP). Such simulations may be used, among others, for programming the control systems of robots and manipulators (as well as in the control systems themselves, i.e. for trajectory planning), for development and testing of artificial intelligence systems, for modeling of complex mechanisms and other physical systems, etc.
lvODE is not a strict set of ODE wrappers. Although it uses the same concepts, the same terminology and most of the ODE functions are reflected, many of them have been grouped, data structures have been simplified, all in a user-friendly manner and taking into account specifics of LabVIEW environment. There are also few features not present in the original library which greatly facilitate programming – i.e. Object Manager. Further extensions (i.e. 3D Picture Control integration) are planned.
Short preview movie:
Briefly about the ODE
ODE is a free and widely-known library designed to simulate systems of rigid bodies. The programmer defines the layout of bodies, their physical parameters and types of connections between them, the role of the library is to calculate the forces acting in the system and to determine position and velocity of all bodies in the next time step, while satisfying all defined relationships. Programmer is able to interfere in simulation in full range while it goes on. It allows for the accurate analysis of its results (access to all the physical parameters) as well as programming any degree of interactivity. ODE is designed specifically to perform real time simulations – it uses a first order integrator (the procedure to solve a system of differential equations), which is a compromise between speed and accuracy. Results generated are not as accurate as they would be using higher-order integrators, but it is stable, fast and flexible.
The basic features of ODE include:
Rigid body with arbitrary mass distribution Types of kinematic pairs (joints, constraints): ball, slider, hinge, suspension, universal (Cardan), linear and rotary actuators, contact, and combinations that are already listed Types of geometry used for collision detection: sphere, cube, cylinder, capsule, plane, ray, any shape in the form of triangle mesh, convex, heightfield Three types of spaces for fast collision finding Equations of motion derived using Lagrange multipliers Choice of integration method: the "full" method – slower, but more accurate, and quick iterative method An advanced model of contact and friction
Installation
The contents of the archive folder ("lvODE") should be extracted to directory \user.lib. After restarting LabVIEW the sub-palette "lvODE" appears in the User Libraries section, where all the necessary functions may be found.
Or use the VIPM package.
Documentation
The documentation is located in the subdirectory 'doc' and it consists of the following files:
ODE Manual.pdf - The original guide to the ODE. At least brief knowledge of it is necessary to understand the main concepts and mechanisms of library. Due to the use of the same terminology, it can also be a sufficient source to use the lvODE. The main difference from the original is the simplified naming convention. lvODE Class Hierarchy.pdf - graphical representation of a lvODE class hierarchy of classes library - not necessary to start programming, but it may help to understand certain concepts. lvODE Function Reference.pdf - a list of all public lvODE functions with descriptions and organized by class. Descriptions of the functions derive much of the original ODE manual, however, cover all the differences of the conventions and LabVIEW specifics. This document is definitely to be polished (better grouping, more detailed descriptions of each section, etc.) Files *. png - map of all pallets An integral part of the documentation are also descriptions in of context help for each VI. In large part they fit the descriptions in the file "lvODE Function Reference". Private functions are documented as well.
Examples
Example applications are located in "examples" subdirectory. There are few examples with varying degree of complexity, and with comprehensive comments in the code. These examples, supported by context help and (in difficult cases), reading a few chapters of the original manual should be sufficient to start programming in lvODE.
Comments
lvODE is not a finished project. Once the ODE itself is still being developed, second, not whole its functionality is currently implemented in lvODE. The major differences include: no support for trimesh, heighfield and convex geometries, the lack of a 2D Plane constraint, lack of gyroscopic mode for the bodies, single precision floating point numbers only.
Few words about licensing. I publish lvODE under such a restrictive license (see below), because this is still experimental phase. I’ll appreciate any feedback which could help to make this library better and more stable. My further plans are to provide less restrictive free version and full-featured commercial one. Please contact me if you are interested.
Comments on this approach are also appreciated.
Version History
v0.1.0: Initial release of the code.
Support
If you have any problems with this code or want to suggest features:
please go to lavag.org and Navigate to LAVA > Resources > Code Repository (Certified) and
search for the "lvODE" support page.
License
This work is published under the Creative Commons BY-NC-ND license (description and text of the license here and in license.txt)
ODE library is distributed under BSD license (www.ode.org)
Copyright © 2010, Wojciech Golebiowski
1,614 downloads
Updated
-
Waptia - genetic optimization algorithm
Waptia - genetic optimization algorithm
Copyright © 2009, Wojciech Golebiowski
All rights reserved.
Author: Wojciech Golebiowski (w_golebiowski (at) tlen.pl)
Name: Waptia - genetic optimization algorithm
Type: library
LabVIEW version: 8.2
Distribution:
This code was downloaded from:
http://www.lavag.org
Description:
Waptia is general genetic optimization algorithm - it tries to maximize user supplied function of N variables (so called "Fitness Function"). Function is given as strictly typed VI reference. So the optimization goal may be described as: find such set of N numbers for which Fitness Function value is highest.
Waptia is LabVIEW implementation of quite well known genetic optimization algorithm Pikaia by Paul Charbonneau & Barry Knapp developed in Fortran-77. For more information on Pikaia and some background informatio on genetic algorithms visit: http://www.hao.ucar....kaia/pikaia.php
Pikaia name comes from lancelet-like creature which lived ages ago in Cambrian sea and waptia was another Cambrian being. Original Pikaia was developed for educational purposes, but it grew up and became widely used routine. Waptia is almost 1:1 conversion of Pikaia code (which is public domain) to LabVIEW - parts of original Fortran code are placed in related VIs - with some cosmetic modifications and improvements. Although Waptia already does real job I treat this code as starting point for further development to create sophisticated, but still easy to use genetic algorithm.
Here are Waptia's core features:
- decimal genotype encoding
- two-point crossover operator
- optional dynamically adjustable mutation rate
- optional "creep" (smoothly changing) mutation mode
- three possible reproduction plans
- elitism
- optionally stops optimization when fitness criterion is satisfied
- optimization progress may be traced on-line with notifiers
Usage is very simple - just put Waptia.vi on block diagram and provide number of independent variables and fitness function VI reference (which may be created using included template). There is of course a lot of parameters to tune, but default set usually does good job.
Installation
Preferably install VIP package with VI Package Manager
Alternatively extract ZIP to User.lib.
There are no external dependencies.
Documentation
Documentation is provided in "Waptia docs.rtf" file. It's just a description of all controls of Waptia.vi with some background information. Same information may be found in context help. Information on how to write your own fitness function is provided as comments in "Fitness Function Template.vit"
If you want to understand how Waptia works, whole code is extensively commented.
Examples
There is one quite complex example (but I hope that still understandable) located in _examples folder - "multimodal optimise.vi"
If you want any support on general or specifically genetic optimization problems, just contact me.
License (BSD):
Copyright © 2009 Wojciech Golebiowski
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1,843 downloads
Updated
-
MemBlock
Author: Wojciech Golebiowski (w_golebiowski (at) tlen dot pl)
Name: MemBlock
Type: library
LabVIEW version: 8.2
Description
MemBlock is easy to use interface for internal LabVIEW memory manager functions (namely AZNewPtr, AZDisposePtr and MoveBlock from LabVIEW.dll). It allows for convenient work with continuous nonreallocatable blocks of memory) - allocating and dealocating blocks and write and read data to and from them. It is usable everywhere you deal with external DLL and you have to provide pointer to some data or read data from received pointer. Typical usage case is dealing with complex C structs containing pointers to arrays or strings.
Installation
Preferred way to install library is to use VIP package and VI Package Manager.
Alternatively library may be used after unpacking it anywhere on disk. However, it is most convenient to copy entire MemBlock directory to the directory \user.lib. After refreshing palletes (or LV restart), in the User Libraries, sub-palette "MemBlock" will appear.
Documentation
Descriptions of all VIs are available through the LabVIEW context help.
Support
If you have any problems with this code or want to suggest features:
please go to lavag.org and Navigate to LAVA > Resources > Code Repository (Certified) and
search for the "MemBlock" support page.
Version History
1.0.0:
Initial release of the code.
License (BSD)
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
655 downloads
Updated
-
BitMan (Bitmap Manipulation Library)
By vugie in Machine Vision & Imaging
Copyright © 2009, Wojciech Golebiowski (vugie)
All rights reserved.
Author: Wojciech Golebiowski (w_golebiowski (at) tlen.pl)
Name: BitMan (Bitmap Manipulation Library)
Type: framework, library
LabVIEW version: 8.2.1
Description:
Bitman library is designed for image processing based on a specially-defined structure to store the image, and a system of filters. It is not only a set of tools performing specific operations on images, but also a framework to help create your own image processing functions with a mechanism called "dynamic filters".
Library contains few basic built-in filters. Their design concentrates on the versatility, ease of use, and the clearance of the code. This results in a decrease of efficiency and consequently, processing of large images using standard filters may be slow. But this is not a limitation of the framework and it is possible to create user filters, which may - as a more specialized - operate much more efficiently. Built-in filters are good for processing of relatively small images and can be used to support programming user interfaces, operations on the icons, creating graphical documents, etc.
Library was written using object-oriented programming techniques (LVOOP).
Installation
Libraries can be used after unpacking it anywhere on disk. Access to all of the features is possible then by opening the library file "BitMan Lib.lvlib". However, it is most convenient to copy entire BitMan directory to the directory \user.lib. After the restart of LabVIEW on a pallet, in the User Libraries, sub-palette "BitMan" will appear.
Documentation
A description of all VIs from palette is available in the file "docs\BitMan docs.html". Descriptions are also included (for all functions) in the Documentation section of the VI Properties dialog, as well as for more important front panel controls and, as such, are available through the LabVIEW context help.
Examples
Examples of applications can be found in the directory "examples" (examples of the use of the library itself) and the directory "examples\Dynamic Filters" (examples of the creation of filters). Examples along with descriptions in the diagrams are an integral part of the documentation.
Functionality
The most important class it the Bitmap class. It contains structure for storing an image (the description of the structure may be found in documentation under Bitmap type.ctl) and the basic access methods. The main assumption of this structure is to store the image in three-dimensional U8 array, where subsequent dimensions mean respectively height (y coordinate), width (x) and subsequent color channel. Number of channels in the image depends on the bit depth, additionally you can define any number of user channels. It is possible to store pictures 1 -, 4 -, 8 -, 24 - and 32-bit, while the 32-bit means here CMYK color model, rather than - as is sometimes used - RGB images with transparency . Transparency (the so-called alpha channel) is stored in a separate field of the structure. Support for CMYK images is not fully implemented yet.
The processing of images is done by the use of system of filters implemented in General Filter class. This class stores a reference to strictly typed VI processing an image and its runtime parameters. The filter is launched with Filter Run method, which uses the dynamic call mechanism. Filter runtime parameters are stored in the object as a variant variable for unified method for passing them.
Users can create their own filters in two ways: by using methods of Dynamic Filter class and filter template or by creating a new class inheriting from General Filter class. It is also possible to create a function-specific interfaces for the use of filters as the normal LV function. Inheriting and transparent interface is the way buit-in filters work, so they are also a specific example of use of the library.
Template to create your own filters may be found in "typedefs".
Using of dynamic filters is supported Library Filter class designed for managing filters. It makes use of the functional global mechanism for storing and providing access to pre-loaded filters with assigned names. It can call the filters by using short names anywhere in the code, without a burdensome wiring of filter objects.
Another supporting class is Bitmap With Filters class, inheriting from the Bitmap class and extending its functionality with a possibility of using a sequence of filters.
More detailed descriptions of individual functions and applications can be found in the above mentioned documentation and examples.
Version History:
1.0.0:
Initial release of the code.
1.0.1:
Packaged version with small bugfix
4,653 downloads
Updated
-
Scripting Sandbox (RCF Plugin)
By vugie in VI Scripting
Scripting Sandbox RCF Plugin
Copyright © 20010, Wojciech Golebiowski (vugie)
All rights reserved.
Author: Wojciech Golebiowski (w_golebiowski (at) tlen [dot] pl)
Name: Scripting Sandbox
Type: Right Click Framework Plugin
LabVIEW version: 8.2
Description
Scripting Sandbox is a simple Right-Click-Framework plugin for quick creating and using of flexible scripting VI's without implementing additional RCF plugin. In other words it's a plugin for making plugins which you don't want to distribute, but rather to use internally for work automation in quick and dirty way without any error handling etc. You simply define a directory for storing so called SandScript VIs. RCF menu is being updated according to the content of this directory. SandScript VI has to follow provided template. When you invoke certain script, RCF simply passes whole current "Active VI" cluster to it (VI state, panel and diagram references, array with selected objects and mouse position)
Installation
Preferably use VIP package and VI Package Manager. Alternatively download ZIP, extract to \resource\JKI\RCF\Plugins\ and restart RCF
Examples
Few example SandScript VIs are included in Scripts subdirectory. To see them working, copy them to your scripts directory (defined within RCF plugin options)
Support
If you have any problems with this code or want to suggest features:
please go to lavag.org and Navigate to LAVA > Resources > Code Repository (Certified) and
search for the "Scripting Sandbox" support page.
Version History
1.0.0:
Initial release of the code.
1.0.0.3: Not savable SandScript VI bug fixed
1.0.0.4: Some docs updated
License (BSD)
Copyright © 2010 Wojciech Golebiowski
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
741 downloads
Updated
-
Label Manager
By vugie in JKI Right-Click Framework Plugins
Label Manager (RCF Plugin)
Copyright © 2009, Wojciech Golebiowski
All rights reserved.
Author: Wojciech Golebiowski (w_golebiowski (at) tlen.pl)
Name: Label Manager
Type: Right Click Framework Plugin
LabVIEW version: 8.2.1
Description:
Label Manager is Right-Click-Framework plugin for quick and ergonomic management of text labels styles. Styles are defined as text properties combined with alignment against label owning objects. They may be applied to any text label at block diagram or front panel, also with multiple selection. Once style is set to the label, the assignment is being remembered and may be updated on any change.
Installation
Preferably install VIP package with VI Package Manager
Alternatively you may download ZIP and extract Label Manager folder to <LabVIEW Folder>\resource\JKI\RCF\Plugins\ and restart RCF
Dependencies:
OpenG Variant Config
JKI State Machine
Functionality
- Generate label style from selection (retrieves both text attributes and alignment to label owning object if any) - Apply any style to currently selected text labels (also finding labels belonging to selected objects and showing up hidden labels) - Labels remember their style - when any of text attributes or label relative position has changed, original style may be recovered with single click (even after closing VI and opening it again). This association may be also removed. - Works for both Block Diagram and Front Panel labels - Graphically manage label styles
Not-so-short video
Support:
If you have any problems with this code or want to suggest features:
http://lavag.org/ind...showtopic=11583
Version History:
1.0.0:
Initial release of the code.
License (BSD):
Copyright © 2009 Wojciech Golebiowski
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1,297 downloads
Updated