Public Member Functions | Public Attributes | List of all members
SummitXLControllerClass Class Reference

Public Member Functions

void check_command_subscriber (diagnostic_updater::DiagnosticStatusWrapper &stat)
 
void check_command_subscriber (diagnostic_updater::DiagnosticStatusWrapper &stat)
 
void command_ptzCallback (const robotnik_msgs::ptzConstPtr &msg)
 
void command_ptzCallback (const robotnik_msgs::ptzConstPtr &msg)
 
void commandCallback (const geometry_msgs::TwistConstPtr &msg)
 
void commandCallback (const geometry_msgs::TwistConstPtr &msg)
 
void imuCallback (const sensor_msgs::Imu &imu_msg)
 
void imuCallback (const sensor_msgs::Imu &imu_msg)
 
void jointStateCallback (const sensor_msgs::JointStateConstPtr &msg)
 
void jointStateCallback (const sensor_msgs::JointStateConstPtr &msg)
 
void PublishOdometry ()
 
void PublishOdometry ()
 
double radnorm (double value)
 
double radnorm (double value)
 
double radnorm2 (double value)
 
double radnorm2 (double value)
 
double saturation (double u, double min, double max)
 
double saturation (double u, double min, double max)
 
void setCommand (const geometry_msgs::Twist &cmd_vel)
 
void setCommand (const geometry_msgs::Twist &cmd_vel)
 
bool spin ()
 
bool spin ()
 
bool srvCallback_GetMode (robotnik_msgs::get_mode::Request &request, robotnik_msgs::get_mode::Response &response)
 
bool srvCallback_GetMode (robotnik_msgs::get_mode::Request &request, robotnik_msgs::get_mode::Response &response)
 
bool srvCallback_SetMode (robotnik_msgs::set_mode::Request &request, robotnik_msgs::set_mode::Response &response)
 
bool srvCallback_SetMode (robotnik_msgs::set_mode::Request &request, robotnik_msgs::set_mode::Response &response)
 
bool srvCallback_SetOdometry (robotnik_msgs::set_odometry::Request &request, robotnik_msgs::set_odometry::Response &response)
 
bool srvCallback_SetOdometry (robotnik_msgs::set_odometry::Request &request, robotnik_msgs::set_odometry::Response &response)
 
int starting ()
 Controller startup in realtime. More...
 
int starting ()
 Controller startup in realtime. More...
 
void stopping ()
 Controller stopping. More...
 
void stopping ()
 Controller stopping. More...
 
 SummitXLControllerClass (ros::NodeHandle h)
 
 SummitXLControllerClass (ros::NodeHandle h)
 
void UpdateControl ()
 Controller update loop. More...
 
void UpdateControl ()
 Controller update loop. More...
 
void UpdateOdometry ()
 
void UpdateOdometry ()
 

Public Attributes

int active_kinematic_mode_
 
double ang_vel_x_
 
double ang_vel_y_
 
double ang_vel_z_
 
double angularSpeedRads_
 
geometry_msgs::Twist base_vel_msg_
 
int blw_pos_
 
std::string blw_pos_topic_
 
int blw_vel_
 
std::string blw_vel_topic_
 
int brw_pos_
 
std::string brw_pos_topic_
 
int brw_vel_
 
std::string brw_vel_topic_
 
ros::Subscriber cmd_sub_
 
diagnostic_updater::FunctionDiagnosticTask command_freq_
 
double desired_freq_
 
diagnostic_updater::Updater diagnostic_
 
int flw_pos_
 
std::string flw_pos_topic_
 
int flw_vel_
 
std::string flw_vel_topic_
 
diagnostic_updater::FrequencyStatus freq_diag_
 
int frw_pos_
 
std::string frw_pos_topic_
 
int frw_vel_
 
std::string frw_vel_topic_
 
ros::Subscriber imu_sub_
 
std::string joint_back_left_steer
 
std::string joint_back_left_wheel
 
std::string joint_back_right_steer
 
std::string joint_back_right_wheel
 
std::string joint_camera_pan
 
std::string joint_camera_tilt
 
std::string joint_front_left_steer
 
std::string joint_front_left_wheel
 
std::string joint_front_right_steer
 
std::string joint_front_right_wheel
 
sensor_msgs::JointState joint_state_
 
ros::Subscriber joint_state_sub_
 
int kinematic_modes_
 
ros::Time last_command_time_
 
