blob: 6b849201002618a0a6968bfdb26aedac4b257625 [file] [log] [blame]
// *****************************************************************************
// Copyright (c) 2018 Agence spatiale canadienne / Canadian Space Agency
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// which accompanies this distribution, and is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// Contributors:
// Pierre Allard - initial API and implementation
// Regent L'Archeveque
// Sebastien Gemme
//
// SPDX-License-Identifier: EPL-1.0
// *****************************************************************************
@GenModel(prefix="ApogyAddonsMobility",
copyrightText="*******************************************************************************
Copyright (c) 2018 Agence spatiale canadienne / Canadian Space Agency
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v1.0
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html
Contributors:
Pierre Allard - initial API and implementation
Regent L'Archeveque,
Sebastien Gemme
SPDX-License-Identifier: EPL-1.0
*******************************************************************************",
childCreationExtenders="true",
extensibleProviderFactory="true",
modelName="ApogyAddonsMobility")
@GenModel(dynamicTemplates="true", templateDirectory="platform:/plugin/org.eclipse.apogy.common.emf.codegen/templates")
@GenModel(modelDirectory="/org.eclipse.apogy.addons.mobility/src-gen")
@GenModel(editDirectory="/org.eclipse.apogy.addons.mobility.edit/src-gen")
package org.eclipse.apogy.addons.mobility
import org.eclipse.apogy.common.topology.AggregateGroupNode
import org.eclipse.apogy.common.Apogy
/**
* Class representing a mobile platform (ex: a rover).
*/
class MobilePlatform extends AggregateGroupNode
{
/**
* Whether or not the platform is moving.
*/
boolean moving
/**
* The platform status.
*/
MobilePlatformStatus mobilePlatformStatus = "Off"
}
/**
* A mobile platform that is skid-steered.
*/
class SkidSteeredMobilePlatform extends MobilePlatform
{
double commandedRightWheelsVelocity
double actualRightWheelsVelocity
double commandedLeftWheelsVelocity
double actualLeftWheelsVelocity
/**
* Commanded angular velocity, positive is toward the left.
*/
@Apogy(units = "rad/s")
double commandedAngularVelocity
/**
* Actual angular velocity, positive is toward the left.
*/
@Apogy(units = "rad/s")
double actualAngularVelocity
/**
* Commanded linear velocity,forward is positive.
*/
@Apogy(units = "m/s")
double commandedTranslationVelocity
/**
* Actual linear velocity,forward is positive.
*/
@Apogy(units = "m/s")
double actualTranslationVelocity
/**
* The effective steering with (i.e. wheel track).
* @see https://en.wikipedia.org/wiki/Axle_track
*/
@Apogy(units = "m")
double effectiveSteeringWidth = "0.5"
}
/**
* Mobile platform status.
*/
enum MobilePlatformStatus
{
OFF as "Off" = 0,
READY as "Ready" = 1,
BUSY as "Busy" = 2,
FAILED as "Failed" = 3
}