Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged soar_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
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) |
Package Description
Additional Links
Maintainers
- Moritz Schmidt
Authors
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
Changelog for package soar_ros
0.0.2 (2024-12-17)
- ci: add jazzy and rolling tests. Disable flaky client test
- docs: Add logos and update images.
- fix: Stop SoarRunner Kernel thread on error.
- ci: Change docs build to 1.12 Doxygen version.
- build: Make ament_index_cpp dependency explicit
- docs: Fix typos and add Test Agent description.
- build: Fix tests and restrict testing to launch testing.
- ci: Publish subdirectory of rosdoc2 build process
- Contributors: Moritz Schmidt, dependabot[bot]
0.0.1 (2024-09-13)
- Initial commit
- Contributors: Moritz Schmidt
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
launch_ros | |
rclcpp | |
example_interfaces | |
std_msgs | |
std_srvs | |
launch_testing_ament_cmake | |
ament_index_cpp |
System Dependencies
Name |
---|
libsqlite3-dev |