Programming Team's Role

Hello,

Im trying to analyze what exactly a programming team needs to do so any input would be helpful

Thanks

program

I was think more specific roles

a robot.

Come on…

Be able to solve all problems because its always your fault. (Electrical and Mechanical knowledge of the robot)

HAHA! That’s hilarious because on Mechanical we always blame software.

I give up :frowning:

Not really

I’ll try to be more specific than above… but bear in mind, I’m a mechanical. Therefore, it’s always a programming problem or an electrical problem unless one or both of the above can prove that it is in fact a mechanical problem.

Programmers program the robot. This means that they sit at computers typing and clicking to make the code that drives the robot. They then compile the code, download it, test it, and fix any problems they find. The cycle then repeats.

What often happens is that they get to do the download, test, fix part only in the last few days before build day. This means that the more coding they do before they get the robot, the better. Understandably, they may ask for testbeds to do so. (They may not always get them, however.)

That, in a nutshell, is the sole, complete, and entire job of the programming team. They may subdivide it into autonomous and teleoperated, or into who programs what function of the robot, but as a programming team, their job is to write code so the robot doesn’t just sit there.

Thanks for making an effort to be more specific

Some where on the team you need a conductor. Somebody who understands everything it takes to make the robot work & get the various teams to work together. On our team that is the job of the chief engineer.

As far as what is expected from the programming team. They need to understand the electrical side of things because the Crio ultimately interacts with the world through electrical IO. They need to understand the mechanical side of things because ultimately the robot is a mechanical device. The need to understand the controls because ultimately the drive team control the robot. So the program team does not get to shape reality. The programers have to make their program work with the reality giving them. So of course it is ultimately the programmer fault when it doesn’t work. :ahh:

Thats not fair :frowning:

The most important responsibility that is left out of the previous comments…

**Programmers need to be an integral part of the entire mechanical design of the robot. **

In my experience, I have seen far to many robots be designed, build, rebuild then handed off to the programmers to “Make it work”. This will often times leave the programmers with a robot they

a) are not capable of programming (with their particular skillsets)
b) do not have the time to completely program

To have a successful robot, it is necessary that the programming team is active in the robot design from day one. In the end, it is the responsibility of the programming team to make the dreams of the mechanical team come true. This means, they need to step in during the initial design and say “this might be difficult to control”, or “we might not be capable of doing this”, or “if you move this back 2 inches from the sensor it will give our program more time to respond correctly”.

This is our most recent revision of the team 1716 organization structure, where at the bottom of the page you will see our build season structure. This document shows that that our team is split up into subteams to design specific systems on the robot. In each of those subteams, there is a control (programming/electrical) team member to ensure that sensors and programmability is integrated into the mechanical design of the robot.

Being active from week ONE, will save many headaches and late nights at the end of week SIX!

1 Like

I like to think that the drive team members are the programming team’s customers and the programmers have to try to meet the drive team’s needs. There are many sensors and control tools that can dramatically aide the drivers during the matches and the programming group plays a big part in making the sensors work.

1 Like

I was also thinking of goals and team responsibilities for the programming team

Some good goals for a programming team are to make an autonomous mode that can consistently score (or at least consistently do what it should), and to try to make the drivers’ jobs easier by integrating autonomous functionality into the control code.

Depending on the size of your team (and the number of individuals interested in programming), the roles on your programming team and goals are going to be different.

You should start in the preseason with a set of goals of things you’d like to be able and know how to do on the robot, and then work as time allows to try each one. That way, once you get to the build seaon, you won’t be scratching your head thinking “how do I use a gyro in code?” and you’ll be familiar with finding documentation on problems that may arise (part of being an engineer - you don’t necessarily need to know what something is, you need to know how to find it quickly).

