コード例 #1
0
ファイル: services.py プロジェクト: Woz4tetra/atlasbuggy
    def take(self):
        self.producer_queue = self.producer_sub.get_queue()
        self.producer = self.producer_sub.get_producer()

        self.logger.info("Got producer named '%s'" % self.producer.name)

    async def loop(self):
        while True:
            producer_counter = await self.producer_queue.get()

            self.logger.info("producer counter: %s" % producer_counter)
            await asyncio.sleep(0.5)


class MyOrchestrator(Orchestrator):
    def __init__(self, event_loop):
        super(MyOrchestrator, self).__init__(event_loop)

        producer = ProducerNode()
        consumer1 = ConsumerNode1()
        consumer2 = ConsumerNode2()

        self.add_nodes(producer, consumer1, consumer2)

        self.subscribe(producer, consumer1, consumer1.producer_tag)
        self.subscribe(producer, consumer2, consumer2.producer_tag)


run(MyOrchestrator)
コード例 #2
0
ファイル: playback.py プロジェクト: Rmaeshim/MATSpen
        # log_time = "22_02_17.log"
        # data_set_name = "tremor generator only, 6.4Hz"

        tb6612_name = "TB6612"
        tb6612_directory = os.path.join(log_date, tb6612_name)

        # update_rate = 0.0  # go as fast as possible
        update_rate = None  # run in real time

        bno055 = BNO055Playback(log_time, log_date, update_rate=update_rate)
        tb6612 = PlaybackNode(log_time, directory=tb6612_directory, message_class=TB6612Message, name=tb6612_name,
                              update_rate=update_rate)

        plotter = Plotter(enabled=True, time_data_window=6.0)

        csv_creator_tb6612 = CsvCreator(
            os.path.join("data", "%s %s %s-TB6612.csv" % (data_set_name, log_time[:-4], log_date[5:])),
            use_tb6612=True, use_bno055=False)
        csv_creator_bno055 = CsvCreator(
            os.path.join("data", "%s %s %s-BNO055.csv" % (data_set_name, log_time[:-4], log_date[5:])),
            use_bno055=True, use_tb6612=False)

        self.subscribe(tb6612, plotter, plotter.tb6612_tag)
        self.subscribe(bno055, plotter, plotter.bno055_tag)

        self.subscribe(tb6612, csv_creator_tb6612, csv_creator_tb6612.tb6612_tag)
        self.subscribe(bno055, csv_creator_bno055, csv_creator_bno055.bno055_tag)


run(PlaybackOrchestrator)
コード例 #3
0
ファイル: main.py プロジェクト: Rmaeshim/MATSpen
from atlasbuggy import Orchestrator, run

from graphical.plotter import Plotter
# from graphical.fft_plotter import Plotter
from arduinos.tb6612 import TB6612
from arduinos.bno055 import BNO055

matplotlib.use('TkAgg')  # keeps tkinter happy
from graphical.gui import TkinterGUI


class VisualizerOrchestrator(Orchestrator):
    def __init__(self, event_loop):
        self.set_default(write=False)
        super(VisualizerOrchestrator, self).__init__(event_loop)

        self.tb6612 = TB6612()
        self.bno055 = BNO055(enabled=True)
        self.plotter = Plotter(enabled=True, time_data_window=3.0)
        self.gui = TkinterGUI("constants/pid_constants.pkl")

        self.subscribe(self.tb6612, self.plotter, self.plotter.tb6612_tag)
        self.subscribe(self.bno055, self.plotter, self.plotter.bno055_tag)
        self.subscribe(self.bno055, self.plotter,
                       self.plotter.bno055_motor_tag)
        self.subscribe(self.tb6612, self.gui, self.gui.tb6612_tag)
        self.subscribe(self.bno055, self.gui, self.gui.bno055_tag)


run(VisualizerOrchestrator)
コード例 #4
0
def main():
    run(ConsoleOrchestrator, small_brake_experiment)
