Skip to content
Snippets Groups Projects
Commit e556d817 authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Merge branch 'armem/dev' into 41-follow-up-from-resolve-add-object-memory

# Conflicts:
#	source/RobotAPI/libraries/armem/CMakeLists.txt
#	source/RobotAPI/libraries/armem/core/detail/EntityContainer.h
#	source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.h
parents a0db9582 5aed387e
No related branches found
No related tags found
No related merge requests found
Showing
with 259 additions and 293 deletions
<?xml version="1.0" encoding="utf-8"?>
<scenario name="ArMemExample" creation="2020-11-10.10:38:44" globalConfigName="./config/global.cfg" package="RobotAPI" deploymentType="local" nodeName="NodeMain">
<application name="ArMemExampleMemory" instance="" package="RobotAPI" nodeName="" enabled="true" iceAutoRestart="false"/>
<application name="ArMemExampleClient" instance="" package="RobotAPI" nodeName="" enabled="true" iceAutoRestart="false"/>
<application name="ArMemMemoryNameSystem" instance="" package="RobotAPI" nodeName="" enabled="true" iceAutoRestart="false"/>
<application name="ExampleMemory" instance="" package="RobotAPI" nodeName="" enabled="true" iceAutoRestart="false"/>
<application name="ExampleMemoryClient" instance="" package="RobotAPI" nodeName="" enabled="true" iceAutoRestart="false"/>
<application name="MemoryNameSystem" instance="" package="RobotAPI" nodeName="" enabled="true" iceAutoRestart="false"/>
<application name="RemoteGuiProviderApp" instance="" package="ArmarXGui" nodeName="" enabled="true" iceAutoRestart="false"/>
<application name="DebugObserver" instance="" package="ArmarXCore" nodeName="" enabled="true" iceAutoRestart="false"/>
</scenario>
......
# ==================================================================
# ArMemExampleMemory properties
# ExampleMemory properties
# ==================================================================
# ArmarX.AdditionalPackages: List of additional ArmarX packages which should be in the list of default packages. If you have custom packages, which should be found by the gui or other apps, specify them here. Comma separated List.
......@@ -18,155 +18,163 @@
# ArmarX.ApplicationName = ""
# ArmarX.ArMemExampleMemory.EnableProfiling: enable profiler which is used for logging performance events
# ArmarX.ArMemExampleMemory.tpc.pub.MemoryListener: No Description
# Attributes:
# - Default: false
# - Default: MemoryUpdates
# - Case sensitivity: no
# - Required: no
ArmarX.ArMemExampleMemory.tpc.pub.MemoryListener = MemoryUpdates
# ArmarX.CachePath: Path for cache files. If relative path AND env. variable ARMARX_USER_CONFIG_DIR is set, the cache path will be made relative to ARMARX_USER_CONFIG_DIR. Otherwise if relative it will be relative to the default ArmarX config dir (${HOME}/.armarx)
# Attributes:
# - Default: mongo/.cache
# - Case sensitivity: yes
# - Required: no
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.ArMemExampleMemory.EnableProfiling = false
# ArmarX.CachePath = mongo/.cache
# ArmarX.ArMemExampleMemory.MinimumLoggingLevel: Local logging level only for this component
# ArmarX.Config: Comma-separated list of configuration files
# Attributes:
# - Default: Undefined
# - Default: ""
# - Case sensitivity: yes
# - Required: no
# - Possible values: {Debug, Error, Fatal, Important, Info, Undefined, Verbose, Warning}
# ArmarX.ArMemExampleMemory.MinimumLoggingLevel = Undefined
# ArmarX.Config = ""
# ArmarX.ArMemExampleMemory.ObjectName: Name of IceGrid well-known object
# ArmarX.DataPath: Semicolon-separated search list for data files
# Attributes:
# - Default: ""
# - Case sensitivity: yes
# - Required: no
# ArmarX.ArMemExampleMemory.ObjectName = ""
# ArmarX.DataPath = ""
# ArmarX.ArMemExampleMemory.RemoteGuiName: Name of the remote gui provider
# ArmarX.DefaultPackages: List of ArmarX packages which are accessible by default. Comma separated List. If you want to add your own packages and use all default ArmarX packages, use the property 'AdditionalPackages'.
# Attributes:
# - Default: RemoteGuiProvider
# - Default: Default value not mapped.
# - Case sensitivity: yes
# - Required: no
# ArmarX.ArMemExampleMemory.RemoteGuiName = RemoteGuiProvider
# ArmarX.DefaultPackages = Default value not mapped.
# ArmarX.ArMemExampleMemory.core.AddOnUsage: If enabled, core segments are added when required by a new provider segment.
# ArmarX.DependenciesConfig: Path to the (usually generated) config file containing all data paths of all dependent projects. This property usually does not need to be edited.
# Attributes:
# - Default: false
# - Default: ./config/dependencies.cfg
# - Case sensitivity: yes
# - Required: no
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.ArMemExampleMemory.core.AddOnUsage = false
# ArmarX.DependenciesConfig = ./config/dependencies.cfg
# ArmarX.ArMemExampleMemory.core.DefaultSegments: Core segments to add on start up.
# ArmarX.DisableLogging: Turn logging off in whole application
# Attributes:
# - Default: ExampleModality, ExampleConcept
# - Default: false
# - Case sensitivity: yes
# - Required: no
# ArmarX.ArMemExampleMemory.core.DefaultSegments = ExampleModality, ExampleConcept
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.DisableLogging = false
# ArmarX.ArMemExampleMemory.memory.Name: Name of this memory.
# ArmarX.EnableProfiling: Enable profiling of CPU load produced by this application
# Attributes:
# - Default: Example
# - Default: false
# - Case sensitivity: yes
# - Required: no
# ArmarX.ArMemExampleMemory.memory.Name = Example
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.EnableProfiling = false
# ArmarX.ArMemExampleMemory.mns.MemoryNameSystemEnabled: Whether to use (and depend on) the Memory Name System (MNS).
# Set to false to use this memory as a stand-alone.
# ArmarX.ExampleMemory.EnableProfiling: enable profiler which is used for logging performance events
# Attributes:
# - Default: true
# - Default: false
# - Case sensitivity: yes
# - Required: no
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.ArMemExampleMemory.mns.MemoryNameSystemEnabled = true
# ArmarX.ExampleMemory.EnableProfiling = false
# ArmarX.ArMemExampleMemory.mns.MemoryNameSystemName: Name of the Memory Name System (MNS) component.
# ArmarX.ExampleMemory.MinimumLoggingLevel: Local logging level only for this component
# Attributes:
# - Default: ArMemMemoryNameSystem
# - Default: Undefined
# - Case sensitivity: yes
# - Required: no
# ArmarX.ArMemExampleMemory.mns.MemoryNameSystemName = ArMemMemoryNameSystem
# - Possible values: {Debug, Error, Fatal, Important, Info, Undefined, Verbose, Warning}
# ArmarX.ExampleMemory.MinimumLoggingLevel = Undefined
# ArmarX.ArMemExampleMemory.tpc.pub.DebugObserver: Name of the `DebugObserver` topic to publish data to.
# ArmarX.ExampleMemory.ObjectName: Name of IceGrid well-known object
# Attributes:
# - Default: DebugObserver
# - Default: ""
# - Case sensitivity: yes
# - Required: no
# ArmarX.ArMemExampleMemory.tpc.pub.DebugObserver = DebugObserver
# ArmarX.ExampleMemory.ObjectName = ""
# ArmarX.ArMemExampleMemory.tpc.pub.MemoryListener: Name of the `MemoryListener` topic to publish data to.
# ArmarX.ExampleMemory.RemoteGuiName: Name of the remote gui provider
# Attributes:
# - Default: MemoryUpdates
# - Default: RemoteGuiProvider
# - Case sensitivity: yes
# - Required: no
ArmarX.ArMemExampleMemory.tpc.pub.MemoryListener = MemoryUpdates
# ArmarX.ExampleMemory.RemoteGuiName = RemoteGuiProvider
# ArmarX.CachePath: Path for cache files. If relative path AND env. variable ARMARX_USER_CONFIG_DIR is set, the cache path will be made relative to ARMARX_USER_CONFIG_DIR. Otherwise if relative it will be relative to the default ArmarX config dir (${HOME}/.armarx)
# ArmarX.ExampleMemory.core.AddOnUsage: If enabled, core segments are added when required by a new provider segment.This will usually be off for most memory servers.
# Attributes:
# - Default: mongo/.cache
# - Default: false
# - Case sensitivity: yes
# - Required: no
# ArmarX.CachePath = mongo/.cache
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.ExampleMemory.core.AddOnUsage = false
# ArmarX.Config: Comma-separated list of configuration files
# ArmarX.ExampleMemory.core.DefaultSegments: Core segments to add on start up (just as example).
# Attributes:
# - Default: ""
# - Default: ExampleModality, ExampleConcept
# - Case sensitivity: yes
# - Required: no
# ArmarX.Config = ""
# ArmarX.ExampleMemory.core.DefaultSegments = ExampleModality, ExampleConcept
# ArmarX.DataPath: Semicolon-separated search list for data files
# ArmarX.ExampleMemory.memory.Name: Name of this memory (server).
# Attributes:
# - Default: ""
# - Default: Example
# - Case sensitivity: yes
# - Required: no
# ArmarX.DataPath = ""
# ArmarX.ExampleMemory.memory.Name = Example
# ArmarX.DefaultPackages: List of ArmarX packages which are accessible by default. Comma separated List. If you want to add your own packages and use all default ArmarX packages, use the property 'AdditionalPackages'.
# ArmarX.ExampleMemory.mns.MemoryNameSystemEnabled: Whether to use (and depend on) the Memory Name System (MNS).
# Set to false to use this memory as a stand-alone.
# Attributes:
# - Default: Default value not mapped.
# - Default: true
# - Case sensitivity: yes
# - Required: no
# ArmarX.DefaultPackages = Default value not mapped.
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.ExampleMemory.mns.MemoryNameSystemEnabled = true
# ArmarX.DependenciesConfig: Path to the (usually generated) config file containing all data paths of all dependent projects. This property usually does not need to be edited.
# ArmarX.ExampleMemory.mns.MemoryNameSystemName: Name of the Memory Name System (MNS) component.
# Attributes:
# - Default: ./config/dependencies.cfg
# - Default: ArMemMemoryNameSystem
# - Case sensitivity: yes
# - Required: no
# ArmarX.DependenciesConfig = ./config/dependencies.cfg
# ArmarX.ExampleMemory.mns.MemoryNameSystemName = ArMemMemoryNameSystem
# ArmarX.DisableLogging: Turn logging off in whole application
# ArmarX.ExampleMemory.tpc.pub.DebugObserver: Name of the `DebugObserver` topic to publish data to.
# Attributes:
# - Default: false
# - Default: DebugObserver
# - Case sensitivity: yes
# - Required: no
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.DisableLogging = false
# ArmarX.ExampleMemory.tpc.pub.DebugObserver = DebugObserver
# ArmarX.EnableProfiling: Enable profiling of CPU load produced by this application
# ArmarX.ExampleMemory.tpc.pub.MemoryListener: Name of the `MemoryListener` topic to publish data to.
# Attributes:
# - Default: false
# - Default: MemoryUpdates
# - Case sensitivity: yes
# - Required: no
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.EnableProfiling = false
# ArmarX.ExampleMemory.tpc.pub.MemoryListener = MemoryUpdates
# ArmarX.LoadLibraries: Libraries to load at start up of the application. Must be enabled by the Application with enableLibLoading(). Format: PackageName:LibraryName;... or /absolute/path/to/library;...
......
# ==================================================================
# ArMemExampleClient properties
# ExampleMemoryClient properties
# ==================================================================
# ArmarX.AdditionalPackages: List of additional ArmarX packages which should be in the list of default packages. If you have custom packages, which should be found by the gui or other apps, specify them here. Comma separated List.
......@@ -18,138 +18,146 @@
# ArmarX.ApplicationName = ""
# ArmarX.ArMemExampleClient.EnableProfiling: enable profiler which is used for logging performance events
# ArmarX.ArMemExampleClient.tpc.sub.MemoryListener: No Description
# Attributes:
# - Default: false
# - Default: MemoryUpdates
# - Case sensitivity: no
# - Required: no
ArmarX.ArMemExampleClient.tpc.sub.MemoryListener = MemoryUpdates
# ArmarX.CachePath: Path for cache files. If relative path AND env. variable ARMARX_USER_CONFIG_DIR is set, the cache path will be made relative to ARMARX_USER_CONFIG_DIR. Otherwise if relative it will be relative to the default ArmarX config dir (${HOME}/.armarx)
# Attributes:
# - Default: mongo/.cache
# - Case sensitivity: yes
# - Required: no
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.ArMemExampleClient.EnableProfiling = false
# ArmarX.CachePath = mongo/.cache
# ArmarX.ArMemExampleClient.MinimumLoggingLevel: Local logging level only for this component
# ArmarX.Config: Comma-separated list of configuration files
# Attributes:
# - Default: Undefined
# - Default: ""
# - Case sensitivity: yes
# - Required: no
# - Possible values: {Debug, Error, Fatal, Important, Info, Undefined, Verbose, Warning}
# ArmarX.ArMemExampleClient.MinimumLoggingLevel = Undefined
# ArmarX.Config = ""
# ArmarX.ArMemExampleClient.ObjectName: Name of IceGrid well-known object
# ArmarX.DataPath: Semicolon-separated search list for data files
# Attributes:
# - Default: ""
# - Case sensitivity: yes
# - Required: no
# ArmarX.ArMemExampleClient.ObjectName = ""
# ArmarX.DataPath = ""
# ArmarX.ArMemExampleClient.RemoteGuiName: Name of the remote gui provider
# ArmarX.DefaultPackages: List of ArmarX packages which are accessible by default. Comma separated List. If you want to add your own packages and use all default ArmarX packages, use the property 'AdditionalPackages'.
# Attributes:
# - Default: RemoteGuiProvider
# - Default: Default value not mapped.
# - Case sensitivity: yes
# - Required: no
# ArmarX.ArMemExampleClient.RemoteGuiName = RemoteGuiProvider
# ArmarX.DefaultPackages = Default value not mapped.
# ArmarX.ArMemExampleClient.mem.MemoryName: Name of the memory to use.
# ArmarX.DependenciesConfig: Path to the (usually generated) config file containing all data paths of all dependent projects. This property usually does not need to be edited.
# Attributes:
# - Default: Example
# - Default: ./config/dependencies.cfg
# - Case sensitivity: yes
# - Required: no
# ArmarX.ArMemExampleClient.mem.MemoryName = Example
# ArmarX.DependenciesConfig = ./config/dependencies.cfg
# ArmarX.ArMemExampleClient.mns.MemoryNameSystemEnabled: Whether to use (and depend on) the Memory Name System (MNS).
# Set to false to use this memory as a stand-alone.
# ArmarX.DisableLogging: Turn logging off in whole application
# Attributes:
# - Default: true
# - Default: false
# - Case sensitivity: yes
# - Required: no
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.ArMemExampleClient.mns.MemoryNameSystemEnabled = true
# ArmarX.DisableLogging = false
# ArmarX.ArMemExampleClient.mns.MemoryNameSystemName: Name of the Memory Name System (MNS) component.
# ArmarX.EnableProfiling: Enable profiling of CPU load produced by this application
# Attributes:
# - Default: ArMemMemoryNameSystem
# - Default: false
# - Case sensitivity: yes
# - Required: no
# ArmarX.ArMemExampleClient.mns.MemoryNameSystemName = ArMemMemoryNameSystem
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.EnableProfiling = false
# ArmarX.ArMemExampleClient.tpc.pub.DebugObserver: Name of the `DebugObserver` topic to publish data to.
# ArmarX.ExampleMemoryClient.EnableProfiling: enable profiler which is used for logging performance events
# Attributes:
# - Default: DebugObserver
# - Default: false
# - Case sensitivity: yes
# - Required: no
# ArmarX.ArMemExampleClient.tpc.pub.DebugObserver = DebugObserver
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.ExampleMemoryClient.EnableProfiling = false
# ArmarX.ArMemExampleClient.tpc.sub.MemoryListener: Name of the `MemoryListener` topic to subscribe to.
# ArmarX.ExampleMemoryClient.MinimumLoggingLevel: Local logging level only for this component
# Attributes:
# - Default: MemoryUpdates
# - Default: Undefined
# - Case sensitivity: yes
# - Required: no
ArmarX.ArMemExampleClient.tpc.sub.MemoryListener = MemoryUpdates
# - Possible values: {Debug, Error, Fatal, Important, Info, Undefined, Verbose, Warning}
# ArmarX.ExampleMemoryClient.MinimumLoggingLevel = Undefined
# ArmarX.CachePath: Path for cache files. If relative path AND env. variable ARMARX_USER_CONFIG_DIR is set, the cache path will be made relative to ARMARX_USER_CONFIG_DIR. Otherwise if relative it will be relative to the default ArmarX config dir (${HOME}/.armarx)
# ArmarX.ExampleMemoryClient.ObjectName: Name of IceGrid well-known object
# Attributes:
# - Default: mongo/.cache
# - Default: ""
# - Case sensitivity: yes
# - Required: no
# ArmarX.CachePath = mongo/.cache
# ArmarX.ExampleMemoryClient.ObjectName = ""
# ArmarX.Config: Comma-separated list of configuration files
# ArmarX.ExampleMemoryClient.RemoteGuiName: Name of the remote gui provider
# Attributes:
# - Default: ""
# - Default: RemoteGuiProvider
# - Case sensitivity: yes
# - Required: no
# ArmarX.Config = ""
# ArmarX.ExampleMemoryClient.RemoteGuiName = RemoteGuiProvider
# ArmarX.DataPath: Semicolon-separated search list for data files
# ArmarX.ExampleMemoryClient.mem.MemoryName: Name of the memory to use.
# Attributes:
# - Default: ""
# - Default: Example
# - Case sensitivity: yes
# - Required: no
# ArmarX.DataPath = ""
# ArmarX.ExampleMemoryClient.mem.MemoryName = Example
# ArmarX.DefaultPackages: List of ArmarX packages which are accessible by default. Comma separated List. If you want to add your own packages and use all default ArmarX packages, use the property 'AdditionalPackages'.
# ArmarX.ExampleMemoryClient.mns.MemoryNameSystemEnabled: Whether to use (and depend on) the Memory Name System (MNS).
# Set to false to use this memory as a stand-alone.
# Attributes:
# - Default: Default value not mapped.
# - Default: true
# - Case sensitivity: yes
# - Required: no
# ArmarX.DefaultPackages = Default value not mapped.
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.ExampleMemoryClient.mns.MemoryNameSystemEnabled = true
# ArmarX.DependenciesConfig: Path to the (usually generated) config file containing all data paths of all dependent projects. This property usually does not need to be edited.
# ArmarX.ExampleMemoryClient.mns.MemoryNameSystemName: Name of the Memory Name System (MNS) component.
# Attributes:
# - Default: ./config/dependencies.cfg
# - Default: ArMemMemoryNameSystem
# - Case sensitivity: yes
# - Required: no
# ArmarX.DependenciesConfig = ./config/dependencies.cfg
# ArmarX.ExampleMemoryClient.mns.MemoryNameSystemName = ArMemMemoryNameSystem
# ArmarX.DisableLogging: Turn logging off in whole application
# ArmarX.ExampleMemoryClient.tpc.pub.DebugObserver: Name of the `DebugObserver` topic to publish data to.
# Attributes:
# - Default: false
# - Default: DebugObserver
# - Case sensitivity: yes
# - Required: no
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.DisableLogging = false
# ArmarX.ExampleMemoryClient.tpc.pub.DebugObserver = DebugObserver
# ArmarX.EnableProfiling: Enable profiling of CPU load produced by this application
# ArmarX.ExampleMemoryClient.tpc.sub.MemoryListener: Name of the `MemoryListener` topic to subscribe to.
# Attributes:
# - Default: false
# - Default: MemoryUpdates
# - Case sensitivity: yes
# - Required: no
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.EnableProfiling = false
# ArmarX.ExampleMemoryClient.tpc.sub.MemoryListener = MemoryUpdates
# ArmarX.LoadLibraries: Libraries to load at start up of the application. Must be enabled by the Application with enableLibLoading(). Format: PackageName:LibraryName;... or /absolute/path/to/library;...
......
# ==================================================================
# ArMemMemoryNameSystem properties
# MemoryNameSystem properties
# ==================================================================
# ArmarX.AdditionalPackages: List of additional ArmarX packages which should be in the list of default packages. If you have custom packages, which should be found by the gui or other apps, specify them here. Comma separated List.
......@@ -18,40 +18,6 @@
# ArmarX.ApplicationName = ""
# ArmarX.ArMemMemoryNameSystem.EnableProfiling: enable profiler which is used for logging performance events
# Attributes:
# - Default: false
# - Case sensitivity: yes
# - Required: no
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.ArMemMemoryNameSystem.EnableProfiling = false
# ArmarX.ArMemMemoryNameSystem.MinimumLoggingLevel: Local logging level only for this component
# Attributes:
# - Default: Undefined
# - Case sensitivity: yes
# - Required: no
# - Possible values: {Debug, Error, Fatal, Important, Info, Undefined, Verbose, Warning}
# ArmarX.ArMemMemoryNameSystem.MinimumLoggingLevel = Undefined
# ArmarX.ArMemMemoryNameSystem.ObjectName: Name of IceGrid well-known object
# Attributes:
# - Default: ""
# - Case sensitivity: yes
# - Required: no
# ArmarX.ArMemMemoryNameSystem.ObjectName = ""
# ArmarX.ArMemMemoryNameSystem.RemoteGuiName: Name of the remote gui provider
# Attributes:
# - Default: RemoteGuiProvider
# - Case sensitivity: yes
# - Required: no
# ArmarX.ArMemMemoryNameSystem.RemoteGuiName = RemoteGuiProvider
# ArmarX.CachePath: Path for cache files. If relative path AND env. variable ARMARX_USER_CONFIG_DIR is set, the cache path will be made relative to ARMARX_USER_CONFIG_DIR. Otherwise if relative it will be relative to the default ArmarX config dir (${HOME}/.armarx)
# Attributes:
# - Default: mongo/.cache
......@@ -126,6 +92,40 @@
# ArmarX.LoggingGroup = ""
# ArmarX.MemoryNameSystem.EnableProfiling: enable profiler which is used for logging performance events
# Attributes:
# - Default: false
# - Case sensitivity: yes
# - Required: no
# - Possible values: {0, 1, false, no, true, yes}
# ArmarX.MemoryNameSystem.EnableProfiling = false
# ArmarX.MemoryNameSystem.MinimumLoggingLevel: Local logging level only for this component
# Attributes:
# - Default: Undefined
# - Case sensitivity: yes
# - Required: no
# - Possible values: {Debug, Error, Fatal, Important, Info, Undefined, Verbose, Warning}
# ArmarX.MemoryNameSystem.MinimumLoggingLevel = Undefined
# ArmarX.MemoryNameSystem.ObjectName: Name of IceGrid well-known object
# Attributes:
# - Default: ""
# - Case sensitivity: yes
# - Required: no
ArmarX.MemoryNameSystem.ObjectName = "ArMemMemoryNameSystem"
# ArmarX.MemoryNameSystem.RemoteGuiName: Name of the remote gui provider
# Attributes:
# - Default: RemoteGuiProvider
# - Case sensitivity: yes
# - Required: no
# ArmarX.MemoryNameSystem.RemoteGuiName = RemoteGuiProvider
# ArmarX.RedirectStdout: Redirect std::cout and std::cerr to ArmarXLog
# Attributes:
# - Default: true
......
add_subdirectory(ExampleClient)
add_subdirectory(ExampleMemoryClient)
/*
* This file is part of ArmarX.
*
* ArmarX is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* ArmarX is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @package RobotAPI::ArmarXObjects::ArMemExampleClient
* @author Rainer Kartmann ( rainer dot kartmann at kit dot edu )
* @date 2020
* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
* GNU General Public License
*/
#define BOOST_TEST_MODULE RobotAPI::ArmarXObjects::ArMemExampleClient
#define ARMARX_BOOST_TEST
#include <RobotAPI/Test.h>
#include "../ArMemExampleClient.h"
#include <iostream>
BOOST_AUTO_TEST_CASE(testExample)
{
armarx::ArMemExampleClient instance;
BOOST_CHECK_EQUAL(true, true);
}
# Libs required for the tests
SET(LIBS ${LIBS} ArmarXCore ArMemExampleClient)
armarx_add_test(ArMemExampleClientTest ArMemExampleClientTest.cpp "${LIBS}")
armarx_component_set_name("ExampleClient")
armarx_component_set_name("ExampleMemoryClient")
find_package(IVT QUIET)
armarx_build_if(IVT_FOUND "IVT not available")
......@@ -11,11 +11,11 @@ set(COMPONENT_LIBS
)
set(SOURCES
ExampleClient.cpp
ExampleMemoryClient.cpp
)
set(HEADERS
ExampleClient.h
ExampleMemoryClient.h
)
armarx_add_component("${SOURCES}" "${HEADERS}")
......
......@@ -13,14 +13,14 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @package RobotAPI::ArmarXObjects::ExampleClient
* @package RobotAPI::ArmarXObjects::ExampleMemoryClient
* @author Rainer Kartmann ( rainer dot kartmann at kit dot edu )
* @date 2020
* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
* GNU General Public License
*/
#include "ExampleClient.h"
#include "ExampleMemoryClient.h"
#include <SimoxUtility/color/cmaps.h>
......@@ -30,21 +30,21 @@
#include <RobotAPI/libraries/armem/server/MemoryRemoteGui.h>
#include <RobotAPI/libraries/armem/client/query/Builder.h>
#include <RobotAPI/libraries/armem/client/query/query_fns.h>
#include <RobotAPI/libraries/armem/core/ice_conversions.h>
#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h>
#include <RobotAPI/components/armem/server/ExampleMemory/aron/ExampleData.aron.generated.h>
namespace armarx
{
ExampleClientPropertyDefinitions::ExampleClientPropertyDefinitions(std::string prefix) :
ExampleMemoryClientPropertyDefinitions::ExampleMemoryClientPropertyDefinitions(std::string prefix) :
armarx::ComponentPropertyDefinitions(prefix)
{
}
armarx::PropertyDefinitionsPtr ExampleClient::createPropertyDefinitions()
armarx::PropertyDefinitionsPtr ExampleMemoryClient::createPropertyDefinitions()
{
armarx::PropertyDefinitionsPtr defs = new ExampleClientPropertyDefinitions(getConfigIdentifier());
armarx::PropertyDefinitionsPtr defs = new ExampleMemoryClientPropertyDefinitions(getConfigIdentifier());
defs->topic(debugObserver);
......@@ -53,18 +53,18 @@ namespace armarx
return defs;
}
std::string ExampleClient::getDefaultName() const
std::string ExampleMemoryClient::getDefaultName() const
{
return "ExampleClient";
return "ExampleMemoryClient";
}
void ExampleClient::onInitComponent()
void ExampleMemoryClient::onInitComponent()
{
}
void ExampleClient::onConnectComponent()
void ExampleMemoryClient::onConnectComponent()
{
createRemoteGuiTab();
RemoteGui_startRunningTask();
......@@ -90,26 +90,26 @@ namespace armarx
ARMARX_INFO << "Entity " << entityID << " was updated by " << snapshotIDs.size() << " snapshots.";
});
// Using a member function:
memoryReader.subscribe(entityID, this, &ExampleClient::example_entityUpdated);
memoryReader.subscribe(entityID, this, &ExampleMemoryClient::example_entityUpdated);
task = new RunningTask<ExampleClient>(this, &ExampleClient::run);
task = new RunningTask<ExampleMemoryClient>(this, &ExampleMemoryClient::run);
task->start();
}
void ExampleClient::onDisconnectComponent()
void ExampleMemoryClient::onDisconnectComponent()
{
task->stop();
}
void ExampleClient::onExitComponent()
void ExampleMemoryClient::onExitComponent()
{
}
void ExampleClient::run()
void ExampleMemoryClient::run()
{
ARMARX_IMPORTANT << "Running example.";
......@@ -142,7 +142,7 @@ namespace armarx
}
armem::MemoryID ExampleClient::addProviderSegment()
armem::MemoryID ExampleMemoryClient::addProviderSegment()
{
armem::data::AddSegmentInput input;
input.coreSegmentName = "ExampleModality";
......@@ -155,7 +155,7 @@ namespace armarx
return armem::MemoryID(result.segmentID);
}
armem::MemoryID ExampleClient::commitSingleSnapshot(const armem::MemoryID& entityID)
armem::MemoryID ExampleMemoryClient::commitSingleSnapshot(const armem::MemoryID& entityID)
{
// Prepare the update with some empty instances.
armem::EntityUpdate update;
......@@ -178,7 +178,7 @@ namespace armarx
return updateResult.snapshotID;
}
void ExampleClient::commitMultipleSnapshots(const armem::MemoryID& entityID, int num)
void ExampleMemoryClient::commitMultipleSnapshots(const armem::MemoryID& entityID, int num)
{
// Commit a number of updates with different timestamps and number of instances.
armem::Commit commit;
......@@ -202,7 +202,7 @@ namespace armarx
}
void ExampleClient::queryLatestSnapshot(const armem::MemoryID& entityID)
void ExampleMemoryClient::queryLatestSnapshot(const armem::MemoryID& entityID)
{
ARMARX_IMPORTANT
<< "Querying latest snapshot: "
......@@ -221,19 +221,19 @@ namespace armarx
if (qResult.success)
{
armem::Memory& memory = qResult.memory;
armem::wm::Memory& memory = qResult.memory;
ARMARX_CHECK_EQUAL(memory.coreSegments.size(), 1);
armem::CoreSegment& coreSeg = memory.coreSegments.begin()->second;
ARMARX_CHECK_EQUAL(memory.coreSegments().size(), 1);
armem::wm::CoreSegment& coreSeg = memory.coreSegments().begin()->second;
ARMARX_CHECK_EQUAL(coreSeg.providerSegments.size(), 1);
armem::ProviderSegment& provSeg = coreSeg.providerSegments.begin()->second;
ARMARX_CHECK_EQUAL(coreSeg.providerSegments().size(), 1);
armem::wm::ProviderSegment& provSeg = coreSeg.providerSegments().begin()->second;
ARMARX_CHECK_EQUAL(provSeg.entities.size(), 1);
armem::Entity& entity = provSeg.entities.begin()->second;
ARMARX_CHECK_EQUAL(provSeg.entities().size(), 1);
armem::wm::Entity& entity = provSeg.entities().begin()->second;
ARMARX_CHECK_GREATER_EQUAL(entity.history.size(), 1);
armem::EntitySnapshot& snapshot = entity.history.begin()->second;
ARMARX_CHECK_GREATER_EQUAL(entity.history().size(), 1);
armem::wm::EntitySnapshot& snapshot = entity.history().begin()->second;
ARMARX_INFO << "Result: "
<< "\n- memory: \t" << memory.name()
......@@ -245,7 +245,7 @@ namespace armarx
;
ARMARX_IMPORTANT << "Getting entity via ID";
const armem::Entity& e = memory.getEntity(entityID);
const armem::wm::Entity& e = memory.getEntity(entityID);
ARMARX_INFO << "Result: "
<< "\n- entity: \t" << e.name()
<< "\n- snapshot: \t" << e.getLatestSnapshot().time()
......@@ -262,10 +262,10 @@ namespace armarx
}
}
void ExampleClient::queryExactSnapshot(const armem::MemoryID& snapshotID)
void ExampleMemoryClient::queryExactSnapshot(const armem::MemoryID& snapshotID)
{
ARMARX_IMPORTANT
<< "Querying exact smapshot: "
<< "Querying exact snapshot: "
<< "\n- snapshotID: \t'" << snapshotID << "'"
;
......@@ -282,8 +282,8 @@ namespace armarx
if (qResult.success)
{
armem::Memory memory = std::move(qResult.memory);
armem::EntitySnapshot& entitySnapshot = memory.getEntity(snapshotID).getLatestSnapshot();
armem::wm::Memory memory = std::move(qResult.memory);
const armem::wm::EntitySnapshot& entitySnapshot = memory.getEntity(snapshotID).getLatestSnapshot();
ARMARX_INFO << "Result snapshot: "
<< "\n- time: \t" << entitySnapshot.time()
......@@ -297,7 +297,7 @@ namespace armarx
}
void ExampleClient::commitExampleData()
void ExampleMemoryClient::commitExampleData()
{
ARMARX_IMPORTANT << "Adding segment " << "ExampleData" << "/" << getName();
......@@ -376,7 +376,7 @@ namespace armarx
}
}
void ExampleClient::queryExampleData()
void ExampleMemoryClient::queryExampleData()
{
// Query all entities from provider.
armem::client::query::Builder qb;
......@@ -400,7 +400,7 @@ namespace armarx
void ExampleClient::example_entityUpdated(const armem::MemoryID& subscriptionID, const std::vector<armem::MemoryID>& snapshotIDs)
void ExampleMemoryClient::example_entityUpdated(const armem::MemoryID& subscriptionID, const std::vector<armem::MemoryID>& snapshotIDs)
{
std::stringstream ss;
ss << "example_entity got updated: " << subscriptionID << "\n";
......@@ -414,7 +414,7 @@ namespace armarx
}
void ExampleClient::createRemoteGuiTab()
void ExampleMemoryClient::createRemoteGuiTab()
{
using namespace armarx::RemoteGui::Client;
......@@ -427,7 +427,7 @@ namespace armarx
RemoteGui_createTab(getName(), root, &tab);
}
void ExampleClient::RemoteGui_update()
void ExampleMemoryClient::RemoteGui_update()
{
if (tab.rebuild.exchange(false))
{
......
......@@ -34,7 +34,7 @@
#include <RobotAPI/interface/armem/server/MemoryInterface.h>
#include <RobotAPI/interface/armem/mns/MemoryNameSystemInterface.h>
#include <RobotAPI/libraries/armem/client/ComponentPlugin.h>
#include <RobotAPI/libraries/armem/core/Memory.h>
#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h>
namespace armarx
......@@ -43,11 +43,11 @@ namespace armarx
* @class ExampleClientPropertyDefinitions
* @brief Property definitions of `ExampleClient`.
*/
class ExampleClientPropertyDefinitions :
class ExampleMemoryClientPropertyDefinitions :
public armarx::ComponentPropertyDefinitions
{
public:
ExampleClientPropertyDefinitions(std::string prefix);
ExampleMemoryClientPropertyDefinitions(std::string prefix);
};
......@@ -62,7 +62,7 @@ namespace armarx
*
* Detailed description of class ExampleClient.
*/
class ExampleClient :
class ExampleMemoryClient :
virtual public armarx::Component,
virtual public armarx::armem::client::ComponentPluginUser,
virtual public LightweightRemoteGuiComponentPluginUser
......@@ -114,7 +114,7 @@ namespace armarx
private:
armarx::RunningTask<ExampleClient>::pointer_type task;
armarx::RunningTask<ExampleMemoryClient>::pointer_type task;
armarx::DebugObserverInterfacePrx debugObserver;
......@@ -124,7 +124,7 @@ namespace armarx
{
std::atomic_bool rebuild = false;
std::optional<armem::Memory> queryResult;
std::optional<armem::wm::Memory> queryResult;
RemoteGui::Client::GroupBox queryResultGroup;
};
RemoteGuiTab tab;
......
......@@ -60,16 +60,16 @@ namespace armarx
void ExampleMemory::onInitComponent()
{
memory.name() = p.memoryName;
workingmemory.name() = p.memoryName;
// Usually, the memory server will specify a number of core segments with a specific aron type.
memory.addCoreSegment("ExampleData", armem::example::ExampleData::toInitialAronType());
workingmemory.addCoreSegment("ExampleData", armem::example::ExampleData::toInitialAronType());
// For illustration purposes, we add more segments (without types).
bool trim = true;
p.core.defaultCoreSegments = simox::alg::split(p.core._defaultSegmentsStr, ",", trim);
p.core._defaultSegmentsStr.clear();
memory.addCoreSegments(p.core.defaultCoreSegments);
workingmemory.addCoreSegments(p.core.defaultCoreSegments);
}
void ExampleMemory::onConnectComponent()
......@@ -121,8 +121,8 @@ namespace armarx
using namespace armarx::RemoteGui::Client;
{
std::scoped_lock lock(memoryMutex);
tab.memoryGroup = armem::server::MemoryRemoteGui().makeGroupBox(memory);
std::scoped_lock lock(workingmemoryMutex);
tab.memoryGroup = armem::server::MemoryRemoteGui().makeGroupBox(workingmemory);
}
VBoxLayout root = {tab.memoryGroup, VSpacer()};
......
......@@ -36,14 +36,6 @@
using armarx::armem::example::ExampleData;
namespace armem = armarx::armem;
/*
BOOST_AUTO_TEST_CASE(test_ExampleData)
{
ExampleData data;
BOOST_CHECK(true);
}
*/
BOOST_AUTO_TEST_CASE(test_ExampleData_type)
{
......@@ -51,9 +43,9 @@ BOOST_AUTO_TEST_CASE(test_ExampleData_type)
BOOST_CHECK_EQUAL(type->childrenSize(), 15);
armem::Memory memory;
armem::CoreSegment& core = memory.addCoreSegment("ExampleData", type);
armem::ProviderSegment& prov = core.addProviderSegment("Provider");
armem::wm::Memory memory;
armem::wm::CoreSegment& core = memory.addCoreSegment("ExampleData", type);
armem::wm::ProviderSegment& prov = core.addProviderSegment("Provider");
BOOST_CHECK_EQUAL(core.aronType(), prov.aronType());
}
......@@ -50,7 +50,7 @@ namespace armarx
void GeneralPurposeMemory::onInitComponent()
{
memory.name() = memoryName;
workingmemory.name() = memoryName;
}
......
......@@ -71,7 +71,7 @@ namespace armarx
robotStateComponentMemoryBatchSize = std::max((unsigned int) 1, robotStateComponentMemoryBatchSize);
robotStateComponentPollFrequency = std::clamp(robotStateComponentPollFrequency, 1, ROBOT_STATE_COMPONENT_MAXIMUM_FREQUENCY);
memory.name() = memoryName;
workingmemory.name() = workingMemoryName;
}
......@@ -114,7 +114,7 @@ namespace armarx
void RobotSensorMemory::setupRobotUnitSegment()
{
ARMARX_INFO << "Adding core segment " << robotUnitCoreSegmentName;
memory.addCoreSegments({robotUnitCoreSegmentName});
workingmemory.addCoreSegments({robotUnitCoreSegmentName});
ARMARX_INFO << "Adding provider segment " << robotUnitCoreSegmentName << "/" << robotUnitProviderSegmentName;
armem::data::AddSegmentInput input;
......@@ -136,7 +136,7 @@ namespace armarx
ARMARX_ERROR << "Could not add segment " << robotUnitCoreSegmentName << "/" << robotUnitProviderSegmentName << ". The error message is: " << result.errorMessage;
}
robotUnitProviderID.memoryName = memoryName;
robotUnitProviderID.memoryName = workingMemoryName;
robotUnitProviderID.coreSegmentName = robotUnitCoreSegmentName;
robotUnitProviderID.providerSegmentName = robotUnitProviderSegmentName;
}
......@@ -379,7 +379,7 @@ namespace armarx
void RobotSensorMemory::setupRobotStateComponentSegment()
{
ARMARX_INFO << "Adding core segment " << robotStateComponentCoreSegmentName;
memory.addCoreSegments({robotStateComponentCoreSegmentName});
workingmemory.addCoreSegments({robotStateComponentCoreSegmentName});
ARMARX_INFO << "Adding provider segment " << robotStateComponentCoreSegmentName << "/" << robotStateComponentProviderSegmentName;
armem::data::AddSegmentInput input;
......@@ -395,7 +395,7 @@ namespace armarx
ARMARX_ERROR << "Could not add segment " << robotStateComponentCoreSegmentName << "/" << robotStateComponentProviderSegmentName << ". The error message is: " << result.errorMessage;
}
robotStateComponentProviderID.memoryName = memoryName;
robotStateComponentProviderID.memoryName = workingMemoryName;
robotStateComponentProviderID.coreSegmentName = robotStateComponentCoreSegmentName;
robotStateComponentProviderID.providerSegmentName = robotStateComponentProviderSegmentName;
}
......
......@@ -104,7 +104,7 @@ namespace armarx
void stopRobotStateComponentPoll();
private:
std::string memoryName = "RobotSensorMemory";
std::string workingMemoryName = "RobotStateMemory";
bool addCoreSegmentOnUsage = false;
mutable std::recursive_mutex startStopMutex;
......@@ -114,6 +114,7 @@ namespace armarx
std::string robotUnitProviderSegmentName = "RobotUnit"; // get robot name?
armem::data::MemoryID robotUnitProviderID;
// TODO: Remove the whole connection to the RSC since this memory will replace it?
std::string robotStateComponentCoreSegmentName = "Localization";
std::string robotStateComponentProviderSegmentName = "RobotStateComponent"; // get robot name?
armem::data::MemoryID robotStateComponentProviderID;
......
......@@ -50,7 +50,7 @@ namespace armarx
void SkillsMemory::onInitComponent()
{
memory.name() = memoryName;
workingmemory.name() = memoryName;
}
......
......@@ -14,6 +14,26 @@
<string>ArMemMemoryViewerWidget</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="ltmControlWidgetLayout">
<property name="spacing">
<number>6</number>
</property>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="updateWidgetLayout">
<item>
......
......@@ -41,6 +41,8 @@ namespace armarx
widget.setupUi(getWidget());
viewer = std::make_unique<MemoryViewer>(
widget.ltmControlWidgetLayout,
widget.updateWidgetLayout,
widget.memoryGroupBox,
......
......@@ -115,7 +115,8 @@ set(SLICE_FILES
armem/client/MemoryListenerInterface.ice
armem/server.ice
armem/server/LongTermMemoryInterface.ice
armem/server/StoringMemoryInterface.ice
armem/server/LoadingMemoryInterface.ice
armem/server/MemoryInterface.ice
armem/server/MemoryPredictorInterface.ice
armem/server/ReadingMemoryInterface.ice
......
......@@ -2,6 +2,7 @@
#include <ArmarXCore/interface/core/PackagePath.ice>
#include <RobotAPI/interface/armem/memory.ice>
#include <RobotAPI/interface/armem/query.ice>
module armarx
{
......@@ -9,31 +10,11 @@ module armarx
{
module data
{
struct LoadInput
{
armarx::data::PackagePath path;
armem::data::MemoryID entityID;
};
struct LoadResult
{
bool success = false;
long timeStartedMicroSeconds;
long timeFinishedMicroSeconds;
long numLoadedCoreSegments;
long numLoadedProviderSegments;
long numLoadedEntities;
long numLoadedEntitySnapshots;
string errorMessage;
};
struct StoreInput
{
armarx::data::PackagePath path;
armem::data::MemoryID entityID;
armem::query::data::Input query;
};
sequence<StoreInput> StoreInputSeq;
struct StoreResult
{
......@@ -41,11 +22,6 @@ module armarx
long timeStartedMicroSeconds;
long timeFinishedMicroSeconds;
long numStoredCoreSegments;
long numStoredLoadedProviderSegments;
long numStoredLoadedEntities;
long numStoredLoadedEntitySnapshots;
string errorMessage;
};
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment