This is an old revision of the document!
This report describes the work done under MHK0020 project rules of spring semester 2001 at TUT(Tallinn University of Technology). “Mechatronics-project” allows the opportunity to try practically the possibilities of our prior education on specialty of mechatronics. Our team was to develop and construct a robot that was to move by control from a remote computer. For this task we were given a Zigbee system which allows control by radio waves. We were to develop mechanic electric and programming parts of our system. With no prior experience in such development our team made our best effort to accomplish given task. We were faced with different challenges. In this report we include our results up to this moment.
Käesolev aruanne kirjeldab kohaselt tehtud töö MHK0020 projekti reeglite kevadsemestril 2001 TTÜ (Tallinna Tehnikaülikool). “Mehhatroonika-projekt” lubab võimaluse proovida peaaegu võimalusi meie eelneva hariduse eriala mehhatroonika. Meie meeskond oli arendada ja ehitada robot, mis oli liikumiseks kontrolli kaugarvutist. Selle ülesanne anti meile Zigbee süsteem, mis võimaldab kontrolli raadiolaineid. Olime arendada mehhaanik elektri-ja programmeerimise osad meie süsteemi. Mis ei ole varasemat kogemust selline areng meie meeskond tegi oma parima, et täita antud ülesanne. Olime silmitsi erinevate probleemidega. Käesolevas raportis me kaasame meie tulemused kuni see hetk.
At the beginning of the project we were given an opportunity to freely choose any robot system to develop with only one limitation: it has to be remotely controlled. We considered our options and decided to try to develop a spider type robot. It seemed that a simple wheel drive would be boring and trivial. So we set our task and searched for the closest analogies on the market. We found a popular model (Picture 1 Market model of a spider robot) and based our concept of it.
Picture 1 Market model of a spider robot
We pointed out the features that need to be included in our development: * Servo motors * Platform to hold control schemes and motors * Four controlled legs * Two servo motors per leg. * Servo driver to control the motors.
In development of this project these programs were used: * Solid Works- drawing of parts * AutoCAD 2008 - algorithms * Open Office- reports and calculations * Multisim –electronics test
We chose to divide our development in to multiple stages and assign each group member his own task to help spread the work load among members with strongest features in each aspect. A four leg system with 2 servomotors were chosen to, ease the burden on the budget of our spider. There were possible hardship with balance, but the risk was taken. We needed the design, the program and the electronics to make the robot hole. That was how we split up the work load. Mihhail Smirnov was assigned the task of making the drawings and figuring out the mechanical aspects. Dmitri Rõsev was responsible for programming and computer communications. Andrei Sorokin was responsible for electronics and gathering. We coordinated our efforts and helped each other in the process. There were several ideas but in the end we filtered out the most effective: * Light materials * Circular algorithm * Several movement possibilities * Zigbee control
During our development we faced several problems: * Possebilityes of movement * Mechanical connections * USB connection possibilities * Driver programming and output numbers * Slow response
| Week | Plan | Done |
|---|---|---|
| 1 | Choosing the project and group assignment | Assigned to the group and given the task |
| 2 | Idea analysis and planning | Ideas were thought through and decided on a concept and how it would function |
| 3 | Programming | Programs and algorithems |
| 4 | Electronics planning and one leg development | Driver scheme and ZigBee system were implemented |
| 5 | Electronics gathering | New driver was suggested |
| 6 | Drawing and parts making. | Drawing were maid but it was not possible to make parts. |
| 7 | Gathering | Driver to servo development and tuning |
| 8 | Document finishing | Documents were finished |
Picture 2 Spider concept
We started of with a concept of our spider (Picture 2 Spider concept) robot and from there decided on part placement and there characteristics. It was decided that we stick to the basics and try not to over complicate our robot. Since we decided on the components it was a mater of time to pick them out by price and characteristics.
1) SSC-32
This is the best servo controller value available. 32 channels of 1uS resolution servo control. Bidirectional communication with Query commands. Synchronized, or “Group” moves. 12 Servo Hexapod Gait Sequencer built in.
2) XBee-PRO
The XBee-PRO 802.15.4 (formerly Series 1) OEM RF module is an IEEE 802.15.4 compliant solution that satisfies the unique needs of low-cost, low-power wireless sensor networks. The module is easy-to-use, requires minimal power and provides reliable delivery of critical data between devices. Innovations stamped in the XBee-PRO design enable it to yield two- to three-times the range of standard ZigBee modules. The XBee-PRO 802.15.4 module operates within the ISM 2.4 GHz frequency band and is pin-for-pin compatible with Digi's regular XBee (1 mW) 802.15.4 module. The modules are optimized for use in US, Canada, Australia, Israel and Europe. No configuration is necessary for out-of-box RF communications. The module’s default configuration supports a wide range of data system applications. Advanced configurations can be implemented using simple AT commands.
Product summary:
3) DCServo S03NF STD
Product Information S/TEC STD S03NF/2BB/MG (S07/2BB) SERVO - 7720340
To summaries here is a price list with the total of the components used:
| Component | Number | Name | Price |
|---|---|---|---|
| Servomotor | 8 | DCServo s30NF STD | $160 |
| Xbee-PRO | 2 | Xbee-PRO module | $64 |
| Servo driver | 1 | SSC-32 | $39.95 |
| Toatal | $263.95 | ||
|---|---|---|---|
Picture 3 Movement Algorithm
Movement algorithm (Picture 3 Movement Algorithm) description: At first the system is implemented with the program and a check of status is accomplished (d0). All components are set to default positions and are now ready to work. Default position is considered as position of the leg when its joint part is perpendicular to the surface and its base leg part is parallel to the short side of the base.
Step 1 (c0): A movement command is issued and the controller is choosing the appropriate action according to the program implemented:
Sideways movement is not implemented in to our system but is possible with use from more than 2 servo motors per leg. That possibility can be used in the later models of our system. This application (c3) will not be mentioned further.
Step 2.1 (c1): There are two possibilities of direct movement:
Front movement (a1) function in the program moves the joint servo of the first leg(front right from the upper perspective) by 45 degrees clockwise (from the front perspective) then the base servo 45 degrees counter-clockwise (from the upper perspective). Joint servo is returned to its default position, then base servo to its default position. Other legs move to the same pattern with given time periods. Back movement (a2) function in the program moves the joint servo of the first leg(front right from the upper perspective) by 45 degrees clockwise (from the front perspective) then the base servo 45 degrees clockwise (from the upper perspective). Joint servo is returned to its default position, then base servo to its default position. Other legs move to the same pattern with given time periods.
Step 2.2 (c2): There are two possibilities of turn movement:
Left movement (a3) function in the program moves the joint servo of the first leg(front right from the upper perspective) by 45 degrees clockwise (from the front perspective) then the base servo 45 degrees clockwise (from the upper perspective). Joint servo is returned to its default position, then base servo to its default position. The legs connected by a side move there base servo in opposite direction by 45 degree with given time period. Right movement (a4) function in the program moves the joint servo of the first leg(front right from the upper perspective) by 45 degrees clockwise (from the front perspective) then the base servo 45 degrees counter-clockwise (from the upper perspective). Joint servo is returned to its default position, then base servo to its default position. The legs connected by a side move there base servo in opposite direction by 45 degree with given time period.
Step 3: System controls if the movement is repeated or stopped (d1) and if the movement is repeated then a loop goes to check what movement pattern is selected. It is possible to continue the chosen movement or to select a different pattern.
Addition: If the algorithm reaches the “End” point the joint and the base servos are returned to the default position.
Code:
#include <homelab/usart.h>
#include <homelab/delay.h>
// COM connector
usart in_port = USART(0);
// pinhead GND/RX/TX
usart out_port = USART(1);
int main(void)
{
char c;
unsigned char row = 1;
// USART
usart_init_async(in_port,
USART_DATABITS_8,
USART_STOPBITS_ONE,
USART_PARITY_NONE,
USART_BAUDRATE_ASYNC(115200));
usart_init_async(out_port,
USART_DATABITS_8,
USART_STOPBITS_ONE,
USART_PARITY_NONE,
USART_BAUDRATE_ASYNC(115200));
// Loop
while (true)
{
usart_try_read_char(in_port, &c);
if(c=="move forward"){
// Left top leg
usart_send_string(out_port, "#0 P1800 S1000\n");
usart_send_string(out_port, "#1 P2200 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#0 P1500 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#1 P1500 S300\n")
// Right bottom leg
usart_send_string(out_port, "#2 P1800 S1000\n");
usart_send_string(out_port, "#3 P2200 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#2 P1500 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#3 P1500 S300\n")
// Right top leg
usart_send_string(out_port, "#4 P1800 S1000\n");
usart_send_string(out_port, "#5 P2200 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#4 P1500 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#5 P1500 S300\n")
// Left bottom leg
usart_send_string(out_port, "#6 P1800 S1000\n");
usart_send_string(out_port, "#7 P2200 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#6 P1500 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#7 P1500 S300\n")
}
else if(c=="turn left"){
// Left top leg
usart_send_string(out_port, "#0 P1800 S1000\n");
usart_send_string(out_port, "#1 P1300 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#0 P1500 S1000\n");
hw_delay_ms(300);
// Right top leg
usart_send_string(out_port, "#4 P1800 S1000\n");
usart_send_string(out_port, "#5 P1800 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#4 P1500 S1000\n");
hw_delay_ms(300);
// Right bottom leg
usart_send_string(out_port, "#2 P1800 S1000\n");
usart_send_string(out_port, "#3 P1800 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#2 P1500 S1000\n");
hw_delay_ms(300);
// Left bottom leg
usart_send_string(out_port, "#6 P1800 S1000\n");
usart_send_string(out_port, "#7 P1800 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#6 P1500 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#0 P1500 S1000\n");
usart_send_string(out_port, "#2 P1500 S1000\n");
usart_send_string(out_port, "#4 P1500 S1000\n");
usart_send_string(out_port, "#6 P1500 S1000\n");
hw_delay_ms(300);
else if(c=="turn right"){
// Left top leg
usart_send_string(out_port, "#0 P1800 S1000\n");
usart_send_string(out_port, "#1 P1800 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#0 P1500 S1000\n");
hw_delay_ms(300);
// Right top leg
usart_send_string(out_port, "#4 P1800 S1000\n");
usart_send_string(out_port, "#5 P1300 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#4 P1500 S1000\n");
hw_delay_ms(300);
// Right bottom leg
usart_send_string(out_port, "#2 P1800 S1000\n");
usart_send_string(out_port, "#3 P1300 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#2 P1500 S1000\n");
hw_delay_ms(300);
// Left bottom leg
usart_send_string(out_port, "#6 P1800 S1000\n");
usart_send_string(out_port, "#7 P1300 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#6 P1500 S1000\n");
hw_delay_ms(300);
usart_send_string(out_port, "#0 P1500 S1000\n");
usart_send_string(out_port, "#2 P1500 S1000\n");
usart_send_string(out_port, "#4 P1500 S1000\n");
usart_send_string(out_port, "#6 P1500 S1000\n");
hw_delay_ms(300);
}
}
}
During the last part of the development we were given access to tools to make parts for our robot. At first we decided it would be best to make the robot out of aluminum for its good characteristics, but after we tried to make the first leg it was decided that plastic would suit best with its lighter possibilities for remodeling and sculpting. The Picture 4 Spider leg shows a built leg of our robot. The horizontal part is referred to as “base part” the second half of the leg is referred to as “joint part”. In both joint and base part a holes of 2,5 mm were made for attachment of servo motors. In the base part is also a cut was made to fit and attach a servo motor. A similar cut were made in the platform to fit the four servos that move the base parts. There are four 3mm holes that attach the servo motor in its place on the base and on the platform. The platform is fit with 4 holes of 4mm on the axes to hold an upper platform for controller and driver mounting.
Picture 4 Spider leg
Picture 5 Assembled spider
7. Other spiders on the market.
We are including a series of similar robots on the market with there characteristics and costs to show the possible improvements of our model against the competitors.
1. Small Spider Robot
Price: Unknown
2. Lynxmotion BH3-R robotic spider
The body is 18 inches wide and made of custom cut Lexan panels. The servo brackets are aluminum. The Lynxmotion BH3-R hexapod uses 18 servos to maneuver its six legs (each with three degrees of freedom) at up to a foot per second in any direction and can clear objects 4 inches high. Price: $750
3. Joinmax Digital Quadruped Robot Kit
8 servos. With all mechanical components, a 16-servo controller, PC software, and a download cable included, this walking robot kit is very complete: the only thing you need to add is five standard, AA size batteries. NiMH cells are recommended because of the high current consumption of the robot. Price: $230.
During the development we faced many unexpected problems. Especially nearing the dead line we came across some trouble with the drivers, but we managed to make ends meat. We now know what it is to be involved in a full scale design and build of a mechatronics project with its troubleshoots and unexpected and some times not so obvious solutions. We are sure that this experience will benefit our skills as engineers and developers. It took all our combined powers to make this project work and it was thanks to our prior education in TUT and a lot of help from our supervisor Raivo Sell PhD.