X-Git-Url: https://defiant.homedns.org/gitweb/?p=ros_wild_thumper.git;a=blobdiff_plain;f=scripts%2Fwt_node.py;h=ab58496fca7b6f0220fe05216632f3d8c0811a4e;hp=bb6fbb02f0ef832f4c30da7dac25e0d767e60cd7;hb=0338dec7b42d0454df844491f9404df5207e1382;hpb=065571396c4327c12198fa8b368f7e17eb633861 diff --git a/scripts/wt_node.py b/scripts/wt_node.py index bb6fbb0..ab58496 100755 --- a/scripts/wt_node.py +++ b/scripts/wt_node.py @@ -13,7 +13,7 @@ from geometry_msgs.msg import Twist from nav_msgs.msg import Odometry from diagnostic_msgs.msg import DiagnosticArray, DiagnosticStatus, KeyValue from dynamic_reconfigure.server import Server -from sensor_msgs.msg import Imu, Range +from sensor_msgs.msg import Imu, Range, BatteryState from wild_thumper.msg import LedStripe from wild_thumper.cfg import WildThumperConfig @@ -65,6 +65,7 @@ class MoveBase: self.pub_range_bwd = rospy.Publisher("range_backward", Range, queue_size=16) self.pub_range_left = rospy.Publisher("range_left", Range, queue_size=16) self.pub_range_right = rospy.Publisher("range_right", Range, queue_size=16) + self.pub_battery = rospy.Publisher("battery", BatteryState, queue_size=16) self.cmd_vel = None self.cur_vel = (0, 0) self.bMotorManual = False @@ -121,6 +122,7 @@ class MoveBase: def execute_dyn_reconf(self, config, level): self.bClipRangeSensor = config["range_sensor_clip"] self.range_sensor_max = config["range_sensor_max"] + self.range_sensor_fov = config["range_sensor_fov"] self.odom_covar_xy = config["odom_covar_xy"] self.odom_covar_angle = config["odom_covar_angle"] self.rollover_protect = config["rollover_protect"] @@ -211,6 +213,20 @@ class MoveBase: msg.status.append(stat) self.pub_diag.publish(msg) + if self.pub_battery.get_num_connections() > 0: + batmsg = BatteryState() + batmsg.header.stamp = rospy.Time.now() + batmsg.voltage = volt + batmsg.current = float('nan') + batmsg.charge = float('nan') + batmsg.capacity = float('nan') + batmsg.design_capacity = 5.0 + batmsg.percentage = float('nan') + batmsg.power_supply_status = BatteryState.POWER_SUPPLY_STATUS_DISCHARGING + batmsg.power_supply_health = BatteryState.POWER_SUPPLY_HEALTH_UNKNOWN + batmsg.power_supply_technology = BatteryState.POWER_SUPPLY_TECHNOLOGY_NIMH + self.pub_battery.publish(batmsg) + if volt < 7 and (rospy.Time.now() - self.volt_last_warn).to_sec() > 10: rospy.logerr("Voltage critical: %.2fV" % (volt)) self.volt_last_warn = rospy.Time.now() @@ -320,7 +336,7 @@ class MoveBase: def get_dist_forward_left(self): if self.pub_range_fwd_left.get_num_connections() > 0: dist = self.read_dist_srf(0x15) - self.send_range(self.pub_range_fwd_left, "sonar_forward_left", Range.ULTRASOUND, dist, 0.04, self.range_sensor_max, 30) + self.send_range(self.pub_range_fwd_left, "sonar_forward_left", Range.ULTRASOUND, dist, 0.04, self.range_sensor_max, self.range_sensor_fov) def update_dist_forward_left(self): if self.pub_range_fwd_left.get_num_connections() > 0: @@ -329,7 +345,7 @@ class MoveBase: def get_dist_backward(self): if self.pub_range_bwd.get_num_connections() > 0: dist = self.read_dist_srf(0x17) - self.send_range(self.pub_range_bwd, "sonar_backward", Range.ULTRASOUND, dist, 0.04, self.range_sensor_max, 30) + self.send_range(self.pub_range_bwd, "sonar_backward", Range.ULTRASOUND, dist, 0.04, self.range_sensor_max, self.range_sensor_fov) def update_dist_backward(self): if self.pub_range_bwd.get_num_connections() > 0: @@ -338,7 +354,7 @@ class MoveBase: def get_dist_forward_right(self): if self.pub_range_fwd_right.get_num_connections() > 0: dist = self.read_dist_srf(0x19) - self.send_range(self.pub_range_fwd_right, "sonar_forward_right", Range.ULTRASOUND, dist, 0.04, self.range_sensor_max, 30) + self.send_range(self.pub_range_fwd_right, "sonar_forward_right", Range.ULTRASOUND, dist, 0.04, self.range_sensor_max, self.range_sensor_fov) def update_dist_forward_right(self): if self.pub_range_fwd_right.get_num_connections() > 0: