By Alexandre Alapetite on 2007-05-09; updated on 2008-05-09

Mobile laptop computer robot

I am presenting on this page a Lego Mindstorms NXT robot carrying laptop computers.

The mobile laptop computer can interact with the robot thru Bluetooth and can communicate by Wi-Fi with a distant computer, to transmit video from the onboard webcam and be remotely controlled.

français

Introduction

[Alex “Robot with mobile laptop”]
The robotics platform Lego Mindstorms NXT is more than a simple toy. It allows the building of robots with advanced behaviour, with several motors and various sensors.

Nevertheless, embedded processing power, memory, and communication capabilities are far behind what is offered by PDA or laptop computers. Thus the idea of showing that a Lego Mindstorms NXT robot can carry a laptop computer when necessary, subsequently offering a new range of possibilities. A (old) laptop is indeed a common device and can sometimes be used, at least for prototyping, instead of buying more advance additional devices.

One of the many immediate interests is the possibility to communicate within a long range with Fi-Fi or by mobile telephony (e.g. GPRS, UMTS [3G] or better for videoconference), among other reasons to be remotely controlled and to send a video signal and data from sensors.


Hardware

Specification

The idea behind this prototype is to be as affordable as possible for owners of a Lego Mindstorms NXT kit. Only one additional Lego Technic kit may be used. The embedded laptop computer may be an old and heavy model up to 3.5 Kg. The mobile robot carrying the laptop must be able to move forward and backward, and to turn right and left.


Chosen list


Demonstration

2007-10-06

Inside video

Remotely controlled from the desktop computer:

Video: [Video “Mobile laptop computer robot” inside]


Outside video

Remotely controlled from more than 40 meters away, from the desktop computer inside the apartment:

Video: [Video “Mobile laptop computer robot” outside]


Architecture

The robot alone weights 1.7 Kg. It is able to carry up to 5 Kg.

Photos of the robot

[“Mobile laptop computer robot” front] [“Mobile laptop computer robot” below] [“Mobile laptop computer robot” carrying a weight of 5Kg] [“Mobile laptop computer robot” behind] [“Mobile laptop computer robot” front, with laptop computer open]

General diagram

[Architecture]


Software

For the robot

The NXT brick, which is the brain of the robot, runs a programme (written in NXT-G) able to receive high level orders thru Bluetooth (e.g. go forward, turn right) and which transforms those orders in lower level instructions (e.g. turn motor A for 75°).

Click on the picture to see the full program. (Hidden zones of the programme that are not shown contain no instruction).

[Sample of the NXT-G programme]

For the embedded computer

[Mobile Laptop Remote client]
The embedded laptop computer runs a programme (written in C#.NET) able to receive orders from the Internet (e.g. over Wi-Fi) and to forward them to the NXT brick of the robot. The communication between the robot and the laptop computer is over Bluetooth: the laptop computer sends orders to the NXT brick that treats them.

Moreover, the embedded laptop computer does a videoconference using Microsoft Windows Live Messenger with the desktop computer.


The code snippet below shows the only part of the C# code that requires knowledge about the NXT. This function is used to send an integer to one of the 10 Bluetooth mailboxes available on the NXT. It is inspired by “Bluetooth Developer Kit, Appendix 2-LEGO MINDSTORMS NXT Direct commands” and by an example from Pierre Poliakoff.

MobileLaptopRemote2.cs

private SerialPort serialPortNXT = new SerialPort("COM" + numericUpDownBluetoothPort.Value);

private void sendBluetoothMessage(byte mailbox, int message)
{
	byte[] mess = System.BitConverter.GetBytes(message);
	if (!System.BitConverter.IsLittleEndian) Array.Reverse(mess);
	byte[] nxtMessage =
	{
		//Header: following command length (least significant byte first)
		0x09, 0x00, //(byte)(length & 0xFF), (byte)((length & 0xFF00) >> 8)
		//Command
		0x80, //Command type: {0x00: Direct command, reply required;
		       //0x01: System command, reply required;
		       //0x02: Reply command;
		       //0x80: Direct command, reply not required;
		       //0x81: System command, reply not required}
		0x09, //Command byte: message write
		--mailbox, //0-based mailbox number (0..9)
		0x05, //datalength including terminator byte
		mess[0], mess[1], mess[2], mess[3], //data (here an Int32, Little Endian)
		0x00 //terminator byte
	};
	serialPortNXT.Write(nxtMessage, 0, nxtMessage.Length);
}

For the desktop computer

[Mobile Laptop Remote server] [Alex “Mobile laptop computer robot”]

The desktop computer runs a programme (written in C#.NET) able to send orders over the Internet to the laptop computer embedded on the robot. (It is the same programme as the one on the laptop computer, with different settings.) The sound coming from the embedded microphone and a real-time video from the embedded webcam are available, simply with a normal video conference under Windows Messenger.


Construction details of the drive wheels

Putting together the large drive wheels (rear) and the motors was not trivial, since there is a lot of weight and force, and since the number of holes in the motor is different from the number of holes in the wheel; it was thus needed to link the 4 holes of the motors to the 3 holes of the wheels.
Here are the details of the chosen building:

[Drive wheels: list of pieces] [Drive wheels: 2] [Drive wheels: 3] [Drive wheels: 4] [Drive wheels: 5] [Drive wheels: building finished]

Comments

object: View comments

https://alexandre.alapetite.fr

Back