}
catch(const std::exception &e)
{
- RCLCPP_ERROR_STREAM(node_->get_logger(),"Exception thrown in on_init() with message: " << e.what());
+ RCLCPP_ERROR_STREAM(get_node()->get_logger(),"Exception thrown in on_init() with message: " << e.what());
return CallbackReturn::ERROR;
}
{
try
{
- joints_=node_->get_parameter("joints").as_string_array();
+ joints_=get_node()->get_parameter("joints").as_string_array();
if(joints_.empty())
throw std::runtime_error("'joints' parameter was empty,");
- auto odom_frame_id=node_->get_parameter("odom_frame_id").as_string();
- auto base_frame_id=node_->get_parameter("base_frame_id").as_string();
+ auto odom_frame_id=get_node()->get_parameter("odom_frame_id").as_string();
+ auto base_frame_id=get_node()->get_parameter("base_frame_id").as_string();
- status_publisher_=node_->create_publisher<nonsmooth_backstep_controller_msgs::msg::NonSmoothBackstepControllerStatus>("~/status",rclcpp::SystemDefaultsQoS());
+ status_publisher_=get_node()->create_publisher<nonsmooth_backstep_controller_msgs::msg::NonSmoothBackstepControllerStatus>("~/status",rclcpp::SystemDefaultsQoS());
rt_status_publisher_=std::make_shared<realtime_tools::RealtimePublisher<nonsmooth_backstep_controller_msgs::msg::NonSmoothBackstepControllerStatus>>(status_publisher_);
rt_status_publisher_->msg_.header.frame_id=odom_frame_id;
- odom_publisher_=node_->create_publisher<nav_msgs::msg::Odometry>("~/odom",rclcpp::SystemDefaultsQoS());
+ odom_publisher_=get_node()->create_publisher<nav_msgs::msg::Odometry>("~/odom",rclcpp::SystemDefaultsQoS());
rt_odom_publisher_=std::make_shared<realtime_tools::RealtimePublisher<nav_msgs::msg::Odometry>>(odom_publisher_);
rt_odom_publisher_->msg_.header.frame_id=odom_frame_id;
rt_odom_publisher_->msg_.child_frame_id=base_frame_id;
0, 0, 0, 0, twist_cov[4], 0,
0, 0, 0, 0, 0, twist_cov[5]};
- tf_odom_publisher_=node_->create_publisher<tf2_msgs::msg::TFMessage>("/tf",rclcpp::SystemDefaultsQoS());
+ tf_odom_publisher_=get_node()->create_publisher<tf2_msgs::msg::TFMessage>("/tf",rclcpp::SystemDefaultsQoS());
rt_tf_odom_publisher_=std::make_shared<realtime_tools::RealtimePublisher<tf2_msgs::msg::TFMessage>>(tf_odom_publisher_);
rt_tf_odom_publisher_->msg_.transforms.resize(1);
rt_tf_odom_publisher_->msg_.transforms[0].transform.translation.z=0.0;
rt_tf_odom_publisher_->msg_.transforms[0].header.frame_id=odom_frame_id;
using std::placeholders::_1;
- sub_command_=node_->create_subscription<geometry_msgs::msg::Pose2D>("~/command",1000,
+ sub_command_=get_node()->create_subscription<geometry_msgs::msg::Pose2D>("~/command",1000,
std::bind(&NonSmoothBackstepController::commandCB,this,_1));
- sub_parameters_=node_->create_subscription<std_msgs::msg::Float64MultiArray>("~/dynamics_parameters",1000,
+ sub_parameters_=get_node()->create_subscription<std_msgs::msg::Float64MultiArray>("~/dynamics_parameters",1000,
std::bind(&NonSmoothBackstepController::parametersCB,this,_1));
double wheelBase;
- if(!node_->get_parameter("wheel_separation",wheelBase))
+ if(!get_node()->get_parameter("wheel_separation",wheelBase))
throw std::runtime_error("No 'wheel_separation' parameter.");
std::vector<double> wheelRadius(2);
- if(!node_->get_parameter("wheel_radius",wheelRadius))
+ if(!get_node()->get_parameter("wheel_radius",wheelRadius))
throw std::runtime_error("No 'wheel_radius' parameter.");
odom_.setParams(wheelBase,wheelRadius);
- if(!node_->get_parameter("gamma",gamma_))
+ if(!get_node()->get_parameter("gamma",gamma_))
throw std::runtime_error("No 'gamma' parameter.");
- if(!node_->get_parameter("lambda",lambda_))
+ if(!get_node()->get_parameter("lambda",lambda_))
throw std::runtime_error("No 'lambda' parameter.");
std::vector<double> FVec;
- if(!node_->get_parameter("F",FVec))
+ if(!get_node()->get_parameter("F",FVec))
throw std::runtime_error("No 'F' parameter.");
F_=Eigen::Map<Eigen::Matrix2d>(FVec.data(),2,2).transpose();
std::vector<double> GVec;
- if(!node_->get_parameter("G",GVec))
+ if(!get_node()->get_parameter("G",GVec))
throw std::runtime_error("No 'G' parameter.");
Ginv_=Eigen::Map<Eigen::Matrix2d>(GVec.data(),2,2).transpose().inverse();
- time_step_=node_->get_parameter("time_step").as_double();
+ time_step_=get_node()->get_parameter("time_step").as_double();
}
catch(const std::exception &e)
{
- RCLCPP_ERROR_STREAM(node_->get_logger(),"Exception thrown in on_confiture(): " << e.what());
+ RCLCPP_ERROR_STREAM(get_node()->get_logger(),"Exception thrown in on_confiture(): " << e.what());
return CallbackReturn::ERROR;
}
- if(!node_->get_parameter("priority",priority_))
- RCLCPP_WARN(node_->get_logger(),"No 'priority' configured for controller. Using highest possible priority.");
+ if(!get_node()->get_parameter("priority",priority_))
+ RCLCPP_WARN(get_node()->get_logger(),"No 'priority' configured for controller. Using highest possible priority.");
return CallbackReturn::SUCCESS;
}
odom_.setPose(x);
xRef_.setZero();
eta_.setZero();
- lastSamplingTime_=node_->get_clock()->now();
+ lastSamplingTime_=get_node()->get_clock()->now();
for(unsigned int i=0;i < joints_.size();i++)
phi_[i]=state_interfaces_[i].get_value();
struct sched_param param;
param.sched_priority=priority_;
if(sched_setscheduler(0,SCHED_FIFO,¶m) == -1)
- RCLCPP_WARN(node_->get_logger(),"Failed to set real-time scheduler.");
+ RCLCPP_WARN(get_node()->get_logger(),"Failed to set real-time scheduler.");
if(mlockall(MCL_CURRENT|MCL_FUTURE) == -1)
- RCLCPP_WARN(node_->get_logger(),"Failed to lock memory.");
+ RCLCPP_WARN(get_node()->get_logger(),"Failed to lock memory.");
return CallbackReturn::SUCCESS;
}
}
- controller_interface::return_type NonSmoothBackstepController::update(void)
+ controller_interface::return_type NonSmoothBackstepController::update(const rclcpp::Time &/*time*/,const rclcpp::Duration &/*period*/)
{
- auto time=node_->get_clock()->now();
+ auto time=get_node()->get_clock()->now();
auto dt=time-lastSamplingTime_;
if(dt.seconds() < time_step_) return controller_interface::return_type::OK;