Service not being created when passing pointer as parameter.
Hi all
I'm trying to parameterize some services I'm creating. In such, I'm passing the services I want to create as a parameter. I'm running into an issue where the service isn't being created when the service is being set as a parameter. As a test, I created one using a member variable and one with a parameter, and the parametrized service was not created
void SomeService::createServices(std::string name,
rclcpp::Service<interface::srv::Reader>::SharedPtr reader,
rclcpp::Service<interface::srv::Writer>::SharedPtr writer)
{
...
...
reader = this->create_service<interface::srv::Reader>(
readerTopic,
readerCallBack,
rmw_qos_profile_services_default,
callbackGroup);
this->Writer1_ = this->create_service<interface::srv::Writer>(
writerTopic,
writerCallBack,
rmw_qos_profile_services_default,
callbackGroup)
}
some where else:
//some where else
this->init(names[1], this->Reader1_, this->Writer1_);
I have the member varables in my headers as such:
rclcpp::Service<interface::srv::Reader>::SharedPtr Reader1_;
rclcpp::Service<interface::srv::Reader>::SharedPtr Reader2_;
rclcpp::Service<interface::srv::Writer>::SharedPtr Writer1_;
rclcpp::Service<interface::srv::Writer>::SharedPtr Writer2_;
I don't see the service in the command line:
ros2 node info /zach/SomeService
Service Servers:
/dev/name1/Writer: interfaces/srv/Writer
/zach/ChildIsInitNameSomeService: interfaces/srv/ChildInit
/zach/SomeService/describe_parameters: rcl_interfaces/srv/DescribeParameters
/zach/SomeService/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/zach/SomeService/get_parameters: rcl_interfaces/srv/GetParameters
/zach/SomeService/list_parameters: rcl_interfaces/srv/ListParameters
/zach/SomeService/set_parameters: rcl_interfaces/srv/SetParameters
/zach/SomeService/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
I think it's how I'm passing the shared pointers.
Thanks for any help :)
Zach
Asked by zsnafu on 2022-09-18 14:31:13 UTC
Answers
Oh man. I'm dumb. I've been looking at the computer screen too long.
I needed to change the parameters to pointers and point to the pointer members.
Asked by zsnafu on 2022-09-18 16:03:38 UTC
Comments