torsdag den 28. juni 2012

Project Conclusion

Date: 28-06-2012
Duration of activity: 3 hours
Attendants: Jeppe, Thomas & Stefan

Goal

  • Dismantle robots
  • Go through blog entries and review the text
  • Conclusion of the project.

Plan

In this entry we will discuss the project period and the result of the project.
Further we will dismantling the robots and distribute the lego over the boxes.

Conclusion

We have a success rate of about three out of four runs. This is pretty good, considering the complexity of having multiple robots working together. The basic structure of the the code was very simple. We went for a strategy where we could specify each behavior in a class and just branch between activating and deactivating the various  behaviors on the run. There is no doubt that the success was due to the stable environment the robots was navigating in. We decided from the beginning that everything should be kept as simple as possible since our effort would be in making the robots stack on each other and communicate.

On the way we discussed if the track could be used as a WRO challenge. If it would be allowed in WRO to use more than just one NXT it would be a good challenge for WRO. Even if only one robot is allowed in WRO, it would still be a good track since it contains many different aspects. Thus points could be given for the different tasks on the track: 1) Having two robots climb on each other, 2) having three robots climb each other, 3) have the robots grab the object on the bridge, 4) have the robots follow the line to the basket, 5) delivering the object in the basket. All of these aspects would be interesting for the WRO participants to explore. Ie. a winning robot might not need to complete all the sub goals.

onsdag den 27. juni 2012

Project Meeting 9



Date:
 10-06-2012
Duration of activity: 6 hours
Attendants: Jeppe

Goal


  • Make the robots drive down again after they have climbed on top of each other.
  • Modify the bottom stacking robot to be able to stop when the basket is reached.
  • Make the robots complete the track.
  • Film the robots to identify issues.

Plan

  • Last time we meet, Stefan started implementing the procedure for the robots to climb down. This procedure will be completed and tested on the robots.
  • A sensor for detecting the basket at the end of the track will have to be mounted. Two ideas are to be tested: A color at the end, or a push sensor that is pressed when the basket is reached.
  • In order to make the robots complete the track, all that is missing is 1) to have the robots climb down, 2) start following the black line when all the robots are back down on the track. The robots should have a "climb each other" signal when the first robot reach the basket.

Results

In this section we will present the solution to the items presented in the Plan section above.

Climb Down Procedure

The climb down procedure runs in its own thread and is sleeping until it is ordered to start crawling down. The action of climbing down has been implemented by a tacho count on the wheels. After the wheels has turned x number of degrees, the robot backs a bit the right side. This is done in order for the robot to be located on the right hand side of the black line, since the robots will automatically seek to the left in order to find the black line.

Detecting The Basket

At first the idea was to put a color on the track near the baseket. Thus when the line follower saw a certain color, it would automatically stop. However it turned out that just mounting a push sensor was a much easier approach to implement.

The push sensor is mounted in front of the STACKING1 robot, which is the robot that will reach the basket first. Once the sensor is pushed, the robot will send a message to indicate that all the robots should stop their follow line program and enter the state: "climb on top of each other".


Refinement Climbing Part

In some cases the robots would make some sudle movements when climbing on top of an other robot.
There were two reasons for this: 1) The black line on top of the Stacking robots was a bit too short and the robot on top would get a bad reading once it's light sensor was out of the paper. 2) The line follower algorithm is build to be very sensitive to the black line, this would cause the robots to make very sudden movements if they saw some thing "black".

To solve the problem two things were implemented: 1) "follow line carefully" mode has been added. This mode is used when the robots are climbing on top of each other. It is essentially made to avoid the robots from making any sudden movements like the ones they normally would make if they reach a sharp right turn (hitting the black line straight on). 2) the black line on top of the two stacking robots was extended just a few centimeters.

First Tryout

As mentioned in a previous blog entry, we are using a third NXT unit as a broadcaster. When all the robot are placed in their starting positions and calibrated, they will enter a "wait for broadcast controller to connect" mode. Thus we can start the whole show from the broadcast controller.

The first tryout of the whole track is shown in the video below:
As seen from the video we have a few issues that must be adressed:
  • Adjust the backdown algorithm, such that the robots are sured to be on the right side of the black line.
  •  Make the arm of the grabber lower under the bridge.  
  •  Make the space between the robots a bit bigger when they are driving toward the basket.

Conclusion

Now the three robots can almost complete the track. We only need to adjust a few issues before we can have a perfect run. This will be done the next time we meet.