コード例 #5
0
def main():
    # run(ExperimentOrchestrator, large_brake_experiment)  # no extra resistor
    run(ExperimentOrchestrator, small_brake_experiment)  # with extra resistor
コード例 #6
0
        self.set_logger(write=False, level=10)
        super(BasicOrchestrator, self).__init__(event_loop)

        self.test_node = BasicNode()
        self.add_nodes(self.test_node)

    async def loop(self):
        counter = 0
        while True:
            self.logger.info("counter: %s" % counter)
            await asyncio.sleep(1.0)
            counter += 1


class BasicNode(Node):
    def __init__(self):
        super(BasicNode, self).__init__()

    async def loop(self):
        counter = 0
        while True:
            # intentional error:
            counter = 1 / counter

            self.logger.info("node counter: %s" % counter)
            await asyncio.sleep(1.0)
            counter += 1


run(BasicOrchestrator)
コード例 #7
0
ファイル: test_orbslam2.py プロジェクト: Woz4tetra/Naboris
        self.subscribe(self.stereo_sticher, self.viewer,
                       self.viewer.capture_tag)

        # recorder
        self.subscribe(self.stereo_sticher, self.recorder,
                       self.recorder.capture_tag)

        # orbslam2
        self.subscribe(self.stereo_cam, self.orbslam2,
                       self.orbslam2.stereo_tag)

        # stereo_cam
        self.subscribe(self.picamera, self.stereo_cam,
                       self.stereo_cam.fast_cam_tag)
        self.subscribe(self.client, self.stereo_cam,
                       self.stereo_cam.slow_cam_tag)

    async def loop(self):
        while True:
            await asyncio.sleep(0.25)
            if self.orbslam2.initialized:
                print("Tracking state: %s" % self.orbslam2.tracking_state)
                print(self.orbslam2.orb.get_trajectory_points())
                print()
            else:
                print("Orbslam not ready.")
                await asyncio.sleep(0.75)


run(OrbSlamOrchestrator)
コード例 #8
0
        self.command_client = CommandClient(client)
        self.picamera = PiCamera(enabled=False)

        self.add_nodes(self.hardware, self.cli, self.sounds, self.guidance,
                       self.odometry, self.camera_client, self.command_client,
                       self.picamera)

        self.subscribe(self.sounds, self.cli, self.cli.sounds_tag)
        self.subscribe(self.hardware, self.cli, self.cli.hardware_tag)
        self.subscribe(self.guidance, self.cli, self.cli.guidance_tag)
        self.subscribe(self.command_client, self.cli,
                       self.cli.command_source_tag)

        self.subscribe(self.odometry, self.guidance,
                       self.guidance.odometry_tag)
        self.subscribe(self.hardware, self.guidance,
                       self.guidance.hardware_tag)

        self.subscribe(self.hardware, self.odometry, self.odometry.encoder_tag,
                       self.hardware.encoder_service)
        self.subscribe(self.hardware, self.odometry, self.odometry.bno055_tag,
                       self.hardware.bno055_service)

        # async def loop(self):
        #     while True:
        #         print(self.hardware.left_tick, self.hardware.right_tick)
        #         await asyncio.sleep(0.1)


run(NaborisOrchestrator)
コード例 #9
0
from atlasbuggy import Orchestrator, run
from atlasbuggy.opencv import OpenCVViewer

from naboris.website_client import CameraWebsiteClient


class ClientCamOrchestrator(Orchestrator):
    def __init__(self, event_loop):
        self.set_default(write=True, level=10)
        super(ClientCamOrchestrator, self).__init__(event_loop)

        self.client = CameraWebsiteClient(720, 480)
        self.viewer = OpenCVViewer(enabled=True)

        self.add_nodes(self.client, self.viewer)

        self.subscribe(self.client, self.viewer, self.viewer.capture_tag)


run(ClientCamOrchestrator)
コード例 #10
0
ファイル: odometry_test.py プロジェクト: Woz4tetra/atlasbuggy
                await asyncio.sleep(0.0)
                continue

            odom = await self.odom_queue.get()
            self.x.append(odom.x)
            self.y.append(odom.y)

            self.plotter.plot('Odometry', self.x, self.y)