double lin_acc_x_
 
double lin_acc_y_
 
double lin_acc_z_
 
double linearSpeedXMps_
 
double linearSpeedYMps_
 
ros::NodeHandle node_handle_
 
tf::TransformBroadcaster odom_broadcaster
 
ros::Publisher odom_pub_
 
std::string odom_topic_
 
double orientation_w_
 
double orientation_x_
 
double orientation_y_
 
double orientation_z_
 
int pan_pos_
 
std::string pan_pos_topic_
 
double pos_ref_pan_
 
double pos_ref_tilt_
 
ros::NodeHandle private_node_handle_
 
ros::Subscriber ptz_sub_
 
bool publish_odom_tf_
 
bool read_state_
 
ros::Publisher ref_pos_blw_
 
ros::Publisher ref_pos_brw_
 
ros::Publisher ref_pos_flw_
 
ros::Publisher ref_pos_frw_
 
ros::Publisher ref_pos_pan_
 
ros::Publisher ref_pos_scissor_
 
ros::Publisher ref_pos_tilt_
 
ros::Publisher ref_vel_blw_
 
ros::Publisher ref_vel_brw_
 
ros::Publisher ref_vel_flw_
 
ros::Publisher ref_vel_frw_
 
std::string robot_model_
 
double robot_pose_pa_
 
double robot_pose_px_
 
double robot_pose_py_
 
double robot_pose_vx_
 
double robot_pose_vy_
 
int scissor_pos_
 
std::string scissor_pos_topic_
 
std::string scissor_prismatic_joint
 
ros::ServiceServer srv_GetMode_
 
ros::ServiceServer srv_SetMode_
 
ros::ServiceServer srv_SetOdometry_
 
diagnostic_updater::HeaderlessTopicDiagnosticsubs_command_freq
 
double summit_xl_d_tracks_m_
 
double summit_xl_trackwidth_
 
double summit_xl_wheel_diameter_
 
double summit_xl_wheelbase_
 
int tilt_pos_
 
std::string tilt_pos_topic_
 
double v_ref_x_
 
double v_ref_y_
 
double v_ref_z_
 
double w_ref_
 

Detailed Description

Definition at line 70 of file summit_xl_robot_control.cpp.

Constructor & Destructor Documentation

SummitXLControllerClass::SummitXLControllerClass ( ros::NodeHandle  h)
inline

Definition at line 233 of file summit_xl_robot_control.cpp.

SummitXLControllerClass::SummitXLControllerClass ( ros::NodeHandle  h)
inline

Definition at line 230 of file summit_xl_robot_control_vrep.cpp.

Member Function Documentation

void SummitXLControllerClass::check_command_subscriber ( diagnostic_updater::DiagnosticStatusWrapper stat)
inline

Definition at line 716 of file summit_xl_robot_control.cpp.

void SummitXLControllerClass::check_command_subscriber ( diagnostic_updater::DiagnosticStatusWrapper stat)
inline

Definition at line 749 of file summit_xl_robot_control_vrep.cpp.

void SummitXLControllerClass::command_ptzCallback ( const robotnik_msgs::ptzConstPtr &  msg)
inline

Definition at line 805 of file summit_xl_robot_control.cpp.

void SummitXLControllerClass::command_ptzCallback ( const robotnik_msgs::ptzConstPtr &  msg)
inline

Definition at line 838 of file summit_xl_robot_control_vrep.cpp.

void SummitXLControllerClass::commandCallback ( const geometry_msgs::TwistConstPtr &  msg)
inline

Definition at line 794 of file summit_xl_robot_control.cpp.

void SummitXLControllerClass::commandCallback ( const geometry_msgs::TwistConstPtr &  msg)
inline

Definition at line 827 of file summit_xl_robot_control_vrep.cpp.

void SummitXLControllerClass::imuCallback ( const sensor_msgs::Imu &  imu_msg)
inline

Definition at line 812 of file summit_xl_robot_control.cpp.

void SummitXLControllerClass::imuCallback ( const sensor_msgs::Imu &  imu_msg)
inline

Definition at line 845 of file summit_xl_robot_control_vrep.cpp.

void SummitXLControllerClass::jointStateCallback ( const sensor_msgs::JointStateConstPtr &  msg)
inline

Definition at line 787 of file summit_xl_robot_control.cpp.

