bio robot
Dependencies: MPU6050-DMP QEI_hw mbed-rpc mbed
Fork of MPU6050_Example by
Comm/Comm.cpp@11:711d3c207e8c, 2015-12-08 (annotated)
- Committer:
- amandaghassaei
- Date:
- Tue Dec 08 22:52:46 2015 +0000
- Revision:
- 11:711d3c207e8c
- Parent:
- 10:769cc457c3a4
- Child:
- 14:d620415259b1
negative dth;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
amandaghassaei | 2:17b18ea93551 | 1 | #include "Comm.h" |
amandaghassaei | 2:17b18ea93551 | 2 | |
amandaghassaei | 2:17b18ea93551 | 3 | |
amandaghassaei | 9:1d9b24d7ac77 | 4 | Comm::Comm(CommDelegate *controls):_pc(USBTX, USBRX), _json(&_pc) |
amandaghassaei | 2:17b18ea93551 | 5 | { |
amandaghassaei | 11:711d3c207e8c | 6 | _pc.baud(115200); |
amandaghassaei | 9:1d9b24d7ac77 | 7 | _controls = controls; |
amandaghassaei | 2:17b18ea93551 | 8 | } |
amandaghassaei | 2:17b18ea93551 | 9 | |
amandaghassaei | 5:c3d671959ef3 | 10 | void Comm::openGripper1(Arguments* input, Reply* output){ |
amandaghassaei | 2:17b18ea93551 | 11 | printGripper1State(true); |
amandaghassaei | 2:17b18ea93551 | 12 | } |
amandaghassaei | 2:17b18ea93551 | 13 | |
amandaghassaei | 5:c3d671959ef3 | 14 | void Comm::closeGripper1(Arguments* input, Reply* output){ |
amandaghassaei | 2:17b18ea93551 | 15 | printGripper1State(false); |
amandaghassaei | 2:17b18ea93551 | 16 | } |
amandaghassaei | 2:17b18ea93551 | 17 | |
amandaghassaei | 2:17b18ea93551 | 18 | void Comm::printGripper1State(bool state){ |
amandaghassaei | 2:17b18ea93551 | 19 | _json.open(); |
amandaghassaei | 2:17b18ea93551 | 20 | if (state) _json.print("gripper1", "true"); |
amandaghassaei | 2:17b18ea93551 | 21 | else _json.print("gripper1", "false"); |
amandaghassaei | 2:17b18ea93551 | 22 | _json.close(); |
amandaghassaei | 2:17b18ea93551 | 23 | } |
amandaghassaei | 2:17b18ea93551 | 24 | |
amandaghassaei | 5:c3d671959ef3 | 25 | void Comm::openGripper2(Arguments* input, Reply* output){ |
amandaghassaei | 2:17b18ea93551 | 26 | printGripper2State(true); |
amandaghassaei | 2:17b18ea93551 | 27 | } |
amandaghassaei | 2:17b18ea93551 | 28 | |
amandaghassaei | 5:c3d671959ef3 | 29 | void Comm::closeGripper2(Arguments* input, Reply* output){ |
amandaghassaei | 2:17b18ea93551 | 30 | printGripper2State(false); |
amandaghassaei | 2:17b18ea93551 | 31 | } |
amandaghassaei | 2:17b18ea93551 | 32 | |
amandaghassaei | 2:17b18ea93551 | 33 | void Comm::printGripper2State(bool state){ |
amandaghassaei | 2:17b18ea93551 | 34 | _json.open(); |
amandaghassaei | 2:17b18ea93551 | 35 | if (state) _json.print("gripper2", "true"); |
amandaghassaei | 2:17b18ea93551 | 36 | else _json.print("gripper2", "false"); |
amandaghassaei | 2:17b18ea93551 | 37 | _json.close(); |
amandaghassaei | 2:17b18ea93551 | 38 | } |
amandaghassaei | 2:17b18ea93551 | 39 | |
amandaghassaei | 9:1d9b24d7ac77 | 40 | void Comm::setSwingUpK(Arguments* input, Reply* output){ |
amandaghassaei | 9:1d9b24d7ac77 | 41 | if (input->argc < 1){ |
amandaghassaei | 5:c3d671959ef3 | 42 | throwNotEnoughArgsError(); |
amandaghassaei | 5:c3d671959ef3 | 43 | return; |
amandaghassaei | 5:c3d671959ef3 | 44 | } |
amandaghassaei | 9:1d9b24d7ac77 | 45 | float k = input->getArg<float>(); |
amandaghassaei | 9:1d9b24d7ac77 | 46 | _controls->setSwingUpK(k); |
amandaghassaei | 9:1d9b24d7ac77 | 47 | printGains(); |
amandaghassaei | 9:1d9b24d7ac77 | 48 | } |
amandaghassaei | 9:1d9b24d7ac77 | 49 | |
amandaghassaei | 9:1d9b24d7ac77 | 50 | void Comm::setSwingUpD(Arguments* input, Reply* output){ |
amandaghassaei | 9:1d9b24d7ac77 | 51 | if (input->argc < 1){ |
amandaghassaei | 9:1d9b24d7ac77 | 52 | throwNotEnoughArgsError(); |
amandaghassaei | 9:1d9b24d7ac77 | 53 | return; |
amandaghassaei | 9:1d9b24d7ac77 | 54 | } |
amandaghassaei | 9:1d9b24d7ac77 | 55 | float d = input->getArg<float>(); |
amandaghassaei | 9:1d9b24d7ac77 | 56 | _controls->setSwingUpD(d); |
amandaghassaei | 5:c3d671959ef3 | 57 | printGains(); |
amandaghassaei | 2:17b18ea93551 | 58 | } |
amandaghassaei | 10:769cc457c3a4 | 59 | void Comm::setCurrentP(Arguments* input, Reply* output){ |
amandaghassaei | 10:769cc457c3a4 | 60 | if (input->argc < 1){ |
amandaghassaei | 10:769cc457c3a4 | 61 | throwNotEnoughArgsError(); |
amandaghassaei | 10:769cc457c3a4 | 62 | return; |
amandaghassaei | 10:769cc457c3a4 | 63 | } |
amandaghassaei | 10:769cc457c3a4 | 64 | float p = input->getArg<float>(); |
amandaghassaei | 10:769cc457c3a4 | 65 | _controls->setCurrentP(p); |
amandaghassaei | 10:769cc457c3a4 | 66 | printGains(); |
amandaghassaei | 10:769cc457c3a4 | 67 | } |
amandaghassaei | 10:769cc457c3a4 | 68 | |
amandaghassaei | 10:769cc457c3a4 | 69 | void Comm::setCurrentD(Arguments* input, Reply* output){ |
amandaghassaei | 10:769cc457c3a4 | 70 | if (input->argc < 1){ |
amandaghassaei | 10:769cc457c3a4 | 71 | throwNotEnoughArgsError(); |
amandaghassaei | 10:769cc457c3a4 | 72 | return; |
amandaghassaei | 10:769cc457c3a4 | 73 | } |
amandaghassaei | 10:769cc457c3a4 | 74 | float d = input->getArg<float>(); |
amandaghassaei | 10:769cc457c3a4 | 75 | _controls->setCurrentD(d); |
amandaghassaei | 10:769cc457c3a4 | 76 | printGains(); |
amandaghassaei | 10:769cc457c3a4 | 77 | } |
amandaghassaei | 10:769cc457c3a4 | 78 | |
amandaghassaei | 10:769cc457c3a4 | 79 | |
amandaghassaei | 2:17b18ea93551 | 80 | |
amandaghassaei | 2:17b18ea93551 | 81 | void Comm::printGains(){ |
amandaghassaei | 2:17b18ea93551 | 82 | _json.open(); |
amandaghassaei | 9:1d9b24d7ac77 | 83 | _json.print("swingUpK", _controls->getSwingUpK()); |
amandaghassaei | 2:17b18ea93551 | 84 | _json.sepItem(); |
amandaghassaei | 9:1d9b24d7ac77 | 85 | _json.print("swingUpD", _controls->getSwingUpD()); |
amandaghassaei | 2:17b18ea93551 | 86 | _json.sepItem(); |
amandaghassaei | 10:769cc457c3a4 | 87 | _json.print("currentP", _controls->getCurrentP()); |
amandaghassaei | 2:17b18ea93551 | 88 | _json.sepItem(); |
amandaghassaei | 10:769cc457c3a4 | 89 | _json.print("currentD", _controls->getCurrentD()); |
amandaghassaei | 2:17b18ea93551 | 90 | _json.close(); |
amandaghassaei | 2:17b18ea93551 | 91 | } |
amandaghassaei | 2:17b18ea93551 | 92 | |
amandaghassaei | 5:c3d671959ef3 | 93 | void Comm::setTarget(Arguments* input, Reply* output){ |
amandaghassaei | 5:c3d671959ef3 | 94 | if (input->argc < 1){ |
amandaghassaei | 5:c3d671959ef3 | 95 | throwNotEnoughArgsError(); |
amandaghassaei | 5:c3d671959ef3 | 96 | return; |
amandaghassaei | 5:c3d671959ef3 | 97 | } |
amandaghassaei | 5:c3d671959ef3 | 98 | int targetPosition = input->getArg<int>(); |
amandaghassaei | 9:1d9b24d7ac77 | 99 | _controls->setTargetPosition(targetPosition); |
amandaghassaei | 5:c3d671959ef3 | 100 | printTarget(); |
amandaghassaei | 2:17b18ea93551 | 101 | } |
amandaghassaei | 2:17b18ea93551 | 102 | |
amandaghassaei | 2:17b18ea93551 | 103 | void Comm::printTarget(){ |
amandaghassaei | 2:17b18ea93551 | 104 | _json.open(); |
amandaghassaei | 9:1d9b24d7ac77 | 105 | _json.print("target", _controls->getTargetPosition()); |
amandaghassaei | 2:17b18ea93551 | 106 | _json.close(); |
amandaghassaei | 2:17b18ea93551 | 107 | } |
amandaghassaei | 2:17b18ea93551 | 108 | |
amandaghassaei | 11:711d3c207e8c | 109 | void Comm::setTheta(Arguments * input, Reply * output){ |
amandaghassaei | 9:1d9b24d7ac77 | 110 | if (input->argc < 1){ |
amandaghassaei | 9:1d9b24d7ac77 | 111 | throwNotEnoughArgsError(); |
amandaghassaei | 9:1d9b24d7ac77 | 112 | return; |
amandaghassaei | 9:1d9b24d7ac77 | 113 | } |
amandaghassaei | 11:711d3c207e8c | 114 | float theta = input->getArg<float>(); |
amandaghassaei | 11:711d3c207e8c | 115 | _pc.printf("%f\n", theta); |
amandaghassaei | 11:711d3c207e8c | 116 | _controls->setTheta(theta); |
amandaghassaei | 9:1d9b24d7ac77 | 117 | } |
amandaghassaei | 9:1d9b24d7ac77 | 118 | |
amandaghassaei | 9:1d9b24d7ac77 | 119 | void Comm::printPosition(){ |
amandaghassaei | 2:17b18ea93551 | 120 | _json.open(); |
amandaghassaei | 9:1d9b24d7ac77 | 121 | _json.print("th1", _controls->getTheta1()); |
amandaghassaei | 9:1d9b24d7ac77 | 122 | _json.sepItem(); |
amandaghassaei | 9:1d9b24d7ac77 | 123 | // _json.print("dth1", controls->getDTheta1()); |
amandaghassaei | 8:1a3a69fecedf | 124 | // _json.sepItem(); |
amandaghassaei | 9:1d9b24d7ac77 | 125 | _json.print("th2", _controls->getTheta2()); |
amandaghassaei | 8:1a3a69fecedf | 126 | // _json.sepItem(); |
amandaghassaei | 10:769cc457c3a4 | 127 | // _json.print("dth2", _controls->getDTheta2()); |
amandaghassaei | 2:17b18ea93551 | 128 | _json.close(); |
amandaghassaei | 2:17b18ea93551 | 129 | } |
amandaghassaei | 2:17b18ea93551 | 130 | |
amandaghassaei | 11:711d3c207e8c | 131 | void Comm::printVelocity(){ |
amandaghassaei | 11:711d3c207e8c | 132 | _json.open(); |
amandaghassaei | 11:711d3c207e8c | 133 | _json.print("dth1", _controls->getDTheta1()); |
amandaghassaei | 11:711d3c207e8c | 134 | _json.sepItem(); |
amandaghassaei | 11:711d3c207e8c | 135 | _json.print("dth2", _controls->getDTheta2()); |
amandaghassaei | 11:711d3c207e8c | 136 | _json.close(); |
amandaghassaei | 11:711d3c207e8c | 137 | } |
amandaghassaei | 11:711d3c207e8c | 138 | |
amandaghassaei | 4:ebb882658c50 | 139 | void Comm::check(){ |
amandaghassaei | 5:c3d671959ef3 | 140 | if(!_pc.readable()) return; |
amandaghassaei | 4:ebb882658c50 | 141 | _pc.gets(buf, 256); |
amandaghassaei | 4:ebb882658c50 | 142 | //Call the static call method on the RPC class |
amandaghassaei | 4:ebb882658c50 | 143 | RPC::call(buf, outbuf); |
amandaghassaei | 5:c3d671959ef3 | 144 | // _pc.printf("%s\n", outbuf); |
amandaghassaei | 4:ebb882658c50 | 145 | } |
amandaghassaei | 5:c3d671959ef3 | 146 | |
amandaghassaei | 9:1d9b24d7ac77 | 147 | Serial* Comm::getPC(){ |
amandaghassaei | 9:1d9b24d7ac77 | 148 | return &_pc; |
amandaghassaei | 9:1d9b24d7ac77 | 149 | } |
amandaghassaei | 9:1d9b24d7ac77 | 150 | |
amandaghassaei | 5:c3d671959ef3 | 151 | void Comm::throwNotEnoughArgsError(){ |
amandaghassaei | 5:c3d671959ef3 | 152 | _json.open(); |
amandaghassaei | 5:c3d671959ef3 | 153 | _json.print("error", "not enough input arguments"); |
amandaghassaei | 5:c3d671959ef3 | 154 | _json.close(); |
amandaghassaei | 5:c3d671959ef3 | 155 | } |