Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: Library/TaskMoveTo.cpp
- Revision:
- 0:7cf5bf7e9486
- Child:
- 1:7bf9b6c007a1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Library/TaskMoveTo.cpp Fri Mar 23 13:07:58 2018 +0000
@@ -0,0 +1,86 @@
+/*
+ * TaskMoveTo.cpp
+ * Copyright (c) 2017, ZHAW
+ * All rights reserved.
+ */
+
+#include <cmath>
+#include "TaskMoveTo.h"
+
+using namespace std;
+
+const float TaskMoveTo::DEFAULT_VELOCITY = 0.2f; // default velocity value, given in [m/s]
+const float TaskMoveTo::DEFAULT_ZONE = 0.01f; // default zone value, given in [m]
+const float TaskMoveTo::PI = 3.14159265f; // the constant PI
+const float TaskMoveTo::K1 = 2.0f; // position controller gain parameter
+const float TaskMoveTo::K2 = 0.5f; // position controller gain parameter
+const float TaskMoveTo::K3 = 0.5f; // position controller gain parameter
+
+/**
+ * Creates a task object that moves the robot to a given pose.
+ * @param conroller a reference to the controller object of the robot.
+ * @param x the x coordinate of the target position, given in [m].
+ * @param y the y coordinate of the target position, given in [m].
+ * @param alpha the target orientation, given in [rad].
+ */
+TaskMoveTo::TaskMoveTo(Controller& controller, float x, float y, float alpha) : controller(controller) {
+
+ this->x = x;
+ this->y = y;
+ this->alpha = alpha;
+ this->velocity = DEFAULT_VELOCITY;
+ this->zone = DEFAULT_ZONE;
+}
+
+/**
+ * Creates a task object that moves the robot to a given pose.
+ * @param conroller a reference to the controller object of the robot.
+ * @param x the x coordinate of the target position, given in [m].
+ * @param y the y coordinate of the target position, given in [m].
+ * @param alpha the target orientation, given in [rad].
+ * @param velocity the maximum translational velocity, given in [m/s].
+ */
+TaskMoveTo::TaskMoveTo(Controller& controller, float x, float y, float alpha, float velocity) : controller(controller) {
+
+ this->x = x;
+ this->y = y;
+ this->alpha = alpha;
+ this->velocity = velocity;
+ this->zone = DEFAULT_ZONE;
+}
+
+/**
+ * Creates a task object that moves the robot to a given pose.
+ * @param conroller a reference to the controller object of the robot.
+ * @param x the x coordinate of the target position, given in [m].
+ * @param y the y coordinate of the target position, given in [m].
+ * @param alpha the target orientation, given in [rad].
+ * @param velocity the maximum translational velocity, given in [m/s].
+ * @param zone the zone threshold around the target position, given in [m].
+ */
+TaskMoveTo::TaskMoveTo(Controller& controller, float x, float y, float alpha, float velocity, float zone) : controller(controller) {
+
+ this->x = x;
+ this->y = y;
+ this->alpha = alpha;
+ this->velocity = velocity;
+ this->zone = zone;
+}
+
+/**
+ * Deletes the task object.
+ */
+TaskMoveTo::~TaskMoveTo() {}
+
+/**
+ * This method is called periodically by a task sequencer.
+ * @param period the period of the task sequencer, given in [s].
+ * @return the status of this task, i.e. RUNNING or DONE.
+ */
+int TaskMoveTo::run(float period) {
+
+ // bitte implementieren!
+
+ return RUNNING;
+}
+