diff --git a/pps_ws/src/d_fall_pps/crazyradio/CrazyRadio.py b/pps_ws/src/d_fall_pps/crazyradio/CrazyRadio.py index edc8997218b15e8ce16a14c9c923c681e506bbb5..0bd6519de95e368b2f8948798ad3728844ad0312 100755 --- a/pps_ws/src/d_fall_pps/crazyradio/CrazyRadio.py +++ b/pps_ws/src/d_fall_pps/crazyradio/CrazyRadio.py @@ -75,6 +75,12 @@ class PPSRadioClient: self.status_pub = rospy.Publisher(node_name + '/CrazyRadioStatus', Int32, queue_size=1) # Initialize the CrazyFlie and add callbacks + self._init_cf() + + # Connect to the Crazyflie + self.connect() + + def _init_cf(self): self._cf = Crazyflie() # Add callbacks that get executed depending on the connection _status. @@ -84,9 +90,6 @@ class PPSRadioClient: self._cf.connection_lost.add_callback(self._connection_lost) self.change_status_to(DISCONNECTED) - # Connect to the Crazyflie - print "Connecting to %s" % link_uri - self.connect() def change_status_to(self, new_status): print "status changed to: %s" % new_status @@ -97,6 +100,7 @@ class PPSRadioClient: return self._status def connect(self): + print "Connecting to %s" % self.link_uri self.change_status_to(CONNECTING) rospy.loginfo("connecting...") self._cf.open_link(self.link_uri) @@ -125,6 +129,26 @@ class PPSRadioClient: def _logging_error(self, logconf, msg): print "Error when logging %s" % logconf.name + # def _init_logging(self): + + def _start_logging(self): + self.logconf = LogConfig("LoggingTest", 100) # second variable is freq in ms + self.logconf.add_variable("stabilizer.roll", "float"); + self.logconf.add_variable("stabilizer.pitch", "float"); + self.logconf.add_variable("stabilizer.yaw", "float"); + self.logconf.add_variable("pm.vbat", "float"); + + self._cf.log.add_config(self.logconf) + if self.logconf.valid: + self.logconf.data_received_cb.add_callback(self._data_received_callback) + self.logconf.error_cb.add_callback(self._logging_error) + print "logconf valid" + else: + print "logconf invalid" + + self.logconf.start() + print "logconf start" + def _connected(self, link_uri): """ This callback is executed as soon as the connection to the @@ -132,23 +156,8 @@ class PPSRadioClient: """ self.change_status_to(CONNECTED) rospy.loginfo("Connection to %s successful: " % link_uri) - - # Config for Logging - logconf = LogConfig("LoggingTest", 100) # second variable is freq in ms - logconf.add_variable("stabilizer.roll", "float"); - logconf.add_variable("stabilizer.pitch", "float"); - logconf.add_variable("stabilizer.yaw", "float"); - logconf.add_variable("pm.vbat", "float"); - - self._cf.log.add_config(logconf) - if logconf.valid: - logconf.data_received_cb.add_callback(self._data_received_callback) - logconf.error_cb.add_callback(self._logging_error) - logconf.start() - print "logconf valid" - else: - print "logconf invalid" + self._start_logging() def _connection_failed(self, link_uri, msg): @@ -167,8 +176,11 @@ class PPSRadioClient: """Callback when the Crazyflie is disconnected (called in all cases)""" self.change_status_to(DISCONNECTED) rospy.logwarn("Disconnected from %s" % link_uri) - bag.close() - rospy.loginfo("bag closed") + + self.logconf.stop() + rospy.loginfo("logconf stopped") + self.logconf.delete() + rospy.loginfo("logconf deleted") def _send_to_commander(self,roll, pitch, yaw, thrust, cmd1, cmd2, cmd3, cmd4, mode): @@ -238,5 +250,8 @@ if __name__ == '__main__': #wait for client to send its commands time.sleep(1.0) + bag.close() + rospy.loginfo("bag closed") + cf_client._cf.close_link() rospy.loginfo("Link closed")