You are on page 1of 3

/Users/jaycesheachow/Public/HExBOT_move_RD.

py
Saved: 12/16/15, 9:08:05 PM
1
2

Page 1 of 3
Printed For: Jayce Shea Chow

"""
Move function for hexbot.

3
4

"""

5
6
7

from numpy import *


from Leg_RD import *

8
9
10
11
12

class Hexbot:
def __init__(self, runrate):
""" initialize variables for the hexbot level of control """
self.runrate = runrate # get runrate in hertz

13
14

self.even_down = True # start with even legs down

15
16
17
18
19

self.legs = self.init_legs() # initialize list of legs


self.move_down = False #start by not switching legs
self.move_up = False
self.z = 0.0

20
21
22
23

self.legpositions = []
for leg in self.legs: # initialize list of leg positions
self.legpositions.extend(leg.returnangles())

24
25
26
27
28
29
30
31

def init_legs(self):
""" initializes a list of legs """
legs = []
for i in range(0, 6):
legs.append(Leg(i + 1))
return legs

32
33
34
35
36
37
38

def walkrate(self, dx, dy, ds, runrate):


"""
walks in dx, dy direction (rates given in inches per second)
returns the list of 18 angles for the current time
"""
anglelist = [] #start with empty angle list

39
40
41

down = -4
up = -2

42
43
44
45

for leg in self.legs: #check for any limits, if limits are hit, star
if not self.move_up or self.move_down:
self.move_down = leg.check_limit() or self.move_down

/Users/jaycesheachow/Public/HExBOT_move_RD.py
Saved: 12/16/15, 9:08:05 PM

Page 2 of 3
Printed For: Jayce Shea Chow

46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

for leg in self.legs:


if self.move_down and (leg.even != self.even_down):
self.z -= 2.0/self.runrate
if self.z < down:
self.z = down - 0.01
angles = leg.movespeed(dx, dy, self.z, ds, runrate)
elif self.move_up and (leg.even != self.even_down):
self.z += 2.0/self.runrate
if self.z > up:
self.z = up + 0.01
angles = leg.movespeed(dx, dy, self.z, ds, runrate)
elif leg.even == self.even_down:
angles = leg.movespeed(-dx, -dy, down, -ds, runrate)
else:
angles = leg.movespeed(dx, dy, up, ds, runrate)

63
64
65
66
67
68

# add 18 degrees down to servo 1 if the leg should be on the gro


# maybe we should move this to findangles
if leg.even == self.even_down:
angles[1] -= 18
anglelist.extend(angles)

69
70
71
72
73
74

if self.z < down:


self.move_down = False
self.move_up = True
self.even_down = (not self.even_down)
self.z = down

75
76
77
78

if self.z > up:


self.move_up = False
self.z = up

79
80

self.legpositions = anglelist

81
82
83
84
85
86

# create leg instances for testing. In use, these will be created in ROS_com
if __name__=='__main__':
legs = []
for i in range(0, 6):
legs.append(Leg(i))

87
88
89
90

# for i in range(48):
#
movebot('walkforward', i, legs)
# print len(walkdown)

/Users/jaycesheachow/Public/HExBOT_move_RD.py
Saved: 12/16/15, 9:08:05 PM
91
92
93
94

# for i in range(len(walkdown))
#
print walkdown[i]
# print len(walkforward(7, legs))

Page 3 of 3
Printed For: Jayce Shea Chow

You might also like