-
-
Save 5484Enderbots/772584ae3fc53fda99c0f8f51dc1a9f9 to your computer and use it in GitHub Desktop.
| package org.firstinspires.ftc.teamcode; | |
| import org.firstinspires.ftc.robotcore.internal.vuforia.VuforiaLocalizerImpl; | |
| /** | |
| * Copyright (c) 2017 FTC Team 5484 Enderbots | |
| * Permission is hereby granted, free of charge, to any person obtaining a copy | |
| * of this software and associated documentation files (the "Software"), to deal | |
| * in the Software without restriction, including without limitation the rights | |
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| * copies of the Software, and to permit persons to whom the Software is | |
| * furnished to do so, subject to the following conditions: | |
| * | |
| * The above copyright notice and this permission notice shall be included in all | |
| * copies or substantial portions of the Software. | |
| * | |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| * SOFTWARE. | |
| * | |
| * This is a VuforiaLocalizer replacement, as it can do everything it does, as well as detach from the camera. | |
| * To use, one can replace statements like: | |
| * | |
| * VuforiaLocalizer vuforia = ClassFactory.createVuforiaLocalizer(parameters); | |
| * | |
| * with | |
| * | |
| * ClosableVuforiaLocalizer vuforia = new ClosableVuforiaLocalizer(parameters); | |
| * | |
| * To close vuforia, simply call vuforia.close(); | |
| */ | |
| public class ClosableVuforiaLocalizer extends VuforiaLocalizerImpl { | |
| boolean closed = false; | |
| public ClosableVuforiaLocalizer(Parameters parameters) { | |
| super(parameters); | |
| } | |
| @Override | |
| public void close() { | |
| if (!closed) super.close(); | |
| closed = true; | |
| } | |
| } |
I am having errors with the ClosableVuforia
12-23 12:29:31.041 13820-15111/com.qualcomm.ftcrobotcontroller E/EventLoopManager: Event loop threw an exception 12-23 12:29:31.043 13820-15111/com.qualcomm.ftcrobotcontroller E/EventLoopManager: java.lang.NullPointerException: Attempt to invoke virtual method 'org.firstinspires.ftc.robotcore.external.navigation.VuforiaTrackables org.firstinspires.ftc.teamcode.ClosableVuforiaLocalizer.loadTrackablesFromAsset(java.lang.String)' on a null object reference 12-23 12:29:31.043 13820-15111/com.qualcomm.ftcrobotcontroller E/EventLoopManager: at org.firstinspires.ftc.teamcode.JewelVumark.runOpMode(JewelVumark.java:73) 12-23 12:29:31.044 13820-15111/com.qualcomm.ftcrobotcontroller E/EventLoopManager: at com.qualcomm.robotcore.eventloop.opmode.LinearOpMode$LinearOpModeHelper$1.run(LinearOpMode.java:305) 12-23 12:29:31.044 13820-15111/com.qualcomm.ftcrobotcontroller E/EventLoopManager: at com.qualcomm.robotcore.util.ThreadPool.logThreadLifeCycle(ThreadPool.java:709) 12-23 12:29:31.045 13820-15111/com.qualcomm.ftcrobotcontroller E/EventLoopManager: at com.qualcomm.robotcore.eventloop.opmode.LinearOpMode$LinearOpModeHelper.run(LinearOpMode.java:300) 12-23 12:29:31.046 13820-15111/com.qualcomm.ftcrobotcontroller E/EventLoopManager: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 12-23 12:29:31.046 13820-15111/com.qualcomm.ftcrobotcontroller E/EventLoopManager: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 12-23 12:29:31.047 13820-15111/com.qualcomm.ftcrobotcontroller E/EventLoopManager: at com.qualcomm.robotcore.util.ThreadPool$ThreadFactoryImpl$1.run(ThreadPool.java:764) 12-23 12:29:31.047 13820-15111/com.qualcomm.ftcrobotcontroller E/EventLoopManager: at java.lang.Thread.run(Thread.java:818)
@haithcoc This actually calls the same method the FTC SDK internally calls to close Vuforia when an OpMode ends, so it's a full release. It's about half a second or less to release, but about 1.5-2 seconds to reaquire as it's a full restart.