Repo symbol

soar_ros repository

soar_ros

Repository Summary

Checkout URI https://github.com/THA-Embedded-Systems-Lab/soar_ros.git
VCS Type git
VCS Version main
Last Updated 2025-04-25
Dev Status MAINTAINED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
soar_ros 0.0.2

README

soar_ros: A ROS 2 Interface for Soar

This ROS2 package provides an interface for the Soar cognitive architecture by creating wrappers for ROS2 messages and handling the Soar kernel in a continuos mode.

Soar is a cognitive architecture developed at the University of Michigan. It is used in the field of cognitive robotics in different projects, e.g. a drone or a robot. However, the integration of Soar and ROS 2 is currently difficult for complex projects, which include multiple publishers, subscribers, services or clients. The main limitation orginates from the synchronous callback model used by Soar which inspired the creation of this wrapper. A detailed explanation about the reason for the development of the package can be read in the software architecture.

The package relies on a forked version of Soar. The major changes include a cmake-based build instead of scons and removal of SWIG language interfaces. For a detailed comparison have a look at the commit history of the fork.

Features

The library is developed targeting ROS 2 Humble on Ubuntu 22.04. Other configurations were not tested. It provides

  • Non blocking Soar kernel
  • Publisher
  • Subscriber
  • Service
  • Client

The following features are not supported, yet.

  • Action Server and Client
  • Multiple Soar agents

Definition and description of the public API

The API documentation is generated via rosdoc2, cf. how to build documentation.

Examples

The following examples are an extract of the test cases in test/test_soar_ros.cpp.

Publisher

The soar_ros::Publisher extends the ROS Publisher so the user only needs to define how data are converted between ROS data types and Soar data types.

class TestOutput : public soar_ros::Publisher<std_msgs::msg::String>
{
public:
  TestOutput(sml::Agent * agent, rclcpp::Node::SharedPtr node, const std::string & topic)
  : Publisher<std_msgs::msg::String>(agent, node, topic) {}
  ~TestOutput() {}
  std_msgs::msg::String parse(sml::Identifier * id) override
  {
    std_msgs::msg::String msg;
    msg.data = id->GetParameterValue("data");
    std::cout << id->GetCommandName() << " " << msg.data << std::endl;
    return msg;
  }
};

Service

In the following example, the ROS2 example AddTwoInts is implemented. Soar adds two integers and sends the result as a ROS2 Service, based on the soar_ros::Service class. The code is from test/test_soar_ros.cpp.

