Skip to content
This repository has been archived by the owner on May 4, 2019. It is now read-only.

About a ROS2 client library implemented in D.

License

Notifications You must be signed in to change notification settings

fkromer/ros2-d-client-library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

Functional requirements:

  • functionality and API equivalent to ROS2 C++ client library (C++ client library has most advanced feature set right now)
    • Reference - C++ client library: rclcpp
  • functionality equivalent to ROS2 C++ client library (C++ client library user code depends on idl generator)
  • functionality to support building D client library packages

Non-functional requirements:

  • compiler: LDC (D compiler comparison: most platforms and architectures supported)
  • integration of tool based static code analysis into build tool (other client libraries aim at integration of tools extensively)
  • design by contract (C++ does not support this but will probably support it if ROS2 begins to support C++17)
  • unit tests (other client libraries aim at extensive unit testing as well)
  • rmw (ROS2 middleware) integration tests (C++ client library aims at extensive middleware integration testing as well)
    • C++ client library reference: system_tests/test_communication
    • test of communiaction (publish/subscribe/request/response)
    • test with all primitive and builtin types
    • test with every available rmw implementation
  • security tests (C++ client library aims at extensive security testing):
  • API tests (other client libraries like C++ client library aims at extensive API testing as well)
  • code coverage (usually web services like coveralls.io which support statement coverage analysis are used to analyze open source ROS2 packages)
  • priorization of software quality attributes (over the mid to long term I expect the following priorization for C/C++ ROS2 packages)
    • security
    • reliability
    • performance

ROS2 Architecture

How a client library (here: C++) fits into the big picture.

  • A ROS2 client library ({client libraries}) interfaces the rcl. The rcl is the interface and implementation of client library functionality which is common for all client libraries. It is implemented in C. The rmw is implemented in C as well.
  • For every language specific client library a generator for lanuage specific ROS2 interface is required, e.g. rosidl_generator_cpp generates the ROS2 interfaces in C++ (not shown in the diagram).
  • In the example below the {DDS vendor} (Fast-RTPS) and {rmw impl} (rmw_fastrtps_cpp) are both implemented in C++. However these layers are independent of the client library and there is no need to implement them in D.

ROS-I Consortium 2017 Presentation: Looking forward to ROS2

About

About a ROS2 client library implemented in D.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published