rticonnextdds-connector - Platform support

13 posts / 0 new
Last post
Offline
Last seen: 7 years 6 months ago
Joined: 12/08/2015
Posts: 5
rticonnextdds-connector - Platform support

Hello,

We would like to use the rticonnextdds-connector because we have a Python program which we want to communicate with others DDS modules. However, our platform is not supported. It is armv7-qnx6.5.0.

Would it be possible a new port? If not, we think to use https://github.com/forrestv/pyDDS but its API is poor and we want to use the dynamic data, for that, the RTI Connector seems much better solution.

Thank you in advance.

Best regards,

Yamnia

Organization:
gianpiero's picture
Offline
Last seen: 10 months 2 weeks ago
Joined: 06/02/2010
Posts: 177

 

Hello Yamnia,

I am Gianpiero Napoli from RTI. I uploaded the library for armv7aQNX6.5.0SP1qcc_cpp4.4.2 here. When you do git clone, you should get it now. I didn't have time to test the connecor on QNX6.5.0 but maybe you can help with that?

You will also have to modify this file to load the right .so

Let me know if that works for you.
  Best,

  Gianpiero

 

 

Offline
Last seen: 7 years 6 months ago
Joined: 12/08/2015
Posts: 5

Hello Gianpiero,

Thank you very much for the new connector version. However, the simple example of the repository does not work.

I have updated the environment variables NDDSHOME, LD_LIBRARY_PATH and PATH. I have modified rticonnextdds_connector.py to load the new library and to resolve some Unresolved symbol when the librti_dds_connector.so is loaded with ctypes:

These errors:

unknown symbol: REDAOrderedDataType_compareUInt
unknown symbol: REDAOrderedDataType_compareQuadPointer
unknown symbol: REDAOrderedDataType_compareTripleUInt
unknown symbol: REDAOrderedDataType_compareSixUInt
unknown symbol: REDAOrderedDataType_compareDoubleUInt
unknown symbol: DDS_HANDLE_NIL
unknown symbol: RTI_LOG_ANY_FAILURE_s
unknown symbol: DDS_DURATION_INFINITE
unknown symbol: REDAOrderedDataType_comparePointer
unknown symbol: RTI_LOG_ANY_s
unknown symbol: RTILog_setLogLevel
unknown symbol: DDS_ANY_INSTANCE_STATE
unknown symbol: DDS_DYNAMIC_DATA_PROPERTY_DEFAULT
unknown symbol: RTI_OSAPI_MEMORY_LOG_OUT_OF_HEAP_STRUCT_d
unknown symbol: DDS_ANY_VIEW_STATE
unknown symbol: REDAOrderedDataType_compareQuadUInt
unknown symbol: RTI_LOG_CREATION_FAILURE_s

are solved with:

arch = "armv7aQNX6.5.0SP1qcc_cpp4.4.2"
_ddsc_lib = ctypes.CDLL(os.path.join(os.environ['NDDSHOME'], 'lib', arch, 'libnddsc.so'), ctypes.RTLD_GLOBAL)

After, I have the error: Unresolved symbol "luaL_newstate" called from librti_dds_connector.so

For that, I have ported the lua library to QNX 6.5.0 over armv7. The lua executable works on board with the 5.1 and 5.3 versions. Using the line: lua = ctypes.CDLL(os.path.join(path, "liblua.so"), ctypes.RTLD_GLOBAL) I have deleted the above error.

Now, I have a Memory fault in the next line:

class Connector:
    def __init__(self, configName, fileName):
        print "class Connector: init\n" -> printed
        self.native = rtin_RTIDDSConnector_new(configName, fileName) -> Memory fault
        print "class Connector: end\n" -> no printed

I have changed the some names of the configuration file (ShapeExample.xml) and I have seen the errors due to the name changes. Therefore, the configuration file is read. 

I have tested the rtiddsprototyper with the example the lua, and it works fine (but it does not use the lua library that I have ported, maybe I need other version).

I have tested the pyDDS implementation and it works fine also. But I do not have dynamic data feature.

I do not have the source code therefore I can not follow debugging. I hope that it gives you some hints about the problem.

Thank you in advance. Best regards,

Yamnia

 

 

 

gianpiero's picture
Offline
Last seen: 10 months 2 weeks ago
Joined: 06/02/2010
Posts: 177

Hello Yamnia,

Thank you for testing this out. The library i provided should have lua and dds embedded.. for some reason does not! I will investigate why that is not happening. 

Please, download this lua library and see if that solves the segmentation fault. It may, but also you may be pointing your LD_LIBRARY_PATH to core and dds_c that are not the same version of the one i used to produce the connector library. 

Please let me know if using the provided lua library works. Meanwhile i will try to understand why the connector library i provided does not have the other symbols included.

Cheers,
  Gianpiero

Offline
Last seen: 7 years 6 months ago
Joined: 12/08/2015
Posts: 5

Hello Gianpiero,

It seems that the lua library works but now I have the memory fault some lines after. 

In the writer.py, the memory fault appears when the instance is acceded: output.instance.setNumber("x", i)

If I run the writer on Linux and the reader.py on QNX6.5.0SP1_armv7, the first sample is printed and then, when the next sample is received, the memory fault appears. It coincides when the writer sends. If I decrease the sleep time, I can see two samples printed.

Yes, if it is possible that I am using different libraries of the one you used to produce the connector library.

Thank you in advance. Best, Yamnia

gianpiero's picture
Offline
Last seen: 10 months 2 weeks ago
Joined: 06/02/2010
Posts: 177

Hello Yamnia,

I think that may be the issue. But I did something that should allow you to load only the connector library and avoid setting LD_LIBRARY_PATH all together. That is the way it works for other architectures. 

Please do I git pull or get the library from here and try again. 

Let me know,

  Gianpiero

Offline
Last seen: 7 years 6 months ago
Joined: 12/08/2015
Posts: 5

Hello Gianpiero,

It is running perfectly! Thank you very much!

Best regards, Yamnia

gianpiero's picture
Offline
Last seen: 10 months 2 weeks ago
Joined: 06/02/2010
Posts: 177

Hi Yamnia,

Happy to help! Being one of the developers on that project, I am curious to know how you are using it.. can you share?

Best,
  Gianpiero

Offline
Last seen: 7 years 6 months ago
Joined: 12/08/2015
Posts: 5

Hello Gianpiero,

I can share that we decided to use the RTI DDS implementation as the communication middleware between the ground station and the UAV autopilot. We want to integrate in this system a mission planning program which is written in Python. For that, the rticonnextdds-connector is an easy way to achieve it.

Best, Yamnia

Offline
Last seen: 7 years 3 months ago
Joined: 02/07/2017
Posts: 14

Hi, i want to use rticonnextdds-connector so that I can write some tests in Python in order to test a a DDS application written in C++ which our company is writing.  I was looking at the processes supported and mine isn't one of those currently available.. Do you think you would be able to provide one for me..

architecture is : x64Linux3gcc4.8.2

 

best regards,

Nick

 

gianpiero's picture
Offline
Last seen: 10 months 2 weeks ago
Joined: 06/02/2010
Posts: 177

Hi Nick,

Did you alredy try to run using the current library x64Linux2.6gcc4.4.5?

Let me know,
  Gianpiero

Offline
Last seen: 7 years 3 months ago
Joined: 02/07/2017
Posts: 14

yes .. i was using the existing drivers and works fine.. thanks 

gianpiero's picture
Offline
Last seen: 10 months 2 weeks ago
Joined: 06/02/2010
Posts: 177

Great!

-- Gianpiero