Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.99 KB | None | 0 0
  1. public class BlueSkystoneSplines extends LinearOpMode {
  2. FtcDashboard dashboard = FtcDashboard.getInstance();
  3. int heightToPivot = 10;
  4. Telemetry dashboardTelemetry = dashboard.getTelemetry();
  5. Intake intake = new Intake();
  6. Lift lift = new Lift();
  7. Scorer scorer = new Scorer();
  8. Foundation foundation = new Foundation();
  9. int[] vals;
  10. SkystoneDetector detector = new SkystoneDetector();
  11.  
  12. public void setup() {
  13.  
  14. }
  15.  
  16. public void runOpMode() throws InterruptedException {
  17.  
  18. MecanumBase drive = new MecanumAuto(hardwareMap);
  19. DriveConstraints slowConstraints = new DriveConstraints(25.0, 20.0, 0.0,
  20. Math.toRadians(180.0), Math.toRadians(180.0), 0.0);
  21. DriveConstraints fastConstraints = new DriveConstraints(40.0, 20.0, 0.0,
  22. Math.toRadians(180.0), Math.toRadians(180.0), 0.0);
  23. intake.init(hardwareMap);
  24. lift.init(hardwareMap);
  25. scorer.init(hardwareMap);
  26. foundation.init(hardwareMap);
  27.  
  28.  
  29. Trajectory mid1 = new TrajectoryBuilder( new Pose2d(-33.0,63.0,Math.toRadians(180.0)),
  30. fastConstraints)
  31. .lineTo(new Vector2d(-22.0,42.0), new SplineInterpolator(Math.toRadians(-90.0), Math.toRadians(-150.0)))
  32. .addMarker(new Vector2d(-22.0, 42.0), ()->{
  33. intake.collect(0.8);
  34. return Unit.INSTANCE;
  35. })
  36. .build();
  37. Trajectory mid2 = new TrajectoryBuilder(/*new Pose2d(-22.0, 42.0 ,Math.toRadians(180.0))*/mid1.end(),
  38. slowConstraints)
  39. .lineTo(new Vector2d(-32.0, 24.0), new SplineInterpolator(Math.toRadians(-150.0), Math.toRadians(-150.0)))
  40. .addMarker(new Vector2d(-32.0, 24.0), ()->{
  41. intake.collect(0);
  42. intake.hitter.setPosition(0.4);//in
  43. return Unit.INSTANCE;
  44. })
  45. .build();
  46. Trajectory mid3 = new TrajectoryBuilder(/*new Pose2d(-32.0, 24.0), Math.toRadians(180.0))*/mid2.end(),
  47. fastConstraints)
  48. .lineTo(new Vector2d(-22.0, 42.0), new SplineInterpolator(Math.toRadians(-150.0), Math.toRadians(-180.0)))
  49. .addMarker(new Vector2d(-22.0, 42.0), ()->{
  50. scorer.gripper.setPosition(0);//down
  51. return Unit.INSTANCE;
  52. })
  53. .lineTo(new Vector2d(48.0, 33.0), new SplineInterpolator(Math.toRadians(180.0), Math.toRadians(90.0)))
  54. .addMarker(new Vector2d(48.0, 33.0), ()->{
  55. foundation.latchL.setPosition(1);//set down
  56. foundation.latchR.setPosition(1);//set down
  57.  
  58. lift.runDistance(heightToPivot, 0.5);
  59. lift.waitForEncoder();
  60. scorer.pivot.setPosition(1);
  61. lift.Arm(-0.5,true);
  62.  
  63. return Unit.INSTANCE;
  64. })
  65. .build();
  66. Trajectory mid4 = new TrajectoryBuilder(/*new Pose2d(48.0, 33.0, Math.toRadians(180.0))*/mid3.end(), slowConstraints)
  67. .splineTo(new Pose2d(48.0,42.0), new LinearInterpolator(Math.toRadians(90.0), Math.toRadians(90.0)))
  68. .addMarker(new Vector2d(48.0,42.0), ()->{
  69. scorer.gripper.setPosition(1);//open
  70. lift.runDistance(heightToPivot, 0.5);
  71. lift.waitForEncoder();
  72. scorer.pivot.setPosition(0.05);//closed
  73. lift.Arm(-0.5, true);
  74.  
  75. foundation.latchL.setPosition(0);//up
  76. foundation.latchR.setPosition(0);//up
  77.  
  78. return Unit.INSTANCE;
  79. })
  80. .build();
  81. Trajectory mid5 = new TrajectoryBuilder(/*new Pose2d(48.0, 42.0, Math.toRadians(180.0))*/mid4.end(), fastConstraints)
  82. .lineTo(new Vector2d(-48.0, 42.0), new SplineInterpolator(Math.toRadians(-180.0), Math.toRadians(-150.0)))
  83. .addMarker(new Vector2d(-48.0, 42.0), ()->{
  84. intake.collect(0.8);
  85. return Unit.INSTANCE;
  86. })
  87. .build();
  88. Trajectory mid6 = new TrajectoryBuilder(/*new Pose2d(-48.0, 42.0, Math.toRadians(180.0))*/mid5.end(), slowConstraints)
  89. .lineTo(new Vector2d(-56.0, 42.0), new SplineInterpolator(Math.toRadians(-150.0), Math.toRadians(150.0)))
  90. .addMarker(new Vector2d(-56.0, 42.0), ()->{
  91. intake.collect(0);
  92. intake.hitter.setPosition(0.4);//hitter in
  93.  
  94. return Unit.INSTANCE;
  95. })
  96. .build();
  97. Trajectory mid7 = new TrajectoryBuilder(/*new Pose2d(-56.0, 42.0, Math.toRadians(180.0))*/mid6.end(), fastConstraints)
  98. .lineTo(new Vector2d(-48.0, 42.0), new SplineInterpolator(Math.toRadians(-150.0), Math.toRadians(-180.0)))
  99. .addMarker(new Vector2d(-48.0, 42.0), ()-> {
  100. scorer.gripper.setPosition(0);//down
  101. return Unit.INSTANCE;
  102. })
  103. .lineTo(new Vector2d(48.0, 42.0), new SplineInterpolator(Math.toRadians(180.0), Math.toRadians(180.0)))
  104. .addMarker(new Vector2d(48.0, 42.0), ()->{
  105.  
  106. lift.runDistance(heightToPivot, 0.5);
  107. lift.waitForEncoder();
  108. scorer.pivot.setPosition(1);
  109. lift.Arm(-0.5,true);
  110.  
  111. scorer.gripper.setPosition(1);//open
  112. lift.runDistance(heightToPivot, 0.5);
  113. lift.waitForEncoder();
  114. scorer.pivot.setPosition(0.05);//closed
  115. lift.Arm(-0.5, true);
  116.  
  117. return Unit.INSTANCE;
  118. })
  119.  
  120. .lineTo(new Vector2d(0.0, 42.0), new SplineInterpolator(Math.toRadians(180.0), Math.toRadians(180.0)))
  121. .build();
  122.  
  123. //left stone
  124. Trajectory left1 = new TrajectoryBuilder( new Pose2d(-33.0,63.0,Math.toRadians(180.0)),
  125. fastConstraints)
  126. .lineTo(new Vector2d(-40.0,42.0), new SplineInterpolator(Math.toRadians(-90.0), Math.toRadians(-140.0)))
  127. .addMarker(new Vector2d(-40.0, 42.0), ()->{
  128. intake.collect(0.8);
  129. return Unit.INSTANCE;
  130. })
  131. .build();
  132. Trajectory left2 = new TrajectoryBuilder(/*new Pose2d(-40.0, 42.0, Math.toRadians(180.0))*/left1.end(),
  133. slowConstraints)
  134. .lineTo(new Vector2d(-48.0, 24.0), new SplineInterpolator(Math.toRadians(-140.0), Math.toRadians(-140.0)))
  135. .addMarker(new Vector2d(-48.0, 24.0), ()->{
  136. intake.collect(0);
  137. intake.hitter.setPosition(0.4);//in
  138. return Unit.INSTANCE;
  139. })
  140. .build();
  141. Trajectory left3 = new TrajectoryBuilder(/*new Pose2d(-48.0, 24.0, Math.toRadians(180.0))*/ left2.end(),
  142. fastConstraints)
  143. .lineTo(new Vector2d(-22.0, 42.0), new SplineInterpolator(Math.toRadians(-150.0), Math.toRadians(-180.0)))
  144. .addMarker(new Vector2d(-22.0, 42.0), ()->{
  145. scorer.gripper.setPosition(0);//down
  146. return Unit.INSTANCE;
  147. })
  148. .lineTo(new Vector2d(48.0, 33.0), new SplineInterpolator(Math.toRadians(180.0), Math.toRadians(90.0)))
  149. .addMarker(new Vector2d(48.0, 33.0), ()->{
  150. foundation.latchL.setPosition(1);//set down
  151. foundation.latchR.setPosition(1);//set down
  152.  
  153. lift.runDistance(heightToPivot, 0.5);
  154. lift.waitForEncoder();
  155. scorer.pivot.setPosition(1);
  156. lift.Arm(-0.5,true);
  157.  
  158. return Unit.INSTANCE;
  159. })
  160. .build();
  161. Trajectory left4 = new TrajectoryBuilder(/*new Pose2d(48.0, 33.0, Math.toRadians(180.0))*/left3.end(), slowConstraints)
  162. .splineTo(new Pose2d(48.0,42.0), new LinearInterpolator(Math.toRadians(90.0), Math.toRadians(90.0)))
  163. .addMarker(new Vector2d(48.0,42.0), ()->{
  164. scorer.gripper.setPosition(1);//open
  165. lift.runDistance(heightToPivot, 0.5);
  166. lift.waitForEncoder();
  167. scorer.pivot.setPosition(0.05);//closed
  168. lift.Arm(-0.5, true);
  169.  
  170. foundation.latchL.setPosition(0);//up
  171. foundation.latchR.setPosition(0);//up
  172.  
  173. return Unit.INSTANCE;
  174. })
  175. .build();
  176. Trajectory left5 = new TrajectoryBuilder(/*new Pose2d(48.0, 42.0, Math.toRadians(180.0))*/left4.end(), fastConstraints)
  177. .lineTo(new Vector2d(-15.0, 42.0), new SplineInterpolator(Math.toRadians(-180.0), Math.toRadians(-135.0)))
  178. .addMarker(new Vector2d(-15.0, 42.0), ()->{
  179. intake.collect(0.8);
  180. return Unit.INSTANCE;
  181. })
  182. .build();
  183. Trajectory left6 = new TrajectoryBuilder(/*new Pose2d(-15.0, 42.0, Math.toRadians(180.0))*/left5.end(), slowConstraints)
  184. .lineTo(new Vector2d(-23.0, 24.0), new SplineInterpolator(Math.toRadians(-135.0), Math.toRadians(-135.0)))
  185. .addMarker(new Vector2d(-23.0, 24.0), ()->{
  186. intake.collect(0);
  187. intake.hitter.setPosition(0.4);//hitter in
  188.  
  189. return Unit.INSTANCE;
  190. })
  191. .build();
  192. Trajectory left7 = new TrajectoryBuilder(/*new Pose2d(-23.0, 24.0, Math.toRadians(180.0))*/left6.end(), fastConstraints)
  193. .lineTo(new Vector2d(-15.0, 42.0), new SplineInterpolator(Math.toRadians(-135.0), Math.toRadians(-180.0)))
  194. .addMarker(new Vector2d(-15.0, 42.0), ()-> {
  195. scorer.gripper.setPosition(0);//down
  196. return Unit.INSTANCE;
  197. })
  198. .lineTo(new Vector2d(48.0, 42.0), new SplineInterpolator(Math.toRadians(180.0), Math.toRadians(180.0)))
  199. .addMarker(new Vector2d(48.0, 42.0), ()->{
  200.  
  201. lift.runDistance(heightToPivot, 0.5);
  202. lift.waitForEncoder();
  203. scorer.pivot.setPosition(1);
  204. lift.Arm(-0.5,true);
  205.  
  206. scorer.gripper.setPosition(1);//open
  207. lift.runDistance(heightToPivot, 0.5);
  208. lift.waitForEncoder();
  209. scorer.pivot.setPosition(0.05);//closed
  210. lift.Arm(-0.5, true);
  211.  
  212. return Unit.INSTANCE;
  213. })
  214.  
  215. .lineTo(new Vector2d(0.0, 42.0), new SplineInterpolator(Math.toRadians(180.0), Math.toRadians(180.0)))
  216. .build();
  217. Trajectory right1 = new TrajectoryBuilder( new Pose2d(-33.0,63.0, Math.toRadians(180.0)),
  218. fastConstraints)
  219. .lineTo(new Vector2d(-30.0,42.0), new SplineInterpolator(Math.toRadians(-90.0), Math.toRadians(-140.0)))
  220. .addMarker(new Vector2d(-30.0, 42.0), ()->{
  221. intake.collect(0.8);
  222. return Unit.INSTANCE;
  223. })
  224. .build();
  225. Trajectory right2 = new TrajectoryBuilder(/*new Pose2d(-30.0, 42.0, Math.toRadians(180.0))*/ right1.end(),
  226. slowConstraints)
  227. .lineTo(new Vector2d(-38.0, 24.0), new SplineInterpolator(Math.toRadians(-140.0), Math.toRadians(-140.0)))
  228. .addMarker(new Vector2d(-38.0, 24.0), ()->{
  229. intake.collect(0);
  230. intake.hitter.setPosition(0.4);//in
  231. return Unit.INSTANCE;
  232. })
  233. .build();
  234. Trajectory right3 = new TrajectoryBuilder(/*new Pose2d(-38.0, 24.0, Math.toRadians(180.0))*/ right2.end(),
  235. fastConstraints)
  236. .lineTo(new Vector2d(-30.0, 42.0), new SplineInterpolator(Math.toRadians(-150.0), Math.toRadians(-180.0)))
  237. .addMarker(new Vector2d(-30.0, 42.0), ()->{
  238. scorer.gripper.setPosition(0);//down
  239. return Unit.INSTANCE;
  240. })
  241. .lineTo(new Vector2d(48.0, 33.0), new SplineInterpolator(Math.toRadians(180.0), Math.toRadians(90.0)))
  242. .addMarker(new Vector2d(48.0, 33.0), ()->{
  243. foundation.latchL.setPosition(1);//set down
  244. foundation.latchR.setPosition(1);//set down
  245.  
  246. lift.runDistance(heightToPivot, 0.5);
  247. lift.waitForEncoder();
  248. scorer.pivot.setPosition(1);
  249. lift.Arm(-0.5,true);
  250.  
  251. return Unit.INSTANCE;
  252. })
  253. .build();
  254. Trajectory right4 = new TrajectoryBuilder(/*new Pose2d(48.0, 33.0, Math.toRadians(180.0))*/right3.end(), slowConstraints)
  255. .splineTo(new Pose2d(48.0,42.0), new LinearInterpolator(Math.toRadians(90.0), Math.toRadians(90.0)))
  256. .addMarker(new Vector2d(48.0,42.0), ()->{
  257. scorer.gripper.setPosition(1);//open
  258. lift.runDistance(heightToPivot, 0.5);
  259. lift.waitForEncoder();
  260. scorer.pivot.setPosition(0.05);//closed
  261. lift.Arm(-0.5, true);
  262.  
  263. foundation.latchL.setPosition(0);//up
  264. foundation.latchR.setPosition(0);//up
  265.  
  266. return Unit.INSTANCE;
  267. })
  268. .build();
  269. Trajectory right5 = new TrajectoryBuilder(/*new Pose2d(48.0, 42.0, Math.toRadians(180.0))*/right4.end(), fastConstraints)
  270. .lineTo(new Vector2d(-53.0, 42.0), new SplineInterpolator(Math.toRadians(-180.0), Math.toRadians(-135.0)))
  271. .addMarker(new Vector2d(-53.0, 42.0), ()->{
  272. intake.collect(0.8);
  273. return Unit.INSTANCE;
  274. })
  275. .build();
  276. Trajectory right6 = new TrajectoryBuilder(/*new Pose2d(-53.0, 42.0, Math.toRadians(180.0))*/right5.end(), slowConstraints)
  277. .lineTo(new Vector2d(-61.0, 24.0), new SplineInterpolator(Math.toRadians(-135.0), Math.toRadians(-135.0)))
  278. .addMarker(new Vector2d(-61.0, 24.0), ()->{
  279. intake.collect(0);
  280. intake.hitter.setPosition(0.4);//hitter in
  281.  
  282. return Unit.INSTANCE;
  283. })
  284. .build();
  285. Trajectory right7 = new TrajectoryBuilder(/*new Pose2d(-61.0, 24.0, Math.toRadians(180.0))*/right6.end(), fastConstraints)
  286. .lineTo(new Vector2d(-53.0, 42.0), new SplineInterpolator(Math.toRadians(-135.0), Math.toRadians(-180.0)))
  287. .addMarker(new Vector2d(-53.0, 42.0), ()-> {
  288. scorer.gripper.setPosition(0);//down
  289. return Unit.INSTANCE;
  290. })
  291. .lineTo(new Vector2d(48.0, 42.0), new SplineInterpolator(Math.toRadians(180.0), Math.toRadians(180.0)))
  292. .addMarker(new Vector2d(48.0, 42.0), ()->{
  293.  
  294. lift.runDistance(heightToPivot, 0.5);
  295. lift.waitForEncoder();
  296. scorer.pivot.setPosition(1);
  297. lift.Arm(-0.5,true);
  298.  
  299. scorer.gripper.setPosition(1);//open
  300. lift.runDistance(heightToPivot, 0.5);
  301. lift.waitForEncoder();
  302. scorer.pivot.setPosition(0.05);//closed
  303. lift.Arm(-0.5, true);
  304.  
  305. return Unit.INSTANCE;
  306. })
  307.  
  308. .lineTo(new Vector2d(0.0, 42.0), new SplineInterpolator(Math.toRadians(180.0), Math.toRadians(180.0)))
  309. .build();
  310.  
  311.  
  312. waitForStart();
  313.  
  314. detector.setOffset(-1f / 8f, 3f / 8f);
  315. detector.camSetup(hardwareMap);
  316.  
  317. //all paths
  318. Trajectory park = new TrajectoryBuilder(drive.getPoseEstimate(), DriveConstants.BASE_CONSTRAINTS)
  319. .splineTo(new Pose2d(0.0,39.0))
  320. .build();
  321.  
  322. while (!opModeIsActive() && !isStopRequested()) {
  323. telemetry.addData("status", "waiting for start command...");
  324. telemetry.update();
  325. }
  326.  
  327. if (isStopRequested()) return;
  328.  
  329. if(opModeIsActive()){
  330. detector.updateVals();
  331. vals = detector.getVals();
  332. telemetry.addData("Values", vals[1] + " " + vals[0] + " " + vals[2]);
  333. telemetry.update();
  334. intake.hitter.setPosition(1);
  335. scorer.gripper.setPosition(1); //out
  336. scorer.pivot.setPosition(0.05); //in
  337.  
  338. if(vals[0] == 0){
  339. drive.followTrajectorySync(mid1);
  340. drive.followTrajectorySync(mid2);
  341. drive.followTrajectorySync(mid3);
  342. drive.followTrajectorySync(mid4);
  343. drive.followTrajectorySync(mid5);
  344. drive.followTrajectorySync(mid6);
  345. drive.followTrajectorySync(mid7);
  346. } else if(vals [1] == 0){
  347. drive.followTrajectorySync(left1);
  348. drive.followTrajectorySync(left2);
  349. drive.followTrajectorySync(left3);
  350. drive.followTrajectorySync(left4);
  351. drive.followTrajectorySync(left5);
  352. drive.followTrajectorySync(left6);
  353. drive.followTrajectorySync(left7);
  354. } else if(vals[2] == 0){
  355. drive.followTrajectorySync(right1);
  356. drive.followTrajectorySync(right2);
  357. drive.followTrajectorySync(right3);
  358. drive.followTrajectorySync(right4);
  359. drive.followTrajectorySync(right5);
  360. drive.followTrajectorySync(right6);
  361. drive.followTrajectorySync(right7);
  362.  
  363. }else{
  364. drive.followTrajectorySync(park);
  365. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement