GithubHelp home page GithubHelp logo

gamemanual0 / gm0 Goto Github PK

View Code? Open in Web Editor NEW
53.0 53.0 86.0 264.78 MB

Game Manual 0 - The most extensive guide out there for FTC

Home Page: https://gm0.org

License: Other

Makefile 5.41% Python 48.42% CSS 5.41% Batchfile 3.61% Dockerfile 0.48% JavaScript 2.78% HTML 20.84% Shell 13.07%

gm0's People

Contributors

1198159 avatar abidingabi avatar bencaunt avatar cadandcookies avatar cooperli1 avatar david-wzheng avatar dependabot[bot] avatar eeshwar-krishnan avatar gwfellows avatar henopied avatar jful42428 avatar jiceberg avatar jsyaklin avatar kevalshah2005 avatar nchu-git avatar noahbres avatar novabansal avatar pmichaud avatar rikhil2 avatar seakrueger avatar serivesmejia avatar shurik179 avatar sriramkalki avatar todd-lm avatar uvidyadharan avatar veernahar avatar walle256 avatar wardbenjamin avatar wfransen avatar windwoes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gm0's Issues

Mention adb start for launching app

What information should be added?
Android Studio seems to not automatically launch the app a lot of the time (a bug in the newer versions it seems?) so when you press play and upload the app, the app doesn't actually start. So you have to go to your phone and manually open it up. The workaround is running this command through ADB:

adb shell am start -n com.qualcomm.ftcrobotcontroller/org.firstinspires.ftc.robotcontroller.internal.PermissionValidatorWrapper

This way, you don't need to touch your phone.

Does it need it's own page? (Yes/No): No

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Idk wherever the ADB stuff is.

External encoders and programming them

What information should be added?
Explain how external encoders plug into a motor encoder port and should be treated like a motor in the sdk.

Does it need it's own page? (Yes/No): No

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Programming the sdk section?

Odometry page in hardware

What information should be added?
Add an odometry hardware page. Explanation of what dead wheels are (and difference between odometry and dead wheels/tracking wheels). Go over common encoders like rev throughbore, e8t, srx mag, and the benefits. Maybe reference existing designs like open odo? Add pictures of people’s existing odo. Link to odometry code page.

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Hardware

Basic time based auto sample

What information should be added?
Basic sample of time based auto. while(timer.seconds() < setTime) { move() }
Explain why this isn't ideal but it does work fine as a first step. Also the fact that the while loops are blocking.

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
🤷‍♂️

gm0 software section on button inputs

What information should be added?
Specifically information on how to to read single button presses rather than just a constant boolean that returns true. Like an "isPressed" thing. I feel like this confuses beginners.

Does it need it's own page? (Yes/No): 🤷

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
🤷

Proposed resource on software...

GM0 is an AWESOME resource and thank you for sharing it with the community.

I have recently put out a book about learning Java for FTC (I wrote it in order to help my team members and am hoping it is helpful to others as well.)

Would you consider putting a link to it in your software resources?

You can download the PDF of the book for FREE at:
https://github.com/alan412/LearnJavaForFTC

Tiny addendum stating that one should treat the Vex 393's as a CR Servo

What information should be added?
Add a quick note that you treat vex 393 motors like cr servos and that you need to connect to an SPM. Digression but also maybe mention spm under the servo section?

Does it need it's own page? (Yes/No): No

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
"Examples of using common hardware components" -> CR Servo section

Blocks samples

What information should be added?
Basic blocks samples. Mecanum drive blocks snippet especially. Would be impossible for a normal blocks team to figure out without knowing Java. And I've seen multiple blocks teams use mecanum drive. They just don't know how to program it. Also maybe just like simple tank drive since that's the most common. Pictures will be important imo to be digestible for a blocks audience.

Also maybe recreate the official ftc blocks tutorial in gm0? I think gm0 could do well and expand upon it a bit.
https://www.firstinspires.org/sites/default/files/uploads/resource_library/ftc/blocks-programming-autonomous.pdf
It's not actually that bad. (moreso just a problem with the blocks api itself being too complex imo)
My primary issue is that they show you how to set target position with the RTP but don't actually tell you what that target position implies. Idk if circumference * ticks per rev is the most understandable thing for a blocks audience but I do think it should be explained.

General blocks samples would expand gm0 to the blocks audience too.

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be in?
¯_(ツ)_/¯

Expand Upon Using the SDK

What information should be added?
The current format fits closer to that of a pdf--which was the previous intent. There are still several concepts that need to be addressed as well as functionalities (like gamepad inputs).

Does it need it's own page? (Yes/No): Split it into subpages.

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
See above.

Add a dark mode

Add a dark mode, use a prefers-color-scheme media query and potentially have a manual switch.

Add Mecanum Kinematics Information

Where is there misleading or incorrect information?
Pages referencing mecanum kinematics

What's wrong?
Calculating body velocity = forward kinematics
Calculating wheel velocities from desired body velocity = inverse kinematics

Clarification is probably good once kinematics start being mentioned for odometry. Odometry requires forward kinematics while what the kinematics refers to now is inverse.

Expand upon Control System Internals

What information should be added?
Relevant information to programmers about how the control system works/performs; this is already covered partially at https://gm0.org/en/stable/docs/software/using-the-sdk.html#a-note-on-hardware-call-speed, but expanding upon it as it's own page would help make a centralized source of info about how the control system works.

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
It should be under the software or electrical section; https://gm0.org/en/stable/docs/power-and-electronics/index.html, https://gm0.org/en/stable/docs/software/index.html.

Converting from Java 7 to 8

What information should be added?
Basic instructions somewhere on how to upgrade to java 8 in the Gradle files. Maybe short snippet on why you might need it (lambdas primarily).

Does it need it's own page? (Yes/No): No

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Not entirely sure. Probably one of the AS software setup pages.

Mecanum Page Doesn't Mention Motor Reversing

What information should be added?
The mecanum page should explicitly talk about reversing the direction of the motors as needed.

Does it need it's own page? (Yes/No): No

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Programming Tutorial - Mecanum Drive

Example code for runmodes

What information should be added?
Write example code for runmodes. I specifically want to write samples for the setVelocity() arguments and lifting the max rpm fraction. Reference the document NPE dug up regarding the update rate on the velo controllers.
Also sample code for RTP and it's correct order, just to be safe.
More detailed explanation for brake mode (search for Tyler's explanation for how the motors short themselves and incorporate that information)

Does it need it's own page? (Yes/No): No

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
"Examples of using common hardware components" -> DC Motor -> runmodes

goBILDA product insights like thing for common FTC mechanisms

What information should be added?
goBILDA product insights like thing for common FTC mechanisms. CAD pictures of things like lifts, intakes, sprung intakes? flywheels, linked motors?, etc. Just basic mechanisms with assembled CAD, blown up CAD pictures, etc.

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Under Robot Design.

NPE Exception Debugging

What information should be added?
NPE exceptions are sooo common and most beginner programmers often dont know how to handle them. Explain what null is? Explain why it happens. Etc. Hardwaremap being null because you're declaring it inside the class fields rather than in runOpMode. etc.

Needs a better outline tbh.

Explain how wireless adb will literally give you the exact line that the error occurs in.

Does it need it's own page? (Yes/No): idk

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
No clue 🤷‍♂️

Field Centric

What information should be added?
Field centric concepts + details + sample code

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Maybe advanced software?

Mentor Guide

What information should be added?
Information regarding how to approach mentoring teams, properly support team members, and foster a productive learning environment. Topics covered may include how to motivate students, how to settle disputes, how to effectively teach members new skills, how to seek out mentors in your community, and how to ensure longevity of teams. Doc of why this is important (Not OC)

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
It could go in the "Getting Started in FTC" page, although it might work better in a section of its own, especially if new pages are added related to strategy, outreach, management, etc.

Explanation/instructions for wireless adb

What information should be added?
Provide an explanation and accompanying instructions for wireless adb. Possibly include stuff you can do like scrpy for viewing the screen wirelessly or viewing wireless logcat in android studio.

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Some software section

Wheel Guide

What information should be added?
An overall wheel guide should be added; this should be it's own page under drivetrains.

This would cover all types of wheels.

With this, you could make the mecanum wheel miniguide a subsection of it, and just link to it in the mecanum section. (Also make sure to cover the REV Mecanum wheels.)

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
It should be under https://gm0.copperforge.cc/en/latest/docs/robot-design/drivetrains/index.html.

Add more notebooks under notebook gallery

What information should be added?
There should be more notebooks in the notebook gallery, starting off with:

Does it need it's own page? (Yes/No): No

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Notebook gallery section https://gm0.org/en/stable/docs/awards/notebook.html#notebook-gallery

RUN_TO_POSITION is recommended for drivetrains

Where is there misleading or incorrect information?
Search for RUN_TO_POSITION under https://gm0.copperforge.cc/en/latest/docs/software/using-the-sdk.html#dc-motor.

What's wrong?
RUN_TO_POSITION is described using the following: "This can be useful to newer teams for autonomous, as it can be an easy way to have accurate driving functions." This is generally incorrect; as RUN_TO_POSITION runs on each motor independently, this can cause issues on multi-motor mechanisms, especially drivetrains.

A warning should be added as to the issues with RUN_TO_POSITION on drivetrains and other multi-motor-mechanisms, and a recommendation for it on single motor mechanisms.

Trig inverse kinematics for mecanum

What information should be added?
Trig inverse kinematics for mecanum. The current code only works for teleop which is great for beginners but preferably the angle method works a lot better for auto. So just addendum ig.
Also there's straight up no code for it online.

Does it need it's own page? (Yes/No): No

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Mecanum page

Telemetry feature documentation

What information should be added?
Document telemetry features

  • Supported telemetry tags w/examples
  • Monospace telemetry, etc.
  • Changing transmission interval
  • telemetry.speak()

Does it need it's own page? (Yes/No): No(?)

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Under "Using the SDK" maybe?

Add Principles/Types of Transfer Mechanisms

What information should be added?
There should be a page explaining how to transfer items in the robot, such as conveyors, rollers, etc that link intake to other mechanisms. Things to include could be indexers, hoppers, magazines, etc.

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Robot Design

Simple go to point explanation/sample code

What information should be added?
Simple go to point explanation utilizing PID on top of mecanum kinematics.

Things to touch on:

  • explain that you should be using this with dead wheels. Go to point doesnt have any acceleration limiting so not really suitable for mecanum or you will experience high slip and it will throw off mecanum odometry.

  • basic go to point implementation. find angle between your current point (known via odo) and the target point. With a simple atan2 function.

  • Feed into trig based mecanum kinematics. Angle should be the angle you calculated. Magnitude/speed should be your result from the pid controller. Figure out this using math.hypot function. Then feed that distance into your PID controller.

  • Explain how PID controller gains influence behavior. kP makes it move faster/more aggressively once bot nears the target but can overshoot. kD to control deceleration. etc.

  • Cool plus: Offer example code. gm0 example code repo?

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Some software page.

Dead axle vs Live axle vs Zombie axle

What information should be added?
Info on benefits and cons of dead vs Live vs Zombie axle.

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Under power transmission

Game Manual 0, Game Manual 0 in PDF Header

What's broken?
In the PDF Header, stable or latest, the top left contains "Game Manual 0, Game Manual 0". This should only say "Game Manual 0" once.

Recreation steps:

  1. Open either latest or stable pdf, go to a random page, look at the top left corner.

Screenshots
Example

Add a leadership section

I was told by Jaxon to open this up. I wrote a leadership page that you guys seemed to like, and I'd like to suggest it as an addition to GM0.

  • Seb #2281

Add vision page

What information should be added?
Talk about Vuforia, Tensorflow, (Easy)OpenCV; mention scrcpy as an option to look at camera output.

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Make an advanced section under software, then put it under that.

Conflicting Information under Drivetrain selection

Where is there misleading or incorrect information?
In the Drivetrain Selection section, between number 2 and number 3.

What's wrong?
Under the agility section, it is recommended that "Generally, a solid drivetrain should have a speed in the range of 3-5 feet/second, and be able to turn fully in around 1 second." At the same time, 20:1 on 4" wheels is recommended; in the "Number of motors and gear ratio" section.

These are conflicting; the agility section should instead use free speed, and gear ratios should be expanded on, including ratios between ~16:1 and 20:1 on 4" wheels, and some equivalent ratios on 3" wheels.

Add info about Linkages

What information should be added?
Talk about linkages, basically rewrite https://gm0.org/en/stable/docs/robot-design/arms/chain-bar-arm.html.

Talk about 4 bars, v4bs, dr4bs, and custom ones (https://www.youtube.com/watch?v=QsAC_seQHJY, https://www.youtube.com/watch?v=I7iy8DCNmic).

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Get rid of https://gm0.org/en/stable/docs/robot-design/arms/chain-bar-arm.html; basically rewrite it, probably put it under https://gm0.org/en/stable/docs/robot-design as linkages

Add a "Strategy" page

What information should be added?
Add a "Strategy" page in the vein of Karthik's "Effective FIRST Strategies" talks; this overlaps somewhat with "Rookie Mistakes: Principles" somewhat, but maybe they could be merged? idk

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Probably put it as the first page under https://gm0.org/en/stable/docs/getting-started-in-ftc/index.html? 🤷

Android Studio Information

What information should be added?
Add info on how to use Android Studio (I'd probably just call the section Android Studio), adb, gradle, common errors, etc.

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Under "fundamental concepts of programming" or "using the sdk" in software https://gm0.org/en/stable/docs/software/index.html.

The latter probably makes more sense, as some people using java will be using OnBot, but if anybody has input i'd be glad to listen them.

Motor power and gear ratios

What information should be added?
Explain what power vs torque and rpm are; how gearing up and down works.

Also probably add some actual info about reading the vex motor curves on the JVN page.

Also mention converting from rotational to linear information (see https://www.reddit.com/r/FTC/comments/mrz3wt/linear_lift_spool_design/guq5d3z/?context=3).

Does it need it's own page? (Yes/No): Yes

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
https://gm0.copperforge.cc/en/latest/docs/hardware-basics/

Add a contributing guide

What information should be added?
Add a contributing guide so it's easier to contribute, look at the frc docs contributing guide.

Does it need it's own page? (Yes/No): Yes (probably? Multiple)

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Probably in the appendix, or as it's own section.

Add bulk read clarification

What information should be added?
Add details on what a bulk read is.

  • How it reads analog/DIO/etc. in a single read
  • Each rev hub has a single bulk read
  • also maybe add NPE's detail about the slight delay when the rev hubs have to repeat commands over the 485
  • how i2c cannot be part of bulk reads

Does it need it's own page? (Yes/No): No

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
Software > Using the FTC SDK > A Note on Hardware Call Speed

Refactor Glossary

Split the glossary into hardware basics, robot design, and software. (Maybe power and electronics?) Put them all in the appendix.

gmowo.org

What information should be added?
gmowo

Does it need it's own page? (Yes/No): uwu

If it needs a page, which section should it be in? If it doesn't, which page should it be under?
>w<

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.