ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
I found why I got this error. My service wasn't defined properly. The response parameter is required even if not used.
bool TwistToJogFrame::setTargetLink(jog_msgs::SetTargetRequest &target_link, jog_msgs::SetTargetResponse &res)
{
link_name_ = target_link.name;
return true;
}
I then added the service server to the class
TwistToJogFrame::TwistToJogFrame()
{
ros::NodeHandle nh, pnh("~");
jog_frame_pub_ = nh.advertise<jog_msgs::JogFrame>("jog_frame", 1);
get_target_frame_list_srv_ = nh.advertiseService("get_target_frame_list", &TwistToJogFrame::getTargetFrameList, this);
set_controller_status_srv_ = nh.advertiseService("set_controller_status", &TwistToJogFrame::setControllerStatus, this);
set_target_frame_srv_ = nh.advertiseService("set_target_frame", &TwistToJogFrame::setTargetFrame, this);
set_target_link_srv_ = nh.advertiseService("set_target_link", &TwistToJogFrame::setTargetLink, this);
pnh.getParam("/jog_frame_node/group_names", group_names_);
pnh.getParam("/jog_frame_node/link_names", link_names_);
pnh.getParam("group_name", group_name_);
pnh.getParam("link_name", link_name_);
pnh.getParam("frame_id", frame_id_);
pnh.getParam("rotate_axes", rotate_axes_);
std::string str_rotation_matrix_;
pnh.getParam("rotation_matrix", str_rotation_matrix_);
rotation_matrix_ = arma::mat(str_rotation_matrix_);
pnh.getParam("dominant_axis_mode", dominant_axis_mode_);
pnh.getParam("scale_linear", scale_linear_);
pnh.getParam("scale_angular", scale_angular_);
pnh.getParam("sub_topic", sub_topic_);
pnh.getParam("controller_enabled", controller_enabled_);
twist_sub_ = nh.subscribe(sub_topic_, 10, &TwistToJogFrame::twist_cb, this);
ros::topic::waitForMessage<geometry_msgs::Twist>(sub_topic_);
}