void SummitXLControllerClass::jointStateCallback ( const sensor_msgs::JointStateConstPtr &  msg)
inline

Definition at line 820 of file summit_xl_robot_control_vrep.cpp.

void SummitXLControllerClass::PublishOdometry ( )
inline

Definition at line 647 of file summit_xl_robot_control.cpp.

void SummitXLControllerClass::PublishOdometry ( )
inline

Definition at line 680 of file summit_xl_robot_control_vrep.cpp.

double SummitXLControllerClass::radnorm ( double  value)
inline

Definition at line 835 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::radnorm ( double  value)
inline

Definition at line 868 of file summit_xl_robot_control_vrep.cpp.

double SummitXLControllerClass::radnorm2 ( double  value)
inline

Definition at line 842 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::radnorm2 ( double  value)
inline

Definition at line 875 of file summit_xl_robot_control_vrep.cpp.

double SummitXLControllerClass::saturation ( double  u,
double  min,
double  max 
)
inline

Definition at line 828 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::saturation ( double  u,
double  min,
double  max 
)
inline

Definition at line 861 of file summit_xl_robot_control_vrep.cpp.

void SummitXLControllerClass::setCommand ( const geometry_msgs::Twist &  cmd_vel)
inline

Definition at line 733 of file summit_xl_robot_control.cpp.

void SummitXLControllerClass::setCommand ( const geometry_msgs::Twist &  cmd_vel)
inline

Definition at line 766 of file summit_xl_robot_control_vrep.cpp.

bool SummitXLControllerClass::spin ( )
inline

Definition at line 849 of file summit_xl_robot_control.cpp.

bool SummitXLControllerClass::spin ( )
inline

Definition at line 882 of file summit_xl_robot_control_vrep.cpp.

bool SummitXLControllerClass::srvCallback_GetMode ( robotnik_msgs::get_mode::Request &  request,
robotnik_msgs::get_mode::Response &  response 
)
inline

Definition at line 766 of file summit_xl_robot_control.cpp.

bool SummitXLControllerClass::srvCallback_GetMode ( robotnik_msgs::get_mode::Request &  request,
robotnik_msgs::get_mode::Response &  response 
)
inline

Definition at line 799 of file summit_xl_robot_control_vrep.cpp.

bool SummitXLControllerClass::srvCallback_SetMode ( robotnik_msgs::set_mode::Request &  request,
robotnik_msgs::set_mode::Response &  response 
)
inline

Definition at line 743 of file summit_xl_robot_control.cpp.

bool SummitXLControllerClass::srvCallback_SetMode ( robotnik_msgs::set_mode::Request &  request,
robotnik_msgs::set_mode::Response &  response 
)
inline

Definition at line 776 of file summit_xl_robot_control_vrep.cpp.

bool SummitXLControllerClass::srvCallback_SetOdometry ( robotnik_msgs::set_odometry::Request &  request,
robotnik_msgs::set_odometry::Response &  response 
)
inline

Definition at line 774 of file summit_xl_robot_control.cpp.

bool SummitXLControllerClass::srvCallback_SetOdometry ( robotnik_msgs::set_odometry::Request &  request,
robotnik_msgs::set_odometry::Response &  response 
)
inline

Definition at line 807 of file summit_xl_robot_control_vrep.cpp.

int SummitXLControllerClass::starting ( )
inline

Controller startup in realtime.

Definition at line 395 of file summit_xl_robot_control_vrep.cpp.

int SummitXLControllerClass::starting ( )
inline

Controller startup in realtime.

Definition at line 402 of file summit_xl_robot_control.cpp.

void SummitXLControllerClass::stopping ( )
inline

Controller stopping.

Definition at line 708 of file summit_xl_robot_control.cpp.

void SummitXLControllerClass::stopping ( )
inline

Controller stopping.

Definition at line 741 of file summit_xl_robot_control_vrep.cpp.

void SummitXLControllerClass::UpdateControl ( )
inline

Controller update loop.

Definition at line 430 of file summit_xl_robot_control_vrep.cpp.

void SummitXLControllerClass::UpdateControl ( )
inline

Controller update loop.

Definition at line 437 of file summit_xl_robot_control.cpp.

void SummitXLControllerClass::UpdateOdometry ( )
inline

Definition at line 601 of file summit_xl_robot_control.cpp.

void SummitXLControllerClass::UpdateOdometry ( )
inline

