Page 1 of 2

Robot based scanning system with TCP plug-in development problems

Posted: Thu Apr 02, 2015 8:14 am
by Pepek
Hello.

I am developing program for robot based scanning system. CloudCompare would be perfect environment for our project, it helps with 3D cloud of points a lot. I am trying to develop plug-in for CC that would help us, but I am only intermediate programmer and I have problems with QT, dll and so on..

The basic functionality of plug-in should be:

1. Connect to robot server over TCP.
2. Send code for fast and inaccurate measurement (no other data).
3. Receive cloud of point and insert it into CC.
4. Select next scan position in space (x, y, z) and 2 vectors – robot camera vector and up vector (how?).
5. Send accurate scan code and it's parameters over TCP.
6. Receive accurate cloud of points and insert it into CC.
7. Return to 4 if needed.

I am using Visual Studio, and I decided to use QtWebSockets in order to communicate with robot server (I'll write it to). Unfortunately I cannot force my plug-in to load QtWebSockets.dll (or QtWebSocketsd.dll) properly. Is there way to do that? If not is there any alternative already in CC?

Second thing is adding vectors in 3D, is there any function to do that and visualise it in CC?

And I guess that there have to be way to insert cloud of points from plug-in.

So far I've added actions in CC user interface for my plug-in, and I've made basic window for setting up TCP connection. I work with VS (with Qt Add-in) solution I generated with cmake.

I would be grateful if someone could point some articles or solutions realated to my problems...

Re: Robot based scanning system with TCP plug-in development problems

Posted: Thu Apr 02, 2015 8:49 am
by daniel
Interesting.

Regarding your issues with Qt

Are you using Qt 4 or 5? Look at the 'CMakeExternalLibs.cmake' file in the root directory. You'll see how Qt packages are retrieved (with the find_package command of CMake). Then you have to explicitly link your plugin with the corresponding library:

Code: Select all

include_directories( ${XXX_INCLUDE_DIR} )
target_link_libraries( ${PROJECT_NAME} ${XXX_LIBRARY_FILE} )
You can even tell CMake to copy the corresponding DLL to CC's install folder (with the 'install_ext' command). You can see how the other plugins depending on external libraries do this: qSRA, qPCL, qCork, etc.

Regarding the other questions
- for 3D vectors, you can create simple 'polylines' (ccPolyline) with 2 points. You could also create your own graphic entity but it's a little more complicated
- to add new point clouds, you have to create ccPointCloud instances and then register them via the 'm_app' member of the plugin (should be always valid when you are running the code of a plugin's action). The method is 'addToDB'.

Don't hesitate to ask for more information.

Re: Robot based scanning system with TCP plug-in development problems

Posted: Sun Apr 05, 2015 9:30 pm
by Pepek
Thank for support.
I am using QT 5 on windows. I queses that I need to add this library in CMakeInclude.cmake too? I found some examples as ExportPLCDlls.cmake. I will test it as soon I will return from spring break.

Re: Robot based scanning system with TCP plug-in development problems

Posted: Fri Apr 10, 2015 2:16 pm
by daniel
The basic Qt 5 libraries (DLLs) will already be used and imported by CC. You only have to add the non standard ones (QtWebSocket here).

Re: Robot based scanning system with TCP plug-in development problems

Posted: Tue Apr 28, 2015 11:47 am
by Pepek
I managed to write basic plugin version and it works. Now I want to compile it, so that I will just give people my plugin dll, and Qt network dll and they can download CC from internet. The problem is when I copied my plugin dll and Qt's network into CC folder/plugin folder and I started CC I got "The specified procedure could not be found." (Windows error code 127) and plugin loading failed. I used Dependency Walker to see what's the deal. It looks like Qt5Network.dll failed to use Qt's dlls from CC. So I guess I need to compile my plugin with the same Qt version as you do. I tried to find any info about it but I did not find anything in documentation and wiki. Can someone help me?

I am using currently Visual Studio 2013 and Qt 5.4 - msvc2013_64_opengl.

Re: Robot based scanning system with TCP plug-in development problems

Posted: Tue Apr 28, 2015 1:34 pm
by daniel
Indeed, you have to stick to a version of Qt equivalent or newer than ours.

Currently (v2.6.1) the Windows versions are based on:
  • Qt 5.4 for the 64 bits version (Visual 2012)
  • Qt 4.8 for the 32 bits version (I need to verify this) (Visual 2010)
We have several problems with Qt 5.4 (mainly OpenGL/display issues) so we might either upgrade to Qt 5.5 (if it fixes those issues) or fall back to the 4.8 version for the next release (v2.6.2).

Re: Robot based scanning system with TCP plug-in development problems

Posted: Wed Apr 29, 2015 11:04 am
by Pepek
Where did you found 64 bit version of Qt for VS 2012? Official site has only 32 bit version. I found 5.4.1 x64 for VS 2012 version on this site http://tver-soft.org/qt64 but their repo with previous versions is dead. And 5.4.1 version is not compatible with CC 2.6.1. Do you compile your own version?

Re: Robot based scanning system with TCP plug-in development problems

Posted: Wed Apr 29, 2015 12:19 pm
by daniel
It seems the qt64 project is disabled, but there are some replicas (for instance here: http://sourceforge.net/projects/qt64ng/ ... -64/5.4.0/).

Re: Robot based scanning system with TCP plug-in development problems

Posted: Wed May 13, 2015 11:14 am
by Pepek
Thanks a lot, everything works as intended! Robot scans objects and sends data to CC via my plug-in. One more thing for now. It would be nice to see compiler that was used to build current CC version. In QT Creator there is "About" in help menu and there is info "Based on Qt 5.4.1 (MSVC 2010, 32 bit)". That way I would know which QT version I need for my plugin.

Re: Robot based scanning system with TCP plug-in development problems

Posted: Mon May 18, 2015 7:21 pm
by daniel
Okay, from now on, the Windows version will display in the 'about' dialog:
- the version of the Visual compiler (see Microsoft's documentation about _MSC_VER for instance: VS2012 = MSC_VER 1700)
- the version of Qt

I confirm that the next version will probably use Qt 4.8 as we have many issues with Qt 5.4 (by the way it seems that http://tver-soft.org/qt64 is on again).