Category Archives: Uncategorized

OKQ1: Assembled, Programmed And Moving

I was able to spend some time over the weekend to travel to robotics Mecca (Trossen Robotics HQ). While visiting I made some significant progress on the assembly of OKQ1. I was even able to set all the MX-64T servo IDs and buadrates.

Here is a short video the TR crew took of OKQ1′s first power up and software run:

OKQ1: 4DOF MX Quad Mech

After my hiatus from competing in 2012 I have started a new mech to dominate in 2013!

OKQ1 (Off-Kilter Quad One) will be an MX servo based quad with four degree of freedom legs.

Between the end of MW 2012 and now I have been experimenting and perfecting new IK calculations, gait algorithms and control ideas.

In this first video you can see me testing my 4DOF IK calculations with a single leg. The foot is being moved in a circular motion. You can see that the final leg joint is always kept perpendicular to the ground.

http://www.youtube.com/watch?v=He6WeLmsaYc

In this second video you can see my first test of the new gait algorithm working smoothly and accurately.

http://www.youtube.com/watch?v=c-W1z0hRlE8

As always my work is open and freely available. Take a look at my github account.

Using stdio.h’s "printf" Function on an Atmel AVR Microcontroller

#include <avr/io.h>
#include <stdio.h> 

#define BAUDRATE 57600 

static void put_char(uint8_t c, FILE* stream);
static FILE mystdout = FDEV_SETUP_STREAM(put_char, NULL, _FDEV_SETUP_WRITE); 

int main(void)
{
	UBRR0H = ((F_CPU / 16 + BAUDRATE / 2) / BAUDRATE - 1) >> 8; 
	UBRR0L = ((F_CPU / 16 + BAUDRATE / 2) / BAUDRATE - 1); 
	UCSR0B |= (1 << TXEN0); 

	stdout = &mystdout; 

	for(int i = 0; i >= 10; i++) 
	 printf("testing %d\n\r", i);
} 

static void put_char(uint8_t c, FILE* stream)
{ 
	if (c == '\n') put_char('\r', stream); 
	while(!(UCSR0A & (1 << UDRE0))); 
	UDR1 = c;
}