|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
||||
|
||||
|
Initial release of MagicBot framework
In the spirit of "release early, release often", I'm happy to announce the first version of MagicBot, which is bundled with robotpy-wpilib-utilities 2016.3.0.
MagicBot is an opinionated framework for creating Python robot programs for the FIRST Robotics Competition. It is envisioned to eventually be an easier to use pythonic alternative to the Command framework. This initial release tackles the following problems:
Future problem areas I intend to tackle:
It's still lightly tested, not complete by any means, and I still have a few more ideas to add to it. However, what's there will probably work. ![]() Read more | Simple example program Feedback and bug reports welcome! |
|
#2
|
||||
|
||||
|
Re: Initial release of MagicBot framework
Magicbot has had a lot of upgrades this season, and hopefully in the offseason I'll be able to add some more things and document them.
Two particular new features in today's release that I wanted to highlight:
As an example, here's a theoretical shooter component: Code:
class ShooterAutomation:
# Some other component
shooter = Shooter
ball_pusher = BallPusher
def fire(self):
"""This is called from the main loop"""
self.engage()
@state(first=True)
def begin_firing(self):
self.shooter.enable()
if self.shooter.ready():
self.next_state('firing')
@timed_state(duration=1.0, must_finish=True)
def firing(self):
"""This state will continue executing even if engage isn't called"""
self.shooter.enable()
self.ball_pusher.push()
...
class MyRobot(magicbot.MagicRobot):
...
def teleopPeriodic(self):
if self.joystick.getTrigger():
self.shooter_automation.fire()
If you're competing at the Championship, you probably won't want to upgrade. But for the rest of you, download it and give it a shot. Last edited by virtuald : 26-04-2016 at 14:06. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|