dqrobotics / cpp-interface-coppeliasim-zmq

A DQ Robotics interface for CoppeliaSim's ZeroMQ remote API.
GNU Lesser General Public License v3.0
0 stars 0 forks source link

[PR] Adding DQ_CoppeliaSimInterfaceZMQ and DQ_CoppeliaSimInterfaceZMQ Extended #2

Closed juanjqo closed 2 days ago

juanjqo commented 4 days ago

@dqrobotics/developers

This PR adds the first official version of the new DQ Robotics interface to connect with CoppeliaSim based on ZeroMQ remote API. This PR the abstract class DQ_CoppeliaSimInterface(), which I proposed here.

The new class DQ_CoppeliaSimZmqInterface() implements all methods of the superclass DQ_CoppeliaSimInterface(). Furthermore, the exclusive methods that are enabled by the ZeroMQ remote API are implemented in a different namespace called experimental. I added two examples in my own public repository https://github.com/juanjqo/dqrobotics-interface-coppeliasim-examples/tree/dqrobotics.

Furthermore, this PR proposes the following classes DQ_SerialCoppeliaSimRobot, DQ_SerialCoppeliaSimZmqRobot and, two robot classes URXCoppeliaSimZmqRobot and FrankaEmikaPandaCoppeliaSimZmqRobot.

Initial propose

drawing

Final version

drawing

Best regards,

Juancho

juanjqo commented 2 days ago

Hi @bvadorno and @mmmarinho

I had a hard time implementing the @bvadorno's suggestion. But I think is ready. Thanks, @mmmarinho, for the clarification of some C++ concepts and for the implementation of the internal wrapper. The current version of this PR only implements the class DQ_CoppeliaSimInterfaceZMQ and its child class DQ_CoppeliaSimInterfaceZMQExperimental. The former implements all methods from DQ_CoppeliaSimInterface and some deprecated ones to ensure backward compatibility with the DQ_VrepInterface. On the other hand, DQ_CoppeliaSimInterfaceZMQExperimental inherits the methods from DQ_CoppeliaSimInterfaceZMQ and implements experimental methods.

The other classes, as DQ_CoppeliaSimRobotZMQ, and some robot classes (e.g., FrankaEmikaPandaCoppeliaSimZMQRobot or URXCoppeliaSimZMQRobot will be added in a future PR.

Kind regards,

Juancho

mmmarinho commented 2 days ago

Thanks @juanjqo.

@juanjqo and @bvadorno

I need to merge this pull request as a matter of urgency so that I can prepare my materials for next week's workshop. I'll add some other instructions to issue #1. These will include what @juanjqo mentioned about some remaining tasks to make this interface fully compatible.

It is better that we split this task into multiple pull requests otherwise we will have a difficult monster to handle. In addition, I'll have more experience with this interface to propose improvements.

Before I forget, @juanjqo, when you have the time, please adjust the UML to reflect what was done in this pull request.

Lastly, just FYI, to help disambiguate, I've added the string "[Murilo]" to the commits I made using the shared PC with Juan.