1 package com.neuronrobotics.sdk.pid;
3 import java.util.ArrayList;
4 import java.util.HashMap;
6 import com.neuronrobotics.sdk.addons.kinematics.IHardwareSyncPulseProvider;
7 import com.neuronrobotics.sdk.addons.kinematics.IHardwareSyncPulseReciver;
8 import com.neuronrobotics.sdk.common.BowlerAbstractCommand;
9 import com.neuronrobotics.sdk.common.BowlerDatagram;
10 import com.neuronrobotics.sdk.common.InvalidConnectionException;
11 import com.neuronrobotics.sdk.common.InvalidResponseException;
12 import com.neuronrobotics.sdk.common.Log;
13 import com.neuronrobotics.sdk.common.NoConnectionAvailableException;
14 import com.neuronrobotics.sdk.util.ThreadUtil;
29 private HashMap<Integer, PIDConfiguration>
configs =
new HashMap<>();
32 private ArrayList<PDVelocityConfiguration>
PDconfigs =
new ArrayList<PDVelocityConfiguration>();
66 throw new RuntimeException(
"Name of virtual device can not be null");
134 ArrayList<String> s =
new ArrayList<String>();
162 RuntimeException r =
new RuntimeException(
"This method is never supposed to be called in the virtual PID");
192 long currentTimeMillis = System.currentTimeMillis();
210 throw new RuntimeException(
"Saturated PID on channel: " + group +
" Attempted Ticks Per Second: "
212 +
" sec: " + seconds);
214 throw new RuntimeException(
"Saturated PID on channel: " + group +
" Attempted Ticks Per Second: "
216 +
" sec: " + seconds);
217 if (seconds < 0.1 && seconds > -0.1) {
235 for (
int i = 0; i < data.length; i++) {
238 Log.
info(
"Flushing in " + time +
"ms");
250 long start = System.currentTimeMillis();
253 for (
int i = 0; i < setpoints.length; i++) {
263 if (c.getGroup() == i) {
268 System.err.println(c);
271 throw new RuntimeException(
"Device is missing, id " + i);
308 for (
int i = 0; i <
backs.length; i++) {
323 for (
int i = 0; i <
backs.length; i++)
365 setName(
"Bowler Platform Virtual PID sync thread");
373 }
catch (InterruptedException ex) {
377 time = System.currentTimeMillis();
381 if (key.isEnabled()) {
383 toUpdate[updateIndex++]=key;
390 for(
int i=0;i<updateIndex;i++) {
397 }
catch (NullPointerException ex) {
399 }
catch (Exception ex) {
400 ex.printStackTrace();
409 }
catch (InterruptedException e1) {
411 e1.printStackTrace();
void setScriptingName(String scriptingName)
void fireDisconnectEvent()
static void info(String message)
void setChannelCount(Integer channelCount)
void firePIDEvent(PIDEvent pidEvent)
ArrayList< PIDChannel > getChannels()
void setChannels(ArrayList< PIDChannel > channels)
PIDChannel getPIDChannel(int group)
AbstractPidNamespaceImp getImplementation()
void firePIDResetEvent(int group, float val)
boolean SetPIDInterpolatedVelocity(int group, int unitsPerSecond, double seconds)
synchronized void ResetEncoder(double value)
void SetVelocity(double unitsPerSecond)
boolean update(long time)
void StartLinearMotion(double setpoint, double seconds, long startTimeMs)
void setCachedTargetValue(float targetValue)
float getCachedTargetValue()
void setEnabled(boolean enabled)
void set(int chan, float tick, long time, int velocity)
void setPause(boolean pause)
float[] GetAllPIDPosition()
VirtualGenericPIDDevice(String myVirtualDevName)
HashMap< Integer, PIDConfiguration > configs
float GetPIDPosition(int group)
InterpolationEngine getDriveThread(int i)
ArrayList< PDVelocityConfiguration > PDconfigs
void setMaxTicksPerSecond(double maxTicksPerSecond)
HashMap< PIDConfiguration, InterpolationEngine > interpolationEngines
PDVelocityConfiguration getPDVelocityConfiguration(int group)
BowlerDatagram send(BowlerAbstractCommand command)
VirtualGenericPIDDevice(double maxTicksPerSecond, String myVirtualDevName)
boolean SetAllPIDSetPoint(float[] setpoints, double seconds)
boolean killAllPidGroups()
PIDConfiguration getPIDConfiguration(int group)
boolean ResetPIDChannel(int group, float valueToSetCurrentTo)
boolean SetPIDSetPoint(int group, float setpoint, double seconds)
boolean SetPDVelocity(int group, int unitsPerSecond, double seconds)
static final long threadTime
boolean ConfigurePDVelovityController(PDVelocityConfiguration config)
void flushPIDChannels(double time)
boolean ConfigurePIDController(PIDConfiguration config)
double getMaxTicksPerSecond()
ArrayList< String > getNamespaces()