Skip to content

Commit 08b790d

Browse files
author
Bradley Schmerl
committed
2 parents 699e20b + 759b5a8 commit 08b790d

File tree

1 file changed

+31
-5
lines changed

1 file changed

+31
-5
lines changed

ig_action_server/src/cp1_instructions.py

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,27 @@
33
import rospy
44
from brass_gazebo_config_manager.srv import *
55
from brass_gazebo_battery.srv import *
6+
from std_msgs.msg import Float64
7+
import os
8+
import json
69

710

811
class CP1_Instructions(object):
912
ros_node = '/battery_monitor_client'
1013
model_name = '/battery_demo_model'
14+
config_file = os.path.expanduser("~/cp1/plugins_config.json")
15+
sleep_interval = 5
1116

1217
def __init__(self):
1318
self.set_configuration_srv = rospy.ServiceProxy(self.ros_node + self.model_name + '/set_robot_configuration', SetConfig)
1419
self.set_charging_srv = rospy.ServiceProxy(self.ros_node + self.model_name + '/set_charging', SetCharging)
1520

21+
with open(self.config_file) as db:
22+
data = json.load(db)
23+
self.battery_capacity = data['battery_capacity']
24+
self.charging_rate = data['charging_rate']
25+
self.battery_charge = self.battery_capacity
26+
1627
def set_config(self, config_id):
1728
print("Setting configuration to " + config_id)
1829
res = self.set_configuration_srv(config_id)
@@ -24,8 +35,8 @@ def set_config(self, config_id):
2435
def set_charging(self, charging):
2536
return self.set_charging_srv(charging)
2637

27-
def dock(self, seconds):
28-
rospy.loginfo("The bot is docked and start charging for {0} seconds".format(seconds))
38+
def dock(self):
39+
rospy.loginfo("The bot is docked and start charging")
2940
self.set_charging(1)
3041
return True
3142

@@ -34,8 +45,23 @@ def undock(self):
3445
rospy.loginfo("The bot is now undocked")
3546
return True
3647

37-
def charge(self, seconds):
38-
self.dock(seconds)
39-
rospy.sleep(rospy.Duration.from_sec(seconds))
48+
def charge(self):
49+
self.dock()
50+
while not self.is_fully_charged():
51+
rospy.sleep(rospy.Duration.from_sec(self.sleep_interval))
4052
self.undock()
4153
return True, "Charging is done"
54+
55+
def is_fully_charged(self):
56+
if self.battery_charge == self.battery_capacity:
57+
rospy.loginfo("Battery is fully charged.")
58+
return True
59+
else:
60+
return False
61+
62+
def get_charge(self, msg):
63+
self.battery_charge = msg.data
64+
65+
def track_battery_charge(self):
66+
"""starts monitoring battery and update battery_charge"""
67+
rospy.Subscriber("/mobile_base/commands/charge_level_mwh", Float64, self.get_charge)

0 commit comments

Comments
 (0)