Let us feature your cool Lynxmotion based robot project here!


Isometric

Isometric

Low view

 


Low front

Top down

Low isometric

Project Name:
BlackWido
Author:
Jeroen Janssen (aka Xan)

I’ve been working on my Hexapod called BlackWido. It is almost a copy of Zenta’s original Phoenix so for mechanical-design honors go to Zenta. For more information you can visit the following topic: http://www.lynxmotion.net/viewtopic.php?t=3763

So what I have is the first release of my code. It is written for the ATOM 28 Pro chip. This release includes inverse kinematics for all the legs and the body. I've got BlackWido walking but that is far from finished so I didn't include that part yet. I will send you some updates in time.

The inverse kinematics is very accurate but isn’t perfect either. The calculations are perfect and very accurate but the code needs to be optimized a lot. I want to replace the sin, cos and atan calculations with a byte table. This will improve the calculation time. I also want to replace all the floats to swords and shift the decimal number to get the same accurate but decrease memory.

You should be able to use the code on the Phoenix. The only thing that you need to do is change the body and leg dimensions.

Update: What's new in v2.0 (Note: requires BASIC Atom Pro IDE v8.0.1.8 or BASIC Micro Studio)

Includes some minor changes to the PS2 remote:
 - Moved to fixed point calculations
 - Inverted BodyRotX and BodyRotZ direction
 - Added deadzone for switching gaits
 - Added GP Player
 - SSC version check to enable/disable GP player
 - Controls changed, Check contol file for more information
 - Added separate files for control and configuration functions
 - Solved bug at turn-off sequence
 - Solved bug about legs beeing lift at small travelvalues in 4 steps tripod gait
 - Solved bug about body translate results in rotate when balance is on (Kåre)
 - Sequence for wave gait changed (Kåre)
 - Improved ATan2 function for IK (Kåre)
 - Added option to turn on/off eyes (leds)
 - Moving legs to init position improved
 - Using Indexed values for legs
 - Added single leg control

Update: What's new in v1.3 (Note: requires BASIC Atom Pro IDE v8.0.1.8)

Includes some minor changes to the PS2 remote:
 - L1 & L. Stick Shift body X/Z
 - L1 & R. Stick Shift body Y and rotate body Y

Also includes balance calculations from Kåre Halvorsen, aka Zenta on our forum.

Update: What's new in v1.2

Improved gait engine:

A universal gait engine which makes is possible to simply add new gait types by setting properties. I’ll explain the settings with a 6 steps ripple gait for example.



StepsInGait = 6 Total number of steps in the gait
NrLiftedPos = 1 Number of positions in the air (blue position)
TLDivFactor = 4 Number of movements on the ground (red arrows)
NomGaitSpeed = 150 Nominal speed of a single step

LRGaitLegNr = 1
RFGaitLegNr = 2
LMGaitLegNr = 3
RRGaitLegNr = 4
LFGaitLegNr = 5
RMGaitLegNr = 6
Defining sequence of the legs.

Example 2: 12 steps tripod




StepsInGait = 12 Total number of steps in the gait
NrLiftedPos = 3 Number of positions in the air (blue position)
HalfLiftHeigth = TRUE True places the outer upper positions (2 and 12) to half the height of the middle position (1). False places the outer upper positions on the same height as the middle position.
TLDivFactor = 8 Number of movements on the ground (red arrows)
NomGaitSpeed = 100 Nominal speed of a single step

LRGaitLegNr = 1
RFGaitLegNr = 3
LMGaitLegNr = 5
RRGaitLegNr = 7
LFGaitLegNr = 9
RMGaitLegNr = 11
Defining sequence of the legs.

Example 3: 6 steps Tripod




StepsInGait = 6 Total number of steps in the gait
NrLiftedPos = 2 Number of positions in the air (blue position)
HalfLiftHeigth = FALSE
TLDivFactor = 4 Number of movements on the ground (red arrows)
NomGaitSpeed = 150 Nominal speed of a single step

LRGaitLegNr = 4
RFGaitLegNr = 1
LMGaitLegNr = 1
RRGaitLegNr = 1
LFGaitLegNr = 4
RMGaitLegNr = 4
Defining sequence of the legs.

Improved gait speed:

The analog sticks not only controls the step length but also the speed of the gait.

5 different gaits:
Thanks to Zenta
Gaits included are:
- 6 steps ripple
- 12 steps ripple
- 9 steps quadripple
- 4 steps tripod
- 6 steps tripod

Improved body rotations:
Thanks to Zenta
The improved body calculations that Zenta posted before are implemented

Internal timer to improve SSC communication:

A internal timer measures the calculation time of each step. This makes it possible to get a perfect timing between the BB2 and the SSC. This makes the gaits very stable.

Turn on/off the bot with the remote:

Press the start button on the PS2 remote to turn on and off the bot.

Servo offsets moved to SSC V2 registers:

The offsets of the servos are moved to the SSC V2 register. This way there is no need to change the offsets in case of a new version.

Optional compiling for the SSC setup:

The code uses a constant called “SSC_LM_SETUP” which can be used to simply setup the pin layout. If it is set to 1, the LM setup (9-pins connector to the front) will be loaded. If it is set to 0, the setup which is used for the BlackWido is loaded (9-pins connector to the back).



You can download the BASIC Atom Pro code here:
BlackWido IK for PS2 control (v2.0) (Nov 09, 2009) (Note: Requires IDE v8.0.1.8 or BASIC Micro Studio)
BlackWido IK for PS2 control (v1.3) (Nov 04, 2008) (Note: Requires BASIC Atom Pro IDE v8.0.1.8)
BlackWido IK for PS2 control (v1.2) (Oct 22, 2008)
BlackWido IK for PS2 control (v1.1) (Jun 25, 2008)
BlackWido IK for Wiimote control (no gait) (Jun 03, 2008)


Check out these videos of the BlackWido in action:
 Wiimote Control:
  http://www.youtube.com/watch?v=QsBj7koZ9lk
  http://www.youtube.com/watch?v=vPI3zhylXW4
  http://www.youtube.com/watch?v=NMtifBKX3kE
 PS2 Control:
  New (v1.2): http://www.youtube.com/watch?v=U8dd04VGjl0
  http://www.youtube.com/watch?v=w92gXdfE1kY


If you have any comments or suggestions on BlackWido or the code, check out this project on our forums:
http://www.lynxmotion.net/phpbb/viewtopic.php?t=3979