marvin:ecp5
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
marvin:ecp5 [2009/01/28 15:58] – deva | marvin:ecp5 [2009/01/29 10:13] – deva | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | <texit info> | ||
+ | author=Johnny Rieper, Bent Bisballe Nyeng and Kasper Sohn | ||
+ | title=Marvin - The Balancing Robot. | ||
+ | </ | ||
+ | |||
======Lab report 5 - Bluetooth controlled robot====== | ======Lab report 5 - Bluetooth controlled robot====== | ||
- | **Date:** January 19nd and 20th 2009\\ | + | **Date:** January 19nd 2009\\ |
- | **Duration of activity:** 8-16 (both days)\\ | + | **Duration of activity:** 8-16\\ |
**Participants: | **Participants: | ||
Line 9: | Line 14: | ||
=====Plan===== | =====Plan===== | ||
* Make a bluetooth client code Behaviour on the Marvin, that can receive numbers and act on them. | * Make a bluetooth client code Behaviour on the Marvin, that can receive numbers and act on them. | ||
- | * Make pc bluetooth | + | * Make PC bluetooth |
- | FIXME: Insert the right video and thumbnail (marvin being remote controlled)\\ | + | =====Theory==== |
- | [[http:// | + | ====The protocol==== |
- | {{youtube> | + | {{ :marvin:bluetoothlogo.png |The Bluetooth Logo}} |
- | =====The BTControl class===== | + | From wikipedia: //" |
+ | LeJOS has built an entire framework for bluetooth communication, | ||
+ | (([[http:// | ||
+ | We do not want to go further into the details of the protocol itself, but the way the device is shared can eventually end up in data loss(([[http:// | ||
+ | |||
+ | On the PC LeJOS has also made a bluetooth interface. This works exactly the same as the one on the NXT, and we therefore simply had to make a connection (listening on the NXT and connecting on the PC) and then creating input/ | ||
+ | |||
+ | LeJOS has put a lot of effort into making the bluetooth communication easy to use, and the implementation were therefore quite straight forward. Observe the resulting code below. | ||
+ | |||
+ | We experienced a lot of slowdown in the balancing thread whenever the bluetooth communication was running, and we had to disable it entirely at numerous occasions to avoid the robot falling over.\\ | ||
+ | We later discovered that the problem could be worked around by disabling some of the other behaviour threads to release more resources, and make Marvin rebalance itself while driving around remote controlled. | ||
+ | |||
+ | Here is a movie of the resulting remote controlled robot, with all other behaviours disabled: | ||
+ | [[http:// | ||
+ | {{youtube> | ||
+ | |||
+ | As it can be seen from the video, Marvin is not exactly reacting real-time to the control changes. This is due to the way the BTControl has been implemented, | ||
+ | |||
+ | =====Implementation===== | ||
+ | ====The BTControl class==== | ||
{{ : | {{ : | ||
- | Bluetooth control | + | Bluetooth control |
- | input stream, interpreting them as keycodes. | + | It reacts only on the keycodes |
- | It reacts only on the keycodes | + | |
- | down, left, right) and tells Marvin to drive accordingly. | + | |
^ Key ^ KeyCode ^ Variable | ^ Key ^ KeyCode ^ Variable | ||
Line 50: | Line 72: | ||
case directionLeft: | case directionLeft: | ||
left(200); | left(200); | ||
+ | |||
+ | |||
break; | break; | ||
Line 74: | Line 98: | ||
</ | </ | ||
- | And on the PC a window (JFrame) | + | ====The PCController class==== |
+ | On the PC, we use a window (JFrame) | ||
<code java> | <code java> | ||
NXTComm nxtComm = NXTCommFactory.createNXTComm(NXTCommFactory.BLUETOOTH); | NXTComm nxtComm = NXTCommFactory.createNXTComm(NXTCommFactory.BLUETOOTH); |
marvin/ecp5.txt · Last modified: 2009/01/29 10:58 by rieper