diff --git a/pps_ws/src/d_fall_pps/crazyradio/CrazyRadio.py b/pps_ws/src/d_fall_pps/crazyradio/CrazyRadio.py index dd2b8629797f5b784ae4e9a5e9e6ede9b75850ce..62da8744dd3c95813cd3e5c31f61225f2a39fba5 100755 --- a/pps_ws/src/d_fall_pps/crazyradio/CrazyRadio.py +++ b/pps_ws/src/d_fall_pps/crazyradio/CrazyRadio.py @@ -34,9 +34,15 @@ from cflib.crazyflie.log import LogConfig # Logging settings logging.basicConfig(level=logging.ERROR) -CONTROLLER_MOTOR = 2 -CONTROLLER_ANGLE = 1 -CONTROLLER_RATE = 0 +# CONTROLLER_MOTOR = 2 +# CONTROLLER_ANGLE = 1 +# CONTROLLER_RATE = 0 + + +TYPE_PPS_MOTORS = 6 +TYPE_PPS_RATE = 7 +TYPE_PPS_ANGLE = 8 + RAD_TO_DEG = 57.296 # CrazyRadio states: @@ -216,13 +222,30 @@ class PPSRadioClient: self.logconf.delete() rospy.loginfo("logconf deleted") + def _send_to_commander_motor(self, cmd1, cmd2, cmd3, cmd4): + pk = CRTPPacket() + pk.port = CRTPPort.COMMANDER_GENERIC + pk.data = struct.pack('<BHHHH', TYPE_PPS_MOTORS, cmd1, cmd2, cmd3, cmd4) + self._cf.send_packet(pk) + + def _send_to_commander_rate(self, cmd1, cmd2, cmd3, cmd4, roll_rate, pitch_rate, yaw_rate): + pk = CRTPPacket() + pk.port = CRTPPort.COMMANDER_GENERIC + pk.data = struct.pack('<BHHHHfff', TYPE_PPS_RATE, cmd1, cmd2, cmd3, cmd4, roll_rate, pitch_rate, yaw_rate) + self._cf.send_packet(pk) - def _send_to_commander(self,roll, pitch, yaw, thrust, cmd1, cmd2, cmd3, cmd4, mode): + def _send_to_commander_angle(self, cmd1, cmd2, cmd3, cmd4, roll, pitch, yaw): pk = CRTPPacket() - pk.port = CRTPPort.COMMANDER - pk.data = struct.pack('<fffHHHHHH', roll * RAD_TO_DEG, pitch * RAD_TO_DEG, yaw * RAD_TO_DEG, thrust, cmd1, cmd2, cmd3, cmd4, mode) + pk.port = CRTPPort.COMMANDER_GENERIC + pk.data = struct.pack('<BHHHHfff', TYPE_PPS_ANGLE, cmd1, cmd2, cmd3, cmd4, roll, pitch, yaw) self._cf.send_packet(pk) + # def _send_to_commander(self,roll, pitch, yaw, thrust, cmd1, cmd2, cmd3, cmd4, mode): + # pk = CRTPPacket() + # pk.port = CRTPPort.COMMANDER + # pk.data = struct.pack('<fffHHHHHH', roll * RAD_TO_DEG, pitch * RAD_TO_DEG, yaw * RAD_TO_DEG, thrust, cmd1, cmd2, cmd3, cmd4, mode) + # self._cf.send_packet(pk) + def crazyRadioCommandCallback(self, msg): """Callback to tell CrazyRadio to reconnect""" print "crazyRadio command received %s" % msg.data @@ -249,8 +272,15 @@ def controlCommandCallback(data): #cmd1..4 must not be 0, as crazyflie onboard controller resets! #pitch and yaw are inverted on crazyflie controller - cf_client._send_to_commander(data.roll, -data.pitch, -data.yaw, 0, data.motorCmd1, data.motorCmd2, data.motorCmd3, data.motorCmd4, data.onboardControllerType) + if data.onboardControllerType == TYPE_PPS_MOTORS: + cf_client._send_to_commander_motor(data.motorCmd1, data.motorCmd2, data.motorCmd3, data.motorCmd4) + + elif data.onboardControllerType == TYPE_PPS_RATE: + cf_client._send_to_commander_rate(data.motorCmd1, data.motorCmd2, data.motorCmd3, data.motorCmd4, data.roll, -data.pitch, -data.yaw) + elif data.onboardControllerType == TYPE_PPS_ANGLE: + cf_client._send_to_commander_angle(data.motorCmd1, data.motorCmd2, data.motorCmd3, data.motorCmd4, data.roll, -data.pitch, -data.yaw) + # cf_client._send_to_commander(data.roll, -data.pitch, -data.yaw, 0, data.motorCmd1, data.motorCmd2, data.motorCmd3, data.motorCmd4, data.onboardControllerType) diff --git a/pps_ws/src/d_fall_pps/crazyradio/TestCF.py b/pps_ws/src/d_fall_pps/crazyradio/TestCF.py index 2682260ef4dbaf1dde6d0eb5dd081e8b79586c60..c5fa4f44fad954a0c86f728de59046aade762bd3 100755 --- a/pps_ws/src/d_fall_pps/crazyradio/TestCF.py +++ b/pps_ws/src/d_fall_pps/crazyradio/TestCF.py @@ -204,7 +204,7 @@ class PPSRadioClient: def _send_to_commander_angle(self, cmd1, cmd2, cmd3, cmd4, roll, pitch, yaw): pk = CRTPPacket() pk.port = CRTPPort.COMMANDER_GENERIC - pk.data = struct.pack('<BHHHHfff', TYPE_PPSRATE, cmd1, cmd2, cmd3, cmd4, roll, pitch, yaw) + pk.data = struct.pack('<BHHHHfff', TYPE_PPSANGLE, cmd1, cmd2, cmd3, cmd4, roll, pitch, yaw) self._cf.send_packet(pk) if __name__ == '__main__': diff --git a/pps_ws/src/d_fall_pps/param/Crazyflie.db b/pps_ws/src/d_fall_pps/param/Crazyflie.db index 9dd75d26b0925cecb259b967c253eb7d0ef2c046..71d3eb1f915fc239dbf48949a5b555afdc5533c1 100644 --- a/pps_ws/src/d_fall_pps/param/Crazyflie.db +++ b/pps_ws/src/d_fall_pps/param/Crazyflie.db @@ -1 +1 @@ -8,PPS_CF04,0/24/2M,0,-0.33,-1.3,-0.2,1.39,0.34,2 +6,PPS_CF04,0/24/2M/E7E7E7E704,0,-1.18,-0.65,-0.2,0.93,1.04,2 diff --git a/pps_ws/src/d_fall_pps/src/CircleControllerService.cpp b/pps_ws/src/d_fall_pps/src/CircleControllerService.cpp index 233cb9ffa44a6d69479f3c3f407b985667384d7e..6a3fe81157a80e615719284d78cd4bc6f7cee4e1 100755 --- a/pps_ws/src/d_fall_pps/src/CircleControllerService.cpp +++ b/pps_ws/src/d_fall_pps/src/CircleControllerService.cpp @@ -27,7 +27,7 @@ #include "d_fall_pps/Controller.h" #define PI 3.1415926535 -#define RATE_CONTROLLER 0 +#define RATE_CONTROLLER 7 using namespace d_fall_pps; diff --git a/pps_ws/src/d_fall_pps/src/FollowCrazyflieService.cpp b/pps_ws/src/d_fall_pps/src/FollowCrazyflieService.cpp index 62c89ddea729fba9ea4aeb5a014f2ca873ad887a..1a90940541e467478cd608b4bc230ded1666e71e 100755 --- a/pps_ws/src/d_fall_pps/src/FollowCrazyflieService.cpp +++ b/pps_ws/src/d_fall_pps/src/FollowCrazyflieService.cpp @@ -27,7 +27,7 @@ #include "d_fall_pps/Controller.h" #define PI 3.1415926535 -#define RATE_CONTROLLER 0 +#define RATE_CONTROLLER 7 using namespace d_fall_pps; diff --git a/pps_ws/src/d_fall_pps/src/FollowN_1Service.cpp b/pps_ws/src/d_fall_pps/src/FollowN_1Service.cpp index 1e097efdd9eee649825a1800f4cf7b2757c221ad..804618dc76395d1fca25ce4d9074913a5c5ddb2e 100644 --- a/pps_ws/src/d_fall_pps/src/FollowN_1Service.cpp +++ b/pps_ws/src/d_fall_pps/src/FollowN_1Service.cpp @@ -27,7 +27,7 @@ #include "d_fall_pps/Controller.h" #define PI 3.1415926535 -#define RATE_CONTROLLER 0 +#define RATE_CONTROLLER 7 using namespace d_fall_pps; diff --git a/pps_ws/src/d_fall_pps/src/SafeControllerService.cpp b/pps_ws/src/d_fall_pps/src/SafeControllerService.cpp index 1ea1f35e1aeae344b89bf389084aa7f08addf6f3..de0ce9c40713a532f24c074e657ce660c435d105 100755 --- a/pps_ws/src/d_fall_pps/src/SafeControllerService.cpp +++ b/pps_ws/src/d_fall_pps/src/SafeControllerService.cpp @@ -31,7 +31,7 @@ #include <std_msgs/Int32.h> #define PI 3.1415926535 -#define RATE_CONTROLLER 0 +#define RATE_CONTROLLER 7 using namespace d_fall_pps;