@@ -15,7 +15,9 @@ void controller(float current_posn) {
15
15
bool override_lockout = (last_override + override_timeout) > millis ();
16
16
17
17
if (mswitch_up || mswitch_dwn || override_lockout) {
18
+ set_flow_control_valve (LOW);
18
19
set_remote_indicator (false );
20
+ remoteMotionEnabled = false ;
19
21
if ( mswitch_up == true && mswitch_dwn == false ) {
20
22
last_override = millis ();
21
23
moveUp ();
@@ -25,9 +27,8 @@ void controller(float current_posn) {
25
27
moveDown ();
26
28
}
27
29
else {
28
- remoteMotionEnabled = false ;
29
- target_posn = current_posn; // Ensure fail's safe
30
30
halt ();
31
+ target_posn = current_posn; // Ensure fail's safe
31
32
}
32
33
}
33
34
@@ -37,7 +38,12 @@ void controller(float current_posn) {
37
38
// Remote Input ~ Serial or ROS
38
39
// -----------------------------
39
40
40
- if (Serial.available () && override_lockout == false ) {
41
+ if (Serial.available () && override_lockout == true ) {
42
+ Serial.println (" --- !! Remote Control Lockout. Please wait 5-seconds !! ---" );
43
+ clearSerialBuffer ();
44
+ }
45
+
46
+ else if (Serial.available () && ros_enabled == false && override_lockout == false ) {
41
47
42
48
// Serial Client Input Position of unit: [mm]
43
49
target_posn = Serial.parseFloat () * 0.001 ;
@@ -59,14 +65,16 @@ void controller(float current_posn) {
59
65
remoteMotionEnabled = true ;
60
66
remoteTargetAchieved = false ;
61
67
}
62
- else if (Serial.available () && override_lockout == true ) {
63
- Serial.println (" --- !! Remote Control Lockout. Please wait 5-seconds !! ---" );
64
- clearSerialBuffer ();
68
+
69
+ else if (ros_enabled == true && override_lockout == false ) {
70
+ // Serial Client Input Position of unit: [meter]
71
+ target_posn = last_ros_joint_command;
65
72
}
66
73
67
- // else if (_ADD_ROS_CHECK_) {
68
- // //ADD ROS CODE HERE
69
- // }
74
+ if (Serial.available () && ros_enabled == true ) {
75
+ Serial.println (" --- !! Serial Control Lockout. Only accepting ROS Control. !! ---" );
76
+ clearSerialBuffer ();
77
+ }
70
78
71
79
72
80
@@ -80,13 +88,29 @@ void controller(float current_posn) {
80
88
if (directionOfMotion == false && current_posn >= target_posn) remoteTargetAchieved = true ; // overshoot moving down
81
89
else if (directionOfMotion == true && current_posn <= target_posn) remoteTargetAchieved = true ; // overshoot moving up
82
90
83
- // Actuate if target not met
91
+ // Actuate Control given Target Achieved
84
92
if (remoteTargetAchieved == true ) {
85
93
halt ();
94
+ set_flow_control_valve (LOW); // default back to slow speed
86
95
target_posn = current_posn; // fail safe
87
96
}
88
97
else if (directionOfMotion == false ) moveDown ();
89
98
else if (directionOfMotion == true ) moveUp ();
90
99
100
+ // Set speed of press motion
101
+ if (directionOfMotion == false && current_posn > target_posn - motionBuffer) // moving down
102
+ {
103
+ set_flow_control_valve (LOW);
104
+ }
105
+ else
106
+ {
107
+ set_flow_control_valve (HIGH);
108
+ }
109
+
110
+ if (directionOfMotion == true && remoteTargetAchieved == false ) // moving up
111
+ {
112
+ set_flow_control_valve (HIGH);
113
+ }
114
+ else if (directionOfMotion == true ) set_flow_control_valve (LOW);
91
115
}
92
116
}
0 commit comments