@@ -1347,6 +1347,7 @@ class ResourceStorage
1347
1347
// Logger and Clock interfaces
1348
1348
rclcpp::Clock::SharedPtr rm_clock_;
1349
1349
rclcpp::Logger rm_logger_;
1350
+ rclcpp::Executor::WeakPtr executor_;
1350
1351
1351
1352
std::vector<Actuator> actuators_;
1352
1353
std::vector<Sensor> sensors_;
@@ -1469,28 +1470,17 @@ bool ResourceManager::shutdown_components()
1469
1470
// CM API: Called in "callback/slow"-thread
1470
1471
bool ResourceManager::load_and_initialize_components (
1471
1472
const std::string & urdf, const unsigned int update_rate)
1472
- {
1473
- hardware_interface::ResourceManagerParams params;
1474
- params.robot_description = urdf;
1475
- params.update_rate = update_rate;
1476
- return load_and_initialize_components (params);
1477
- }
1478
-
1479
- bool ResourceManager::load_and_initialize_components (
1480
- const hardware_interface::ResourceManagerParams & params)
1481
1473
{
1482
1474
components_are_loaded_and_initialized_ = true ;
1483
1475
1484
- resource_storage_->robot_description_ = params. robot_description ;
1485
- resource_storage_->cm_update_rate_ = params. update_rate ;
1476
+ resource_storage_->robot_description_ = urdf ;
1477
+ resource_storage_->cm_update_rate_ = update_rate;
1486
1478
1487
- auto hardware_info =
1488
- hardware_interface::parse_control_resources_from_urdf (params.robot_description );
1479
+ auto hardware_info = hardware_interface::parse_control_resources_from_urdf (urdf);
1489
1480
// Set the update rate for all hardware components
1490
1481
for (auto & hw : hardware_info)
1491
1482
{
1492
- hw.rw_rate =
1493
- (hw.rw_rate == 0 || hw.rw_rate > params.update_rate ) ? params.update_rate : hw.rw_rate ;
1483
+ hw.rw_rate = (hw.rw_rate == 0 || hw.rw_rate > update_rate) ? update_rate : hw.rw_rate ;
1494
1484
}
1495
1485
1496
1486
const std::string system_type = " system" ;
@@ -1515,9 +1505,9 @@ bool ResourceManager::load_and_initialize_components(
1515
1505
}
1516
1506
hardware_interface::HardwareComponentParams interface_params;
1517
1507
interface_params.hardware_info = individual_hardware_info;
1518
- interface_params.executor = params. executor ;
1519
- interface_params.clock = params. clock ;
1520
- interface_params.logger = params. logger ;
1508
+ interface_params.executor = resource_storage_-> executor_ ;
1509
+ interface_params.clock = resource_storage_-> rm_clock_ ;
1510
+ interface_params.logger = resource_storage_-> rm_logger_ ;
1521
1511
1522
1512
if (individual_hardware_info.type == actuator_type)
1523
1513
{
@@ -1566,6 +1556,17 @@ bool ResourceManager::load_and_initialize_components(
1566
1556
return components_are_loaded_and_initialized_;
1567
1557
}
1568
1558
1559
+ bool ResourceManager::load_and_initialize_components (
1560
+ const hardware_interface::ResourceManagerParams & params)
1561
+ {
1562
+ resource_storage_->rm_clock_ = params.clock ;
1563
+ resource_storage_->rm_logger_ = params.logger ;
1564
+ resource_storage_->robot_description_ = params.robot_description ;
1565
+ resource_storage_->cm_update_rate_ = params.update_rate ;
1566
+ resource_storage_->executor_ = params.executor ;
1567
+ return load_and_initialize_components (params.robot_description , params.update_rate );
1568
+ }
1569
+
1569
1570
void ResourceManager::import_joint_limiters (const std::string & urdf)
1570
1571
{
1571
1572
std::lock_guard<std::recursive_mutex> guard (joint_limiters_lock_);
@@ -1894,29 +1895,53 @@ std::string ResourceManager::get_command_interface_data_type(const std::string &
1894
1895
1895
1896
void ResourceManager::import_component (
1896
1897
std::unique_ptr<ActuatorInterface> actuator, const HardwareInfo & hardware_info)
1898
+ {
1899
+ HardwareComponentParams params;
1900
+ params.hardware_info = hardware_info;
1901
+ import_component (std::move (actuator), params);
1902
+ }
1903
+
1904
+ void ResourceManager::import_component (
1905
+ std::unique_ptr<SensorInterface> sensor, const HardwareInfo & hardware_info)
1906
+ {
1907
+ HardwareComponentParams params;
1908
+ params.hardware_info = hardware_info;
1909
+ import_component (std::move (sensor), params);
1910
+ }
1911
+
1912
+ void ResourceManager::import_component (
1913
+ std::unique_ptr<SystemInterface> system, const HardwareInfo & hardware_info)
1914
+ {
1915
+ HardwareComponentParams params;
1916
+ params.hardware_info = hardware_info;
1917
+ import_component (std::move (system), params);
1918
+ }
1919
+
1920
+ void ResourceManager::import_component (
1921
+ std::unique_ptr<ActuatorInterface> actuator, const HardwareComponentParams & params)
1897
1922
{
1898
1923
std::lock_guard<std::recursive_mutex> guard (resources_lock_);
1899
- resource_storage_->initialize_actuator (std::move (actuator), hardware_info );
1924
+ resource_storage_->initialize_actuator (std::move (actuator), params );
1900
1925
read_write_status.failed_hardware_names .reserve (
1901
1926
resource_storage_->actuators_ .size () + resource_storage_->sensors_ .size () +
1902
1927
resource_storage_->systems_ .size ());
1903
1928
}
1904
1929
1905
1930
void ResourceManager::import_component (
1906
- std::unique_ptr<SensorInterface> sensor, const HardwareInfo & hardware_info )
1931
+ std::unique_ptr<SensorInterface> sensor, const HardwareComponentParams & params )
1907
1932
{
1908
1933
std::lock_guard<std::recursive_mutex> guard (resources_lock_);
1909
- resource_storage_->initialize_sensor (std::move (sensor), hardware_info );
1934
+ resource_storage_->initialize_sensor (std::move (sensor), params );
1910
1935
read_write_status.failed_hardware_names .reserve (
1911
1936
resource_storage_->actuators_ .size () + resource_storage_->sensors_ .size () +
1912
1937
resource_storage_->systems_ .size ());
1913
1938
}
1914
1939
1915
1940
void ResourceManager::import_component (
1916
- std::unique_ptr<SystemInterface> system, const HardwareInfo & hardware_info )
1941
+ std::unique_ptr<SystemInterface> system, const HardwareComponentParams & params )
1917
1942
{
1918
1943
std::lock_guard<std::recursive_mutex> guard (resources_lock_);
1919
- resource_storage_->initialize_system (std::move (system), hardware_info );
1944
+ resource_storage_->initialize_system (std::move (system), params );
1920
1945
read_write_status.failed_hardware_names .reserve (
1921
1946
resource_storage_->actuators_ .size () + resource_storage_->sensors_ .size () +
1922
1947
resource_storage_->systems_ .size ());
0 commit comments