tirsdag den 12. juni 2012

Project - Meeting 10


Date: 11-06-2012
Duration of activity: 2 hours
Attendants: Stefan & Jeppe

Goal:


  • Adjust the backdown algorithm, such that the robots are sured to be on the right side of the black line.  
  • Make the arm of the grabber lower under the bridge.  
  • Make the space between the robots a bit bigger when they are driving toward the basket.

Plan:

  • We will take a look at the video recorded last time and find out which minor issues that we have to correct. 
  • We will start by adding a "fixed point" to the arm of the Grabber robot, such that is has a fixed start position every time we start it.
  • Give a detailed table of the message, command sequence for each robot.


Results:

In this section we will describe the last adjustments made on the robots before we can have a perfect run.

Last Adjustments

Since the grabber had to be at a specific position to be able to grab the object on the bridge, we installed a cross-bean om the motor, so we were able to reset the grabber to the exact same position each time. The software was then altered to take this new initial position into account.




Another part that needed some tweeks, was that the second stacking-robot was driving slightly faster then the first stacking robot. This sometimes resulted one robot catching up with the other and starting to climb up the slide, while they were supposed to drive forward to the basket. This problem was solved by increasing the delay between the robots starting to follow the line toward the basket.

We placed black markers on the track to make sure that the robots would always start in the same position and that the object on the bridge would always be picked up.

The final detail we had to resolve for today, was the fact that the piece of paper on top of the first stacking-robot was still too short. This would sometimes result in the second stacking-robot starting to rotate, because the light-sensor did not have any black line to follow.

The final architecture

In this section we will present an overview of our final algorithm. In the next section we will present the messages and actions executed by the robots.
The basic algorithm consists of the following components:
  • Bluetooth communication
  • Sensor detector thread
  • Line follower thread (action)
  • Back down thread (action)
  • Grabber arm thread (action)
The basic idea is that the action threads are activated and deactivated by incoming messages. 
The over all algorithm between the robots is constructed in such a way that two actions will never be triggered at the same time. Fx. the robot will not be in a state where it is both trying to back down and follow the line. Below is the complete and final table of commands and actions for each robot. 

Messages and Actions

To summarize the final command sequence, we have specified a message, action table for each robot.
Each robot now knows exactly what to do when it receives a message of a certain type.


Grabber Robot
Message Received Action Description
READY_STACKING1 Start Follow line When Stacking1 - the last robot - is ready, start.
STOP_STACKING2 Take or release object. Once the object has been taken, send out the message MOVE_DOWN_STACKING2 When Stacking2 is to stop, the Grabber robot should either take the object or drop it, depending on wether or not it is holding the object already.
STOP_GRABBER Stop Follow line Send when the grabber is to be stopped. Ie. when the grabber hits the push sensor on the Stacking2 robot (that it is climbing on top of). Also the the grabber must lower its arm a bit again in order to precisely take the object.
MOVE_DOWN_GRABBER Start backing down from the Stacking2 robot. When the robot is down, send the message MOVE_TO_BASKET, to indicate to the other robots that they should start moving toward the basket. Send when it is safe for the Grabber robot to climb down from the Stacking2 robot.
MOVE_TO_BASKET First wait 18 seconds, then start following the black line to the basket. Also the Grabber will have to lower its arm a bit in order for it to pass safely under the bridge. The Grabber robot must wait for the other two robots to move a bit ahead, before it starts moving. This is to avoid collisions on the way (some robots are faster than others due to battery level, motor quality etc.)
BASKET_REACHED Stop. Raise the arm a bit, in order to be able to climb the Stacking2 robot. The Grabber robot must wait for the other two robots to move a bit ahead, before it starts moving. This is to avoid collisions on the way (some robots are faster than others due to battery level, motor quality etc.)

Stacking2 Robot
Message Received Action Description
STOP_STACKING2/td> Stop following the black line. When the Stacking2 robot is on top of the Stacking1 robot, it should stop.
STOP_GRABBER/td> Start following the black line on top of the Stacking1 robot. When the Grabber is stopped on top of the Stacking2 robot, Stacking2 should start moving on top of Stacking1.
MOVE_DOWN_STACKING2/td> Start backing down. When down, send MOVE_DOWN_GRABBER message. When the Grabber robot has taken the object, it will tell the Stacking2 robot to start backing down.
MOVE_TO_BASKET/td> Wait 12 seconds. Start follow black line to the basket. When the robot is told to start moving to the basket it must first wait for the Stacking1 robot to move ahead to avoid a collision.
BASKET_REACHED Stop following the black line. The basket has been reached by the Stacking1 robot. Stop and wait.

