summaryrefslogtreecommitdiffhomepage
path: root/digital/asserv/src/asserv/traj.c
diff options
context:
space:
mode:
authorNicolas Schodet2008-04-30 23:06:37 +0200
committerNicolas Schodet2008-04-30 23:06:37 +0200
commite6ef3e6642c4966a59b176fe6032939451954564 (patch)
treee99291836407914e09ed624ade113af75b2bb4f9 /digital/asserv/src/asserv/traj.c
parentb82634f57317dfba15ede759f5414ac5a22491ce (diff)
* digital/asserv/src/asserv:
- added angle limit setting.
Diffstat (limited to 'digital/asserv/src/asserv/traj.c')
-rw-r--r--digital/asserv/src/asserv/traj.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/digital/asserv/src/asserv/traj.c b/digital/asserv/src/asserv/traj.c
index 2b754a26..e0194ba8 100644
--- a/digital/asserv/src/asserv/traj.c
+++ b/digital/asserv/src/asserv/traj.c
@@ -76,6 +76,12 @@ int16_t traj_eps = 500;
/** Angle epsilon, angle considered to be small enough (f0.16). */
int16_t traj_aeps = 0x0100;
+/** Angle at which to start going forward (f0.16). */
+uint16_t traj_angle_limit = 0x2000;
+
+/** Angle at which to start going forward (rad, f8.24). */
+int32_t traj_angle_limit_rad;
+
/** Go to position. */
static uint32_t traj_goto_x, traj_goto_y;
@@ -85,6 +91,13 @@ static uint32_t traj_goto_a;
/** Allow backward movements. */
static uint8_t traj_backward_ok;
+/** Initialise computed factors. */
+void
+traj_init (void)
+{
+ traj_set_angle_limit (traj_angle_limit);
+}
+
/** Angle offset. Directly handled to speed layer. */
void
traj_angle_offset_start (int32_t angle, uint8_t seq)
@@ -207,7 +220,7 @@ traj_goto (void)
/* Compute consign. */
speed_alpha.pos_cons = pos_alpha.cur;
speed_alpha.pos_cons += arc;
- if (UTILS_ABS (arad) < PI_F824 / 2)
+ if (UTILS_ABS (arad) < traj_angle_limit_rad)
{
speed_theta.pos_cons = pos_theta.cur;
speed_theta.pos_cons += dt >> 8;
@@ -330,3 +343,11 @@ traj_update (void)
}
}
+/* Set angle limit. */
+void
+traj_set_angle_limit (uint16_t a)
+{
+ traj_angle_limit = a;
+ traj_angle_limit_rad = (uint32_t) a * (uint32_t) ((1 << 8) * M_PI * 2);
+}
+