REVLib'e Geçiş

SPARK MAX API ve/veya Renk Sensörü V3 API'den geçiş

2022'den itibaren, SPARK MAX API ve Renk Sensörü V3 API, REVLib adı verilen birleşik bir kütüphanede birleştirildi. REVLib'i yüklemeden önce bu eski kütüphaneleri kaldırdığınızdan emin olmanız gerekir.

LabVIEW'e geçiş

  1. Eski SPARK MAX API ve/veya Color Sensor V3 API paketlerinin kaldırıldığından emin olun.

  2. Eski API'leri kullanan bir projeyi açmak iyi çalışmalıdır. Yüklenirken, bazı eksik VI'lar olduğunu gösterebilir, ancak sonunda LabVIEW yeni VI'ları otomatik olarak bulmalıdır.

C++/Java'ya geçiş

  1. Robot projenizi VSCode'da açın.

  2. WPI Komut Paletini açmak için köşedeki WPI simgesine tıklayın.

  3. Manage Vendor Libraries'i seçin.

  4. Manage Current Libraries'i seçin.

  5. REVRobotics ve/veya REVColorSensorV3 öğelerini kontrol edin (hangisi mevcutsa)

  6. Bunları kaldırmak için OK düğmesine tıklayın.

  7. C++ ve Java için REVLib'i yükleyin.

CTRE Phoenix'ten geçiş

Birçok ekip Talon SRX ve Talon SPX gibi çeşitli CTRE motor kontrolörleri kullanıyor ve platformlar arasında yazılım taşıma konusunda endişeleri var. Neyse ki gerekli özellik seti ve kod ikisi arasında benzerdir ve birinden diğerine geçiş kolaydır. Aşağıda, CTRE Phoenix cihazlarının kodundan SPARK MAX'a dönüştürmek için gereken ortak görevler ve değişiklikler gösterilmektedir.

CTRE Phoenix'ten geçiş: Java

Kütüphaneyi Dahil Etme

import com.revrobotics.CANEncoder;
import com.revrobotics.CANPIDController;
import com.revrobotics.CANSparkMax;
import com.revrobotics.ControlType;
import com.revrobotics.CANSparkMaxLowLevel.MotorType;

CAN ID 1 Nesnesi Oluştur

private CANSparkMax sparkMax = new CANSparkMax(deviceID, MotorType.kBrushless);

Fabrika Varsayılanlarını Sıfırla

sparkMax.restoreFactoryDefaults();

Enkoder Seçimi

Bu bir fırçalı motor özelliğidir ve fırçasız motorları SPARK MAX ile kullanmak için gerekmez

encoder = sparkMax.getEncoder();
encoder.setInverted(false);
sparkMax.setFeedbackDevice(encoder);

Kapalı döngü sabitlerini ayarlama

pidController.setP(kP);
pidController.setI(kI);
pidController.setD(kD);
pidController.setIZone(kIz);
pidController.setFF(kFF);
pidController.setOutputRange(kMinOutput, kMaxOutput);

Kapalı Döngü Hız Kontrolünü Çalıştırma

Bu örnek için hız 500 RPM olarak ayarlanmıştır

pidController.setReference(500.0, ControlType.kVelocity);

Motor Devir Sayısını Okuma

encoder.getVelocity();

Uygulanan Çıkış Yüzdesini Okuma

sparkMax.getAppliedOutput();

Kapalı Döngü Pozisyon Kontrolünü Çalıştırma

Bu örnek, 10 devir için bir konum kontrol döngüsü çalıştırır.

pidController.setReference(10.0, ControlType.kPosition);

Birimleri 'rotasyon' yerine 'inç' olarak değiştirme

Bu örnekte 15:1 redüksiyon üzerinde 4” tekerlek varsayılmıştır

encoder.setPositionFactor(M_PI * 4/15);

Belirli bir mesafe için Kapalı Döngü Konum Kontrolünü çalıştırma

Bu örnekte, 2 fit (24 inç) hareket etmek için 15:1 redüksiyon üzerinde 4 inçlik bir tekerlek varsayılmıştır.

pidController.setReference(24.0, ControlType.kPosition);

Parametreleri Kaydetme

// Run after all parameters are set in RobotInit()
sparkMax.burnFlash();

Başka bir cihazı takip etme

sparkMax1.follow(sparkMax2);

Bir cihazı ters çevirme

sparkMax.setInverted(true);

Bir limit anahtarı yapılandırma

forwardLimit = sparkMax.getForwardLimitSwitch(LimitSwitchPolarity.kNormallyOpen);

Bir limit anahtarını devre dışı bırakma

forwardLimit.EnableLimitSwitch(false);

CTRE Phoenix'ten geçiş: C++

Kütüphaneyi Dahil Etme

#include "rev/CANSparkMax.h"

CAN ID 1 Nesnesi Oluştma

rev::CANSparkMax sparkMax{1, rev::CANSparkMax::MotorType::kBrushless};

Fabrika Varsayılanlarına Sıfırlama

sparkMax.RestoreFactoryDefaults();

Enkoder Seçme

Bu bir fırçalı motor özelliğidir ve SPARK MAX ile fırçasız motorları kullanmak için gerekmez.

rev::CANEncoder encoder = sparkMax.GetEncoder(rev::CANEncoder::EncoderType::kQuadrature, 4096);
encoder.SetInverted(true);
sparkMax.SetFeedbackDevice(encoder);

Kapalı döngü sabitlerini ayarlama

rev::CANPIDController pidController = sparkMax.GetPIDController();
pidController.SetFeedbackDevice(encoder);

pidController.SetP(kP);
pidController.SetI(kI);
pidController.SetD(kD);
pidController.SetIZone(kIz);
pidController.SetFF(kFF);
pidController.SetOutputRange(kMinOutput, kMaxOutput);

Kapalı Döngü Hız Kontrolünü Çalıştırma

Bu örnek için hız 500 RPM olarak ayarlanmıştır

pidController.SetReference(500.0, rev::ControlType::kVelocity);

Motor Devir Sayısını Okuma

encoder.GetVelocity();

Uygulanan Çıkış Yüzdesini Okuma

sparkMax.GetAppliedOutput();

Kapalı Döngü Pozisyon Kontrolünü Çalıştırma

Bu örnek, 10 dönüş için bir konum kontrol döngüsü çalıştırır.

pidController.SetReference(10.0, rev::ControlType::kPosition);

Birimleri 'rotasyon' yerine 'inç' olarak değiştirme

Bu örnekte 15:1 redüksiyon üzerinde 4” tekerlek varsayılmıştır

encoder.SetPositionFactor( M_PI * 4 / 15 );

Belirli bir mesafe için Kapalı Döngü Konum Kontrolünü Çalıştırma

Bu örnekte, 2 fit (24 inç) hareket etmek için 15:1 redüksiyon üzerinde 4 inçlik bir tekerlek varsayılmıştır.

pidController.SetReference(24.0, rev::ControlType::kPosition);

Parametreleri Kaydetme

// Run after all parameters are set in RobotInit()
sparkMax.BurnFlash();

Başka bir cihazı takip etme

sparkMax1.Follow(sparkMax2);

Bir cihazı ters çevirme

sparkMax.SetInverted(true);

Bir limit anahtarı yapılandırma

rev::CANDigitalInput forwardLimit = sparkMax.GetForwardLimitSwitch(rev::CANDigitalInput::LimitSwitchPolarity::kNormallyOpen);

Bir limit anahtarını devre dışı bırakma

forwardLimit.EnableLimitSwitch(false);

Last updated

Was this helpful?