Skip to content

Commit 24ba1d6

Browse files
committed
apply API change discussed in PR#66
1 parent bbcea68 commit 24ba1d6

File tree

3 files changed

+25
-11
lines changed

3 files changed

+25
-11
lines changed

kinematics_interface/include/kinematics_interface/kinematics_interface.hpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,15 @@ class KinematicsInterface
3939

4040
/**
4141
* \brief Initialize plugin. This method must be called before any other.
42+
* \param[in] robot_description robot URDF in string format
43+
* \param[in] parameters_interface
44+
* \param[in] param_namespace namespace for kinematics parameters - defaults to "kinematics"
45+
* \return true if successful
4246
*/
4347
virtual bool initialize(
48+
const std::string & robot_description,
4449
std::shared_ptr<rclcpp::node_interfaces::NodeParametersInterface> parameters_interface,
45-
const std::string & end_effector_name,
46-
const std::string & robot_description = "") = 0;
50+
const std::string & param_namespace = "kinematics") = 0;
4751

4852
/**
4953
* \brief Convert Cartesian delta-x to joint delta-theta, using the Jacobian.

kinematics_interface_kdl/include/kinematics_interface_kdl/kinematics_interface_kdl.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ class KinematicsInterfaceKDL : public kinematics_interface::KinematicsInterface
4040
{
4141
public:
4242
bool initialize(
43+
const std::string & robot_description,
4344
std::shared_ptr<rclcpp::node_interfaces::NodeParametersInterface> parameters_interface,
44-
const std::string & end_effector_name,
45-
const std::string & robot_description = "") override;
45+
const std::string & param_namespace = "kinematics") override;
4646

4747
bool convert_cartesian_deltas_to_joint_deltas(
4848
const Eigen::VectorXd & joint_pos, const Eigen::Matrix<double, 6, 1> & delta_x,

kinematics_interface_kdl/src/kinematics_interface_kdl.cpp

+17-7
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ namespace kinematics_interface_kdl
2121
rclcpp::Logger LOGGER = rclcpp::get_logger("kinematics_interface_kdl");
2222

2323
bool KinematicsInterfaceKDL::initialize(
24+
const std::string & robot_description,
2425
std::shared_ptr<rclcpp::node_interfaces::NodeParametersInterface> parameters_interface,
25-
const std::string & end_effector_name,
26-
const std::string & robot_description)
26+
const std::string & param_namespace)
2727
{
2828
// track initialization plugin
2929
initialized = true;
@@ -34,7 +34,7 @@ bool KinematicsInterfaceKDL::initialize(
3434
// If the robot_description input argument is empty, try to get the
3535
// robot_description from the node's parameters.
3636
auto robot_param = rclcpp::Parameter();
37-
if (!parameters_interface->get_parameter("robot_description", robot_param))
37+
if (!parameters_interface->get_parameter(param_namespace + "robot_description", robot_param))
3838
{
3939
RCLCPP_ERROR(LOGGER, "parameter robot_description not set in kinematics_interface_kdl");
4040
return false;
@@ -45,22 +45,32 @@ bool KinematicsInterfaceKDL::initialize(
4545
{
4646
robot_description_local = robot_description;
4747
}
48+
49+
// get parameters
50+
std::string ns = !param_namespace.empty() ? param_namespace + "." : "";
4851
// get alpha damping term
4952
auto alpha_param = rclcpp::Parameter("alpha", 0.000005);
50-
if (parameters_interface->has_parameter("alpha"))
53+
if (parameters_interface->has_parameter(ns + "alpha"))
5154
{
52-
parameters_interface->get_parameter("alpha", alpha_param);
55+
parameters_interface->get_parameter(ns + "alpha", alpha_param);
5356
}
5457
alpha = alpha_param.as_double();
58+
// get end-effector name
59+
auto end_effector_name = rclcpp::Parameter("tip", "MISSING_END_EFFECTOR_NAME");
60+
if (parameters_interface->has_parameter(ns + "tip"))
61+
{
62+
parameters_interface->get_parameter(ns + "tip", end_effector_name);
63+
}
64+
5565
// create kinematic chain
5666
KDL::Tree robot_tree;
5767
kdl_parser::treeFromString(robot_description_local, robot_tree);
5868
root_name_ = robot_tree.getRootSegment()->first;
59-
if (!robot_tree.getChain(root_name_, end_effector_name, chain_))
69+
if (!robot_tree.getChain(root_name_, end_effector_name.as_string(), chain_))
6070
{
6171
RCLCPP_ERROR(
6272
LOGGER, "failed to find chain from robot root %s to end effector %s", root_name_.c_str(),
63-
end_effector_name.c_str());
73+
end_effector_name.as_string().c_str());
6474
return false;
6575
}
6676
// create map from link names to their index

0 commit comments

Comments
 (0)