comit
This commit is contained in:
parent
592b5963ef
commit
7347ec8b7f
40
config.py
40
config.py
@ -67,6 +67,7 @@ JOINTS_HOME = [TABLE_QUADRANT*math.pi/2,
|
|||||||
-math.pi/2,
|
-math.pi/2,
|
||||||
49*math.pi/50]
|
49*math.pi/50]
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
|
||||||
|
|
||||||
# FORCE MONITOR
|
# FORCE MONITOR
|
||||||
@ -122,6 +123,45 @@ LOOP_ACC = 0.5
|
|||||||
R_LVL0 = 0.7 #tip of tool at table edge
|
R_LVL0 = 0.7 #tip of tool at table edge
|
||||||
Z_LVL0 = TABLE_Z + BLOCK_DIM/2 #tool in middle of block
|
Z_LVL0 = TABLE_Z + BLOCK_DIM/2 #tool in middle of block
|
||||||
THETA_EDGE_LEFT = -math.pi/4 + math.pi/68 #empirical. table is not exact
|
THETA_EDGE_LEFT = -math.pi/4 + math.pi/68 #empirical. table is not exact
|
||||||
|
=======
|
||||||
|
# Enables force constraints on the tool. Note: Setting this to "True" involves
|
||||||
|
# polling the UR5 through a real-time monitor that runs at 125Hz. If the controller
|
||||||
|
# runs slow, try disabling this first.
|
||||||
|
USE_FORCE_MONITOR = True
|
||||||
|
FORCE_CONSTRAINT = 60
|
||||||
|
FORCE_T = 0.1
|
||||||
|
|
||||||
|
# Control parameters.
|
||||||
|
VELOCITY = 0.1
|
||||||
|
ACCELERATION = 0.5
|
||||||
|
DECELERATION = 0.5
|
||||||
|
CHCMD_DECEL = 0.8
|
||||||
|
CHCMD_T = 0.01 # cooldown between commands to smooth out the change in motion
|
||||||
|
|
||||||
|
# Loop parameters
|
||||||
|
DEFAULT_LOOP_SPEED = 0.1
|
||||||
|
LOOP_SPEED_MAX = 0.7
|
||||||
|
LOOP_SPEED_MIN = 0.05
|
||||||
|
|
||||||
|
# Block parameters
|
||||||
|
BLOCK_DIM = 0.0975 #TODO measure
|
||||||
|
|
||||||
|
# Table cylinder parameters
|
||||||
|
TABLE_QUADRANT = 0 # In range [0..4). Quadrant 0 is along the x-axis of the robot.
|
||||||
|
TABLE_ORIGO_OFFSET = -0.25 # TODO measure
|
||||||
|
Z_TABLE = -0.336
|
||||||
|
R_MIN = 0.6 # relative to TABLE center
|
||||||
|
R_MAX = 0.9 # relative to TABLE center
|
||||||
|
THETA_MIN= -math.pi/4 # table edge left
|
||||||
|
THETA_MAX = math.pi/4 # table edge right
|
||||||
|
Z_MIN = Z_TABLE + BLOCK_DIM/2
|
||||||
|
Z_MAX = Z_MIN + 5*BLOCK_DIM
|
||||||
|
|
||||||
|
# Block move parameters
|
||||||
|
R_LVL0 = 0.7 # tip of tool at table edge
|
||||||
|
Z_LVL0 = Z_MIN
|
||||||
|
THETA_EDGE_LEFT = -math.pi/4 + math.pi/68
|
||||||
|
>>>>>>> parent of ccb5ffb... manual controller done. Going to separate control parameters for manual mode and auto mode
|
||||||
THETA_EDGE_RIGHT = math.pi/4 - math.pi/68
|
THETA_EDGE_RIGHT = math.pi/4 - math.pi/68
|
||||||
|
|
||||||
# Offsets when picking (and placing) blocks.
|
# Offsets when picking (and placing) blocks.
|
||||||
|
|||||||
5
demo.py
5
demo.py
@ -163,14 +163,11 @@ class UR5Demo(object):
|
|||||||
for m in (self.kb_map[key] for key in self.kb_map if pressed[key]):
|
for m in (self.kb_map[key] for key in self.kb_map if pressed[key]):
|
||||||
vec = map(sum, zip(vec, m))
|
vec = map(sum, zip(vec, m))
|
||||||
|
|
||||||
vec = tuple(vec)
|
|
||||||
self._disptxt([
|
self._disptxt([
|
||||||
"Keyboard control",
|
"Keyboard control",
|
||||||
"Use arrow keys, [w], and [s]",
|
"Use arrow keys, [w], and [s]",
|
||||||
" ",
|
" ",
|
||||||
"move vec: %s" % str(vec),
|
"move vec: %s" % str(vec)
|
||||||
"prev vec: %s" % str(self.controller.prev_vec),
|
|
||||||
"cylinder coords: %s" % str([('%.2f' % i) for i in self.controller.current_cyl])
|
|
||||||
])
|
])
|
||||||
|
|
||||||
dt = 1.0/config.CTR_FPS
|
dt = 1.0/config.CTR_FPS
|
||||||
|
|||||||
@ -206,8 +206,7 @@ class DemoController(object):
|
|||||||
if vr != 0:
|
if vr != 0:
|
||||||
self.movel(r+vr, theta, z, wait=False)
|
self.movel(r+vr, theta, z, wait=False)
|
||||||
elif vtheta != 0:
|
elif vtheta != 0:
|
||||||
# set end point edge
|
self.movec_hax(r, theta+vtheta, z, wait=False)
|
||||||
self.movec_hax(r, vtheta*self.theta_max, z, wait=False)
|
|
||||||
elif vz != 0:
|
elif vz != 0:
|
||||||
self.movel(r, theta, z+vz, wait=False)
|
self.movel(r, theta, z+vz, wait=False)
|
||||||
|
|
||||||
@ -216,7 +215,7 @@ class DemoController(object):
|
|||||||
self.stopl(acc=self.chcmd_decel)
|
self.stopl(acc=self.chcmd_decel)
|
||||||
|
|
||||||
def update(self, vec, dt):
|
def update(self, vec, dt):
|
||||||
"""Update movements based on vec and dt"""
|
"""Update movements based on vec (and dt?)"""
|
||||||
|
|
||||||
force = 10 # dummy
|
force = 10 # dummy
|
||||||
if self.force_mon and force > self.force_constraint:
|
if self.force_mon and force > self.force_constraint:
|
||||||
@ -225,33 +224,31 @@ class DemoController(object):
|
|||||||
return
|
return
|
||||||
|
|
||||||
self.set_current_cyl()
|
self.set_current_cyl()
|
||||||
r, theta, z = self.current_cyl
|
|
||||||
vr, vtheta, vz = vec
|
vr, vtheta, vz = vec
|
||||||
|
r, theta, z = self.current_cyl
|
||||||
# check bounds
|
|
||||||
rnext = r + (vr*self.vel*dt)
|
|
||||||
if (rnext < self.r_min and vr < 0) or (rnext > self.r_max and vr > 0):
|
|
||||||
vr = 0
|
|
||||||
thetanext = theta + (vtheta*self.vel*dt) # this is angular speed, but the diff is not significant
|
|
||||||
if (thetanext < self.theta_min and vtheta < 0) or (thetanext > self.theta_max and vtheta > 0):
|
|
||||||
vtheta = 0
|
|
||||||
znext = z + (vz*self.vel*dt)
|
|
||||||
if (znext < self.z_min and vz < 0) or (znext > self.z_max and vz > 0):
|
|
||||||
vz = 0
|
|
||||||
vec = (vr, vtheta, vz)
|
|
||||||
|
|
||||||
# move?
|
# move?
|
||||||
if sum(map(abs, vec)) == 0:
|
if sum(map(abs, vec)) == 0:
|
||||||
if vec != self.prev_vec:
|
if vec != self.prev_vec:
|
||||||
# stop
|
|
||||||
self.robot.stopl(acc=self.chcmd_decel)
|
self.robot.stopl(acc=self.chcmd_decel)
|
||||||
self.prev_vec = (0,0,0)
|
prev_vec = (0,0,0)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# check bounds
|
||||||
|
rnext = r + (vr*self.vel*dt)
|
||||||
|
if rnext < self.r_min or rnext > self.r_max:
|
||||||
|
vr = 0
|
||||||
|
thetanext = theta + (vtheta*self.vel*dt) # this is angular speed, but the diff is not significant
|
||||||
|
if thetanext < self.theta_min or thetanext > self.theta_max:
|
||||||
|
vtheta = 0
|
||||||
|
znext = z + (vz*self.vel*dt)
|
||||||
|
if znext < self.z_min or znext > self.z_max:
|
||||||
|
vz = 0
|
||||||
|
vec = (vr, vtheta, vz)
|
||||||
|
|
||||||
# command change
|
# command change
|
||||||
if vec != self.prev_vec:
|
if vec != self.prev_vec:
|
||||||
# from stand still
|
# from stand still
|
||||||
|
|
||||||
if sum(map(abs, self.prev_vec)) == 0:
|
if sum(map(abs, self.prev_vec)) == 0:
|
||||||
self.move(vec)
|
self.move(vec)
|
||||||
self.prev_vec = vec
|
self.prev_vec = vec
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user