The robot is supposed to find a black line in a white background and follow it, while searching for cans randomly placed Parallelly to the line. Once a can is detected, the robot must maneuver correctly towards it, retrieve the can and go back to the path. Everything is done autonomously without any user interference.
The robot also has a voice synthesizer and WiFi/Internet capabilities. As each task is being started or completed the robot “speaks” what it is doing and at the same time it reports it’s status over WiFi to a “Web Console”.
The WiFi module is based on a RCM5600W microcontroller, which was programmed to provide and easy-to-use serial to WiFi interface.
The use of front wheel traction near the line scanners, and rear omni’s seemed effective for you at this task, particularly with the side-looking radar and the pivot in place methodology to face it.
What is the rubric that our feedback/comments should be constructive to?
Is the Rabbit RCM5600W the only processor, or is there another (eg Vex PIC or Cortex, Arduino, MS430) processor as well?
What language is used implementation?
How much time investment did it take to get this far? (and when is it due?)
Is the robot design allowed to change, or is it a CS programming project to use this exact robot?
Implementing inverse kinematics would help your arm move more smoothly.
Multi-tasking would allow you move the arm and wheels at the same time,
or at least multiple joints of the arm at the same time. Be sure to have a collision model running to prevent the arm from hitting itself.
Partitioning more tasks to be local to the robot, rather than run remote through wifi could greatly improve speed. Otherwise, (from the point of view of someone who has NOT personally done similar type of work), it seems rather slow, with many unnecessary pauses between sequential steps.
If the robot physical design is allowed to be flexible (as it may not be for a CS course), many physical changes in robot would greatly improve its efficiency for this particular task.
Examples of places for multi-tasking:
If the arm is not required to foldup and unfold between cans, it saves time.
If the arm can start unfolding when a can is detected, it saves time.
If the wheels can start moving back to the line once the can is picked up, while the can is being binned and the arm being refolded, it saves time.
Consider multiple levels for your statemachine, so it can do multi-tasking.
Consider that multiple audio tracks can report the ongoing status of each task simultaneously, through use of various pitches for each activity.
For inspiration on efficient robot arm movements, see youtube videos like “slapping a car together”, or other videos of car assembly with Robots.
Thank you so much for your reply. We just had about 3 weeks to get this going (from design to programming), and in a way we were testing the VEX microcontroller and parts, so there were no experts for this specific microcontroller. So, yes, I did use VEX Cortex + RCM5600W.
I am keeping the robot and I will use your input for future improvements.
I want to go through your whole list of comments and respond to it, but I will not have time to do so until the end of this week.