Conversation
| ), | ||
| isAuto = true, | ||
| mutableListOf(/*ся модули для автонома*/ TrajectorySegmentRunner(), ActionsRunner()) | ||
| mutableListOf(/*ся модули для автонома*/ TrajectorySegmentRunner(), ActionsRunner(), Camera()) |
|
|
||
| open class AutoOpMode(val startPos: GameStartPosition): LinearOpModeBase() { | ||
| override fun getOpModeSettings() = OpModeSettings(isAutoStart = false, isPreInit = false, preInitOpModeName = "TeleOpMode") | ||
| override fun getOpModeSettings() = OpModeSettings(isAutoStart = false, isPreInit = true, preInitOpModeName = "TeleOpMode", gamepadStart = false) |
There was a problem hiding this comment.
Cделать вместо джавовского getXxx котлинский val с переопределенным геттером
| OpModeManagerImpl.getOpModeManagerOfActivity(AppUtil.getInstance().getActivity()) | ||
| .startActiveOpMode() |
| if(!enableDetect.get()) { | ||
| allianceSticks.set(arrayOf()) | ||
| override fun processFrame(frm: Mat?, captureTimeNanos: Long): Any { | ||
| //StaticTelemetry.addData("frameSize", frm!!.size()) |
There was a problem hiding this comment.
Избыточный вывод т.к. разрешение задаем мы. + неплохо бы его явно задать в Camera
| Configs.CameraConfig.YELLOW_STICK_DETECT_CONFIG.KR, | ||
| Configs.CameraConfig.YELLOW_STICK_DETECT_CONFIG.KG, | ||
| Configs.CameraConfig.YELLOW_STICK_DETECT_CONFIG.KB, | ||
| Configs.CameraConfig.YELLOW_STICK_DETECT_CONFIG.THREASHOLD |
There was a problem hiding this comment.
| Configs.CameraConfig.YELLOW_STICK_DETECT_CONFIG.THREASHOLD | |
| Configs.CameraConfig.YELLOW_STICK_DETECT_CONFIG.THRESHOLD |
| class TurnSegment(angle: Double, private val _startOrientation: Orientation): ITrajectorySegment{ | ||
| private val _turn = TimeTurn(Pose2d(_startOrientation.x, _startOrientation.y, _startOrientation.angl.angle), angle, | ||
| TurnConstraints(Configs.DriveTrainConfig.MAX_ROTATE_VELOCITY, -Configs.DriveTrainConfig.ROTATE_ACCEL, Configs.DriveTrainConfig.ROTATE_ACCEL)) | ||
| TurnConstraints(Configs.RoadRunnerConfig.ROAD_RUNNER_ROTATE_VELOCITY, -Configs.RoadRunnerConfig.ROAD_RUNNER_ROTATE_VELOCITY, Configs.DriveTrainConfig.ROTATE_ACCEL)) |
| @@ -37,13 +37,15 @@ class IMUGyro: IRobotModule { | |||
|
|
|||
| override fun update() { | |||
| if(_oldReadTime.milliseconds() > 1000.0 / Configs.GyroscopeConfig.READ_HZ && Configs.GyroscopeConfig.USE_GYRO) { | |||
There was a problem hiding this comment.
Заменить миллисекунды на секунды
| _oldReadTime.reset() | ||
|
|
||
| _eventBus.invoke(UpdateImuGyroEvent(rot, _imu.getRobotAngularVelocity(AngleUnit.RADIANS).xRotationRate.toDouble())) | ||
| _eventBus.invoke(UpdateImuGyroEvent(rot, angles.getRoll(AngleUnit.RADIANS), _imu.getRobotAngularVelocity(AngleUnit.RADIANS).xRotationRate.toDouble())) |
| get() { | ||
| val value = ((analogInput.voltage / Configs.CurrentSensor.ANALOG_INPUT_MAX_VOLTADGE) * 2.0 - 1.0) * -maxSensorCurrent | ||
|
|
||
| return value - backgroundCurrent |
There was a problem hiding this comment.
То что вычитается - это свойство потребителя, а не самого датчика тока (у сервопривода помимо измеряемого мотора есть схема управления, которая постоянно что-то жрет, датчик тока тут ни при чем)
| class CurrentSensor(val analogInput: AnalogInput, | ||
| val maxSensorCurrent: Double = Configs.CurrentSensor.DEFAULT_SENSOR_MAX_CURRENT, | ||
| val backgroundCurrent: Double = Configs.CurrentSensor.DEFAULT_BACKGROUND_CURRENT) { | ||
| val current: Double | ||
| get() { | ||
| val value = ((analogInput.voltage / Configs.CurrentSensor.ANALOG_INPUT_MAX_VOLTADGE) * 2.0 - 1.0) * -maxSensorCurrent |
There was a problem hiding this comment.
Странная (но рабочая :)) формула.
Нас на должен волновать максимально допустимый вольтаж аналогового порта (это свойсто аналогового порта, а не датчика тока)
Можно сделать гораздо проще и сделать вот какие константы: разрешение [Ампер/Вольт] - в нашем случае это 5.0/2.5 и сдвиг вольтажа (ожидаемый вольтаж при котором сила тока равна нулю, для нас это 2.5)
current = (voltage - VOLTAGE_OFFSET) * AMPS_PER_VOLT

финальный релиз программы робота 18742.