Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scoot refactor, Drive & joint movment blocking, overshoot turn fix #180

Merged
merged 22 commits into from
Apr 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
f1c4402
src/scoot/src/Scoot.py: sync lock decorator rewrite, +drive sync lock
Carter90 Apr 1, 2021
b2f1d09
src/scoot/src/Scoot.py: added function locks and some PEP8 formatting
Carter90 Apr 5, 2021
da8eae4
src/scoot/src/Driver.py: reenable dynamic reconfigure, added sync locks
Carter90 Apr 5, 2021
f2e4d6f
Scoot package: massive name refactors, spelling, import cleanup, PEP8
Carter90 Apr 5, 2021
0c420d8
Added steering cap
abbypribis Apr 12, 2021
9ba4841
Merge branch 'master' of github.com:BCLab-UNM/SC2 into cap-drive-turn
abbypribis Apr 12, 2021
08d4a7c
Fixed member function arguements
abbypribis Apr 12, 2021
4072afb
src/scoot/msg/MoveRequest.msg: added linear_y, changed linear->linear_x
Carter90 Apr 13, 2021
c944ecb
src/scoot/src/Driver.py: initial pass as implementing strafing,+goal bug
Carter90 Apr 13, 2021
2395eae
src/Scoot.py: updated for linear_x & add translate function for strafing
Carter90 Apr 13, 2021
97c5f41
Merge branch 'cap-drive-turn' into test_1
Carter90 Apr 15, 2021
e243223
src/scoot/launch/scoot.xml: tighten goal and thresholds
Carter90 Apr 19, 2021
abafa45
src/scoot/src/Core.py: remove run call will be called from _control
Carter90 Apr 19, 2021
6644d6b
src/scoot/msg/MoveRequest.msg: update r->x and added y parameter
Carter90 Apr 19, 2021
3bbd58e
src/scoot/src/Scoot.py: updated with new MoveRequest parameters
Carter90 Apr 19, 2021
41e5e99
src/scoot/src/Driver.py: major rewrite of driver code support blocking
Carter90 Apr 19, 2021
a346870
src/scoot/launch/scoot.xml: lower drive speeds to avoid loss of contact
Carter90 Apr 26, 2021
3bc16dd
src/scoot/src/Driver.py: add missing speed ros parameters
Carter90 Apr 26, 2021
67c67f9
src/scoot/src/Driver.py: add task instance as class member &track result
Carter90 Apr 26, 2021
719d19b
src/scoot/src/Driver.py: don't publish duplicate twists to not overwhelm
Carter90 Apr 26, 2021
2fcc33b
src/scoot/src/Driver.py: -old code, +overshoot logging, +goal checking
Carter90 Apr 26, 2021
a13cd60
src/scoot/src/Scoot.py: remove duplicate function lock
Carter90 Apr 28, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion src/drive_controller/src/drive_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from std_msgs.msg import Float64

M_PI_2 = 1.5708
M_PI = M_PI_2 * 2

class DriveController:

Expand All @@ -32,6 +33,16 @@ def __init__(self):
self.wheel_base = 1.0
self.steering_track = 1.0


def clip_steering_angle(self, steer, vel):
max_steer = M_PI_2
min_steer = -1 * M_PI_2
if (steer > max_steer) and (steer - M_PI > min_steer):
return steer - M_PI, -1 * vel
if (steer < min_steer) and (steer + M_PI < max_steer):
return steer + M_PI, -1 * vel
return steer, vel

def _drive(self, msg):
lin_x = msg.linear.x
lin_y = msg.linear.y
Expand All @@ -51,6 +62,11 @@ def _drive(self, msg):
front_right_steering = math.atan2(y_comp_plus_ang, x_comp_plus_ang)
back_left_steering = math.atan2(y_comp_minus_ang, x_comp_minus_ang)
back_right_steering = math.atan2(y_comp_minus_ang, x_comp_plus_ang)

front_left_steering, vel_left_front = self.clip_steering_angle(front_left_steering, vel_left_front)
front_right_steering, vel_right_front = self.clip_steering_angle(front_right_steering, vel_right_front)
back_left_steering, vel_left_back = self.clip_steering_angle(back_left_steering, vel_left_back)
back_right_steering, vel_right_back = self.clip_steering_angle(back_right_steering, vel_right_back)

self.__drive_front_left_wheel(vel_left_front)
self.__drive_front_right_wheel(vel_right_front)
Expand All @@ -61,7 +77,7 @@ def _drive(self, msg):
self.__steer_front_right_wheel(front_right_steering)
self.__steer_back_left_wheel(back_left_steering)
self.__steer_back_right_wheel(back_right_steering)

def __drive_front_left_wheel(self, velocity):
v = Float64()
v.data = velocity
Expand Down
16 changes: 8 additions & 8 deletions src/scoot/launch/scoot.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,20 @@

<node name="Core" pkg="scoot" type="Core.py" respawn="true">
<param name="HEADING_RESTORE_FACTOR" value="1.0"/>
<param name="GOAL_DISTANCE_OK" value="0.1"/>
<param name="ROTATE_THRESHOLD" value="0.19"/>
<param name="GOAL_DISTANCE_OK" value="0.05"/>
<param name="ROTATE_THRESHOLD" value="0.001"/>
<param name="DRIVE_ANGLE_ABORT" value="1.5"/>

<!-- Default drive speeds. These are also used for manual driving. -->
<param name="DRIVE_SPEED" value="5"/>
<param name="REVERSE_SPEED" value="3"/>
<param name="TURN_SPEED" value="5"/>
<param name="DRIVE_SPEED" value="1"/>
<param name="REVERSE_SPEED" value="1"/>
<param name="TURN_SPEED" value="1"/>

<!-- Additional slow and fast drive speeds available through the Swarmie API -->
<param name="DRIVE_SPEED_SLOW" value="0.1"/>
<param name="DRIVE_SPEED_SLOW" value="0.5"/>
<param name="TURN_SPEED_SLOW" value="0.5"/>
<param name="DRIVE_SPEED_FAST" value="0.25"/>
<param name="TURN_SPEED_FAST" value="1.1"/>
<param name="DRIVE_SPEED_FAST" value="2"/>
<param name="TURN_SPEED_FAST" value="2"/>
</node>

<node name="odom" pkg="scoot" type="FakeLocalization.py" args="$(arg name)" respawn="true" >
Expand Down
3 changes: 2 additions & 1 deletion src/scoot/msg/MoveRequest.msg
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
float64 r
float64 x
float64 y
float64 theta
float64 timer
float64 angular
Expand Down
1 change: 0 additions & 1 deletion src/scoot/src/Core.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
rospy.loginfo("Core Starting without Task")

while not rospy.is_shutdown():
driver.run()
r.sleep()
except rospy.ROSInterruptException:
pass
Loading