Source code for sbp_env.samplers.mouseSampler

import time

from overrides import overrides

from ..samplers.baseSampler import Sampler
from ..utils import planner_registry

"""
For demo / testing only. This policy wait for user mouse input for next sampling node.
"""


[docs]class MouseSampler(Sampler): """A sampler that hooks into *PyGame*'s functionality to create sampled configurations with a mouse/touchpad, for **testing** if the motion planner is functioning correctly in creating tree edges or if certain bottlenecks within a map is accessibly. .. warning:: This sampler is for **testing purpose** only, and hence will not be extended for :math:`d > 2` or for collision checker other than *PyGame*. """ def __init__(self, **kwargs): super().__init__(**kwargs)
[docs] @overrides def get_next_pos(self): return ( self.get_mouse_click_position(scaling=self.args.scaling), self.report_success, self.report_fail, )
[docs] @staticmethod def get_mouse_click_position(scaling): """Helper function to return the current position of the mouse pointer :param scaling: scaling factor ot be applied to the mouse position """ import pygame while True: time.sleep(0.05) pygame.event.wait() if pygame.mouse.get_pressed()[0] == 1: # Left mouse pressed pos = pygame.mouse.get_pos() pos = (int(pos[0] / scaling), int(pos[1] / scaling)) return pos
# start register sampler_id = "mouse" planner_registry.register_sampler( sampler_id, sampler_class=MouseSampler, ) # finish register