#include <double_diff_drive_controller.h>
Classes | |
struct | Commands |
Velocity command related: More... | |
Public Member Functions | |
DoubleDiffDriveController () | |
bool | init (hardware_interface::VelocityJointInterface *hw, ros::NodeHandle &root_nh, ros::NodeHandle &controller_nh) |
Initialize controller. More... | |
void | starting (const ros::Time &time) |
Starts controller. More... | |
void | stopping (const ros::Time &time) |
Stops controller. More... | |
void | update (const ros::Time &time, const ros::Duration &period) |
Updates controller, i.e. computes the odometry and sets the new velocity commands. More... | |
![]() | |
virtual bool | init (T *, ros::NodeHandle &) |
virtual bool | init (T *, ros::NodeHandle &, ros::NodeHandle &) |
![]() | |
virtual void | aborting (const ros::Time &) |
virtual void | aborting (const ros::Time &) |
bool | abortRequest (const ros::Time &time) |
bool | abortRequest (const ros::Time &time) |
ControllerBase ()=default | |
ControllerBase (const ControllerBase &)=delete | |
ControllerBase (ControllerBase &&)=delete | |
bool | isAborted () const |
bool | isAborted () const |
bool | isInitialized () const |
bool | isInitialized () const |
bool | isRunning () const |
bool | isRunning () const |
bool | isStopped () const |
bool | isStopped () const |
bool | isWaiting () const |
bool | isWaiting () const |
ControllerBase & | operator= (const ControllerBase &)=delete |
ControllerBase & | operator= (ControllerBase &&)=delete |
bool | startRequest (const ros::Time &time) |
bool | startRequest (const ros::Time &time) |
bool | stopRequest (const ros::Time &time) |
bool | stopRequest (const ros::Time &time) |
void | updateRequest (const ros::Time &time, const ros::Duration &period) |
void | updateRequest (const ros::Time &time, const ros::Duration &period) |
virtual void | waiting (const ros::Time &) |
virtual void | waiting (const ros::Time &) |
bool | waitRequest (const ros::Time &time) |
bool | waitRequest (const ros::Time &time) |
virtual | ~ControllerBase ()=default |
Private Member Functions | |
void | brake () |
Brakes the wheels, i.e. sets the velocity to 0. More... | |
void | cmdVelCallback (const geometry_msgs::Twist &command) |
Velocity command callback. More... | |
void | setupRtPublishersMsg (ros::NodeHandle &root_nh, ros::NodeHandle &controller_nh) |
Sets the odometry publishing fields. More... | |
bool | setWheelParamsFromUrdf (ros::NodeHandle &root_nh, ros::NodeHandle &controller_nh, const std::string &drive_motor_name, const std::string &steer_motor_name) |
Sets odometry parameters from the URDF, i.e. the wheel radius and separation. More... | |
Additional Inherited Members | |
![]() | |
typedef std::vector< hardware_interface::InterfaceResources > | ClaimedResources |
![]() | |
ABORTED | |
CONSTRUCTED | |
INITIALIZED | |
RUNNING | |
enum controller_interface::ControllerBase:: { ... } | state_ |
STOPPED | |
WAITING | |
![]() | |
std::string | getHardwareInterfaceType () const |
bool | initRequest (hardware_interface::RobotHW *robot_hw, ros::NodeHandle &root_nh, ros::NodeHandle &controller_nh, ClaimedResources &claimed_resources) override |
This class makes some assumptions on the model of the robot:
Definition at line 64 of file double_diff_drive_controller.h.
double_diff_drive_controller::DoubleDiffDriveController::DoubleDiffDriveController | ( | ) |
Definition at line 52 of file double_diff_drive_controller.cpp.
|
private |
Brakes the wheels, i.e. sets the velocity to 0.
Definition at line 235 of file double_diff_drive_controller.cpp.
|
private |
Velocity command callback.
command | Velocity command message (twist) |
Definition at line 242 of file double_diff_drive_controller.cpp.
bool double_diff_drive_controller::DoubleDiffDriveController::init | ( | hardware_interface::VelocityJointInterface * | hw, |
ros::NodeHandle & | root_nh, | ||
ros::NodeHandle & | controller_nh | ||
) |
Initialize controller.
hw | Velocity joint interface for the wheels |
root_nh | Node handle at root namespace |
controller_nh | Node handle inside the controller namespace |
Definition at line 67 of file double_diff_drive_controller.cpp.
|
private |
Sets the odometry publishing fields.
root_nh | Root node handle |
controller_nh | Node handle inside the controller namespace |
Definition at line 309 of file double_diff_drive_controller.cpp.
|
private |
Sets odometry parameters from the URDF, i.e. the wheel radius and separation.
root_nh | Root node handle |
wheel0_name | Name of wheel0 joint |
wheel1_name | Name of wheel1 joint |
Definition at line 263 of file double_diff_drive_controller.cpp.
|
virtual |
Starts controller.
time | Current time |
Reimplemented from controller_interface::ControllerBase.
Definition at line 218 of file double_diff_drive_controller.cpp.
|
virtual |
Stops controller.
time | Current time |
Reimplemented from controller_interface::ControllerBase.
Definition at line 229 of file double_diff_drive_controller.cpp.
|
virtual |
Updates controller, i.e. computes the odometry and sets the new velocity commands.
time | Current time |
period | Time since the last called to update |
Implements controller_interface::ControllerBase.
Definition at line 138 of file double_diff_drive_controller.cpp.
|
private |
Frame to use for the robot base:
Definition at line 147 of file double_diff_drive_controller.h.
|
private |
Timeout to consider cmd_vel commands old:
Definition at line 144 of file double_diff_drive_controller.h.
|
private |
Definition at line 121 of file double_diff_drive_controller.h.
|
private |
Definition at line 122 of file double_diff_drive_controller.h.
|
private |
Definition at line 134 of file double_diff_drive_controller.h.
|
private |
Hardware handles:
Definition at line 107 of file double_diff_drive_controller.h.
|
private |
Whether to publish odometry to tf or not:
Definition at line 150 of file double_diff_drive_controller.h.
|
private |
Definition at line 156 of file double_diff_drive_controller.h.
|
private |
Definition at line 103 of file double_diff_drive_controller.h.
|
private |
Definition at line 140 of file double_diff_drive_controller.h.
|
private |
Definition at line 158 of file double_diff_drive_controller.h.
|
private |
Definition at line 157 of file double_diff_drive_controller.h.
|
private |
Definition at line 99 of file double_diff_drive_controller.h.
|
private |
Definition at line 129 of file double_diff_drive_controller.h.
|
private |
Odometry related:
Definition at line 126 of file double_diff_drive_controller.h.
|
private |
Definition at line 128 of file double_diff_drive_controller.h.
|
private |
Definition at line 104 of file double_diff_drive_controller.h.
|
private |
Odometry related:
Definition at line 102 of file double_diff_drive_controller.h.
|
private |
Definition at line 141 of file double_diff_drive_controller.h.
|
private |
Definition at line 134 of file double_diff_drive_controller.h.
|
private |
Definition at line 108 of file double_diff_drive_controller.h.
|
private |
Definition at line 123 of file double_diff_drive_controller.h.
|
private |
Definition at line 127 of file double_diff_drive_controller.h.
|
private |
Number of wheel joints:
Definition at line 153 of file double_diff_drive_controller.h.
|
private |
Wheel radius (assuming it's the same for the left and right wheels):
Definition at line 136 of file double_diff_drive_controller.h.
|
private |
Wheel separation, wrt the midpoint of the wheel width:
Definition at line 132 of file double_diff_drive_controller.h.
|
private |
Wheel separation and radius calibration multipliers:
Definition at line 139 of file double_diff_drive_controller.h.