Once the game is announced, you’ll be able to describe to the mecanical team your abilities and your limitations (I know how to use a camera to orient the robot towards a target, but I don’t know how to calculate the distance to determine wheel speed.)
You’ll also be able to ask for sensors in parts of the robot (I need an optical encoder somewhere near each drive wheel so that I can have the robot automatically drive at a specific speed,) which should make the robot more of a robot and less of a remote controlled vehicle.

As the robot nears completion, you’ll know what the structure of your code should look like in order to do tasks, and what the operator interface should look like in order to control the robot (when the driver presses this button, the robot should orient itself towards a target, and the driver will know it’s done when this LED flashes)

You’ll also need code to test the orientation of motors and pneumatics, one at a time. It’ll be a good idea to have an abstraction layer where that’s all defined, so when you’re working in higher up code you don’t care if 254 is forward or reverse, your math makes sense.

Lastly, you’ll be responsible for the autonomous mode. This will be game dependent, but it’s a good idea to have high level functions implemented (DriveForward(distance), TurnLeft(degrees), MoveArm(configuration)) and tested, so putting together a few strategies isn’t a pain.

I believe one of the roles of the programming team is to assist the mechanical/electrical teams with debugging the individual systems.

Develop a set of tools (the supplied examples are a great starting point) that will allow you to isolate the individual systems.

For example, you should have code that will test an individual encoder, run each motor individually (or in tandem is using two motors with a gearbox), test individual solenoids etc… This will allow the team to debug connection problems and help isolate problems to have them corrected sooner.

When the season begins, I have the programmers look into the examples and use them for this purpose. It makes trouble shooting easier to look at only one part of the system at a time, rather than the entire robot, which can be overwhelming.

I will tackle our programming teams role in two ways. What the lead does and what the team does

First the Programming Group Lead:
•Programming Group Lead is to assure that all coding being done for the robot is done in an orderly and timely fashion.
•Programming Group Lead is to be the liaison between mentors of the group and the students of the group.
•Programming Group Lead will work to teach new students the current language of the team.
•Programming Group Lead is expected to communicate with the Mechanical Group Lead about the direction the robot is taking and any components that have been changed as not to waste the groups time on a task that will not be used.
•Each Group Lead is responsible for dividing up tasks among students in their sub-team.
•Group Leads are expected to be in the Pit to answer judges questions unless they are participating in another regional activity (field team, Chairmans presenter, ETC.).

Now for the remainder of the team their roles are much simpler.
-Listen to the group lead about the tasks you are assigned
-Be honest about your skills and ask questions if you are confused

  • Learn how to deploy code, run debug, reset code, and know the safety rules of the robot.

Im not sure what has already been said, but this is my input… ((get it? input?.. nvm))

anyway, as the head of the programing team on my robotics teams, I have plenty of responsibilities in coordinating with other teams, and bringing up ideas.

in the preseason, you have to bring all new programmers up to speed with the language and methods used by the team. teach em the trade!

programers are engineers too, so their ideas for a mechanical contraption are no less serious than a mechanical team’s idea. their job in the design process is to come up with ideas, and be able to admit their limitations to the other teams. you always have to be thinking about your limitations, and thinking of new ways to control the robot. say the mechanical teams says… “We want to make this awesome arm with 14 degrees of rotation.” first thing you have to think is… Can we program it? and is it worth it? if the answer to either is no, it is the programer’s responsibility to announce that.

the other thing is, if it is an idea you want to go with, think from the beginning how you want to control it. if you want a feed back control loop, you have to tell the other teams you want a sensor in there from the beginning.

next, in terms of the building the robot, you have to coordinate with the electrical team and mechanical team to find where you need and want sensors. the earlier the better.

next in the actual programing…
1: plan. plan how you are going to program it. any control loops, and any special algorithms you are going to need.
2: make it. program it… pretty self explanatory.
3: test it. you have to make sure it works. work out all the bugs.
4: modify it. you almost never get something you want to keep all the way through the competition, so you have to be able to change code mid competition.

I hope this helps!