Program Listing for File create_driver.h
↰ Return to documentation for file (/tmp/ws/src/create_robot/create_driver/include/create_driver/create_driver.h
)
#ifndef CREATE_DRIVER__CREATE_DRIVER_H_
#define CREATE_DRIVER__CREATE_DRIVER_H_
#include <string>
#include "create_msgs/msg/charging_state.hpp"
#include "create_msgs/msg/mode.hpp"
#include "create_msgs/msg/bumper.hpp"
#include "create_msgs/msg/cliff.hpp"
#include "create_msgs/msg/define_song.hpp"
#include "create_msgs/msg/play_song.hpp"
#include "create_msgs/msg/motor_setpoint.hpp"
#include "create/create.h"
#include "diagnostic_updater/diagnostic_updater.hpp"
#include "geometry_msgs/msg/transform_stamped.hpp"
#include "geometry_msgs/msg/twist.hpp"
#include "nav_msgs/msg/odometry.hpp"
#include "rclcpp/rclcpp.hpp"
#include "sensor_msgs/msg/joint_state.hpp"
#include "std_msgs/msg/bool.hpp"
#include "std_msgs/msg/empty.hpp"
#include "std_msgs/msg/float32.hpp"
#include "std_msgs/msg/int16.hpp"
#include "std_msgs/msg/u_int16.hpp"
#include "std_msgs/msg/u_int8_multi_array.hpp"
#include "tf2_ros/transform_broadcaster.h"
static const double COVARIANCE[36] = {1e-5, 1e-5, 0.0, 0.0, 0.0, 1e-5, // NOLINT(whitespace/braces)
1e-5, 1e-5, 0.0, 0.0, 0.0, 1e-5,
0.0, 0.0, 1e-5, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 1e-5, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 1e-5, 0.0,
1e-5, 1e-5, 0.0, 0.0, 0.0, 1e-5};
class CreateDriver : public rclcpp::Node
{
private:
create::Create* robot_;
create::RobotModel model_;
rclcpp::Subscription<geometry_msgs::msg::Twist>::SharedPtr cmd_vel_sub_;
rclcpp::Subscription<std_msgs::msg::Bool>::SharedPtr debris_led_sub_;
rclcpp::Subscription<std_msgs::msg::Bool>::SharedPtr spot_led_sub_;
rclcpp::Subscription<std_msgs::msg::Bool>::SharedPtr dock_led_sub_;
rclcpp::Subscription<std_msgs::msg::Bool>::SharedPtr check_led_sub_;
rclcpp::Subscription<std_msgs::msg::UInt8MultiArray>::SharedPtr power_led_sub_;
rclcpp::Subscription<std_msgs::msg::UInt8MultiArray>::SharedPtr set_ascii_sub_;
rclcpp::Subscription<std_msgs::msg::Empty>::SharedPtr dock_sub_;
rclcpp::Subscription<std_msgs::msg::Empty>::SharedPtr undock_sub_;
rclcpp::Subscription<create_msgs::msg::DefineSong>::SharedPtr define_song_sub_;
rclcpp::Subscription<create_msgs::msg::PlaySong>::SharedPtr play_song_sub_;
rclcpp::Subscription<create_msgs::msg::MotorSetpoint>::SharedPtr side_brush_motor_sub_;
rclcpp::Subscription<create_msgs::msg::MotorSetpoint>::SharedPtr main_brush_motor_sub_;
rclcpp::Subscription<create_msgs::msg::MotorSetpoint>::SharedPtr vacuum_motor_sub_;
rclcpp::Publisher<nav_msgs::msg::Odometry>::SharedPtr odom_pub_;
rclcpp::Publisher<std_msgs::msg::Empty>::SharedPtr clean_btn_pub_;
rclcpp::Publisher<std_msgs::msg::Empty>::SharedPtr day_btn_pub_;
rclcpp::Publisher<std_msgs::msg::Empty>::SharedPtr hour_btn_pub_;
rclcpp::Publisher<std_msgs::msg::Empty>::SharedPtr min_btn_pub_;
rclcpp::Publisher<std_msgs::msg::Empty>::SharedPtr dock_btn_pub_;
rclcpp::Publisher<std_msgs::msg::Empty>::SharedPtr spot_btn_pub_;
rclcpp::Publisher<std_msgs::msg::Float32>::SharedPtr voltage_pub_;
rclcpp::Publisher<std_msgs::msg::Float32>::SharedPtr current_pub_;
rclcpp::Publisher<std_msgs::msg::Float32>::SharedPtr charge_pub_;
rclcpp::Publisher<std_msgs::msg::Float32>::SharedPtr charge_ratio_pub_;
rclcpp::Publisher<std_msgs::msg::Float32>::SharedPtr capacity_pub_;
rclcpp::Publisher<std_msgs::msg::Int16>::SharedPtr temperature_pub_;
rclcpp::Publisher<create_msgs::msg::ChargingState>::SharedPtr charging_state_pub_;
rclcpp::Publisher<std_msgs::msg::UInt16>::SharedPtr omni_char_pub_;
rclcpp::Publisher<create_msgs::msg::Mode>::SharedPtr mode_pub_;
rclcpp::Publisher<create_msgs::msg::Bumper>::SharedPtr bumper_pub_;
rclcpp::Publisher<std_msgs::msg::Empty>::SharedPtr wheeldrop_pub_;
rclcpp::Publisher<sensor_msgs::msg::JointState>::SharedPtr wheel_joint_pub_;
rclcpp::Publisher<create_msgs::msg::Cliff>::SharedPtr cliff_pub_;
rclcpp::TimerBase::SharedPtr loop_timer_;
tf2_ros::TransformBroadcaster tf_broadcaster_;
diagnostic_updater::Updater diagnostics_;
create_msgs::msg::Mode mode_msg_;
create_msgs::msg::ChargingState charging_state_msg_;
create_msgs::msg::Bumper bumper_msg_;
create_msgs::msg::Cliff cliff_msg_;
nav_msgs::msg::Odometry odom_msg_;
geometry_msgs::msg::TransformStamped tf_odom_;
rclcpp::Time last_cmd_vel_time_;
std_msgs::msg::Empty empty_msg_;
std_msgs::msg::Float32 float32_msg_;
std_msgs::msg::UInt16 uint16_msg_;
std_msgs::msg::Int16 int16_msg_;
sensor_msgs::msg::JointState joint_state_msg_;
bool is_running_slowly_;
// ROS params
std::string dev_;
std::string base_frame_;
std::string odom_frame_;
rclcpp::Duration latch_duration_;
double loop_hz_;
bool publish_tf_;
int baud_;
bool oi_mode_workaround_;
void cmdVelCallback(geometry_msgs::msg::Twist::UniquePtr msg);
void debrisLEDCallback(std_msgs::msg::Bool::UniquePtr msg);
void spotLEDCallback(std_msgs::msg::Bool::UniquePtr msg);
void dockLEDCallback(std_msgs::msg::Bool::UniquePtr msg);
void checkLEDCallback(std_msgs::msg::Bool::UniquePtr msg);
void powerLEDCallback(std_msgs::msg::UInt8MultiArray::UniquePtr msg);
void setASCIICallback(std_msgs::msg::UInt8MultiArray::UniquePtr msg);
void dockCallback(std_msgs::msg::Empty::UniquePtr msg);
void undockCallback(std_msgs::msg::Empty::UniquePtr msg);
void defineSongCallback(create_msgs::msg::DefineSong::UniquePtr msg);
void playSongCallback(create_msgs::msg::PlaySong::UniquePtr msg);
void sideBrushMotor(create_msgs::msg::MotorSetpoint::UniquePtr msg);
void mainBrushMotor(create_msgs::msg::MotorSetpoint::UniquePtr msg);
void vacuumBrushMotor(create_msgs::msg::MotorSetpoint::UniquePtr msg);
bool update();
void updateBatteryDiagnostics(diagnostic_updater::DiagnosticStatusWrapper& stat);
void updateSafetyDiagnostics(diagnostic_updater::DiagnosticStatusWrapper& stat);
void updateSerialDiagnostics(diagnostic_updater::DiagnosticStatusWrapper& stat);
void updateModeDiagnostics(diagnostic_updater::DiagnosticStatusWrapper& stat);
void updateDriverDiagnostics(diagnostic_updater::DiagnosticStatusWrapper& stat);
void publishOdom();
void publishJointState();
void publishBatteryInfo();
void publishButtonPresses() const;
void publishOmniChar();
void publishMode();
void publishBumperInfo();
void publishWheeldrop();
void publishCliff();
public:
CreateDriver();
~CreateDriver();
virtual void spinOnce();
}; // class CreateDriver
#endif // CREATE_DRIVER__CREATE_DRIVER_H_