|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||||
|
|||||
|
Re: When programming doesn't get enough time
Quote:
Quote:
|
|
#2
|
||||
|
||||
|
Re: When programming doesn't get enough time
Hello,
In sympathy with the programmers, how about this (and check the legality of any of it): (1) Is wireless flash of the controller available? If so: (2) Bag the robot with a charged battery. (3) Put the robot up on blocks. (4) Depending on what is in the bag, and attached: (5) Programmers can modify code and wirelessly flash and do limited testing? (6) Yes electrons are passing though the bag. Yes an electrical change is being made on the robot, but not mechanical. Just thowing it out there. . . . . It is human nature to let things slide, especially when the deadline appears far away, and you are not on the tail end of the process. Off season, endeavor to think about scheduling, robot modular design, practice robot, or even partial practice robot that can be controlled and powered. For example, if the mechanical design crew is working on the game manipulator, with a modular design, the programmers can work on chassis control. Hoping to make the process more effective for as many teams as possible. |
|
#3
|
||||
|
||||
|
Re: When programming doesn't get enough time
We got around this very effectively this year by taking a test-driven approach.
Split whatever code you're trying to test out into its own class, and have its entire interface with the robot be a single function call. Make sure the controlling code doesn't talk directly with WPILib (or else it ups the complexity of doing your simulated tests) We had something like: Code:
class ArmController
{
public:
Tick(double currentTime, double armPosition, double* shoulderPower, double* elbowPower);
private:
PIDController m_myPidController;
int myCurrentState; // 0 = stowing, 1 = going out, 2 = out, 3 = stowed, etc.
};
Code:
double shoulderPower=0; double elbowPower=0; m_armController.Tick(currentTime, m_armPot.Get(), &shoulderPower, &elbowPower); m_shoulderMotor.set(shoulderPower); m_elbowMotor.set(elbowPower); Code:
ArmController controller; double desiredShoulderPower; double desiredElbowPower; controller.Tick(0, OUT_POSITION, &desiredShoulderPower, &desiredElbowPower); assert(desiredShoulderPower == 0); // the arm is out, so we shouldn't be trying to drive it assert(desiredElbowPower == 0); // the arm is out, so we shouldn't be trying to drive it. Last edited by Bongle : 03-05-2016 at 07:52. |
|
#4
|
|||
|
|||
|
Re: When programming doesn't get enough time
Quote:
|
|
#5
|
|||
|
|||
|
Re: When programming doesn't get enough time
There's a reason we're building two robots now. As programmers, we frequently find flaws mechanical didn't consider. Some require a moderate redesign. e.g. We sheared the rivets again, you need to make this more durable. If you think the programmers are being hard on the robot, you should see what Drive Team does to it...
|
|
#6
|
||||
|
||||
|
Re: When programming doesn't get enough time
This is a great strategy, and my team was able to get a lot of programming done in build season before the real robot was even finished with just a practice drivetrain and a camera!
EDIT: But sometimes I still wished that the Mechanical people could just hurry up and finish the robot ![]() Last edited by Ninjastahr : 03-05-2016 at 10:39. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|