ros2_control - rolling
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
tricycle_controller::TricycleController Class Reference
Inheritance diagram for tricycle_controller::TricycleController:
Inheritance graph
[legend]
Collaboration diagram for tricycle_controller::TricycleController:
Collaboration graph
[legend]

Classes

struct  SteeringHandle
 
struct  TractionHandle
 

Public Member Functions

TRICYCLE_CONTROLLER_PUBLIC controller_interface::InterfaceConfiguration command_interface_configuration () const override
 Get configuration for controller's required command interfaces. More...
 
TRICYCLE_CONTROLLER_PUBLIC controller_interface::InterfaceConfiguration state_interface_configuration () const override
 Get configuration for controller's required state interfaces. More...
 
TRICYCLE_CONTROLLER_PUBLIC controller_interface::return_type update (const rclcpp::Time &time, const rclcpp::Duration &period) override
 
TRICYCLE_CONTROLLER_PUBLIC CallbackReturn on_init () override
 Extending interface with initialization method which is individual for each controller.
 
TRICYCLE_CONTROLLER_PUBLIC CallbackReturn on_configure (const rclcpp_lifecycle::State &previous_state) override
 
TRICYCLE_CONTROLLER_PUBLIC CallbackReturn on_activate (const rclcpp_lifecycle::State &previous_state) override
 
TRICYCLE_CONTROLLER_PUBLIC CallbackReturn on_deactivate (const rclcpp_lifecycle::State &previous_state) override
 
TRICYCLE_CONTROLLER_PUBLIC CallbackReturn on_cleanup (const rclcpp_lifecycle::State &previous_state) override
 
TRICYCLE_CONTROLLER_PUBLIC CallbackReturn on_error (const rclcpp_lifecycle::State &previous_state) override
 
TRICYCLE_CONTROLLER_PUBLIC CallbackReturn on_shutdown (const rclcpp_lifecycle::State &previous_state) override
 
- Public Member Functions inherited from controller_interface::ControllerInterface
CONTROLLER_INTERFACE_PUBLIC bool is_chainable () const final
 
CONTROLLER_INTERFACE_PUBLIC std::vector< hardware_interface::StateInterface::ConstSharedPtr > export_state_interfaces () final
 
CONTROLLER_INTERFACE_PUBLIC std::vector< hardware_interface::CommandInterface::SharedPtr > export_reference_interfaces () final
 
CONTROLLER_INTERFACE_PUBLIC bool set_chained_mode (bool chained_mode) final
 
CONTROLLER_INTERFACE_PUBLIC bool is_in_chained_mode () const final
 
- Public Member Functions inherited from controller_interface::ControllerInterfaceBase
virtual CONTROLLER_INTERFACE_PUBLIC void assign_interfaces (std::vector< hardware_interface::LoanedCommandInterface > &&command_interfaces, std::vector< hardware_interface::LoanedStateInterface > &&state_interfaces)
 Method that assigns the Loaned interfaces to the controller. More...
 
virtual CONTROLLER_INTERFACE_PUBLIC void release_interfaces ()
 Method that releases the Loaned interfaces from the controller. More...
 
CONTROLLER_INTERFACE_PUBLIC return_type init (const std::string &controller_name, const std::string &urdf, unsigned int cm_update_rate, const std::string &node_namespace, const rclcpp::NodeOptions &node_options)
 
CONTROLLER_INTERFACE_PUBLIC const rclcpp_lifecycle::State & configure ()
 Custom configure method to read additional parameters for controller-nodes.
 
CONTROLLER_INTERFACE_PUBLIC ControllerUpdateStatus trigger_update (const rclcpp::Time &time, const rclcpp::Duration &period)
 
CONTROLLER_INTERFACE_PUBLIC std::shared_ptr< rclcpp_lifecycle::LifecycleNode > get_node ()
 
CONTROLLER_INTERFACE_PUBLIC std::shared_ptr< const rclcpp_lifecycle::LifecycleNode > get_node () const
 
CONTROLLER_INTERFACE_PUBLIC const rclcpp_lifecycle::State & get_lifecycle_state () const
 
CONTROLLER_INTERFACE_PUBLIC unsigned int get_update_rate () const
 
CONTROLLER_INTERFACE_PUBLIC bool is_async () const
 
CONTROLLER_INTERFACE_PUBLIC const std::string & get_robot_description () const
 
virtual CONTROLLER_INTERFACE_PUBLIC rclcpp::NodeOptions define_custom_node_options () const
 
template<typename ParameterT >
auto auto_declare (const std::string &name, const ParameterT &default_value)
 Declare and initialize a parameter with a type. More...
 
CONTROLLER_INTERFACE_PUBLIC void wait_for_trigger_update_to_finish ()
 

Protected Member Functions