class Robot(Orchestrator):
    def __init__(self, event_loop):
        super(Robot, self).__init__(event_loop)

        imu_node = None
        encoder_node = None
        live_plotter = LivePlotter(
            title='Odometry Data',
            maximized=True
        )
        odom = Odometry()
        odom_plot = OdometryPlot()

        self.add_nodes(imu_node, encoder_node, live_plotter, odom, odom_plot)

        self.subscribe(imu_node, odom, odom.imu_tag)
        self.subscribe(encoder_node, odom, odom.encoder_tag)
        self.subscribe(live_plotter, odom_plot, odom_plot.plotter_tag)
        self.subscribe(odom, odom_plot, odom_plot.odom_tag)

run(Robot)
コード例 #11
0
ファイル: multi_node.py プロジェクト: Woz4tetra/atlasbuggy
        while True:
            self.logger.info("node counter: %s" % counter)
            await asyncio.sleep(0.25)
            counter += 4


class MultiNodeOrchestrator(Orchestrator):
    def __init__(self, event_loop):
        super(MultiNodeOrchestrator, self).__init__(event_loop)

        self.node1 = Node1()
        self.node2 = Node2()
        self.node3 = Node3()

        self.add_nodes(self.node1, self.node2, self.node3)

    async def loop(self):
        counter = 0
        while True:
            self.logger.info("orchestrator counter: %s" % counter)
            await asyncio.sleep(0.5)
            counter += 1

            if counter > 3:
                self.logger.info("counter = 4. Shutting down")
                # self.halt()  # halting or returning are valid options
                return


run(MultiNodeOrchestrator)
コード例 #12
0
ファイル: test_commands.py プロジェクト: Woz4tetra/Naboris
from atlasbuggy import Orchestrator, run

from naboris.hardware_interface import HardwareInterface
from naboris.cli import NaborisCLI
from naboris.website_client import WebsiteConnection
from naboris.website_client import CommandClient

log = True


class CommandOrchestrator(Orchestrator):
    def __init__(self, event_loop):
        self.set_default(write=log, level=20)
        super(CommandOrchestrator, self).__init__(event_loop)

        self.hardware = HardwareInterface(enabled=False)
        self.cli = NaborisCLI(enabled=False)

        client = WebsiteConnection("10.76.76.1", user="******", password="******", timeout=10)

        self.command_client = CommandClient(client)

        self.add_nodes(self.hardware, self.cli, self.command_client)

        self.subscribe(self.hardware, self.cli, self.cli.hardware_tag)
        self.subscribe(self.command_client, self.cli, self.cli.command_source_tag)


run(CommandOrchestrator)
コード例 #13
0
def main():
    run(ExperimentOrchestrator)
コード例 #14
0
        plotting_enabled = False
        self.viso_plotter_node = VisoPlotterNode(plotting_enabled)
        self.plotter = LivePlotter(enabled=plotting_enabled,
                                   title='PLOTS',
                                   size=(800, 800),
                                   ncols=2,
                                   frequency=0)

        # image area: 3673.6um, 2738.4um
        # pixel size: 1.4um
        f_pix = 743.28794629
        cu = 239.16868139
        cv = 216.06257926
        distored_w = 639  # 608
        distored_h = 479  # 441
        self.pipeline = Viso2MonoPipeline(f_pix, cu, cv, distored_w,
                                          distored_h)

        self.add_nodes(self.viso_plotter_node, self.plotter, self.video,
                       self.viewer, self.pipeline)

        self.subscribe(self.pipeline, self.viewer, self.viewer.capture_tag)
        self.subscribe(self.video, self.pipeline, self.pipeline.capture_tag)
        self.subscribe(self.pipeline, self.viso_plotter_node,
                       self.viso_plotter_node.viso_tag)
        self.subscribe(self.plotter, self.viso_plotter_node,
                       self.viso_plotter_node.plotter_tag)


run(VisoOrchestrator)