INFO

Information

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.