Definition at line 634 of file summit_xl_robot_control_vrep.cpp.

Member Data Documentation

int SummitXLControllerClass::active_kinematic_mode_

Definition at line 160 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::ang_vel_x_

Definition at line 205 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::ang_vel_y_

Definition at line 206 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::ang_vel_z_

Definition at line 207 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::angularSpeedRads_

Definition at line 172 of file summit_xl_robot_control.cpp.

geometry_msgs::Twist SummitXLControllerClass::base_vel_msg_

Definition at line 185 of file summit_xl_robot_control.cpp.

int SummitXLControllerClass::blw_pos_

Definition at line 164 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::blw_pos_topic_

Definition at line 133 of file summit_xl_robot_control.cpp.

int SummitXLControllerClass::blw_vel_

Definition at line 163 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::blw_vel_topic_

Definition at line 121 of file summit_xl_robot_control.cpp.

int SummitXLControllerClass::brw_pos_

Definition at line 164 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::brw_pos_topic_

Definition at line 132 of file summit_xl_robot_control.cpp.

int SummitXLControllerClass::brw_vel_

Definition at line 163 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::brw_vel_topic_

Definition at line 120 of file summit_xl_robot_control.cpp.

ros::Subscriber SummitXLControllerClass::cmd_sub_

Definition at line 105 of file summit_xl_robot_control.cpp.

diagnostic_updater::FunctionDiagnosticTask SummitXLControllerClass::command_freq_

Definition at line 83 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::desired_freq_

Definition at line 76 of file summit_xl_robot_control.cpp.

diagnostic_updater::Updater SummitXLControllerClass::diagnostic_

Definition at line 79 of file summit_xl_robot_control.cpp.

int SummitXLControllerClass::flw_pos_

Definition at line 164 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::flw_pos_topic_

Definition at line 131 of file summit_xl_robot_control.cpp.

int SummitXLControllerClass::flw_vel_

Definition at line 163 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::flw_vel_topic_

Definition at line 119 of file summit_xl_robot_control.cpp.

diagnostic_updater::FrequencyStatus SummitXLControllerClass::freq_diag_

Definition at line 80 of file summit_xl_robot_control.cpp.

int SummitXLControllerClass::frw_pos_

Definition at line 164 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::frw_pos_topic_

Definition at line 130 of file summit_xl_robot_control.cpp.

int SummitXLControllerClass::frw_vel_

Definition at line 163 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::frw_vel_topic_

Definition at line 118 of file summit_xl_robot_control.cpp.

ros::Subscriber SummitXLControllerClass::imu_sub_

Definition at line 221 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::joint_back_left_steer

Definition at line 138 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::joint_back_left_wheel

Definition at line 126 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::joint_back_right_steer

Definition at line 139 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::joint_back_right_wheel

Definition at line 127 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::joint_camera_pan

Definition at line 148 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::joint_camera_tilt

Definition at line 149 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::joint_front_left_steer

Definition at line 137 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::joint_front_left_wheel

Definition at line 125 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::joint_front_right_steer

Definition at line 136 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::joint_front_right_wheel

Definition at line 124 of file summit_xl_robot_control.cpp.

sensor_msgs::JointState SummitXLControllerClass::joint_state_

Definition at line 182 of file summit_xl_robot_control.cpp.

ros::Subscriber SummitXLControllerClass::joint_state_sub_

Definition at line 102 of file summit_xl_robot_control.cpp.

int SummitXLControllerClass::kinematic_modes_

Definition at line 159 of file summit_xl_robot_control.cpp.

ros::Time SummitXLControllerClass::last_command_time_

Definition at line 82 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::lin_acc_x_

Definition at line 209 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::lin_acc_y_

Definition at line 210 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::lin_acc_z_

Definition at line 211 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::linearSpeedXMps_

Definition at line 170 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::linearSpeedYMps_

Definition at line 171 of file summit_xl_robot_control.cpp.

ros::NodeHandle SummitXLControllerClass::node_handle_

Definition at line 74 of file summit_xl_robot_control.cpp.

tf::TransformBroadcaster SummitXLControllerClass::odom_broadcaster

Definition at line 227 of file summit_xl_robot_control.cpp.

ros::Publisher SummitXLControllerClass::odom_pub_

Definition at line 224 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::odom_topic_

Definition at line 145 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::orientation_w_

Definition at line 216 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::orientation_x_

