Looking for vision applications

Dear Community,
Tango is common in the laser community where of course camera applications are heavily used. I assume each Lab has a beam alignment app, fluence and energy calculation, focus size and q-factor and so on.
May be even a combination with a motor control for e.g. simplify alignment. Or to perform focus scans.
Some applications certainly exist in the Tango community.
I wonder why they are not published and not developed together? Maybe I just cannot find them and would appreciate a hint.

My goal is to go away from NI-based solution. See also this this post and this meeting of LV-users looking for alternatives CS-Framework2023@GSI.
And of course we are looking for like-minded people!
Edited 10 months ago
AlexK
I wonder why they are not published and not developed together?

I guess that you would find the code of other facilities in their respective source code repositories.

A good way to connect with the community and to find other like-minded people in the community is to join us at the next Tango Controls community meeting at the SKAO HQ in Jodrell Bank, UK, in June. Registration link: https://indico.tango-controls.org/event/57/
Dear Thomas,
Thank you very much for your answer.

Unfortunately, I can't come to the meeting in person. I can offer to give a short remote talk about the HIJ vision. I don't want to brag, but I have visited some laser labs recently and haven't seen anything comparable.

Well, as already stays above: I am looking for like-minded people. Anyone who is interested is free to contact me.

Maybe I am formulating too harshly, but in my opinion the proposed detective work contradicts the basic idea of a community: supporting and sharing. The community uses the shared work and reports bugs. This improves the result and so common efforts bring benifit to evereone.

Best wishes
AlexK
Dear Alex,

I think your needs are similar to many of ours and other sites. That being said we have found over the years that as soon as we try to share higher level devices then it becomes difficult to agree on the algorithms used to calculate values because scientists at each facility have their own codes and ideas on the algorithms and interfaces. It is often quicker to develop the Tango Device locally according to the needs of the local scientists. Tango is often used as a glue software and PyTango is so easy to use it is just easier to write your own device class. That being said I would love to see more sharing even if it is to provide only examples.

For families of complex devices like high-speed detectors it is somewhat different as we need a number of features for all detectors which we do not want to redevelop for each device. In our case we have developed a framework for doing what you describe for 2D detectors called Lima (https://lima1.readthedocs.io/en/latest/). Lima is used by accelerators, lasers and some astronomy sites to my knowledge. It has been an essential framework for us to integrate the many different cameras and detectors we have. It is developed as a framework and a library with a PyTango device server on top. This approach of developing common functionality in a library which does not depend on Tango and then wrapping it with Tango has proved to be the most efficient in many cases.

Do you have some examples of libraries or frameworks you want to wrap?

I saw your slides from the CS-Workshop and wanted to thank you for presenting Tango there. Let us know if you want to schedule a call.
Dear Andy,
Thank you very much for your answer.

I can't imagine that it is easier to develop a new device than to create a child class and override a few related functions. Let's think of a simple motor control: I don't want to care about the state machine (Standby, Initialised, Switched On, In Motion, Finished, Error). These states are the same for all motors. I also don't want to reinvent multithreading or worry about the communication protocol and bus. All these things can be done by general classes. I just want to define the commands RUN, STOP, STATE, RESETERROR, VELOCITY, ACCELERATION for a new controller and I should be in game.

The same is true for analysis and computation. Let's think about an image processing application: almost all of them should have a display. It should have the ability to set multiple ROIs, subtract a BG image, draw a cross, maybe to show overlays. All this is common and independent of processing. But a common application could handle e.g. a situation where processing is slower than the capture rate, care about saving the images with results and metadata (ROI, BG Image, Calibration, e.s.o).

I'll have a look at LIMA, thanks for the tip.

To be honest: The question was asked because of my search for alternatives for NI-Vision, but also as a test for the community. And finally, I wonder why it takes some weeks to get an answer to a problem that affects many people?

I wish a nice weekend,
AlexK
Edited 9 months ago
Alex,

what you describe as easy i.e. creating a child class which uses existing classes for protocols etc. is how a device server class works. In the simplest case it requires only writing the code to implement the commands / attributes you mentioned using existing classes for the protocol + Tango for the multi-threading. The simplicity explains why many sites develop their own classes.

It also explains why there are not many answers. Now that you have answers they are maybe not what you expected. I am not aware of any frameworks besides Lima which are used by multiple sites. Maybe someone else knows of some.

Note: the forum is not read by the whole community because it needs people to go to the forum and/or subscribe to topics. You can see the number of subscribers at the bottom of this post is very small. This also explains the slow and limited reaction to your post.
Hi Alex,

A maybe more specific answer to the need for a laser monitoring application.

At MBI in Berlin, we currently use some in-house developed pure Python applications for beam monitoring and stabilization.
We have long been thinking of wrapping or even putting this on top of PyTango.

In my opinion, this application is specific enough to develop a common application even across institutes.
So I would be happy to discuss some details with you.

Best

Daniel
Hello Daniel, hello everybody,

@Daniel: thank you very much for the kind offer. I would be happy to see your application. Maybe we can do a telco after 19 June?

@all: I just created an organisation on github: https://github.com/Vision-For-Laserlab/ and have started to fill it with some content. Anyone interested in laserlab vision applications can join, upload or at least describe their own projects, and discuss.

My goal is to create a modular vision application with open source resources without being tied to a control system. The binding to TANGO | EPICS | BlueSky should be done via the appropriate modules.

If anyone has concerns about Github, I can organise something based on Helmholtz services.
Edited 9 months ago
 
Register or login to create to post a reply.