Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1. # sched.add_robot('codebox2', utils.left_X_close2wall)
  2. import utils
  3. sched = utils.Scheduler()
  4. # sched.add_robot('codebox1', utils.bottom_I_close2wall)
  5.  
  6. def delete_state():
  7. sched.stop_action(self.action)
  8. for i in range(1000):
  9. sched.stop_action(i)
  10.  
  11.  
  12.  
  13.  
  14. import wws_lite
  15. from IPython.display import Image
  16. import pprint
  17. pp = pprint.PrettyPrinter(indent=4)
  18. import math
  19. from time import sleep
  20. import matplotlib.pyplot as plt
  21. import urllib.request
  22. import numpy as np
  23. import orspy
  24.  
  25.  
  26. class State:
  27. def __init__(self, sched):
  28. self.object_seen = False
  29. self.sched = sched
  30. self.object = None
  31.  
  32. # self.sched.add_robot('codebox1', utils.bottom_I_close2wall)
  33. self.pose_detect = False
  34. self.img_detect = False
  35. self.action = 0
  36.  
  37. def start(self):
  38. self.action = self.sched.goto(orspy.EulerPose(68.73, 105.66, 0, 0, 0, 0),
  39. allowed_trans_error=0.3, allowed_rot_error=0.5)
  40. self.topic_img = "{}/object_img".format(self.sched.wws_topic_prefix())
  41. self.topic_pose = "{}/object_pose".format(self.sched.wws_topic_prefix())
  42. wws_lite.subscribe(self.topic_img, lambda x: self.wws_detect_img_cb(x))
  43. wws_lite.subscribe(self.topic_pose, lambda x: self.detect_cb_pose(x))
  44.  
  45.  
  46. def clear_action(self):
  47. self.sched.stop_action(self.action)
  48.  
  49. def end(self):
  50. wws_lite.unsubscribe(self.topic_img)
  51. wws_lite.unsubscribe(self.topic_pose)
  52.  
  53. def detect_cb_pose(self, m):
  54. sleep(0.3)
  55. if not self.object_seen:
  56. # print('object seen, closing in...')
  57. self.sched.stop_action(self.action)
  58. self.action = self.sched.fwd(.5, maxdist=0.5)
  59. self.object_seen = True
  60. self.pose = m
  61. self.class_name = m['object']['payload']['objects']['detections'][0]['class_name']
  62. # print(f"object type- {m['object']['payload']['objects']['detections'][0]['class_name']}")
  63. self.pose_detect = True
  64.  
  65. def wws_detect_img_cb(self, m):
  66. if self.object_seen:
  67. self.img = m
  68. detect = m['image']['url']
  69. f = urllib.request.urlopen(detect)
  70. a = plt.imread(f, 0)
  71. self.object_img = a
  72. self.img_detect = True
  73.  
  74. def control_loop(self):
  75. self.start()
  76. while True:
  77. sleep(0.1)
  78. print('sleeping...')
  79. if self.img_detect and self.pose_detect:
  80. break
  81. self.end()
  82. # print(self.pose)
  83. s = self.pose['object']['payload']['objects']['detections'][0]['bbox']
  84. print(f"object position- {np.mean(s[0::2]), np.mean(s[1::2])}")
  85. # print(self.img)
  86. print(f'class- {self.class_name}')
  87. plt.imshow(self.object_img)
  88. plt.show()
  89.  
  90.  
  91. # state = State()
  92. sched.goto(orspy.EulerPose(68.73, 105.66, 0, 0, 0, 0),
  93. allowed_trans_error=0.3, allowed_rot_error=0.5)
  94. # state.control_loop()
  95. # for i in range(100):
  96. # state.sched.stop_action(i)
  97. # state.delete_state()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement