MeepMeep
MeepMeep copied to clipboard
Path visualization tool for Road Runner
MeepMeep
Path creation/visualization tool for Road Runner

Table of Contents
- Installing (Android Studio)
-
Extra Documentation
- Custom Background
- Adding a second bot
- Pulling Specific Jitpack Commits
-
Misc
- Poor Performance?
- Misc. Notes
Installing (Android Studio)
Video instructions found here: https://youtu.be/vdn1v404go8. Please note that it was recorded in 2021 and may be outdated at the time of viewing
-
In Android Studio, click on the "FtcRobotController" Module, then right click on the FtcRobotController folder and click
New > Module
-
On the left part of this window, select "Java or Kotlin Library"
-
From here, remove the
:ftcrobotcontroller:lib
in the "Library Name" section, and rename it toMeepMeepTesting
. You may use whatever name you wish but the rest of the instructions will assume you have chosen the nameMeepMeepTesting
. Ensure that you also change the "class name" section to match. -
Hit "Finish" at the bottom right of the Module Create window.
-
Open up the
build.gradle
file for the MeepMeepTesting module (or whatever you chose to name it prior). In this file, change all instancesJavaVersion.VERSION_1_7
toJavaVersion.VERSION_1_8
-
At the bottom of the file add the following gradle snippet:
repositories {
maven { url = 'https://jitpack.io' }
maven { url = 'https://maven.brott.dev/' }
}
dependencies {
implementation 'com.github.NoahBres:MeepMeep:2.0.3'
}
-
When android studio prompts you to make a gradle sync, click "Sync Now".
-
Create a class for your MeepMeepTesting java module if it does not yet exist. Paste the following sample in it. Feel free to change this later.
🚨 The code snippet and explanation within the video is currently not up-to-date with the latest MeepMeep 2.0.x API 🚨
package com.example.meepmeeptesting;
import com.acmerobotics.roadrunner.geometry.Pose2d;
import com.noahbres.meepmeep.MeepMeep;
import com.noahbres.meepmeep.roadrunner.DefaultBotBuilder;
import com.noahbres.meepmeep.roadrunner.entity.RoadRunnerBotEntity;
public class MeepMeepTesting {
public static void main(String[] args) {
MeepMeep meepMeep = new MeepMeep(800);
RoadRunnerBotEntity myBot = new DefaultBotBuilder(meepMeep)
// Set bot constraints: maxVel, maxAccel, maxAngVel, maxAngAccel, track width
.setConstraints(60, 60, Math.toRadians(180), Math.toRadians(180), 15)
.followTrajectorySequence(drive ->
drive.trajectorySequenceBuilder(new Pose2d(0, 0, 0))
.forward(30)
.turn(Math.toRadians(90))
.forward(30)
.turn(Math.toRadians(90))
.forward(30)
.turn(Math.toRadians(90))
.forward(30)
.turn(Math.toRadians(90))
.build()
);
meepMeep.setBackground(MeepMeep.Background.FIELD_CENTERSTAGE_JUICE_DARK)
.setDarkMode(true)
.setBackgroundAlpha(0.95f)
.addEntity(myBot)
.start();
}
}
- Create a run configuration for Android Studio.
-
First, click on the drop down menu on the top bar of Android Studio, where it says "TeamCode" with a little Android logo next to it.
-
Click
Edit Configurations
-
Click on the "+" symbol in the top left of the window, and when it prompts you, select "Application".
-
Change the name to your liking (ex. meepmeep-run)
-
Where it says "cp
" click it to open the dropdown, and then select FtcRobotController.MeepMeepTesting.main -
Where it says "Main Class", click the little "file" icon to the right of the text and then select the name of the main class for your MeepMeepTesting module.
-
From here, in the bottom right of the window, press "Apply" then "Ok".
-
It will now automatically switch to that Run/Debug Configuration profile.
-
- If at any point you would like to build code onto your Control Hub or Phone, then click the Run/Debug configuration profile at the top to open the dropdown menu and select TeamCode. Perform the same steps to switch back to MeepMeepRun.
Extra Documentation
Custom Background
Before the meepmeep.setBackground(MeepMeep.Background.FIELD_POWERPLAY_OFFICIAL)
, add the following lines of code and update the setBackground() command:
Image img = null;
try { img = ImageIO.read(new File("<PATH TO IMAGE>")); }
catch (IOException e) {}
meepMeep.setBackground(img)
// <following code you were using previously>
where <PATH TO IMAGE> is your path to the image you want to use for example:
- On MacOs: /Users/<username>/Documents/field.png
- On Windows: C:\Users\<username>\Documents\field.png
Adding a second bot:
MeepMeep version 2.x introduces a new API and updated entity handling, allowing one to run and coordinate multiple trajectories.
Declare a new RoadRunnerBotEntity
and add it via MeepMeep#addEntity(Entity)
.

package com.example.meepmeeptesting;
import com.acmerobotics.roadrunner.geometry.Pose2d;
import com.noahbres.meepmeep.MeepMeep;
import com.noahbres.meepmeep.core.colorscheme.scheme.ColorSchemeBlueDark;
import com.noahbres.meepmeep.core.colorscheme.scheme.ColorSchemeRedDark;
import com.noahbres.meepmeep.roadrunner.DefaultBotBuilder;
import com.noahbres.meepmeep.roadrunner.entity.RoadRunnerBotEntity;
public class MeepMeepTesting {
public static void main(String[] args) {
MeepMeep meepMeep = new MeepMeep(800);
// Declare our first bot
RoadRunnerBotEntity myFirstBot = new DefaultBotBuilder(meepMeep)
// We set this bot to be blue
.setColorScheme(new ColorSchemeBlueDark())
.setConstraints(60, 60, Math.toRadians(180), Math.toRadians(180), 15)
.followTrajectorySequence(drive ->
drive.trajectorySequenceBuilder(new Pose2d(0, 0, 0))
.forward(30)
.turn(Math.toRadians(90))
.forward(30)
.turn(Math.toRadians(90))
.forward(30)
.turn(Math.toRadians(90))
.forward(30)
.turn(Math.toRadians(90))
.build()
);
// Declare out second bot
RoadRunnerBotEntity mySecondBot = new DefaultBotBuilder(meepMeep)
// We set this bot to be red
.setColorScheme(new ColorSchemeRedDark())
.setConstraints(60, 60, Math.toRadians(180), Math.toRadians(180), 15)
.followTrajectorySequence(drive ->
drive.trajectorySequenceBuilder(new Pose2d(30, 30, Math.toRadians(180)))
.forward(30)
.turn(Math.toRadians(90))
.forward(30)
.turn(Math.toRadians(90))
.forward(30)
.turn(Math.toRadians(90))
.forward(30)
.turn(Math.toRadians(90))
.build()
);
meepMeep.setBackground(MeepMeep.Background.FIELD_FREIGHTFRENZY_ADI_DARK)
.setDarkMode(true)
.setBackgroundAlpha(0.95f)
// Add both of our declared bot entities
.addEntity(myFirstBot)
.addEntity(mySecondBot)
.start();
}
}
Pulling Specific Jitpack Commits
MeepMeep is hosted on JitPack. This allows the user to pull dependencies from any Git commit. Change the dependency version in build.gradle
to do so.
- Pull from a specific tagged version (same as install instructions)
-
implementation 'com.github.NoahBres:MeepMeep:2.0.3'
-
2.0.3
can be replaced with whatever version specified on the GitHub releases page
-
- Pull from whatever the latest commit on the master branch is
-
implementation 'com.github.NoahBres:MeepMeep:-SNAPSHOT'
-
- Pull from a specific commit
-
implementation 'com.github.NoahBres:MeepMeep:<commit version ID>'
-
<commit ID>
is replaced with ID of commit. For example "79d123f0c1" - This is not the full commit hash. It is the first 10 characters of the comit hash
-
Misc
Poor Performance?
On some systems, hardware acceleration may not be enabled by default.
To enable hardware acceleration use the cli flag: -Dsun.java2d.opengl=true
.
Or, enable it before initializing your MeepMeep
instance with the following snippet:
System.setProperty("sun.java2d.opengl", "true");
Notes:
Default Bot Settings:
- Constraints
- Max Vel: 30in/s
- Max Accel: 30in/s/s
- Max Ang Vel: 60deg/s
- Max Ang Accel: 60deg/s/s
- Track Width: 15in
- Bot Width: 18in
- Bot Width: 18in
- Start Pose: (x: 0in, y: 0in, heading: 0rad)
- Color Scheme: Inherited from MeepMeep.colorManager unless overriden
- Drive Train Type: Mecanum