Stacking1 Robot
Message Received Action Description
MVOE_TO_BASKET Start following the line and activate the "detect basket" sensor. When the basket is reached, send message: BASKET_REACHED, wait 1 second, send message READY_STACKING1 (this will make the Grabber robot repete the actions from the first climb). The robot will start moving toward the basket. Once the basket is reached, send out the proper commands for the robots to start stacking again.


Final Run

Now it should be possible to complete the track with the updated set of parameters. The run is shown below:


Conclusion

The robots can now complete the track. We ran through the track four times and had perfect runs in the three of the runs. The robots carried out the tasks surprisingly stable. It turns out that even though there are many variables, building a almost 100% reactive system was a very good choice.  The only part of the track that is "hard coded" is the backing down procedure, where the robots just drives "blindly" backward until they are down on the track. This is very short part of the whole track so it did not really turn out to be an issue. We managed to implement a very stable line follow algorithm making the robots follow the straight lines with no visible oscillation. This in turn made it very easy for the robots to climb on top of each other since they would always be aligned with the black line.
Having the Grabber robot grabbing the object each time perfectly was also some what a positive surprise. The difficulty is that the middel robot must stop at the same point every time, but so must the grabber robot on top, such that the three robots when stacked, always is a the same position. Having the robots climbing each other two times on the same track flawlessly three out of four times was very nice to see. 








torsdag den 7. juni 2012

Project - Meeting 8


Date: 07-06-2012
Duration of activity: 6 hours
Attendants: Jeppe, Thomas & Stefan


Goal:

  • Make one robot climb and stopping when reaching the push sensors.
  • Make three robots climb each other.

Plan:

  • We will have to implement some software for detecting when a robot is on top of the other.
  • Alter the robot design so the climbing becomes as easy as possible.

Results:

Software
For the stacking robots, we are using a behavior class, to make sure that only a single piece of our program is accessing the motors and sending messages to the network at a time.
To this end we have copied the behavior class from lab-session 7.  A CommunicationController object has then been added to this class and a method for sending messages assuming the particular class is not suppressed, has also been added.

   //Access to communication
    public void sendMessage(Message msg){
                             if(!isSuppressed()) comcon.sendMessage(msg);
    }

To test our behavior class to see if the communication works as intended, we have implemented a stacking and a pushsensor class. The pushsensor class is uploaded to the bottom robot, and what it does is wait for the touch sensors mounted on top to be pressed. When this happens, a stop-signal (Message.STOP_STACKING) is sent to the network.
The stacking class makes the middle robot drive forward. When it receives a signal to stop, it sends a stop command to its motors. This way, when the middle-robot is on top of the bottom-car it will press down the sensors, which in turn will make it stop driving forward. Both of these classes extend our behavior class, and all access to the motors and sending of signals goes through the behavior class.
StackingMain.java

Robot design:


We have three robots: GRABBER, STACK2 and STACK1
The Grabber robot climbs on top of Stack2, which in turn climbs on top of Stack1.


As the push sensors where placed at the very rear end of the STACK1 robot the climbing robot continued driving a bit too far and almost went over the top. Therefore we decided to place some levers that are connected to the push buttons, as shown below:


To make the ramp easier to climb we have also added rails of each side of the robot like the following:

After these alterations it was quite easy for the robot to climb the other as the video below shows:

Alignment Issue

The alignment of the robots when climbing on top of each other is essential. If the two robots are not correctly aligned, the robot climbing on top might risk driving off the bottom robot. The rails would not be useful here, since they would actually prevent a robot from climbing up if the lower robot was out of alignment. Thus we decided to get rid of the rails again.
To meet the challenge we decided to mount a black line on top of the Stacking robot.


With this solution all the alignment between the two robots can be reduced to just follow the black line.

The follow line algorithm has been extended to have the following methods:
void calibrate();
void startFollowLine();
void stopFollowLine();
The complete algorithm can be found here GFollowLine.java and here FollowLine.java.

It runs in its own thread. When a stop command is send, the stopFollowLine() method is invoked.
This makes the main control algorithm pretty simple, since the only two main actions are startFollowLine and stopFollowLine which are controlled by the incoming messages.

