No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro lunar showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro jade showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro indigo showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro hydro showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro kinetic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro melodic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange

No version for distro noetic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.3
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/carologistics/clips_executive.git
VCS Type git
VCS Version master
Last Updated 2025-08-22
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Generate CLIPS bindings to use ROS messages, actions and services

Maintainers

  • Tarik Viehmann

Authors

No additional authors.

cx_ros_comm_gen

This package offers a convenient generator that allows to interface with ros nodes via messages, services and action clients/servers.

Usage

The usage involves a few steps:

  1. Generating the bindings
  2. Loading the generated bindings as CLIPS Executive plugins
  3. Using the generated functions and templates

Generating Bindings

The cx_ros_comm_gen package provides cmake functions to generate bindings for ros messages, services and actions via the following macros:

cx_generate_msg_bindings(package msg_name)

cx_generate_srv_bindings(package srv_name)

cx_generate_action_bindings(package action_name)

See the below snippet for an example (taken from the cx_bringup package):

find_package(cx_ros_comm_gen REQUIRED)

# generate bindings to interface with ROS messages, such as std_msgs::msg::String
cx_generate_msg_bindings("std_msgs" "String")

# generate bindings to interface with ROS services, such as std_srvs::srv::SetBool
cx_generate_srv_bindings("std_srvs" "SetBool")

# generate bindings to interface with ROS services, such as example_interfaces::action::Fibonacci
cx_generate_action_bindings("example_interfaces" "Fibonacci")

Note that upon invoking these functions the following dependencies will be used, hence it makes sense to add them to the belonging package.xml:

find_package(${package} REQUIRED)
find_package(pluginlib REQUIRED)
find_package(clips_vendor REQUIRED)
find_package(clips REQUIRED)
find_package(rclcpp_action REQUIRED) # only if action bindings are generated

Invoking these macros causes the following effects:

  1. A cmake custom_command is created that invokes the generator.py script of this package
  2. A shared library for the plugin is created using the generated c++ files from the custom command
  3. A plugin description file is installed so the plugin becomes available via pluginlib

Registering Bindings

Register the generated plugins with the plugin manager from the cx_plugin_manager package via it’s configuration file. For the example above, the configuration is depicted below (the snippet from the cx_bringup package):

clips_plugins_manager:
ros__parameters:
clips_plugins_list: ["cx_std_msgs_string_plugin", "cx_std_srvs_set_bool_plugin", "cx_example_interfaces_fibonacci_plugin"]
clips_plugins:
  cx_std_msgs_string_plugin:
    plugin: "cx::CXStdMsgsStringPlugin"
  cx_std_srvs_set_bool_plugin:
    plugin: "cx::CXStdSrvsSetBoolPlugin"
  cx_example_interfaces_fibonacci_plugin:
    plugin: "cx::CXExampleInterfacesFibonacciPlugin"

Using the Bindings in CLIPS

Given a package (e.g., “std_msgs”) and a message (e.g., “String”) all deftemplates and functions are named using Kebab-case (as expected in CLIPS) and are are prefixed by <package-kebab>-<message-kebab>- (e.g., “std-msgs-string-“).

Message Bindings

Deftemplates
; Asserted by the respective create-subscription function.
; Retracted by the respective destroy-subscription function.
(<package-kebab>-<message-kebab>-subscription (topic ?topic-name-string))

; Asserted by the respective create-publisher function.
; Retracted by the respective destroy-publisher function.
(<package-kebab>-<message-kebab>-publisher (topic ?topic-name-string))

; Asserted by the callback of a subscriber whenever a message arrives.
; Process the message and then call destroy-message before retracting!
(<package-kebab>-<message-kebab>-message (topic ?topic-name-string) (msg-ptr ?msg-ptr))

Functions

```lisp ; Create and destroy publishers and subscribers. (--create-publisher ?topic-name) (--destroy-publisher ?topic-name) (--create-subscription ?topic-name) (--destroy-subscription ?topic-name)

; Publish a given message over a topic. ; Requires the publisher to be created first using create-publisher. (--publish ?msg-ptr ?topic-name)

; Create a message and return a pointer to it (bind ?msg-ptr (--create-message)) ; Destroy a message, call this after publishing a message or processing an incoming message to prevent it from staying in memory. (--destroy-message ?msg-ptr)

; Populate the field of a message. ; If the field is a message, then pass a pointer to that message (by using that respective messages bindings). (--set-field ?msg-ptr ?field-name ?field-value)

; Retrieve a field of a message. ; If the field is a message, then a pointer is returned that can only be processed by using that respective messages bindings.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cx_ros_comm_gen

0.1.3 (2025-08-06)

  • 0.1.3
  • Contributors: Tarik Viehmann

0.1.2 (2025-07-16)

0.1.1 (2025-07-11)

  • project: prepare for first ros2 release
  • Contributors: Tarik Viehmann

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cx_ros_comm_gen at Robotics Stack Exchange