WaveMe Support

WaveMe Support

Smooth Camera Stream

WaveMe relies on stable image streaming for its main mode of operation. Therefore, a great effort has been made to ensure that images are processed efficiently and in parallel with other tasks. This is one of the reasons behind the image pipeline, and why the Hartmann module supports two different methods for presenting its wavefront results. One mode that offers pixel-perfect rendering and another which prioritizes rendering time. There are however limitations if a computer without a dedicated Graphics Processing Unit (GPU), or with a weak GPU is used. Examples of such a combination may be and Intel Core i5 processor without support of a dedicated GPU, while a Core i7 will most probably handle the load without any problems, although this will depend on the resolution of the display. HD (1920×1080) displays will most likely be handled with less powerful configuration while 4K (3840×2160) will need a more modern CPU with good built-in graphics unit or at least a low-end dedicated graphics card that supports OpenGL.

In those cases, images sent down the pipeline may exhaust, or at least put significant strain on available CPU resources. In most cases, this is due to the needs of graphics resources and computers with dedicated GPU’s will rarely see the problem that this page is about to cover.

If the streaming process appears to be frequently interrupted, resulting in a jumping frames per second (fps) number, chances are that your computer is struggling to keep up with the flow of data. While the streaming function works around this problem internally, by immediately queueing the failed buffer, this work around cannot be used inside the phase-shifting toolbox because of the synchronization between image streams and actuator movement.

Network package loss

There are other things that may cause this particular problem that are not related to WaveMe or the computer. It may in fact originate from the network infrastructure itself. WaveMe will do what it can to solve it by altering some of the network parameters it has under its control. If, however, the problem persists, there are still solutions but ones that require some action by the user.

If waveme fails to fix this problem more or less immediately, then the reason is probably that due to CPU overload. The packets arriving on the network interface are not captured and put into the streaming buffers before new packets arrive and write over the previous content. To solve this, the drivers offer a priority elevation mechanism and if you see the error (0xE1000014), WaveMe has already tried to use it but priority elevation is a matter not to be taken lightly and, therefore, such an operation is usually considered a privileged operation that require permissions from the system administrator.

On Linux, the solution is described in a README file in the installation directory of the Pylon camera driver. This involves allowing specific users or user groups to elevate thread priorities using pam_limits.so through /etc/security/limits.conf. Although, since the Linux landscape is rather diverse, this may not be enough due to AppArmor or other security restrictions. On Microsoft Windows, it is possible to run WaveMe as an Administrator, but this is generally something to be avoided. It is preferred to solve this by adjusting the Local Security Policy (secpol.msc). Navigate to Local Policies > User Rights Assignment. Find the policy “Adjust memory quotas for a process” or “Increase scheduling priority.”

Perhaps the absolutely simplest way to avoid this problem entirely is to use USB3. Although Ethernet has some attractive properties like the possibility to use very long cables, if a few meters is enough, USB3 offers significant plug-and-play simplicity, and what’s even better, this problem does not appear when USB3 camera is used.

When the streaming buffers are exhausted because the image pipeline is unable to return them to the camera at a sufficient rate, the camera will simply wait for one to be returned and the end result is that the image rate will decrease without any other consequences for the end user.

Streaming does not start

If WaveMe only shows one image but does not allow you to stream, then WaveMe must be added to the Windows Firewall. Go to

There, select “Allow and app through firewall”. Then select “Change Settings” which will enable the button “Allow another app …” where you can browse to the install folder of WaveMe and select “waveme.exe”

Camera Drivers

WaveMe is using Basler cameras and drivers. During the installation, it will ask the user if he wants to install camera drivers. If you already have downloaded and installed Pylon, you don’t need to install the camera drivers which are part of the WaveMe installer since the same drivers are already installed during the installation of Pylon. When you install Pylon, you will get Pylon Viewer and Pylon IP Configurator. If your network is not based on dynamic IP allocation, you will need to use Pylon IP configurator to configure your camera properly. On the other hand, if your local IP network is using DHCP, you may not need the Pylon IP Configurator and possibly, you may not even need to install Pylon itself if you choose to use the drivers that are distributed together with WaveMe.

That camera you receive from Senslogic will be configured for DHCP and should operate without additional configuration in a DHCP-based network. The installation process includes two installers. One is WaveMe and the other is the set of configuration and calibration files wich goes in the users AppData folder under \AppData\Senslogic\WaveMe.

WaveMe stores the state of the application, such as enabled modules, whether the modules are enabled themselves or not, whether the camera is streaming, and many other things. In addition, modules also save their runtime state. When you run WaveMe for the first time, it is quite possible that the only thing you need to do is to start the program, which will recover its last runtime state and, start measuring right away.