Definition at line 213 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::orientation_y_

Definition at line 214 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::orientation_z_

Definition at line 215 of file summit_xl_robot_control.cpp.

int SummitXLControllerClass::pan_pos_

Definition at line 166 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::pan_pos_topic_

Definition at line 152 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::pos_ref_pan_

Definition at line 192 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::pos_ref_tilt_

Definition at line 193 of file summit_xl_robot_control.cpp.

ros::NodeHandle SummitXLControllerClass::private_node_handle_

Definition at line 75 of file summit_xl_robot_control.cpp.

ros::Subscriber SummitXLControllerClass::ptz_sub_

Definition at line 108 of file summit_xl_robot_control.cpp.

bool SummitXLControllerClass::publish_odom_tf_

Definition at line 219 of file summit_xl_robot_control.cpp.

bool SummitXLControllerClass::read_state_

Definition at line 196 of file summit_xl_robot_control.cpp.

ros::Publisher SummitXLControllerClass::ref_pos_blw_

Definition at line 95 of file summit_xl_robot_control.cpp.

ros::Publisher SummitXLControllerClass::ref_pos_brw_

Definition at line 96 of file summit_xl_robot_control.cpp.

ros::Publisher SummitXLControllerClass::ref_pos_flw_

Definition at line 93 of file summit_xl_robot_control.cpp.

ros::Publisher SummitXLControllerClass::ref_pos_frw_

Definition at line 94 of file summit_xl_robot_control.cpp.

ros::Publisher SummitXLControllerClass::ref_pos_pan_

Definition at line 98 of file summit_xl_robot_control.cpp.

ros::Publisher SummitXLControllerClass::ref_pos_scissor_

Definition at line 97 of file summit_xl_robot_control.cpp.

ros::Publisher SummitXLControllerClass::ref_pos_tilt_

Definition at line 99 of file summit_xl_robot_control.cpp.

ros::Publisher SummitXLControllerClass::ref_vel_blw_

Definition at line 91 of file summit_xl_robot_control.cpp.

ros::Publisher SummitXLControllerClass::ref_vel_brw_

Definition at line 92 of file summit_xl_robot_control.cpp.

ros::Publisher SummitXLControllerClass::ref_vel_flw_

Definition at line 89 of file summit_xl_robot_control.cpp.

ros::Publisher SummitXLControllerClass::ref_vel_frw_

Definition at line 90 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::robot_model_

Definition at line 86 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::robot_pose_pa_

Definition at line 177 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::robot_pose_px_

Definition at line 175 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::robot_pose_py_

Definition at line 176 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::robot_pose_vx_

Definition at line 178 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::robot_pose_vy_

Definition at line 179 of file summit_xl_robot_control.cpp.

int SummitXLControllerClass::scissor_pos_

Definition at line 165 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::scissor_pos_topic_

Definition at line 142 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::scissor_prismatic_joint

Definition at line 156 of file summit_xl_robot_control.cpp.

ros::ServiceServer SummitXLControllerClass::srv_GetMode_

Definition at line 115 of file summit_xl_robot_control.cpp.

ros::ServiceServer SummitXLControllerClass::srv_SetMode_

Definition at line 114 of file summit_xl_robot_control.cpp.

ros::ServiceServer SummitXLControllerClass::srv_SetOdometry_

Definition at line 113 of file summit_xl_robot_control.cpp.

diagnostic_updater::HeaderlessTopicDiagnostic * SummitXLControllerClass::subs_command_freq

Definition at line 81 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::summit_xl_d_tracks_m_

Definition at line 200 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::summit_xl_trackwidth_

Definition at line 202 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::summit_xl_wheel_diameter_

Definition at line 199 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::summit_xl_wheelbase_

Definition at line 201 of file summit_xl_robot_control.cpp.

int SummitXLControllerClass::tilt_pos_

Definition at line 166 of file summit_xl_robot_control.cpp.

std::string SummitXLControllerClass::tilt_pos_topic_

Definition at line 153 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::v_ref_x_

Definition at line 188 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::v_ref_y_

Definition at line 189 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::v_ref_z_

Definition at line 191 of file summit_xl_robot_control.cpp.

double SummitXLControllerClass::w_ref_

Definition at line 190 of file summit_xl_robot_control.cpp.


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


summit_x_robot_control
Author(s): Roberto Guzman
autogenerated on Mon Jun 10 2019 15:17:30