We added a three ready signals for the three robots to send out when they are connected to the main controller and ready. None of the robots should start before the others have send out their ready signal.

The result of the line follow controlled by Bluetooth communication is show below in the videos.


The Grabber robot climbing the Stacking2 robot.




The Stacking2 robot climbing the Stacking1 robot.




The Grabber climbing the Stacking2 robot, the Stacking2 robot climbing the Stacking1 robot.

Conclusion

We came up with a fine solution for the alignment problem of the robots. We saw the robots climb each other for the first time and it works. The line follow algorithm was changed to have a "start follow line" mode and a "stop follow line" mode. The communication between the robots seems to be working very good, when the lower robot is to send a message to the upper robot. As is seen from the last video where all the robots climb each other, we need to adjust the push sensors on the stacking robots since it is clear that the Grabber robot is driving a bit too far and almost drives off the stacking robot.

References


[1], PID Control, Chapter 5, pp. 179-190 of Fred G. MartinRobotic Explorations: A Hands-on Introduction to EngineeringPrentice Hall, 2001.



mandag den 4. juni 2012

Project - Meeting 7


Date: 04-06-2012
Duration of activity: 5 hours
Group members participating: Jeppe, Thomas and Stefan.

Goal

  • Mounting black line on track.
  • Make the robots stack on top of each other using Bluetooth and a feedback sensor.
  • Start making all the robots follow the black line on the track to the basket.
  • The track should now be complete.

Plan

The black tape is to be mounted on the white track.
We will have to build the basics for having the robots communicating using Bluetooth. 
We will have to implement a PID control for the robots to follow the black line. The challenge here is to build the control such that the robots will make a 90 degree turn (this should be a matter of setting the constants right).
After today the track should be completely done.

Results

We got some black insulation tape which we mounted on the track with 90 degrees angles as shown in the picture.


Robot stacking:
Thomas and Stefan started working on the robots Bluetooth connection. Stefan also mounted light sensors on the two Stacking robots.

We decided to solve the problem of stacking one robot on top of the other by creating a behavior on each robot. On the robot that was to climb on top of the other one, the behavior is simpy to drive forward until it gets a message "STOP1" after which it stops. The other robot has a behavior that waits for either of the push-buttons on top of it to be pressed after which it sends a "STOP1" message out through the network.

By the end of the day we had problems with yet unknown exceptions that meant the "STOP1" message was either not send or not received for some reason. We will look into this more on the next meeting.

Line follower:
Jeppe started working on a PID control algorithm for the line follower. 
We implemented a PID control like the one presented in Fred G. Martin [1]. The main difficulty in the line follower algorithm was to make the robot make a sharp turn when it hits a corner. That problem was solved by introducing an integration part for the error equation, that will quickly sum up the over all error when the robot is over the black line for a long time (only happens when it bumps in to a right 90 degree turn).
The integration part is set back to 0 as soon as the pint error is 0 again (the robot is right between the black line and the white area).

double threshold = (black + white) / 2;

double pointConst = 1.5;
double diffConst = 1;
double intConst = 0.1;

double intError = 0;
double prevPointError = 0;
int c = 0;
while (!Button.ESCAPE.isPressed()) {
 int currentValue = light.readValue();

 double pointError = currentValue - threshold;
 double diffError = prevPointError - pointError;
 if (pointError < 0) {
  intError += pointError;
 } else {
  intError = 0;
 }

 int error = (int
 ( pointConst * pointError 
 + diffConst * diffError 
 + intConst * intError);

 motorLeft.controlMotor(power - error, direction);
 motorRight.controlMotor(power + error, direction);

 prevPointError = pointError;
}
Download the GLineFollow.java

The same algorithm has been used for both for the Grabber robot and the Stacking robot.
The video below shows the result.

1) The Grabber robot following the line.




2) The Stacking robot following the line.


3) The Grabbing robot and the Stacking robot following the line.



We were considering if we should just mount a black line on top of the stacking robot and just let the other robots follow the line on top of the stacking robot. We might experiment with that next time we meet.

Conclusion

We made the robots follow the black line by mounting light sensors on them and constructing a PID control algorithm. We completed the track. As for the stacking of the robots using Bluetooth it is still a work in progress.

References


[1], PID Control, Chapter 5, pp. 179-190 of Fred G. MartinRobotic Explorations: A Hands-on Introduction to EngineeringPrentice Hall, 2001.

