Jump to content

vugie

Members
  • Posts

    393
  • Joined

  • Last visited

  • Days Won

    32

Everything posted by vugie

  1. The latter. Or draw it using primitives. The other issue is how to keep it in the corner while user is rotating the model - I would like to have special billboard mode for this. Now you have to constantly change position of th axes to follow changes of viewport, or to implement your own controller which rotates and translates certain sceneobject (parent of model itself) and only rotates axes.
  2. Monitor when "*" disappears from title bar of window which has a focus. Was there a "Modified" property of VI (or sth like this)? I can't check it now.
  3. Torpedo in the water

  4. I uploaded the VIPM package (thanks Jim for resolving the building issue).
  5. Name: lvODE Submitter: vugie Submitted: 03 Nov 2010 File Updated: 02 Mar 2011 Category: General LabVIEW Version: 2009 License Type: Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 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 Click here to download this file
  6. vugie

    lvODE

    Version 0.1 LV2009, 8.2

    1,614 downloads

    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
  7. Ha! red crosses in this palette suddenly disappeared
  8. Both - I have that luck.
  9. This is a preview of wrappers for well known physics simulator (ODE) I'm working on. I mentioned it already some time ago. [[ CLICK ]] Unfortunately, the framerate is not impressive. Available veeery soon. And... yes - you can simulate rocket with it. [EDIT] Slightly better domino movie:
  10. Generally there are two kinds of things: possible and expensive I think that Bezier curves falls under the second category. Besides that they does not serve for path finding. Rather for mathematical representation of complex curves.
  11. Turn off scrollbar and make your own one out of numeric slider.
  12. You should define points on cube for which you allow to guide path through (corners, edges midpoints, points on edges closest to your data points, etc.) and use one of shortest path finding algorithm. A* for instance.
  13. Thanks, jgcode. I didn't think about something so obvious. However it is still a workaround. I made a simple VI which automates this job. It searches recursivly for .lvclass files and creates controls for them in given folder, copying an icon and with firendly name. Maybe it'll be usefull for someone. LV2009 class controls.vi
  14. I want to have a class control in my controls palette. When I try to point .lvclass file in palette editor nothing happens. I'm only able to add it to the palette with following code: (note "World.ctl" after lvclass path) With this method control appears in the palette as big quotation mark (same as when item is not found), but works good. Is there any "normal" method to add .lvclass to palette?
  15. Of course the capture! How could you suspect something like this
  16. Yes, it is pretty straightforward if you are familiar with OpenGL concepts, however it is poorly documented - particularly for recently added features. There are some limitations which are hard or impossible to overcome - they concern mainly interactivity. There are also some performance issues - it mainly concern when control is embedded in VI (as opposed to separate window for 3D only). I use 3D Picture very intensively in my projects an it serves very well as a scientific visualization tool without bells and whistles. Writing your own realtime renderer doesn't make sense (other than fun). It hardly does even in C. I wrote something like an offline raytracer/renderer (but for terahertz radiation), but the performance was very poor and I moved the core part of the engine to C. What make sense is writing a wrapper to one of existing 3D engines (there are hundreds of them - Crystal Space, G3D, VTK, IrrLicht, Ogre - to name a few of most popular). It is hard work, half by half in C I suppose. I tried to strat it, but I gave up. I remember that somebody here on LAVA said that he made some wrappers for VTK...
  17. Actually jgcode pointed me to already filled CAR #185059 on similar issue. It concerns VIs which are member of a class whiech belongs to lvlib. LogMAN, you did your test for lvproj, probably if you would try it for lvlib, you'll get similar issue...
  18. That's another story... I'll do it soon. Here is some preview
  19. They are public and their class is public as well. I'm able to drag them from palette and use normally. In the subpalette of this palette there are some VIs from the same class and they appear without such glyphs. This palette looks the same after restarting LabVIEW and when installed on second computer. As an experiment I tried to change scope of some other VIs from another class and another palette to private, then I refreshed palettes and there was no change in VI appearance on the palette (no glyphs).
  20. Can anyone tell me why do I see such crosses in my palette? They are in only one subpalette, palette work normally (well, almost normally - once VI's from this palette changed to ? on the DB). There are no such crosses during palette editing (BTW palette editor start takes about 2 minutes). I already tried rewritting mnu file with palette API. LV 2009
  21. You create a toe class with all required properties and access methods and a proper icon, then a foot class with all properties and access methods, ..., then a man class out of all previous ones with all access methods, then a gun class with all properties, accessors and icon, a bullet class... Then you realize that if you want to shoot yourself in the foot, the man class, the gun class and the bullet class has to has a common ancestor, because otherwise you'll have class conflict on the wire. So you create it trying not to get crazy modifying all connector panes to allow dynamic dispatching (which means that you have change almost all controls to variants), you think hard how to name this class... Finally you start creating icon for it... after five minutes you give up, take a real gun and shoot yourself in the head. In the short time the bullet flies you realize that the only advantage of using classes in this case was to have fancy color wires instead of pink ones.
  22. I made once runtimeless and installerless application with LV 8.2. "Runtime" part consisted of following files: DNCInterface.dll [.] mesa.dll [script] lvpng.dll [models] lvjpeg.dll [errors] OpenThreadsWin32.dll [English] copyright.txt metrics.bak mkl_lapack64.dll libguide40.dll niMetaUtils.msm IgnoreProperties.dat lvrt.dll libxml2.dll logosbrw.dll nbfifo.dll iconv.dll lvanlys.dll niini32.dll nicont.dll NationalInstruments.LabVIEW.dll I didn't use any VISA nor DAQmx stuff.
  23. You could use Graphics Magick I achieved 6 ms for 1024x980 image rotation
  24. Yes, I found no other way than commenting out abort(), to avoid LV crash. I currently have custom error handler which records an error within a static variable and additional GetLastError function which helps to read it with LV. It works more or less - there are some strange issues but it's not the time to carry about them. But I wonder what is going on in the memory when abort() is not called... I suspect that from time to time I'll have LV crashed. And errors appears pretty often when using this library - it's a simulation framework, so it's quite normal that sometimes everything explodes - it's a sign that you have to change some simulation parameters or restitution factors. OK, so I modified the code of the library (the modification is inserting "//" in 3 places...). The library is dual-licensed (LGPL-BSD). No clean rules how to choose one. In the worst case I'll have to include its whole code...
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.