Group: Dan
Purpose and Overview
The purpose of the project was to modify commercially available Robosapien robots for use in a
class environment. After researching possibilities to accomplish the goal, we decided
on using an additional onboard microcontroller, a serial to Bluetooth adapter, a USB Bluetooth
adapter, and a Java API to handle the communications. Using Java and Bluetooth, students
were easily able to manipulate the robots. The student projects turned out well, and can be
seen in this site's photo gallery(Follow link on main Robosapien page).
Onboard processor
I selected the BasicX processor from Netmedia for use in the robots. These are slightly more expensive
than Parallax processors, but packed with better features, including floating point support, which I
intially used for communications with the robot. I selected these processors rather than
something like a PIC because it was unclear at the beginning of the project if students would
be doing onboard programming. In addition, the BasicX/Basic Stamps have builtin serial
communication hardware and libraries, making the circuit design and coding process simpler.
To power the processor, I took the 6V Vcc from the Robosapien's main board and added another D-cell
battery to supplement the voltage. The voltage fluctuates when the motors are activated, and
the D-cells add enough voltage that even during motor use with an old battery the processor still
gets the 5 volts it needs to operate. A 5v linear regulator was used to protect the processor
andprovide power for the Bluetooth serial adapter.
The processor is also connected to the touch sensors such that the processor pins are pulled to ground
when the sensors are hit. The sensors are disconnected from the main board processor so that the
robot does not automatically stop on impact(useful for playing robosoccer, or pushing boxes).
Finally, one pin from the processor is used to send signals to the robot over the IR channel.
The IR circuitry runs at 3.3V, but the processor runs at 5V, so a Schottky didoe is used as
a voltage clamp to protect the robot(Suggested by Tom Handley, another Robosapien hacker).
Power
Students had the choice between battery power and wall power. I added a DC power supply to the
robot and provided AC-DC adapters. A switch on the back of the robot selected between the power
sources. The wall power was slightly weaker than the battery power for a couple of reasons.
First, the power adapters only provided ~1.5 amps, which may not have been enough for intensive
tasks like walking. Second, the regulators that I used were only rated for 1-1.5 amps, so this
also limited the power provided(6 volts is a nonstandard voltage, and higher current regulators
for this voltage are hard to find). Third, the regulators may have been dropping out as the power
adapters provided less than the requird 6 volts under heavy current draw(although this never
caused the robots to reset if it was occuring). A better approach would be to purchase higher
current probably 2-3 amp 6 volt power supplies with built in regulators.
Bluetooth
The Bluetooth adapter on the robot is a Bluetooth to serial adapter. This allows communication
between the BasicX and a computer without special communications code for either system.
The PC Bluetooth adapters create what appears to be an additional serial port to the operating
system. The user can then run any code that talks to the serial port over the connection.
The Bluetooth to serial adapter is powered through the serial port by the robot and claims to
consume minimal amounts of power(untested).
Software
I provided a Java API for use with the robots. The API and some sample programs provided students
with the information that they needed to control the robots, and coding did not appear to be a problem
in the students' projects. A group of students also developed a C interface to the Java code to make
it easier to combine with OpenCV, a vision package written in C.
Problems/Fixes
Overall the projects turned out well, but some improvements could be made. First, the wall power
supply issue should be fixed, as mentioned above. Second, communication between the BasicX and
robot is unidirectional. There is, however, bidirectional communication over Bluetooth with the PC to ensure
that information is communicated. As a result of the unidirectional communication, there were times when
the robot would not receive sent commands. This is likely the result of interference from the rest of the IR
circuitry. The IR diode may have been picking up ambient infrared and garbling communications from the
BasicX(which is directly connected to the main processor). If this is the problem, one solution is to simply
disconnect the IR circuitry since this is only really necessary for use with the Robosapien remote control.
Another possible way to do the communication while keeping the IR circuit is to get feedback from the robot.
There is no IR feedback from the robot, but the robot's eyes do change patterns whenever a command is received,
so these could be used to determine if a command has been successfully transmitted, and retransmit on failures.
Besides these issues, there were no other major problems with the robots. Students discovered that the robots
don't walk in a straight line, but one group fixed this problem by adding some cutlery to the lighter side
of the robot.
Next
I still have to finish modifying the Robosapien V2. It is more complicated internally than the V1, but
the IR communications are pretty similar, and other hackers have already determined and documented the
IR protocol. BasicX code is available to those who need it, and schematics should be complete soon.