Project - Communication Solution


Date: 01-06-2012 – 03-06-2012
Duration of activity: 8 hours
Group members participating: Thomas

Goal
  • Design communication software architecture
  • Test communication architecture
Plan
Use the weekend to understand how the NXTs communicate and build an asynchronous software platform that we build the rest of the robot software upon.

The idea is to develop an asynchronous software platform that software layers above could use to communicate with other NXTs and a laptop as shown on the sketch below.


We want the software layers above to have a simple interface to communicate with.

Results
We have identified the need for three different programs (using [1] and [2]), one for each of the following network devices:
  • PC
  • Robots
  • PC-NXT
All network devices share the following low level architecture:



The layers on top of the communication layer will only communicate with the CommunicationController. The CommunicationController lets other objects subscribe to incoming messages from the network and lets them send messages to other NXTs in the network. It contains an instance of the IncomingCommunication-class that has a dedicated thread that listens for incoming messages and an instance of the OutgoingCommunication-class that takes care of sending messages. The OutgoingCommunication-class has a queue where outgoing messages are stored until its dedicated thread flushes them to the network. The object uses the notify/wait pattern to avoid busy wait.


PC:
The role of the PC is to observe the behavior of the robots through the network. The program running on the PC is quite simple. It connects to the PC-NXT through an USB-cable and prints all network messages to the console. It only consists of the following few lines:

public static void main(String[] args) throws Exception {
  //Create USB connection to NXT
  NXTComm nxtComm = NXTCommFactory.createNXTComm(NXTCommFactory.USB);
  NXTInfo[] inf = nxtComm.search(null);
  nxtComm.open(inf[0]);
  DataOutputStream out = new DataOutputStream(nxtComm.getOutputStream());
  DataInputStream in = new DataInputStream(nxtComm.getInputStream());
  CommunicationController cntrl = new CommunicationController(in, out);
  PC_Main main_obj = new PC_Main();
  cntrl.subscribeToIncomingMessages(main_obj);
  while(true) {
    Thread.sleep(10000);
  }
}

@Override
public void notify(Message msg) {
  System.out.println("IN: " + msg);
}


Robots:
The robots only contain the simple communication architecture shown in the previous UML diagram. It is up to the higher software layers not build yet to take advantage of these features.


PC-NXT:
The role of the PC-NXT is to broadcast every received message to the whole network. That is the network topology is a star topology with the PC-NXT in the center. Every node sends its messages to the PC-NXT after which it broadcasts the messages to everyone else. It is also the responsibility of the PC-NXT to initiate connections to the PC and all the robots.


The PC-NXT software’s UML diagram looks like the following:



It is basically the same diagram as previously shown except for the class MessageEchoer. It contains a queue that collects incoming messages from the network and a dedicated thread that empties the queue and forwards the messages to each communication controller.


Problems encountered:
To our surprise the NXTs and PC communication became very slow when we implemented dedicated threads taking care of the input and output streams. It was so extreme that it looked like we had overlooked a deadlock in our program. After looking though the code of our program again and again and implementing queues and wait/notify patterns, the problem had disappeared from the NXTs, but was still occurring on the PC. After debugging we discovered that the PC could not flush its output stream and was hanging forever. It then hit us that on the PC with multiple cores the input stream was probably busy waiting on incoming messages and thereby rejecting any access to the underlying stream code to the output stream.

The problem now was that read methods on the input stream were blocking and the stream’s available-method always returned zero for some reason. How could we know in advance if the read-method would block forever or receive a message waiting to be received? We considered making each NXT send out a message before trying to receive a message. This would guarantee that a message would eventually show up in the input stream. This solution has some draw backs though. What would happen if the message got lost as does occur with BlueTooth communication. We would risk creating another deadlock. Instead we decided that the PC-NXT should send out pings every short interval as the NXTs do not have the same deadlock that the PC with multiple cores has. This solved the problem and the communication was working well in the rest of our tests.


Conclusion:
After considering and trying different communication solutions we finally came up with a good asynchronoussolution that we can build the rest of the robot software upon.


Download:
Our solution can be downloaded through the following link:
http://daimi.au.dk/~sylvest1/NXT-Communication.zip

References:
[1], leJOS Tutorial: Communications, http://lejos.sourceforge.net/nxt/nxj/tutorial/Communications/Communications.htm
[2], Lab 5, http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson5.dir/PCcarController.java & http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson5.dir/BTcontrolledCar.java

