| // ***************************************************************************** |
| // 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 |
| } |