``` cpp
class TestService : public soar_ros::Service<example_interfaces::srv::AddTwoInts>
{
public:
TestService(sml::Agent * agent, rclcpp::Node::SharedPtr node, const std::string & topic)
Service<example_interfaces::srv::AddTwoInts>(agent, node, topic) {} ~TestService() {}

example_interfaces::srv::AddTwoInts::Response::SharedPtr parse(sml::Identifier * id) override { example_interfaces::srv::AddTwoInts::Response::SharedPtr response = std::make_shared<example_interfaces::srv::AddTwoInts::Response>(); auto sum = id->GetParameterValue(“sum”); int32_t num = std::stoi(sum); response.get()->sum = num; RCLCPP_INFO(m_node->get_logger(), “Computed: Sum=%ld”, response.get()->sum);

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing

You are very welcome to contribute to the project by creating issues or submitting a pull-request. Please follow standard contributing guidelines, for instance (non extensive list):

  • Check for existing issues before creating a new one
  • Check with maintainers before starting to work on an issue or submit a PR in order to prevent duplicate work
  • Commit messages correspond to the changes

Mandatory Checks

The changelog is generated based on commit messages and therefore the conventional commit style is enforced. Please ensure that the commit messages are formatted accordingly.

There is a pre-commit file to ensure compliance if you prefer to use a tool.

Code Style

The project follows the ROS2 coding style.

# Contributing You are very welcome to contribute to the project by creating issues or submitting a pull-request. Please follow standard contributing guidelines, for instance (non extensive list): - Check for existing issues before creating a new one - Check with maintainers before starting to work on an issue or submit a PR in order to prevent duplicate work - Commit messages correspond to the changes ## Mandatory Checks The changelog is generated based on commit messages and therefore the [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) style is enforced. Please ensure that the commit messages are formatted accordingly. There is a [pre-commit](https://pre-commit.com/) file to ensure compliance if you prefer to use a tool. ## Code Style The project follows the [ROS2 coding style](https://docs.ros.org/en/rolling/The-ROS2-Project/Contributing/Code-Style-Language-Versions.html).
Repo symbol

soar_ros repository

soar_ros

Repository Summary

Checkout URI https://github.com/THA-Embedded-Systems-Lab/soar_ros.git
VCS Type git
VCS Version main
Last Updated 2025-04-25
Dev Status MAINTAINED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
soar_ros 0.0.2

README

soar_ros: A ROS 2 Interface for Soar

This ROS2 package provides an interface for the Soar cognitive architecture by creating wrappers for ROS2 messages and handling the Soar kernel in a continuos mode.

Soar is a cognitive architecture developed at the University of Michigan. It is used in the field of cognitive robotics in different projects, e.g. a drone or a robot. However, the integration of Soar and ROS 2 is currently difficult for complex projects, which include multiple publishers, subscribers, services or clients. The main limitation orginates from the synchronous callback model used by Soar which inspired the creation of this wrapper. A detailed explanation about the reason for the development of the package can be read in the software architecture.

The package relies on a forked version of Soar. The major changes include a cmake-based build instead of scons and removal of SWIG language interfaces. For a detailed comparison have a look at the commit history of the fork.

Features

The library is developed targeting ROS 2 Humble on Ubuntu 22.04. Other configurations were not tested. It provides

  • Non blocking Soar kernel
  • Publisher
  • Subscriber
  • Service
  • Client

The following features are not supported, yet.

  • Action Server and Client
  • Multiple Soar agents

Definition and description of the public API

The API documentation is generated via rosdoc2, cf. how to build documentation.

Examples

The following examples are an extract of the test cases in test/test_soar_ros.cpp.

Publisher

The soar_ros::Publisher extends the ROS Publisher so the user only needs to define how data are converted between ROS data types and Soar data types.

class TestOutput : public soar_ros::Publisher<std_msgs::msg::String>
{
public:
  TestOutput(sml::Agent * agent, rclcpp::Node::SharedPtr node, const std::string & topic)
  : Publisher<std_msgs::msg::String>(agent, node, topic) {}
  ~TestOutput() {}
  std_msgs::msg::String parse(sml::Identifier * id) override
  {
    std_msgs::msg::String msg;
    msg.data = id->GetParameterValue("data");
    std::cout << id->GetCommandName() << " " << msg.data << std::endl;
    return msg;
  }
};

Service

In the following example, the ROS2 example AddTwoInts is implemented. Soar adds two integers and sends the result as a ROS2 Service, based on the soar_ros::Service class. The code is from test/test_soar_ros.cpp.

``` cpp
class TestService : public soar_ros::Service<example_interfaces::srv::AddTwoInts>
{
public:
TestService(sml::Agent * agent, rclcpp::Node::SharedPtr node, const std::string & topic)
Service<example_interfaces::srv::AddTwoInts>(agent, node, topic) {} ~TestService() {}

example_interfaces::srv::AddTwoInts::Response::SharedPtr parse(sml::Identifier * id) override { example_interfaces::srv::AddTwoInts::Response::SharedPtr response = std::make_shared<example_interfaces::srv::AddTwoInts::Response>(); auto sum = id->GetParameterValue(“sum”); int32_t num = std::stoi(sum); response.get()->sum = num; RCLCPP_INFO(m_node->get_logger(), “Computed: Sum=%ld”, response.get()->sum);

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing

You are very welcome to contribute to the project by creating issues or submitting a pull-request. Please follow standard contributing guidelines, for instance (non extensive list):

  • Check for existing issues before creating a new one
  • Check with maintainers before starting to work on an issue or submit a PR in order to prevent duplicate work
  • Commit messages correspond to the changes

Mandatory Checks

The changelog is generated based on commit messages and therefore the conventional commit style is enforced. Please ensure that the commit messages are formatted accordingly.

There is a pre-commit file to ensure compliance if you prefer to use a tool.

Code Style

The project follows the ROS2 coding style.

# Contributing You are very welcome to contribute to the project by creating issues or submitting a pull-request. Please follow standard contributing guidelines, for instance (non extensive list): - Check for existing issues before creating a new one - Check with maintainers before starting to work on an issue or submit a PR in order to prevent duplicate work - Commit messages correspond to the changes ## Mandatory Checks The changelog is generated based on commit messages and therefore the [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) style is enforced. Please ensure that the commit messages are formatted accordingly. There is a [pre-commit](https://pre-commit.com/) file to ensure compliance if you prefer to use a tool. ## Code Style The project follows the [ROS2 coding style](https://docs.ros.org/en/rolling/The-ROS2-Project/Contributing/Code-Style-Language-Versions.html).
Repo symbol

soar_ros repository

soar_ros

Repository Summary

Checkout URI https://github.com/THA-Embedded-Systems-Lab/soar_ros.git
VCS Type git
VCS Version main
Last Updated 2025-04-25
Dev Status MAINTAINED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
soar_ros 0.0.2

README

soar_ros: A ROS 2 Interface for Soar

This ROS2 package provides an interface for the Soar cognitive architecture by creating wrappers for ROS2 messages and handling the Soar kernel in a continuos mode.

Soar is a cognitive architecture developed at the University of Michigan. It is used in the field of cognitive robotics in different projects, e.g. a drone or a robot. However, the integration of Soar and ROS 2 is currently difficult for complex projects, which include multiple publishers, subscribers, services or clients. The main limitation orginates from the synchronous callback model used by Soar which inspired the creation of this wrapper. A detailed explanation about the reason for the development of the package can be read in the software architecture.

The package relies on a forked version of Soar. The major changes include a cmake-based build instead of scons and removal of SWIG language interfaces. For a detailed comparison have a look at the commit history of the fork.

Features

The library is developed targeting ROS 2 Humble on Ubuntu 22.04. Other configurations were not tested. It provides

  • Non blocking Soar kernel
  • Publisher
  • Subscriber
  • Service
  • Client

The following features are not supported, yet.

  • Action Server and Client
  • Multiple Soar agents

Definition and description of the public API

The API documentation is generated via rosdoc2, cf. how to build documentation.

Examples

The following examples are an extract of the test cases in test/test_soar_ros.cpp.

Publisher

The soar_ros::Publisher extends the ROS Publisher so the user only needs to define how data are converted between ROS data types and Soar data types.

class TestOutput : public soar_ros::Publisher<std_msgs::msg::String>
{
public:
  TestOutput(sml::Agent * agent, rclcpp::Node::SharedPtr node, const std::string & topic)
  : Publisher<std_msgs::msg::String>(agent, node, topic) {}
  ~TestOutput() {}
  std_msgs::msg::String parse(sml::Identifier * id) override
  {
    std_msgs::msg::String msg;
    msg.data = id->GetParameterValue("data");
    std::cout << id->GetCommandName() << " " << msg.data << std::endl;
    return msg;
  }
};

Service

In the following example, the ROS2 example AddTwoInts is implemented. Soar adds two integers and sends the result as a ROS2 Service, based on the soar_ros::Service class. The code is from test/test_soar_ros.cpp.

``` cpp
class TestService : public soar_ros::Service<example_interfaces::srv::AddTwoInts>
{
public:
TestService(sml::Agent * agent, rclcpp::Node::SharedPtr node, const std::string & topic)
Service<example_interfaces::srv::AddTwoInts>(agent, node, topic) {} ~TestService() {}

example_interfaces::srv::AddTwoInts::Response::SharedPtr parse(sml::Identifier * id) override { example_interfaces::srv::AddTwoInts::Response::SharedPtr response = std::make_shared<example_interfaces::srv::AddTwoInts::Response>(); auto sum = id->GetParameterValue(“sum”); int32_t num = std::stoi(sum); response.get()->sum = num; RCLCPP_INFO(m_node->get_logger(), “Computed: Sum=%ld”, response.get()->sum);

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing

You are very welcome to contribute to the project by creating issues or submitting a pull-request. Please follow standard contributing guidelines, for instance (non extensive list):

  • Check for existing issues before creating a new one
  • Check with maintainers before starting to work on an issue or submit a PR in order to prevent duplicate work
  • Commit messages correspond to the changes

Mandatory Checks

The changelog is generated based on commit messages and therefore the conventional commit style is enforced. Please ensure that the commit messages are formatted accordingly.

There is a pre-commit file to ensure compliance if you prefer to use a tool.

Code Style

The project follows the ROS2 coding style.

# Contributing You are very welcome to contribute to the project by creating issues or submitting a pull-request. Please follow standard contributing guidelines, for instance (non extensive list): - Check for existing issues before creating a new one - Check with maintainers before starting to work on an issue or submit a PR in order to prevent duplicate work - Commit messages correspond to the changes ## Mandatory Checks The changelog is generated based on commit messages and therefore the [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) style is enforced. Please ensure that the commit messages are formatted accordingly. There is a [pre-commit](https://pre-commit.com/) file to ensure compliance if you prefer to use a tool. ## Code Style The project follows the [ROS2 coding style](https://docs.ros.org/en/rolling/The-ROS2-Project/Contributing/Code-Style-Language-Versions.html).
Repo symbol

soar_ros repository

soar_ros

Repository Summary

Checkout URI https://github.com/THA-Embedded-Systems-Lab/soar_ros.git
VCS Type git
VCS Version main
Last Updated 2025-04-25
Dev Status MAINTAINED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
soar_ros 0.0.2

README

soar_ros: A ROS 2 Interface for Soar

This ROS2 package provides an interface for the Soar cognitive architecture by creating wrappers for ROS2 messages and handling the Soar kernel in a continuos mode.

Soar is a cognitive architecture developed at the University of Michigan. It is used in the field of cognitive robotics in different projects, e.g. a drone or a robot. However, the integration of Soar and ROS 2 is currently difficult for complex projects, which include multiple publishers, subscribers, services or clients. The main limitation orginates from the synchronous callback model used by Soar which inspired the creation of this wrapper. A detailed explanation about the reason for the development of the package can be read in the software architecture.

The package relies on a forked version of Soar. The major changes include a cmake-based build instead of scons and removal of SWIG language interfaces. For a detailed comparison have a look at the commit history of the fork.

Features

The library is developed targeting ROS 2 Humble on Ubuntu 22.04. Other configurations were not tested. It provides

  • Non blocking Soar kernel
  • Publisher
  • Subscriber
  • Service
  • Client

The following features are not supported, yet.

  • Action Server and Client
  • Multiple Soar agents

Definition and description of the public API

The API documentation is generated via rosdoc2, cf. how to build documentation.

Examples

The following examples are an extract of the test cases in test/test_soar_ros.cpp.

Publisher

The soar_ros::Publisher extends the ROS Publisher so the user only needs to define how data are converted between ROS data types and Soar data types.

class TestOutput : public soar_ros::Publisher<std_msgs::msg::String>
{
public:
  TestOutput(sml::Agent * agent, rclcpp::Node::SharedPtr node, const std::string & topic)
  : Publisher<std_msgs::msg::String>(agent, node, topic) {}
  ~TestOutput() {}
  std_msgs::msg::String parse(sml::Identifier * id) override
  {
    std_msgs::msg::String msg;
    msg.data = id->GetParameterValue("data");
    std::cout << id->GetCommandName() << " " << msg.data << std::endl;
    return msg;
  }
};

Service

In the following example, the ROS2 example AddTwoInts is implemented. Soar adds two integers and sends the result as a ROS2 Service, based on the soar_ros::Service class. The code is from test/test_soar_ros.cpp.

``` cpp
class TestService : public soar_ros::Service<example_interfaces::srv::AddTwoInts>
{
public:
TestService(sml::Agent * agent, rclcpp::Node::SharedPtr node, const std::string & topic)
Service<example_interfaces::srv::AddTwoInts>(agent, node, topic) {} ~TestService() {}

example_interfaces::srv::AddTwoInts::Response::SharedPtr parse(sml::Identifier * id) override { example_interfaces::srv::AddTwoInts::Response::SharedPtr response = std::make_shared<example_interfaces::srv::AddTwoInts::Response>(); auto sum = id->GetParameterValue(“sum”); int32_t num = std::stoi(sum); response.get()->sum = num; RCLCPP_INFO(m_node->get_logger(), “Computed: Sum=%ld”, response.get()->sum);

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing

You are very welcome to contribute to the project by creating issues or submitting a pull-request. Please follow standard contributing guidelines, for instance (non extensive list):

  • Check for existing issues before creating a new one
  • Check with maintainers before starting to work on an issue or submit a PR in order to prevent duplicate work
  • Commit messages correspond to the changes

Mandatory Checks

The changelog is generated based on commit messages and therefore the conventional commit style is enforced. Please ensure that the commit messages are formatted accordingly.

There is a pre-commit file to ensure compliance if you prefer to use a tool.

Code Style

The project follows the ROS2 coding style.

# Contributing You are very welcome to contribute to the project by creating issues or submitting a pull-request. Please follow standard contributing guidelines, for instance (non extensive list): - Check for existing issues before creating a new one - Check with maintainers before starting to work on an issue or submit a PR in order to prevent duplicate work - Commit messages correspond to the changes ## Mandatory Checks The changelog is generated based on commit messages and therefore the [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) style is enforced. Please ensure that the commit messages are formatted accordingly. There is a [pre-commit](https://pre-commit.com/) file to ensure compliance if you prefer to use a tool. ## Code Style The project follows the [ROS2 coding style](https://docs.ros.org/en/rolling/The-ROS2-Project/Contributing/Code-Style-Language-Versions.html).
Repo symbol

soar_ros repository

Repo symbol

soar_ros repository

Repo symbol

soar_ros repository

Repo symbol

soar_ros repository

Repo symbol

soar_ros repository

Repo symbol

soar_ros repository

Repo symbol

soar_ros repository

Repo symbol

soar_ros repository

Repo symbol

soar_ros repository

Repo symbol

soar_ros repository

Repo symbol

soar_ros repository

Repo symbol

soar_ros repository

Repo symbol

soar_ros repository

Repo symbol

soar_ros repository

Repo symbol

soar_ros repository