Change solver pointer to a smart pointer.
authorWalter Fetter Lages <w.fetter@ieee.org>
Thu, 23 Sep 2021 20:55:59 +0000 (17:55 -0300)
committerWalter Fetter Lages <w.fetter@ieee.org>
Thu, 23 Sep 2021 20:55:59 +0000 (17:55 -0300)
include/computed_torque_controller/computed_torque_controller.hpp
src/computed_torque_controller.cpp

index afe8ef0..14ce4d1 100644 (file)
@@ -47,7 +47,7 @@ namespace effort_controllers
 
                std::string robotDescription_;          
                KDL::Chain chain_;      
-               KDL::ChainIdSolver_RNE *idsolver_;
+               std::unique_ptr<KDL::ChainIdSolver_RNE> idsolver_;
                                
                KDL::JntArray q_;
                KDL::JntArray dq_;
index 3530442..f6ed0e2 100644 (file)
@@ -54,7 +54,7 @@ namespace effort_controllers
                }
                catch(const std::exception &e)
                {
-                       RCLCPP_ERROR_STREAM(node_->get_logger(),"Exception thrown in on_init() with message: " << e.what() << "\n");
+                       RCLCPP_ERROR_STREAM(node_->get_logger(),"Exception thrown in on_init() with message: " << e.what());
                        return CallbackReturn::ERROR;
                }
 
@@ -121,9 +121,13 @@ namespace effort_controllers
                g[1]=node_->get_parameter("gravity.y").get_value<double>();
                g[2]=node_->get_parameter("gravity.x").get_value<double>();
 
-               if((idsolver_=new KDL::ChainIdSolver_RNE(chain_,g)) == NULL)
+               try
+               {
+                       idsolver_=std::make_unique<KDL::ChainIdSolver_RNE>(chain_,g);
+               }
+               catch(const std::exception &e)
                {
-                       RCLCPP_ERROR(node_->get_logger(),"Failed to create ChainIDSolver_RNE.");
+                       RCLCPP_ERROR_STREAM(node_->get_logger(),"Exception thrown while creating ChainIdSolver_RNE with message: " << e.what());
                        return CallbackReturn::ERROR;
                }