NASA Astrobee Robot Software  0.19.1
Flight software for the Astrobee robots operating inside the International Space Station.
ros_battery_state.h
Go to the documentation of this file.
1 /* Copyright (c) 2017, United States Government, as represented by the
2  * Administrator of the National Aeronautics and Space Administration.
3  *
4  * All rights reserved.
5  *
6  * The Astrobee platform is licensed under the Apache License, Version 2.0
7  * (the "License"); you may not use this file except in compliance with the
8  * License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15  * License for the specific language governing permissions and limitations
16  * under the License.
17  */
18 
19 
20 #ifndef DDS_ROS_BRIDGE_ROS_BATTERY_STATE_H_
21 #define DDS_ROS_BRIDGE_ROS_BATTERY_STATE_H_
22 
23 #include <string>
24 #include <cstring>
25 #include <memory>
26 
27 #include "knDds/DdsTypedSupplier.h"
28 
29 #include "dds_ros_bridge/ros_sub_rapid_pub.h"
30 #include "dds_ros_bridge/util.h"
31 
32 #include "ff_hw_msgs/EpsBatteryLocation.h"
33 #include "sensor_msgs/BatteryState.h"
34 #include "sensor_msgs/Temperature.h"
35 
36 #include "dds_msgs/AstrobeeConstants.h"
37 #include "dds_msgs/EpsStateSupport.h"
38 #include "dds_msgs/EpsConfigSupport.h"
39 
40 #include "rapidUtil/RapidHelper.h"
41 
42 namespace ff {
43 
45  public:
46  RosBatteryStateToRapid(std::string const& sub_topic_battery_state_TL,
47  std::string const& sub_topic_battery_state_TR,
48  std::string const& sub_topic_battery_state_BL,
49  std::string const& sub_topic_battery_state_BR,
50  std::string const& sub_topic_battery_temp_TL,
51  std::string const& sub_topic_battery_temp_TR,
52  std::string const& sub_topic_battery_temp_BL,
53  std::string const& sub_topic_battery_temp_BR,
54  std::string const& pub_topic,
55  ros::NodeHandle const& nh,
56  const unsigned int queue_size = 10);
57 
58  void AddTempToState(rapid::ext::astrobee::BatterySlot slot, float temp);
59  rapid::ext::astrobee::BatterySlot ConvertBatteryLoc(std::string const& slot);
60  void SetBatteryTimeMultiple(int multiple);
61  void StateCallback(sensor_msgs::BatteryStateConstPtr const& state);
62  void TempTLCallback(sensor_msgs::TemperatureConstPtr const& temp);
63  void TempTRCallback(sensor_msgs::TemperatureConstPtr const& temp);
64  void TempBLCallback(sensor_msgs::TemperatureConstPtr const& temp);
65  void TempBRCallback(sensor_msgs::TemperatureConstPtr const& temp);
66 
67  private:
68  using ConfigSupplier = kn::DdsTypedSupplier<rapid::ext::astrobee::EpsConfig>;
69  using ConfigSupplierPtr = std::unique_ptr<ConfigSupplier>;
70 
71  ConfigSupplierPtr config_supplier_;
72 
73  using StateSupplier = kn::DdsTypedSupplier<rapid::ext::astrobee::EpsState>;
74  using StateSupplierPtr = std::unique_ptr<StateSupplier>;
75 
76  StateSupplierPtr state_supplier_;
77 
78  ros::Subscriber sub_battery_state_tl_, sub_battery_state_tr_;
79  ros::Subscriber sub_battery_state_bl_, sub_battery_state_br_;
80  ros::Subscriber sub_battery_temp_tl_, sub_battery_temp_tr_;
81  ros::Subscriber sub_battery_temp_bl_, sub_battery_temp_br_;
82 
83  int battery_time_multiple_;
84 };
85 
86 } // end namespace ff
87 
88 #endif // DDS_ROS_BRIDGE_ROS_BATTERY_STATE_H_
ff::RosBatteryStateToRapid::ConvertBatteryLoc
rapid::ext::astrobee::BatterySlot ConvertBatteryLoc(std::string const &slot)
Definition: ros_battery_state.cc:104
ff::RosBatteryStateToRapid::TempTLCallback
void TempTLCallback(sensor_msgs::TemperatureConstPtr const &temp)
Definition: ros_battery_state.cc:247
ff::RosBatteryStateToRapid::TempBLCallback
void TempBLCallback(sensor_msgs::TemperatureConstPtr const &temp)
Definition: ros_battery_state.cc:257
ff::RosBatteryStateToRapid::TempTRCallback
void TempTRCallback(sensor_msgs::TemperatureConstPtr const &temp)
Definition: ros_battery_state.cc:252
ff::RosBatteryStateToRapid
Definition: ros_battery_state.h:44
ff::RosSubRapidPub
Definition: ros_sub_rapid_pub.h:30
ff
Definition: generic_rapid_msg_ros_pub.h:36
ff::RosBatteryStateToRapid::StateCallback
void StateCallback(sensor_msgs::BatteryStateConstPtr const &state)
Definition: ros_battery_state.cc:125
ff::RosBatteryStateToRapid::SetBatteryTimeMultiple
void SetBatteryTimeMultiple(int multiple)
Definition: ros_battery_state.cc:121
ff::RosBatteryStateToRapid::TempBRCallback
void TempBRCallback(sensor_msgs::TemperatureConstPtr const &temp)
Definition: ros_battery_state.cc:262
state
uint8_t state
Definition: signal_lights.h:90
ff::RosBatteryStateToRapid::AddTempToState
void AddTempToState(rapid::ext::astrobee::BatterySlot slot, float temp)
Definition: ros_battery_state.cc:91
ff::RosBatteryStateToRapid::RosBatteryStateToRapid
RosBatteryStateToRapid(std::string const &sub_topic_battery_state_TL, std::string const &sub_topic_battery_state_TR, std::string const &sub_topic_battery_state_BL, std::string const &sub_topic_battery_state_BR, std::string const &sub_topic_battery_temp_TL, std::string const &sub_topic_battery_temp_TR, std::string const &sub_topic_battery_temp_BL, std::string const &sub_topic_battery_temp_BR, std::string const &pub_topic, ros::NodeHandle const &nh, const unsigned int queue_size=10)
Definition: ros_battery_state.cc:21