CallbackReturn get_traction (const std::string &traction_joint_name, std::vector< TractionHandle > &joint)
 
CallbackReturn get_steering (const std::string &steering_joint_name, std::vector< SteeringHandle > &joint)
 
double convert_trans_rot_vel_to_steering_angle (double v, double omega, double wheelbase)
 
std::tuple< double, double > twist_to_ackermann (double linear_command, double angular_command)
 
void reset_odometry (const std::shared_ptr< rmw_request_id_t > request_header, const std::shared_ptr< std_srvs::srv::Empty::Request > req, std::shared_ptr< std_srvs::srv::Empty::Response > res)
 
bool reset ()
 
void halt ()
 

Protected Attributes

std::shared_ptr< ParamListener > param_listener_
 
Params params_
 
std::vector< TractionHandletraction_joint_
 
std::vector< SteeringHandlesteering_joint_
 
std::shared_ptr< rclcpp::Publisher< AckermannDrive > > ackermann_command_publisher_ = nullptr
 
std::shared_ptr< realtime_tools::RealtimePublisher< AckermannDrive > > realtime_ackermann_command_publisher_ = nullptr
 
Odometry odometry_
 
std::shared_ptr< rclcpp::Publisher< nav_msgs::msg::Odometry > > odometry_publisher_ = nullptr
 
std::shared_ptr< realtime_tools::RealtimePublisher< nav_msgs::msg::Odometry > > realtime_odometry_publisher_ = nullptr
 
std::shared_ptr< rclcpp::Publisher< tf2_msgs::msg::TFMessage > > odometry_transform_publisher_
 
std::shared_ptr< realtime_tools::RealtimePublisher< tf2_msgs::msg::TFMessage > > realtime_odometry_transform_publisher_ = nullptr
 
std::chrono::milliseconds cmd_vel_timeout_ {500}
 
bool subscriber_is_active_ = false
 
rclcpp::Subscription< TwistStamped >::SharedPtr velocity_command_subscriber_ = nullptr
 
realtime_tools::RealtimeBox< std::shared_ptr< TwistStamped > > received_velocity_msg_ptr_ {nullptr}
 
std::shared_ptr< TwistStamped > last_command_msg_
 
rclcpp::Service< std_srvs::srv::Empty >::SharedPtr reset_odom_service_
 
std::queue< AckermannDrive > previous_commands_
 
TractionLimiter limiter_traction_
 
SteeringLimiter limiter_steering_
 
bool is_halted = false
 
- Protected Attributes inherited from controller_interface::ControllerInterfaceBase
std::vector< hardware_interface::LoanedCommandInterfacecommand_interfaces_
 
std::vector< hardware_interface::LoanedStateInterfacestate_interfaces_
 

Member Function Documentation

◆ command_interface_configuration()

InterfaceConfiguration tricycle_controller::TricycleController::command_interface_configuration ( ) const
overridevirtual

Get configuration for controller's required command interfaces.

Method used by the controller_manager to get the set of command interfaces used by the controller. Each controller can use individual method to determine interface names that in simples case have the following format: <joint>/<interface>. The method is called only in inactive or active state, i.e., on_configure has to be called first. The configuration is used to check if controller can be activated and to claim interfaces from hardware. The claimed interfaces are populated in the command_interfaces_ member.

Returns
configuration of command interfaces.

Implements controller_interface::ControllerInterfaceBase.

◆ state_interface_configuration()

InterfaceConfiguration tricycle_controller::TricycleController::state_interface_configuration ( ) const
overridevirtual

Get configuration for controller's required state interfaces.

Method used by the controller_manager to get the set of state interface used by the controller. Each controller can use individual method to determine interface names that in simples case have the following format: <joint>/<interface>. The method is called only in inactive or active state, i.e., on_configure has to be called first. The configuration is used to check if controller can be activated and to claim interfaces from hardware. The claimed interfaces are populated in the state_interfaces_ member.

Returns
configuration of state interfaces.

Implements controller_interface::ControllerInterfaceBase.

◆ update()

controller_interface::return_type tricycle_controller::TricycleController::update ( const rclcpp::Time &  time,
const rclcpp::Duration &  period 
)
overridevirtual

Control step update. Command interfaces are updated based on on reference inputs and current states. The method called in the (real-time) control loop.

Parameters
[in]timeThe time at the start of this control loop iteration
[in]periodThe measured time since the last control loop iteration
Returns
return_type::OK if update is successfully, otherwise return_type::ERROR.

Implements controller_interface::ControllerInterfaceBase.

Member Data Documentation

◆ odometry_transform_publisher_

std::shared_ptr<rclcpp::Publisher<tf2_msgs::msg::TFMessage> > tricycle_controller::TricycleController::odometry_transform_publisher_
protected
Initial value:
=
nullptr

The documentation for this class was generated from the following files: