started_video = True time.sleep(9999) except KeyboardInterrupt: print colorize("got control-c", "green") finally: if started_bag: bag_handle.send_signal(signal.SIGINT) bag_handle.wait() if started_video: video_handle.send_signal(signal.SIGINT) video_handle.wait() bagfilename = demo_name+".bag" if yes_or_no("save demo?"): annfilename = demo_name+".ann.yaml" call_and_print("generate_annotations.py %s %s"%(bagfilename, annfilename)) with open(args.master_file,"a") as fh: fh.write("\n" "- bag_file: %(bagfilename)s\n" " annotation_file: %(annfilename)s\n" " video_dir: %(videodir)s" " demo_name: %(demoname)s"%dict(bagfilename=bagfilename, annfilename=annfilename, videodir=demo_name, demoname=demo_name)) else: shutil.rmtree(demo_name) #video dir os.unlink(bagfilename)
import os from rapprentice.call_and_print import call_and_print os.chdir("../scripts") od = "~/henry_sandbox/rapprentice/sampledata/overhand" call_and_print( "./generate_annotations.py %(od)s/demo0_2013-04-20-15-58-09.bag %(od)s/demo0_2013-04-20-15-58-09.bag.ann.yaml" % dict(od=od)) call_and_print("./generate_h5.py %(od)s/overhand.yaml" % dict(od=od))
import os from rapprentice.call_and_print import call_and_print os.chdir("../scripts") od = "~/henry_sandbox/rapprentice/sampledata/overhand" call_and_print( "./generate_annotations.py %(od)s/demo0_2013-04-20-15-58-09.bag %(od)s/demo0_2013-04-20-15-58-09.bag.ann.yaml" % dict(od=od) ) call_and_print("./generate_h5.py %(od)s/overhand.yaml" % dict(od=od))
import rapprentice, os, os.path as osp from rapprentice.call_and_print import call_and_print assert osp.basename(os.getcwd()) == "test" call_and_print("python tps_unit_tests.py") call_and_print("python ../scripts/download_sampledata.py /tmp --use_rsync") call_and_print("python ../scripts/generate_h5.py /tmp/sampledata/overhand/overhand.yaml")
def main(): demofile = h5py.File(args.h5file, 'r') trajoptpy.SetInteractive(args.interactive) if args.execution: rospy.init_node("exec_task",disable_signals=True) Globals.pr2 = PR2.PR2() Globals.env = Globals.pr2.env Globals.robot = Globals.pr2.robot else: Globals.env = openravepy.Environment() Globals.env.StopSimulation() Globals.env.Load("robots/pr2-beta-static.zae") Globals.robot = Globals.env.GetRobots()[0] if not args.fake_data_segment: grabber = cloudprocpy.CloudGrabber() grabber.startRGBD() Globals.viewer = trajoptpy.GetViewer(Globals.env) ##################### started_bag = False started_video = False localtime = time.localtime() time_string = time.strftime("%Y-%m-%d-%H-%M-%S", localtime) os.chdir(osp.dirname(args.new_demo)) if not osp.exists(args.new_demo): yn = yes_or_no("master file does not exist. create?") basename = raw_input("what is the base name?\n").strip() if yn: with open(args.new_demo,'w') as fh: fh.write(""" name: %s h5path: %s bags: """%(basename, basename+".h5")) else: print "exiting." exit(0) with open(args.new_demo, "r") as fh: master_info = yaml.load(fh) if master_info["bags"] is None: master_info["bags"] = [] for suffix in itertools.chain("", (str(i) for i in itertools.count())): demo_name = args.demo_prefix + suffix if not any(bag["demo_name"] == demo_name for bag in master_info["bags"]): break print demo_name timestampfile = demo_name+"timestamps.txt" fht = open(timestampfile,"w") try: bag_cmd = "rosbag record /joint_states /joy -O %s"%demo_name #print colorize(bag_cmd, "green") bag_handle = subprocess.Popen(bag_cmd, shell=True) time.sleep(1) poll_result = bag_handle.poll() print "poll result", poll_result if poll_result is not None: raise Exception("problem starting video recording") else: started_bag = True video_cmd = "record_rgbd_video --out=%s --downsample=%i"%(demo_name, args.downsample) #print colorize(video_cmd, "green") video_handle = subprocess.Popen(video_cmd, shell=True) started_video = True #grab_end(new_xyz) fht.write('look:' + str(rospy.get_rostime().secs)) ################################ redprint("Finding closest demonstration") seg_name = find_closest_manual(demofile, None) seg_info = demofile[seg_name] redprint("Generating end-effector trajectory") old_xyz = np.squeeze(seg_info["cloud_xyz"]) scaled_old_xyz, src_params = registration.unit_boxify(old_xyz) link2eetraj = {} for lr in 'lr': link_name = "%s_gripper_tool_frame"%lr old_ee_traj = asarray(seg_info[link_name]["hmat"]) miniseg_starts, miniseg_ends = split_trajectory_by_gripper(seg_info) success = True for (i_miniseg, (i_start, i_end)) in enumerate(zip(miniseg_starts, miniseg_ends)): if args.execution=="real": Globals.pr2.update_rave() ################################ redprint("Generating joint trajectory for segment %s, part %i"%(seg_name, i_miniseg)) # figure out how we're gonna resample stuff lr2oldtraj = {} for lr in 'lr': manip_name = {"l":"leftarm", "r":"rightarm"}[lr] old_joint_traj = asarray(seg_info[manip_name][i_start:i_end+1]) #print (old_joint_traj[1:] - old_joint_traj[:-1]).ptp(axis=0), i_start, i_end lr2oldtraj[lr] = old_joint_traj ### Generate fullbody traj bodypart2traj = {} for (lr,old_joint_traj) in lr2oldtraj.items(): manip_name = {"l":"leftarm", "r":"rightarm"}[lr] #old_joint_traj_rs = mu.interp2d(timesteps_rs, np.arange(len(old_joint_traj)), old_joint_traj) ee_link_name = "%s_gripper_tool_frame"%lr #new_ee_traj = link2eetraj[ee_link_name][i_start:i_end+1] #new_ee_traj_rs = resampling.interp_hmats(timesteps_rs, np.arange(len(new_ee_traj)), new_ee_traj) if args.execution: Globals.pr2.update_rave() #new_joint_traj = planning.plan_follow_traj(Globals.robot, manip_name, # Globals.robot.GetLink(ee_link_name), new_ee_traj_rs,old_joint_traj_rs) part_name = {"l":"larm", "r":"rarm"}[lr] bodypart2traj[part_name] = old_joint_traj traj = {} for lr in 'lr': part_name = {"l":"larm", "r":"rarm"}[lr] traj[lr] = bodypart2traj[part_name] if i_miniseg ==0: redprint("Press enter to use current position as starting point") raw_input() arm_positions = {} (arm_position, arm_velocity, arm_effort) = robot_states.call_return_joint_states(robot_states.r_arm_joint_names) arm_positions['r'] = arm_position diff_r = np.array(arm_position - traj['r'][0,:]) maximum_r = max(abs(diff_r)) (arm_position, arm_velocity, arm_effort) = robot_states.call_return_joint_states(robot_states.l_arm_joint_names) arm_positions['l'] = arm_position diff_l = np.array(arm_position - traj['l'][0,:]) maximum_l = max(abs(diff_l)) maximum = max(maximum_l, maximum_r) speed = (20.0/360.0*2*(np.pi)) time_needed = maximum / speed initial_pos_traj = {} for lr in 'lr': part_name = {"l":"larm", "r":"rarm"}[lr] initial_pos_traj[part_name] = mu.interp2d(np.arange(0, time_needed, 0.01), np.array([0,time_needed]), np.array([arm_positions[lr], traj[lr][0,:]])) #initial_traj_length = initial_pos_traj.shape[0] #traj[lr] = np.concatenate((initial_pos_traj, traj_part[lr]), axis=0) #=======================send to controller====================== length_total = initial_pos_traj["larm"].shape[0] qs_l = np.resize(initial_pos_traj["larm"], (1, initial_pos_traj["larm"].shape[0]*7))[0] #resize the data to 1x7n (n being the number of steps) qs_r = np.resize(initial_pos_traj["rarm"], (1, initial_pos_traj["rarm"].shape[0]*7))[0] #F = np.array(np.matrix(F).T) # 6 x n F = np.zeros((length_total,6)) F = np.resize(F, (1, F.shape[0]*6))[0] #resize the data to 1x3n gripper = np.zeros((length_total,1)) gripper = np.resize(gripper, (1, gripper.shape[0]*1))[0] # Controller code in joint space pgains = np.asarray([2400.0, 1200.0, 1000.0, 700.0, 300.0, 300.0, 300.0]) dgains = np.asarray([18.0, 10.0, 6.0, 4.0, 6.0, 4.0, 4.0]) # Gains as Kps and Kvs for testing Kps = [] Kvs = [] for i in range(length_total): Kps.append(np.zeros((6,6))) Kvs.append(np.zeros((6,6))) toAddJkpJ = np.diag(np.asarray([-2400.0, -1200.0, -1000.0, -700.0, -300.0, -300.0, -300.0])) toAddJkvJ = np.diag(np.asarray([-18.0, -10.0, -6.0, -4.0, -6.0, -4.0, -4.0])) #toAddJkvJ = np.diag(np.asarray([0, 0, 0, 0, 0, 0, 0])) #length = complete_force_traj.shape[0] JKpJ = np.asarray([toAddJkpJ for i in range(length_total)]) JKpJ = np.resize(JKpJ, (1, 49*length_total))[0] JKvJ = np.asarray([toAddJkvJ for i in range(length_total)]) JKvJ = np.resize(JKvJ, (1, 49*length_total))[0] # [traj, Kp, Kv, F, use_force, seconds] Kps = np.resize(Kps, (1, 36 * length_total))[0] Kvs = np.resize(Kvs, (1, 36 * length_total))[0] #JKpJ = np.resize(JKpJ, (1, 49 * num_steps))[0] #JKvJ = np.resize(JKvJ, (1, 49 * num_steps))[0] stamps = asarray(seg_info['stamps']) data = np.zeros((1, length_total*(7+49+49+6+36+36+7+49+49+6+36+36+1)+2)) data[0][0:length_total*7] = qs_r data[0][length_total*7:length_total*(7+49)] = JKpJ data[0][length_total*(7+49):length_total*(7+49+49)] = JKvJ data[0][length_total*(7+49+49):length_total*(7+49+49+6)] = F data[0][length_total*(7+49+49+6):length_total*(7+49+49+6+36)] = Kps data[0][length_total*(7+49+49+6+36):length_total*(7+49+49+6+36+36)] = Kvs data[0][length_total*(7+49+49+6+36+36):length_total*(7+49+49+6+36+36+7)] = qs_l data[0][length_total*(7+49+49+6+36+36+7):length_total*(7+49+49+6+36+36+7+49)] = JKpJ data[0][length_total*(7+49+49+6+36+36+7+49):length_total*(7+49+49+6+36+36+7+49+49)] = JKvJ data[0][length_total*(7+49+49+6+36+36+7+49+49):length_total*(7+49+49+6+36+36+7+49+49+6)] = F data[0][length_total*(7+49+49+6+36+36+7+49+49+6):length_total*(7+49+49+6+36+36+7+49+49+6+36)] = Kps data[0][length_total*(7+49+49+6+36+36+7+49+49+6+36):length_total*(7+49+49+6+36+36+7+49+49+6+36+36)] = Kvs data[0][length_total*(7+49+49+6+36+36+7+49+49+6+36+36):length_total*(7+49+49+6+36+36+7+49+49+6+36+36+1)] = gripper data[0][-2] = 0 data[0][-1] = stamps[i_end] - stamps[i_start] msg = Float64MultiArray() msg.data = data[0].tolist() pub = rospy.Publisher("/controller_data", Float64MultiArray) redprint("Press enter to start trajectory") raw_input() time.sleep(1) pub.publish(msg) time.sleep(1) #===================end send to controller======================= raw_input("CAME TO START POSITION") time.sleep(1) fht.write('\nstart:' + str(rospy.get_rostime().secs)) ################################ redprint("Executing joint trajectory for segment %s, part %i using arms '%s'"%(seg_name, i_miniseg, bodypart2traj.keys())) if not args.useHenry: for lr in 'lr': success &= set_gripper_maybesim(lr, binarize_gripper(seg_info["%s_gripper_joint"%lr][i_start])) # Doesn't actually check if grab occurred, unfortunately print('1') fht.write('\nstart:' + str(rospy.get_rostime().secs)) print('2') if len(bodypart2traj) > 0: success &= exec_traj_maybesim(bodypart2traj) print('3') fht.write('\nstop:' + str(rospy.get_rostime().secs)) print('4') else: for lr in 'lr': redprint("Press enter to set gripper") raw_input() set_gripper_maybesim(lr, binarize_gripper(seg_info["%s_gripper_joint"%lr][i_start])) # Doesn't actually check if grab occurred, unfortunately if bodypart2traj!={}: length = i_end - i_start + 1 length_total = length traj_r = traj['r'] qs_r = np.resize(traj_r, (1, traj_r.shape[0]*7))[0] #resize the data to 1x7n (n being the number of steps) traj_l = traj['l'] qs_l = np.resize(traj_l, (1, traj_l.shape[0]*7))[0] #resize the data to 1x7n (n being the number of steps) #F = np.array(np.matrix(F).T) # 6 x n F = np.zeros((length_total,6)) F = np.resize(F, (1, F.shape[0]*6))[0] #resize the data to 1x3n gripper = np.zeros((length_total,1)) gripper = np.resize(gripper, (1, gripper.shape[0]*1))[0] # Controller code in joint space pgains = np.asarray([2400.0, 1200.0, 1000.0, 700.0, 300.0, 300.0, 300.0]) dgains = np.asarray([18.0, 10.0, 6.0, 4.0, 6.0, 4.0, 4.0]) # Gains as Kps and Kvs for testing Kps = [] Kvs = [] for i in range(length_total): Kps.append(np.zeros((6,6))) Kvs.append(np.zeros((6,6))) toAddJkpJ = np.diag(np.asarray([-2400.0, -1200.0, -1000.0, -700.0, -300.0, -300.0, -300.0])) toAddJkvJ = np.diag(np.asarray([-18.0, -10.0, -6.0, -4.0, -6.0, -4.0, -4.0])) #toAddJkvJ = np.diag(np.asarray([0, 0, 0, 0, 0, 0, 0])) #length = complete_force_traj.shape[0] JKpJ = np.asarray([toAddJkpJ for i in range(length_total)]) JKpJ = np.resize(JKpJ, (1, 49*length_total))[0] JKvJ = np.asarray([toAddJkvJ for i in range(length_total)]) JKvJ = np.resize(JKvJ, (1, 49*length_total))[0] # [traj, Kp, Kv, F, use_force, seconds] Kps = np.resize(Kps, (1, 36 * length_total))[0] Kvs = np.resize(Kvs, (1, 36 * length_total))[0] #JKpJ = np.resize(JKpJ, (1, 49 * num_steps))[0] #JKvJ = np.resize(JKvJ, (1, 49 * num_steps))[0] stamps = asarray(seg_info['stamps']) data = np.zeros((1, length_total*(7+49+49+6+36+36+7+49+49+6+36+36+1)+2)) data[0][0:length_total*7] = qs_r data[0][length_total*7:length_total*(7+49)] = JKpJ data[0][length_total*(7+49):length_total*(7+49+49)] = JKvJ data[0][length_total*(7+49+49):length_total*(7+49+49+6)] = F data[0][length_total*(7+49+49+6):length_total*(7+49+49+6+36)] = Kps data[0][length_total*(7+49+49+6+36):length_total*(7+49+49+6+36+36)] = Kvs data[0][length_total*(7+49+49+6+36+36):length_total*(7+49+49+6+36+36+7)] = qs_l data[0][length_total*(7+49+49+6+36+36+7):length_total*(7+49+49+6+36+36+7+49)] = JKpJ data[0][length_total*(7+49+49+6+36+36+7+49):length_total*(7+49+49+6+36+36+7+49+49)] = JKvJ data[0][length_total*(7+49+49+6+36+36+7+49+49):length_total*(7+49+49+6+36+36+7+49+49+6)] = F data[0][length_total*(7+49+49+6+36+36+7+49+49+6):length_total*(7+49+49+6+36+36+7+49+49+6+36)] = Kps data[0][length_total*(7+49+49+6+36+36+7+49+49+6+36):length_total*(7+49+49+6+36+36+7+49+49+6+36+36)] = Kvs data[0][length_total*(7+49+49+6+36+36+7+49+49+6+36+36):length_total*(7+49+49+6+36+36+7+49+49+6+36+36+1)] = gripper data[0][-2] = 0 data[0][-1] = stamps[i_end] - stamps[i_start] msg = Float64MultiArray() msg.data = data[0].tolist() pub = rospy.Publisher("/controller_data", Float64MultiArray) redprint("Press enter to start trajectory") raw_input() time.sleep(1) pub.publish(msg) time.sleep(1) #if not success: break print("Segment %s result: %s"%(seg_name, success)) print("exit loop") for i in range(100): time.sleep(1) except KeyboardInterrupt: redprint("=================================DONE================================") raw_input() raw_input() raw_input() fht.write('\nstop:' + str(rospy.get_rostime().secs)) fht.write('\ndone:' + str(rospy.get_rostime().secs)) fht.close() time.sleep(3) if started_bag: print "stopping bag" bag_handle.send_signal(signal.SIGINT) #bag_handle.wait() started_bag = False if started_video: print "stopping video" video_handle.send_signal(signal.SIGINT) #video_handle.wait() started_video = False bagfilename = demo_name+".bag" annfilename = demo_name+".ann.yaml" call_and_print("generate_ann.py %s %s %s"%(bagfilename, annfilename, timestampfile),check=False) with open(args.new_demo,"a") as fh1: fh1.write("\n" "- bag_file: %(bagfilename)s\n" " annotation_file: %(annfilename)s\n" " video_dir: %(videodir)s\n" " demo_name: %(demoname)s"%dict(bagfilename=bagfilename, annfilename=annfilename, videodir=demo_name, demoname=demo_name)) return
#!/usr/bin/env python import argparse parser = argparse.ArgumentParser() parser.add_argument( "path", help="script will create a sampledata directory in this location") parser.add_argument("--use_rsync", action="store_true") args = parser.parse_args() import os, urllib2, shutil from rapprentice.yes_or_no import yes_or_no from rapprentice.call_and_print import call_and_print if args.use_rsync: call_and_print( "rsync -azvu --delete [email protected]:/var/www/rapprentice/sampledata %s" % args.path) else: os.chdir(args.path) if os.path.exists("sampledata"): yn = yes_or_no("delete old directory") if yn: shutil.rmtree("sampledata") else: raise IOError os.mkdir("sampledata") print "downloading archive file" urlinfo = urllib2.urlopen( "http://rll.berkeley.edu/rapprentice/sampledata.tar") with open("sampledata.tar", "w") as fh: fh.write(urlinfo.read()) print "unpacking file"
finally: if started_bag: print "stopping bag" bag_handle.send_signal(signal.SIGINT) bag_handle.wait() if started_video: print "stopping video" video_handle.send_signal(signal.SIGINT) video_handle.wait() bagfilename = demo_name + ".bag" if yes_or_no("save demo?"): annfilename = demo_name + ".ann.yaml" call_and_print("generate_annotations.py %s %s" % (bagfilename, annfilename), check=False) with open(args.master_file, "a") as fh: fh.write("\n" "- bag_file: %(bagfilename)s\n" " annotation_file: %(annfilename)s\n" " video_dir: %(videodir)s\n" " demo_name: %(demoname)s" % dict(bagfilename=bagfilename, annfilename=annfilename, videodir=demo_name, demoname=demo_name)) else: if osp.exists(demo_name): shutil.rmtree(demo_name) #video dir if osp.exists(bagfilename): os.unlink(bagfilename)
#!/usr/bin/env python import argparse parser = argparse.ArgumentParser() parser.add_argument("path", help="script will create a sampledata directory in this location") parser.add_argument("--use_rsync", action="store_true") args = parser.parse_args() import os, urllib2, subprocess, shutil import os.path as osp import rapprentice from rapprentice.yes_or_no import yes_or_no from rapprentice.call_and_print import call_and_print if args.use_rsync: call_and_print("rsync -azvu --delete --exclude='*.tar' [email protected]:/var/www/rapprentice/sampledata %s"%args.path) else: os.chdir(args.path) if os.path.exists("sampledata"): yn = yes_or_no("delete old directory") if yn: shutil.rmtree("sampledata") else: raise IOError os.mkdir("sampledata") os.chdir("sampledata") print "downloading zip file" urlinfo = urllib2.urlopen("http://rll.berkeley.edu/rapprentice/sampledata/all.tar") with open("all.tar","w") as fh: fh.write(urlinfo.read()) print "unpacking file" call_and_print("tar xvf all.tar")
import rapprentice, os, os.path as osp from rapprentice.call_and_print import call_and_print assert osp.basename(os.getcwd()) == "test" call_and_print("python tps_unit_tests.py") call_and_print("python ../scripts/download_sampledata.py ~/Data --use_rsync") call_and_print( "python ../scripts/generate_h5.py ~/Data/sampledata/overhand/overhand.yaml" ) call_and_print("python test_registration_synthetic.py --plotting=0")
time.sleep(9999) except KeyboardInterrupt: print colorize("got control-c", "green") finally: if started_bag: print "stopping bag" bag_handle.send_signal(signal.SIGINT) bag_handle.wait() if started_video: print "stopping video" video_handle.send_signal(signal.SIGINT) video_handle.wait() bagfilename = demo_name+".bag" if yes_or_no("save demo?"): annfilename = demo_name+".ann.yaml" call_and_print("generate_annotations.py %s %s"%(bagfilename, annfilename),check=False) with open(args.master_file,"a") as fh: fh.write("\n" "- bag_file: %(bagfilename)s\n" " annotation_file: %(annfilename)s\n" " video_dir: %(videodir)s\n" " demo_name: %(demoname)s"%dict(bagfilename=bagfilename, annfilename=annfilename, videodir=demo_name, demoname=demo_name)) else: if osp.exists(demo_name): shutil.rmtree(demo_name) #video dir if osp.exists(bagfilename): os.unlink(bagfilename)
import rapprentice, os, os.path as osp from rapprentice.call_and_print import call_and_print assert osp.basename(os.getcwd()) == "test" call_and_print("python tps_unit_tests.py") call_and_print("python ../scripts/download_sampledata.py /tmp --use_rsync") call_and_print("python ../scripts/generate_h5.py /tmp/sampledata/overhand/overhand.yaml")
import rapprentice, os, os.path as osp from rapprentice.call_and_print import call_and_print assert osp.basename(os.getcwd()) == "test" call_and_print("python tps_unit_tests.py") call_and_print("python ../scripts/download_sampledata.py ~/Data --use_rsync") call_and_print("python ../scripts/generate_h5.py ~/Data/sampledata/overhand/overhand.yaml") call_and_print("python test_registration_synthetic.py --plotting=0")