torsdag den 31. maj 2012

Project - Meeting 6

Date: 31-05-2012
Duration of activity: 5 hours
Group members participating: Jeppe, Thomas and Stefan.

Goal

  • Complete building the track.
  • Make a sketch of the sub tasks that the robots must solve.
  • Start programming the robots
  • Revise the project plan.

Plan

Thomas and Stefan will go to the Chomsky lab and look for materials to build the tower and the bridge for the track. We have changed the layout of the track slightly and will provide a new sketch of this.
Jeppe will stay behind and update some of the project meeting notes.

As for the programming part, we wil have to revisit how to make the NXT's communicate using Bluetooth. The first task is to make the robots stack on top of each other without using the "hardcoding" approach, but rather make the robots communicate with each other.
We also need to add some kind of sensor to properly detect when one robot is placed properly on top of the other.

Results

In this section we will present the solutions to the tasks specified in the Goal section.

The Track

The tower and the bridge will be combined in one piece. The bowl will be the standard 9797 lego box.
The layout of the track now looks as follows:




The combined bridge and tower is depicted below:
The idea is to have the object of interest placed on the board on top. Then after fetching it, the robots must all go under the bridge.


Adjusting The Robots

Stefan mounted some touch sensors on the stacking robots. The ides is to have the stacking robots send a feedback signal to the robot currently climbing on top of it that is is now properly placed on the top and thus should stop.

Programming The Robots

Thomas started programming the Bluetooth communication software. To start with we just want the robots to send and receive some numbers. Thomas got the idea to get a fourth NXT to use for Bluetooth communication with the other NXT devices, since we had some problems getting the computer communicate directly with them.
As for the programming part we need to specify which commands a robot should be able to send to another robot. In order to get an overview of this, we decided to make a sketch of all the steps of the track to be completed.


Sketch of Subtasks To Complete

Below is an overview of all the subtasks that are to be handled.











From this overview, we derived the basic commands to be:

  • Stop, send by the lower robot to the robot on top of it, to indicate that the top robot must stop moving forward.
  • Move down, send by the lower robot to the robot on top of it, when the lower robot is at a position where the top robot can safely crawl down.
  • Grabbing complete, send by the grabbing robot to the middle robot below, when the grabbing robot has obtained the object on top of the tower. Makes the middle robot start moving down from the bottom robot.
This yelds the following commands:

  • STOP_STACKING, tells the Stacking robot to stop moving when it climbs on top of the other stacking robot.
  • STOP_GRABBER, tells the Grabbing robot to stop moving when it climbs on top of the stacking robot.
  • MOVE_DOWN_STACKING, tells the middle robot to climb down from the bottom robot. 
  • MOVE_DOWN_GRABBER, tells the Grabber robot to start moving down when the middle robot is back down.

Revised project plan


Date Task
31-05
  • Get materials for the bridge and tower cut off in the correct proportions.
  • Sketch a overview of the sub tasks to be completed.
  • Start programming the bluetooth communication for the robots.
  • Buy black tape on the way home.
04-06
  • Mounting black line on track.
  • Make the robots stack on top of each other using Bluetooth and a feedback sensor.
  • Start making all the robots follow the black line on the track to the basket.
  • The track should now be complete.
07-06 Today we want to be able to see the following thins work:
  • Make them climb down from the stack.
  • Make the grabbing robot drive off the two stacking robots below and grab the object on top of the tower.
  • Make all the robots follow the black line on the track to the basket.
  • Make all the robots climb each other again and make the grabber robot drop the ball in the basket.
  • All this should happen using feedback sensors and bluetooth.
11-06
  • Putting together all the subtasks of lastweek and make the three robots complete the whole track.
  • Getting ready for the presentation on the 14th.
13-06
  • Testing that everything works for the presentation.
14-06
  • Presentation of project at 09.00

Follow Black Line Strategy

We had a discussion on how the black line should be like in order for the robots to follow it with out the robots ending up in a non-aligned position when they are supposed to climb on top of each other.
That is, how do we make sure that the robots are completely aligned when they are to start climbing on top of each other. We will work with this next time we meet.

Conclusion

We now have a track that is more or less complete. We got the basic bluetooth code working and from the sketch of sub tasks, we got a outline of the challenges related to the programming.
Finally we also discussed how the robots will navigate on the black line and how to make sure that they are aligned for crawling on top of each other after following the black line.