03-14-2018 02:27 PM - edited 03-14-2018 02:31 PM
I hope to develop a package for new programmers to be able to use in order to develop an optimized code that will maximize competition performance. The idea is that you press a button on the controller and the robot will determine the easiest and quickest path to that certain spot. However, I need help designing such a code given that I am still new in Labview.
The code I am expecting to run will be a simple one which will maneuver a robot between 9 points as seen below...
The idea is that the robot will determine its position on the map using an ADNS-9800 laser motion sensor and a NavX mxp Gyroscope. Once it has done so it will move to the nearest dot. From there it will determine which dots it must move to (without diagonal movement) in order to get to the desired position in the shortest amount of time. Here the code will tell the motors to move until it reaches each dot, stop, determine if it is at the correct dot, if not it will keep moving. Each dot will have a specific instruction once the robot has reached it (As if you were in the FIRST PowerUP games and wanted the robot to face the scale once it got to the dot, based on which direction it came from it should turn 90 degrees either way in order to face it).
Obviously the main issue will be environment interaction. The idea is that this will be helpful in perfectly positioning the robot in its desired spot to maximize the ability to gain points as well as ranking points.
This is an extremely difficult task that will require expert help to walk me through certain calls that I might not be aware of. I am a student studying programming, so I have some background in understanding the process, but I am still a beginner with Labview. My mentor is extremely busy and is unable to provide help as quickly as I would like. So I would love any help!!!!
03-15-2018 08:47 AM
Start by spending hours viewing all of the LabVIEW Tutorial material available to you. Start with the stuff mentioned on the first page of the Forum. Do not worry about "Robotics" or your particular problem -- you need to learn/understand how LabVIEW works, particularly the notion of DataFlow and how that makes LabVIEW an inherently parallel processing environment (something you really want for tasks such as yours).
Then start designing (not coding). For a project as interesting/complex as this, I'll state right up front the often-ignored Advice of expert Developers (in any Programming Language) -- Write the Documentation First. Write a several-page White Paper for yourself that details what you want to do. Do not worry about how you are going to do it -- that will (and probably should) change during development as you try things and discard them.
Think Hierarchy. You want a thousand-foot view of the Task that describes it in Broad Strokes, then possibly a 30-foot view that breaks it into major sub-systems working together, and (if your writing hands haven't tired) maybe a 5-foot view that examines what goes into the various sub-systems (this is where you introduce the hardware you have at your disposal).
You'll want to learn about programming your hardware. Do this as part of the "Learn LabVIEW" first step, though you can put it off until you are writing about it in the Documentation.
Now start coding. You might take a look at the Queued Message Handler Template that ships with LabVIEW -- something like this or the JKI State Machine might be useful for your Top-Level (1000-foot-view) Main VI. Note that a proper heirarchical Development Process generally means that every Block Diagram fits on a single laptop screen -- strive for that! You need and want modularity, which means "Many Sub-VIs, each doing One Thing, and doing it to Perfection".
Bob Schor