Skip to content

Commit 3f8f49e

Browse files
authored
fix: rounding error in robotic arm (#2689)
1 parent 085d7ea commit 3f8f49e

2 files changed

Lines changed: 26 additions & 22 deletions

File tree

app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ dependencies {
9595
implementation("com.github.Vatican-Cameos:CarouselPicker:1.2")
9696
implementation("com.github.anastr:speedviewlib:1.6.1")
9797
implementation("com.github.GoodieBag:ProtractorView:v1.2")
98-
implementation("com.github.Triggertrap:SeekArc:v1.1")
98+
implementation("com.github.rahul31124:CustomSeekArc:1.2")
9999

100100
// Apache commons
101101
implementation("org.apache.commons:commons-math3:3.6.1")

app/src/main/java/io/pslab/activity/RoboticArmActivity.java

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.content.Context;
44
import android.content.Intent;
5+
import android.graphics.Color;
56
import android.graphics.Point;
67
import android.location.Location;
78
import android.location.LocationManager;
@@ -133,6 +134,10 @@ protected void onCreate(Bundle savedInstanceState) {
133134
seekArc2 = servo2Layout.findViewById(R.id.seek_arc);
134135
seekArc3 = servo3Layout.findViewById(R.id.seek_arc);
135136
seekArc4 = servo4Layout.findViewById(R.id.seek_arc);
137+
seekArc1.setProgressColor(Color.RED);
138+
seekArc2.setProgressColor(Color.RED);
139+
seekArc3.setProgressColor(Color.RED);
140+
seekArc4.setProgressColor(Color.RED);
136141
servo1TimeLine = findViewById(R.id.servo1_timeline);
137142
servo2TimeLine = findViewById(R.id.servo2_timeline);
138143
servo3TimeLine = findViewById(R.id.servo3_timeline);
@@ -224,93 +229,94 @@ protected void onCreate(Bundle savedInstanceState) {
224229

225230
seekArc1.setOnSeekArcChangeListener(new SeekArc.OnSeekArcChangeListener() {
226231
@Override
227-
public void onProgressChanged(SeekArc seekArc, int i, boolean b) {
232+
public void onProgressChanged(SeekArc seekArc, float progress, boolean b) {
228233
if (editEnter) {
229234
degreeText1.setText(String.valueOf(degree));
230235
editEnter = false;
231236
} else {
232-
degreeText1.setText(String.valueOf((int) (i * 3.6)));
237+
degreeText1.setText(String.valueOf(Math.round(progress * 3.6f)));
233238
}
234239
degreeText1.setCursorVisible(false);
235240
}
236241

237242
@Override
238243
public void onStartTrackingTouch(SeekArc seekArc) {
239-
244+
// TODO: Implement this method if needed
240245
}
241246

242247
@Override
243248
public void onStopTrackingTouch(SeekArc seekArc) {
244-
249+
// TODO: Implement this method if needed
245250
}
246251
});
247252

248253
seekArc2.setOnSeekArcChangeListener(new SeekArc.OnSeekArcChangeListener() {
249254
@Override
250-
public void onProgressChanged(SeekArc seekArc, int i, boolean b) {
255+
public void onProgressChanged(SeekArc seekArc, float progress, boolean b) {
251256
if (editEnter) {
252257
degreeText2.setText(String.valueOf(degree));
253258
editEnter = false;
254259
} else {
255-
degreeText2.setText(String.valueOf((int) (i * 3.6)));
260+
degreeText2.setText(String.valueOf(Math.round(progress * 3.6f)));
256261
}
257262
degreeText2.setCursorVisible(false);
258263
}
259264

260265
@Override
261266
public void onStartTrackingTouch(SeekArc seekArc) {
262-
267+
// TODO: Implement this method if needed
263268
}
264269

265270
@Override
266271
public void onStopTrackingTouch(SeekArc seekArc) {
267-
272+
// TODO: Implement this method if needed
268273
}
269274
});
270275

271276
seekArc3.setOnSeekArcChangeListener(new SeekArc.OnSeekArcChangeListener() {
277+
272278
@Override
273-
public void onProgressChanged(SeekArc seekArc, int i, boolean b) {
279+
public void onProgressChanged(SeekArc seekArc, float progress, boolean b) {
274280
if (editEnter) {
275281
degreeText3.setText(String.valueOf(degree));
276282
editEnter = false;
277283
} else {
278-
degreeText3.setText(String.valueOf((int) (i * 3.6)));
284+
degreeText3.setText(String.valueOf(Math.round(progress * 3.6f)));
279285
}
280286
degreeText3.setCursorVisible(false);
281287
}
282288

283289
@Override
284290
public void onStartTrackingTouch(SeekArc seekArc) {
285-
291+
// TODO: Implement this method if needed
286292
}
287293

288294
@Override
289295
public void onStopTrackingTouch(SeekArc seekArc) {
290-
296+
// TODO: Implement this method if needed
291297
}
292298
});
293299

294300
seekArc4.setOnSeekArcChangeListener(new SeekArc.OnSeekArcChangeListener() {
295301
@Override
296-
public void onProgressChanged(SeekArc seekArc, int i, boolean b) {
302+
public void onProgressChanged(SeekArc seekArc, float progress, boolean b) {
297303
if (editEnter) {
298304
degreeText4.setText(String.valueOf(degree));
299305
editEnter = false;
300306
} else {
301-
degreeText4.setText(String.valueOf((int) (i * 3.6)));
307+
degreeText4.setText(String.valueOf(Math.round(progress * 3.6f)));
302308
}
303309
degreeText4.setCursorVisible(false);
304310
}
305311

306312
@Override
307313
public void onStartTrackingTouch(SeekArc seekArc) {
308-
314+
// TODO: Implement this method if needed
309315
}
310316

311317
@Override
312318
public void onStopTrackingTouch(SeekArc seekArc) {
313-
319+
// TODO: Implement this method if needed
314320
}
315321
});
316322

@@ -479,11 +485,9 @@ private void setReceivedData() {
479485
}
480486
}
481487
private void processDegreeInput(EditText degreeText, SeekArc seekArc) {
482-
int previousDegree = degree;
483488
String degreeStr = degreeText.getText().toString().trim();
484-
485489
if (degreeStr.isEmpty()) {
486-
degree = (degree == 0) ? (int) (seekArc.getProgress() * 3.6) : previousDegree;
490+
degree = Math.round(seekArc.getProgress() * 3.6f);
487491
} else {
488492
try {
489493
degree = Integer.parseInt(degreeStr);
@@ -500,7 +504,7 @@ private void processDegreeInput(EditText degreeText, SeekArc seekArc) {
500504
seekArc.setProgress(0);
501505
toastInvalidValueMessage();
502506
} else {
503-
seekArc.setProgress((int) (degree / 3.6));
507+
seekArc.setProgress((float) (degree/3.6));
504508
editEnter = true;
505509
}
506510
}
@@ -704,4 +708,4 @@ public void recordSensorData(RealmObject sensorData) {
704708
realm.copyToRealm((ServoData) sensorData);
705709
realm.commitTransaction();
706710
}
707-
}
711+
}

0 commit comments

Comments
 (0)