Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   NI LabVIEW (http://www.chiefdelphi.com/forums/forumdisplay.php?f=182)
-   -   How do you wire a Kick motor in labview? (http://www.chiefdelphi.com/forums/showthread.php?t=82721)

K Lenox 15-02-2010 13:18

How do you wire a Kick motor in labview?
 
Hello I am Lead Programmer for Amherst Robotic Team#2632 Comets Unleashed.

I need help for the autonomous mode for labVIEW

My plan is to make the program do this
[ move forward, stop, kick the ball] Repeat 3 times.

working form the outside in:

ForLoop1(with loop count set at three), Watchdog open, RobotDriveRegerstryGet(Left and Right Motors)

[inside ForLoop1] WhileLoop, ForLoop2(loop count st at 1)
[inside WhileLoop] Watchdog Feed, Drive TankDrive(75%MaxSpeed), ElapsedTime(set to 3 Seconds)(connected to loop condition)
[inside ForLoop2] Watchdog Feed, Drive TankDrive(0%Max Speed),
All the Watchdog's are connected/All the Drive TankDrive's are connected with the Purple Line

So that is what I have. My question is now how do I connect the kick motor so it preforms the way I stated above. I have a program thats like this [MotorControlRegisteryGet(labled KickMotor), connected with a purple line to Motor SetSpeed(Constant at 1). Does that need to go there?

Also as a side Note I would like to connect a Watchdog Kill at the very End of everything, but It won't let me. It says this after I connect the purple line from the secoon Watchdog Feed to the Watchdog Kill. It connects to the ForLoop2 making a tunnel, then the ForLoop1 making a tunnel. Then there is a broken wire between the ForLoop1 tunnel and the Watchdog Kill. I hovered the mouse over it and it said this:

"Array element conflict
Thetype of source is 2-D array of typedef 'WatchdogDevRef.ctl'
cluster of 1 element
The type of the sink is typedef 'WatchdogDevRef.ctl'
clustter of 1 element"


If you could explain what that is and how I could connect it that would be great.

Thanks, any help appreciated.

Kyle Lenox

K Lenox 15-02-2010 13:21

Re: How do you wire a Kick motor in labview?
 
Sorry there is a typo. this paragrah is supposed to say this"

Also as a side Note I would like to connect a Watchdog Kill at the very End of everything, but It won't let me. I connect the purple line from the secoon Watchdog Feed to the Watchdog Kill. It connects to the ForLoop2 making a tunnel, then the ForLoop1 making a tunnel. Then there is a broken wire between the ForLoop1 tunnel and the Watchdog Kill. I hovered the mouse over it and it said this:

Sorry for that, didnt mean to cause the confusion!!

Kyle Lenox

Omar 15-02-2010 15:10

Re: How do you wire a Kick motor in labview?
 
Quote:

Originally Posted by K Lenox (Post 920498)
Also as a side Note I would like to connect a Watchdog Kill at the very End of everything, but It won't let me. I connect the purple line from the secoon Watchdog Feed to the Watchdog Kill. It connects to the ForLoop2 making a tunnel, then the ForLoop1 making a tunnel. Then there is a broken wire between the ForLoop1 tunnel and the Watchdog Kill. I hovered the mouse over it and it said this
Kyle Lenox

It is because the For Loop default to an array for ANY output from a For Loop.
Right click the tunnel going out of the For Loop and select "Disable Indexing"

I have to ask Why do you feel you need to kill the watchdog?
I have never found a need to kill the watchdog.
Are you uning it as a globle means to shut down your robot?

apalrd 15-02-2010 15:30

Re: How do you wire a Kick motor in labview?
 
1 Attachment(s)
Instead of running while loops in Autonomous Independent (which is what I think you are doing, pictures would help alot), you can feed the watchdog in the Autonomous Iterative, then put Auton code in Autonomous Independent. Autonomous Iterative will be fed with new data packets, so it will run at 50hz and can feed the watchdog while you do other stuff.

You could put all of your autonomous code in a Flat Sequence Structure, that makes things easy to understand. If you have all of your major robot actions in SubVI's (e.g. drive_x_distance.vi, turn_x_angles.vi, etc). you could alternatively wire a "flow wire" between them, just a wire of any datatype (I use doubles because I like orange), and LabVIEW will make sure they run in sequence because it must follow the path of the data.

Screenshots will help everyone see what you are trying to do much better than text.

I also recommend driving based on distance instead of time, its not really hard to do. See attached VI for example of that. You don't really need to include the X axis processing, it just helps with drift. All of the constants that are 0 need to be tuned.

I also have a state-machine for my kicker, so I can set the state and another loop (similar to PeriodicTasks.vi) will handle the recoil/kicking. I can set the state in a VI, wire the flow wire to a Drive, and the state-machine will run in the background, not blocking the Drive code.

Omar 15-02-2010 15:33

Re: How do you wire a Kick motor in labview?
 
1 Attachment(s)
Quote:

Originally Posted by K Lenox (Post 920495)
ForLoop1(with loop count set at three), Watchdog open, RobotDriveRegerstryGet(Left and Right Motors)

[inside ForLoop1] WhileLoop, ForLoop2(loop count st at 1)
[inside WhileLoop] Watchdog Feed, Drive TankDrive(75%MaxSpeed), ElapsedTime(set to 3 Seconds)(connected to loop condition)
[inside ForLoop2] Watchdog Feed, Drive TankDrive(0%Max Speed),

Kyle Lenox

you could use something like this

K Lenox 15-02-2010 15:56

Re: How do you wire a Kick motor in labview?
 
Thanks for the responses

to answer some questions I am using Autonomous __.

I am also using the Watchdog Kill because somehow when working in the autonoous we ran it and found out that some times it will run again for an additional 20 seconds. We have used it for fear of it acting up in the competition.

Also Id send you a picture but I don't knw how to do that.

Now just to question something. Someone had a thumbnial witha piture of what his program would look like and there was a bunch of question marks in the Kick the ball loop. What are the questions for???

Thanks once again and any help is appreciated!!

Kyle lenox

Omar 15-02-2010 16:21

Re: How do you wire a Kick motor in labview?
 
You did not explane how you are kicking the ball.

How are you going to kick the ball?

What hardware?

Relays?
Solenoids?
Pneumatic?
Rubber bands?

Omar 15-02-2010 16:45

Re: How do you wire a Kick motor in labview?
 
Quote:

Originally Posted by K Lenox (Post 920590)
I am also using the Watchdog Kill because somehow when working in the autonoous we ran it and found out that some times it will run again for an additional 20 seconds.
Kyle lenox

You have to explicitly set the motor speed to 0 to stop your robot. Even if your autonomous code stops, that does not tell the motors to stop.

Killing the watch dog is not a clean way to shut down.

Set the motor speed to 0 before exiting your autonomous mode.

K Lenox 15-02-2010 17:01

Re: How do you wire a Kick motor in labview?
 
My mentor wanted to acually try if there was a componet to convert 3 digitial inputs and converts it to a decimal value output, which we will use in a case statement to program the robot to run one of three Autonomous Modes.

The idea is that we can taggle back and forth between 3 autonomous modes for the three starting areas of the arena. By fliping a switch on a box we can control which Autonomous mode we want running.

If someone has a way to make 3 choices (I/O 6, 7, and 8), with only 1 choice being true and the other two false, then take case stucture(figured this would work because there are multiple pannels that you could choose to activate) and make it so that the true I/O pulls up its corisponding pannel and runs it.

We are wanting this to work but this is both our first time woring in labVIEW and we don't know how to do it. We are trying to expirement with it, but some advice and knowhow from the professionals will be great. Thx

Any help is appreciated, thx!!

Kyle Lenox

K Lenox 15-02-2010 17:03

Re: How do you wire a Kick motor in labview?
 
Sorry about that, we are using motors to kick the ball.

K Lenox 15-02-2010 17:05

Re: How do you wire a Kick motor in labview?
 
Also the motor speed is set to zero. I am using the watchdog to kill the motors, not to kill the watchdog.

Omar 15-02-2010 17:09

Re: How do you wire a Kick motor in labview?
 
Quote:

Originally Posted by K Lenox (Post 920648)
Sorry about that, we are using motors to kick the ball.

OK?

So how are you using the motor to kick a ball?
Do you just set it to some speed and leave it on?
If so then just do that inside where the ????? were.

Do you need to turn it on for a little while and then turn it off?

What ever you need to do with the motor you need to do it in place of the ?????.

How do you need the motor to run to kick a ball?
I bet if you wrote the steps down on paper, you could program it.
Give it a try. Write down what the motor has to do and then tranlate that into code.

Omar 15-02-2010 17:15

Re: How do you wire a Kick motor in labview?
 
1 Attachment(s)
Quote:

Originally Posted by K Lenox (Post 920644)
My mentor wanted to acually try if there was a componet to convert 3 digitial inputs and converts it to a decimal value output, which we will use in a case statement to program the robot to run one of three Autonomous Modes.

Kyle Lenox

Yes there is

In the case statement you can set each case to for a range of values like
1..3 or ..-1 or 1..
or for selected values like
1,3,5,7

Omar 15-02-2010 17:24

Re: How do you wire a Kick motor in labview?
 
1 Attachment(s)
Quote:

Originally Posted by K Lenox (Post 920644)
The idea is that we can taggle back and forth between 3 autonomous modes for the three starting areas of the arena. By fliping a switch on a box we can control which Autonomous mode we want running.
Kyle Lenox

Have you looked at the Get Alliance VI?
The Alliance and field position is set on the driver station and can then be read by you code.

K Lenox 15-02-2010 17:27

Re: How do you wire a Kick motor in labview?
 
Ok heres whats happening.

We are using a motor to pullback a bar, using a dogleg, once it clears the gap, it lets go of the tension and kicks back. Kindof like when you use your foot and bend your knee ato kick something.

What I want to do is build a program where a robot moves forward, kicks a ball, moves forward, kicks a ball, moves forward, kicks a ball. I have it set up so it moves forward, but I dont know if I have it set up right to kick it.

Now, the team want me to devise 3 Autonomous modes. 1 code for each starting position. We can determine which one we want to use by flipping one of three switches on a box to on.

The thing is I dont know how to relate that to programing.

I do know that I have to make 1 of the three I/O true, ant the other two False. Then I need to take the one that is true, and make that ones Autonomous ode pop us and run.

But I dont know how to do that.

RIght now I am work on a possible idea of using elcusive or's to detrmine which one is true. But I would like it to work smoothly and my inexperiance isn't going to help with that. so any help from the pro's is nice

Thx, any help is appreciated

Omar 15-02-2010 17:36

Re: How do you wire a Kick motor in labview?
 
Quote:

Originally Posted by K Lenox (Post 920670)
Ok heres whats happening.
We are using a motor to pullback a bar, using a dogleg, once it clears the gap, it lets go of the tension and kicks back. Kindof like when you use your foot and bend your knee ato kick something.

But you still have not fully explaned how you plan on controlling the motor.
Do you turn it on and leave it on? How will you know when it has "let go"
When will you stop your motor?

Quote:

Originally Posted by K Lenox (Post 920670)
Now, the team want me to devise 3 Autonomous modes. 1 code for each starting position. We can determine which one we want to use by flipping one of three switches on a box to on.

Use the Get Alliance.VI and forget about flipping switches on a box.
Set the Alliance and field position on the driver station.

K Lenox 15-02-2010 18:16

Re: How do you wire a Kick motor in labview?
 
Now we have a limit switch that gets activated once the dogleg's gap passes by. The dog leg winds the kicker back, then it hits the limit switch and lets go.

Now I understand that you are encouraging me to get the Get Alliance Vi. But the box is already on the robot and we have the digitial I/O programed into the Robot Main Vi.

Now What is the Get Alliance Vi. and where would I get it justs incase the box doesnt work.

By the way thanks for all the help youve given me.

Kyle Lenox

Alan Anderson 15-02-2010 22:21

Re: How do you wire a Kick motor in labview?
 
Quote:

Originally Posted by Omar (Post 920666)
Have you looked at the Get Alliance VI?
The Alliance and field position is set on the driver station and can then be read by you code.

This won't do what you want. The "field position" actually tells which of the three spots behind the glass your driver station is set up on. It has nothing to do with where your robot is placed on the field.

Omar 16-02-2010 09:33

Re: How do you wire a Kick motor in labview?
 
Quote:

Originally Posted by Alan Anderson (Post 920964)
The "field position" actually tells which of the three spots behind the glass your driver station is set up on. It has nothing to do with where your robot is placed on the field.

Alan I am very sorry to hear that. We have already built our auto code around that. I misunderstood the term "field position" to mean the position on the field and not the driver station position.

We have even tested it out. We are able to set the field position on the driver station and the robot code reads it correctly. Does this mean that durning commetition they will over write what we set it to?

Are you sure about the mean of "field position"?

Omar 16-02-2010 11:53

Re: How do you wire a Kick motor in labview?
 
Quote:

Originally Posted by Alan Anderson (Post 920964)
The "field position" actually tells which of the three spots behind the glass your driver station is set up on. It has nothing to do with where your robot is placed on the field.

I have tried to research this more and feel that when they say field position they mean one of the 3 positions the robot will start from on the field.

In the manual they use the terms "Alliance Stations" and "PLAYER STATIONS" when referring to the area behind the glass and they use the term "field" when referring to the green area that the robots are in.

We can set the field position value on the driver station and then read it from the robot. I feel we can set it to mean what we want it to mean. What ever we want the values 1, 2 or 3 to mean to our robot code.

Omar 16-02-2010 12:00

Re: How do you wire a Kick motor in labview?
 
Quote:

Originally Posted by K Lenox (Post 920727)
Now What is the Get Alliance Vi. and where would I get it justs incase the box doesnt work.
Kyle Lenox

It is located on the DriverStaion sub palette.

Mark McLeod 16-02-2010 12:20

Re: How do you wire a Kick motor in labview?
 
I'm behind Alan.
Get Alliance only specifies your Driver Station location, not your robot's actual location on the actual field.

We get assigned Driver Station positions for the benefit of the Field Management System (FMS). That's the only reason that information is available.

Robot starting position is unrelated to Driver Station position and is negotiated ahead of the match between the three alliance partners rather than the starting positions being randomly assigned by FMS.

FMS has no way to tell where you have negotiated with your two alliance partners and agreed to place your robots, and it doesn't really care.

K Lenox 16-02-2010 14:22

Re: How do you wire a Kick motor in labview?
 
Okay so let me get this straight.

My team wants me to make 3 Autonomous Codes. One code relating to the 3 places where your robot starts out on the field.(near, middle, far)

We currently have a white box with three switches in it. all switches are a on/off flipper type switch. Somehow in labVIEW, I should be able to take the Digital Outputs ( I/O 6, I/O 7, I/O8) and program it so when one is set to on(true) and the others are set to off(false) it should bring up its corresponding Autonomous Code and deploy it.

Now we were talking and if we can select which code to use in the driver station, that would be even better.(take off the box, save some weight)

But from reading your messages, The Get Alliance vi. wont let us do that?
I thought it would, but now it seems like that vi wont work like that......

Am I right? Am I misunderstanding? I have only been using Labview for the month of Febuary. Any clarifacation would be nice.

Thanks, any help is appriciated
Kyle Lenox

Mark McLeod 16-02-2010 14:36

Re: How do you wire a Kick motor in labview?
 
You can easily make your Autonomous choice from the driver station before the match begins and you're required to step back from the controls.

In your code you'd use the Driver Station Get Dig In.vi to test any switches you attached to the Diriver Station via the Cypress IO board.

Or without the Cypress IO board you can select your Autonomous from the I/O tab.


All times are GMT -5. The time now is 01:50.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi