25 Commits

Author SHA1 Message Date
Patrick Goebel
9231e6c8bd Added call to resetPID() when robot speed is 0. This eliminates hysteresis from the robot motion. 2016-04-18 16:29:04 -07:00
Patrick Goebel
646b3234aa Fixed #elif statement for ARDUINO_ENC_COUNTER 2015-12-07 07:18:41 -08:00
Patrick Goebel
ca9dc66cd3 Changed #if defined to #ifdef in motor_driver.ino 2015-12-06 21:42:07 -08:00
Patrick Goebel
1a560fa508 Replaced #if defined with #ifdef statements in encoder_driver.ino 2015-12-06 21:36:15 -08:00
Patrick Goebel
b7f922f7e7 Fixed ifdef typo in encoder_driver.ino 2015-11-22 17:06:20 -08:00
theroboticsheep
e9810841b4 added support for rotating servos at different speeds 2015-04-18 18:29:53 -07:00
theroboticsheep
eda206f68c changed default sweep delay to zero so that servos will behave normally unless delay is increased 2015-04-17 15:06:24 -07:00
theroboticsheep
ddecaa0b2c added speed controlled servo sweep 2015-04-17 14:52:46 -07:00
Patrick Goebel
415dde63ee Changed readEncoder() arguments from 0, 1 to LEFT, RIGHT in diff_controller.h 2015-01-30 06:17:47 -08:00
Kristof Robot
4d399627e6 Added direct support for wheel encoders (Arduino Uno)
Added support for wheel encoder counting directly on the main Arduino board.
This allows connecting wheel encoders directly to the Arduino board,
without the need for any additional wheel encoder counter equipment.

For speed, the code is directly addressing the specific Atmega328p ports and interrupts, making this implementation Atmega328p (Arduino Uno) dependent.
It should be easy to adapt for other boards/AVR chips though.
2014-12-29 20:13:22 +01:00
Michael Ferguson
e3b7d2498c merge 2013-11-24 12:48:45 -08:00
Kristof Robot
7887d639f3 Bugfix - removed reset wind-up fix
Removed the reset windup prevention code, as the old code already
took care of that by only incrementing Ierror when output was not being clamped.
2013-08-16 16:16:48 +02:00
Kristof Robot
2c9881552b Bugfix: added resetPID() call in RESET_ENCODERS statement,
to ensure that PID gets reset when encoders get reset.
2013-08-16 15:04:33 +02:00
Kristof
dad031ee2c Enhanced PID algorithm
Enhanced PID algorithm based on the series of blog posts at http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/
Specifically:
    1. Avoid derivative kickback - http://brettbeauregard.com/blog/2011/04/improving-the-beginner%E2%80%99s-pid-derivative-kick/
    2. Allow smooth on-the-fly tuning changes - http://brettbeauregard.com/blog/2011/04/improving-the-beginner%E2%80%99s-pid-tuning-changes/
    3. Reset windup mitigation - http://brettbeauregard.com/blog/2011/04/improving-the-beginner%E2%80%99s-pid-reset-windup/
    4. Bumpless initialization - http://brettbeauregard.com/blog/2011/04/improving-the-beginner%E2%80%99s-pid-initialization/
2013-08-16 10:52:57 +02:00
Michael Ferguson
12a7ca4dbb catkinize 2013-02-02 12:43:37 -08:00
Patrick Goebel
849cb2ec83 Incorporated changes from James Nugen into ROSArduinoBridge library 2012-12-27 16:48:12 -08:00
Patrick Goebel
3d028f3bec Added ROSArduinoBridge sketch which breaks out the motor controller and encoder functions 2012-12-26 09:42:33 -08:00
Patrick Goebel
177171332a Servo positions are now specified in radians instead of degrees 2012-12-24 07:48:34 -08:00
Patrick Goebel
ad01b6ad55 Fixed bug in arduino_node.py changing aggregate topic name from sensors to sensor_state 2012-12-21 18:07:11 -08:00
Patrick Goebel
a1a87116f5 Changed mode variable to arg in MegaRobogaiaPololu sketch 2012-12-20 07:17:08 -08:00
Patrick Goebel
252ec14490 Changed mode variable to arg in MegaRobogaiaPololu sketch 2012-12-20 06:26:08 -08:00
Patrick Goebel
603154c1a9 Added more comments to MegaRobogaiaPololu sketch 2012-12-17 05:35:20 -08:00
Patrick Goebel
aadcd53f50 Added more comments to MegaRobogaiaPololu sketch 2012-12-16 18:53:49 -08:00
Patrick Goebel
3b2742b444 Added some comments to MegaRobogaiaPololu sketch 2012-12-15 11:00:40 -08:00
Patrick Goebel
70a0d712c5 First commit 2012-12-15 07:36:59 -08:00