Created
December 3, 2018 08:37
-
-
Save hsnks100/80d5726862afb49f20b924a7f9bf80f3 to your computer and use it in GitHub Desktop.
조종 튜닝 오리지널 버전
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ublic void onValueChanged(int angle, int power, int direction) { | |
| // TODO Auto-generated method stub | |
| JSONObject json1 = new JSONObject(); | |
| float left = 10000, right = 10000; | |
| try { | |
| if(power == 0) { | |
| json1.put("left", 0); | |
| json1.put("right", 0); | |
| } | |
| else { | |
| float normalPower = power; | |
| Button tglTurbo = (Button)findViewById(R.id.tglTurbo); | |
| if(tglTurbo.getText().equals("LOW")) { | |
| normalPower *= 2.0/4.0 / 100.0f; | |
| } | |
| if(tglTurbo.getText().equals("MID")) { | |
| normalPower *= 3.0/4.0 / 100.0f; | |
| } | |
| if(tglTurbo.getText().equals("HIGH")) { | |
| normalPower *= 4.0/4.0 / 100.0f; | |
| } | |
| // normalPower *= 4.0/4.0 / 100.0f; | |
| angle = (int)constrainAngle360((int)angle); | |
| Log.i("stick", "angle : " +angle + ".." + power); | |
| // 낮을수록 선회속도가 낮음 | |
| float turningAdjust = 100.0f; | |
| int straightRange = 15; | |
| int turningRange = 85; | |
| int rotateRange = 50; | |
| int backRange = 60; | |
| assert(straightRange*2 + turningRange*2 + rotateRange*2 + backRange == 360); | |
| // 직진 | |
| if(360 - straightRange <= angle || angle < straightRange) { | |
| left = 1.0f * normalPower * 1.f; | |
| right = 1.0f * normalPower * 1.f; | |
| json1.put("left", (int)(left * 960)); | |
| json1.put("right", (int)(right * 960)); | |
| } | |
| // 선회 | |
| else if(straightRange <= angle && angle < straightRange + turningRange) { | |
| // normalPower -= angle / turningAdjust; | |
| left = 1.0f * normalPower; | |
| // right = 1.0f * normalPower; | |
| // angle = [15, 100) | |
| right = (1.f - angle / turningAdjust) * normalPower; | |
| json1.put("left", (int)(left * 960)); | |
| json1.put("right", (int)(right * 960)); | |
| } | |
| // 제자리 돌기 | |
| else if(straightRange + turningRange <= angle && angle < straightRange + turningRange + rotateRange) { | |
| left = 1.0f * normalPower * 960.f * 0.32f; | |
| right = -normalPower * 960.f * 0.32f; | |
| json1.put("left", left); | |
| json1.put("right", right); | |
| } | |
| // 빠꾸 | |
| else if(straightRange + turningRange + rotateRange <= angle && angle < straightRange + turningRange + rotateRange + backRange) { | |
| json1.put("left",-normalPower * 960.f * 0.5f); | |
| json1.put("right", -normalPower * 960.f * 0.5f); | |
| } | |
| // 제자리 돌기 | |
| else if(straightRange + turningRange + rotateRange + backRange <= angle && angle < straightRange + turningRange + rotateRange + backRange + rotateRange) { | |
| left = -normalPower * 960.f * 0.32f; | |
| right = normalPower * 960.f * 0.32f; | |
| json1.put("left", left); | |
| json1.put("right", right); | |
| } | |
| // 선회 | |
| else if(straightRange + turningRange + rotateRange + backRange + rotateRange <= angle) { | |
| // left = (1 + angle / 90) | |
| // right = 1.0 | |
| // left = 1.f * normalPower; | |
| float minusAngle = 360 - angle; | |
| left = (1.f - minusAngle / turningAdjust) * normalPower; | |
| right = 1.f * normalPower; | |
| json1.put("left", (int)(left * 960)); | |
| json1.put("right", (int)(right * 960)); | |
| } | |
| else { | |
| json1.put("left", 0); | |
| json1.put("right", 0); | |
| } | |
| } | |
| } | |
| catch (JSONException e) { | |
| e.printStackTrace(); | |
| } | |
| sendControlToRobot((short) 98, json1); | |
| } | |
| }, JoystickView.DEFAULT_LOOP_INTERVAL / 10); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment