MorpHex MKIII

I've done a lot of work on MorpHex lately, both on hardware and software. The two major updates;  24 Starlite RGB LED's and a Razor 9DOF IMU made a huge difference when it comes to control and precision while rolling and the LED's gave a nice effect. So I've decided to name it MKIII.

 

Mounting the LED's:

For some years ago I got a lot of Starlite RGB LED's from BasicMicro.

MorpHex

They are easy to connect to a mcu using serial communication. They can all be connected to the same bus/port. I'm using an UBEC regulator for powering a total of 24

Starlites with 5v. For mounting the Starlites I made some simple brackets of polycarbonate. I've also reinforced the supporting ribs on the upper sphere sections. The Starlite brackets are mounted to the ribs.

MorpHex_MKIII_02

MorpHex_MKIII_03

As you can see, its getting pretty crowded with the additional stuff, the wirework is a pain.

MorpHex_MKIII_07

Especially when it comes to the lower section. All the wires are pushing some limits.. A couple of months ago I had a rather terrifying experience. During testing of MorpHex I suddenly got the "magic" smoke. One of the servo wires got partly shorted due to friction between the wires and a part of the inner body. It ended up with many hours for fixing, replacing wires and adding more sleeves for protecting the wires.

A picture of the partly melted wires.

MorpHex_MKIII_21

I do have a 30 amp main fuse that would blow if the shortcut became complete. Anyway, it isn't very fun when things like this happend.

 

Mounting the IMU:

Several years ago I bought a Razor 9DOF IMU from sparkfun. The version I'm using is retired, but it works fine. The board is a bit larger than the new version. I've only done some small modifications to the IMU code (C++ Arduino). My notes from the code: "MorpHex, sort of flip pitch/roll
      Normally, MorpHex roll along the Y axis (pitch). I want +/- 180 deg range of the pitch angle
      And +/- 90 deg range of the X axis (roll), when rolling along the "ecvator" the roll angle is about 0 deg
"

So, I'm only using two of the angles. If you look closely you can see the how the IMU is oriented. I made a bracket close to the inner body servo for mounting the IMU board close to the centre of MorpHex:

MorpHex_MKIII_20

MorpHex_MKIII_14

When it comes to the MorpHex code I've done a lot coding for adding new features. Adding the IMU part was relative easy though, and the result was very good. The IMU data are used for stabilising and controlling the rolling motion. The difference between MKII (no IMU) and the MKIII is like night and day when it comes to the ease of control. You can simply give MorpHex a little push and it starts rolling by itself, lol. On MKII I was not able to roll uphill or roll in the single or triple mode. 

To give you an insight of how I control MorpHex, these are my notes for using the remote controller:

;MorpHex CONTROLS:
;    - Left Stick    (WalkMode) Body Height / Rotate
;                    (Translate Mode) Body Height / Rotate body Y    
;                    (Rotate Mode) Body Height / Rotate body Y
;                    (Sphere Level 2/3) UppDown= Rolling Speed control    
;
;    - Left Pot.        (All modes) Body height
;
;    - Right Pot.    (All modes, not in SphereLevel >0) Direct control of body dimension/angle of inner body servo (morphing body)
;                    (Sphere Level 1) Control XZPos, transform into a sphere and vice versa
;
;    - Right Stick    (WalkMode) LR= Gait rotation, UD direct XZ control or vibrating effect of upper sphere 
;                     (Translate Mode) Translate body X/Z
;                    (Rotate Mode) Rotate body X/Z
;                    (Sphere Level 0/1) Control the upper sphere section in stick-mode
;                    (Sphere Level 2/3) UD= Amount of how much the sections are pushed out (when rolling)
;                    (Sphere Level 2/3) LR= Steering, how much the upper vs. lower sections are pushed out
;                
;     - Left Slider    Set main color (default), set compcolor or speed
;    - Right Slider    Direct control of the upper sphere sections
;
;    - A                Walk Mode
;      |– 1-5          Switch gaits
;      |– 6              Toogle High leg lift height
;      |– 7              Toogle Lock the upper XZ pos    
;      |– 8              Toogle Vibrator effects ON/OFF (default off)
;    - B                Translate Mode
;    - C                Rotate Mode
;      |– 1              LjoyUDWalk
;      |– 2              LjoyUDTranslate
;      |– 3              SetRotOffset
;      |– 4              Toogle LeftJoyLRmode (walk or translate)
;      |– 9              Toogle Lock rotation offset (ref. btn 3)
;    - D                Toogle upper sphere IK/FK mode
;    - E                Extra functions, works on all modes, mostly Starlite stuff 
;      |– 1              Toogle LightEffectModes
;      |– 2              Toogle Light Effects to be both on upper and lower, or just upper sphere section (default)
;      |– 3              Turn Light Effects ON/OFF (default off)
;      |– 4              Toogle SplitLightON
;      |– 7              Toogle SetCompColor 
;      |– 8                Toogle SpeedInput or color control using bPacket(PKT_LSLIDER)
;      |– 9              Toogle bSplitSphere
;    - F                Sphere Mode (Start at SphereLevel 0)
;      |– 1              SphereLevel 1, use Rpot to transform into a sphere
;      |– 2              SphereLevel 2 , remove this?
;      |– 3              SphereLevel 3 IMU 
;      |– 4              Extended peak ? improve/change this?
;      |– 5              Toogle single, dual and triple sphere effect (IMUloopCnt = 0,1 or 2)
;      |– 6              Toogle CounterAct
;      |– 7              Push and play, autonomous mode
;      |– 9              SphereLevel 0, (Hexapod mode)
;    - 0                Turn on/off the bot

I believe I've mentioned this before, but the code I'm using is based on the Phoenix code written by Jeroen Janssen. Highly modified by Kurt Eckhardt and me.

All in all I'm very satisfied with the result, but there are still some minor stuff I have on my To Do list. Before I move on to my next project.

MorpHex_MKIII_12

I'm also planning to participate on the Trondheim Maker Faire soon.

Meanwhile, I hope you'll enjoy my latest video:

Still having fun with robots :)

 

Outdoor footage of A-Pod

This evening I watched some of the outdoor footage I took of A-Pod in 2012. I felt the footage was pretty nice with warm autumn colours.

So I decided to make a short video of the clips and I'm thinking A-Pod deserved some attention.

OLYMPUS DIGITAL CAMERA

I hope you liked the picture. :-)

 

Outdoor footage of MorpHex and a servo failure

Two days ago I did a second attempt to make a new video of MorpHex outdoor. This time I wanted to see MorpHex rolling down a short slope. I think this is the first time I've ever seen a hexapod robot rolling downhill. The outer sphere sections protects the inner parts of the robot very well.

To be honest, not everything went ok during the filming. 5 seconds after 3:31 on the video the inner body servo broke down!

I've had a bad feeling for this servo for a long time now. I did think of replacing it when I made the MKII version, but for saving time I didn't.. sigh..

This was a major set-back since my plan was to demonstrate some other features as well. Currently I'm home alone, because my wife and our 3 kids has already left for Easter holidays. I'm going to join them tomorrow though. This meant I got much free time for playing around with the new Teensy3.1 on a breakout board designed by Kurt Eckhardt. I'm thinking of using this board on several of my robots in the future. The Teensy3.1 feature the latest ARM Cortex M4 processor. Also having connectors for the Robotis servos, a holder for XBee RF communication and a speaker make this board just perfect. Thanks Kurt! You can read more about Kurt's Teensy 3.1 breakout board on the Trossen Robotics Forum.

Teensy04

But instead I had to spend about 10 hours in my workshop for resurrecting MorpHex. sad

On this picture (from the bottom side of the body) I've removed the LiPo battery holder and marked the white Nylon gears just to be sure..:

MorpHex_Fail_02

Removed the "body-arms". As you can see, the screws that hold the Hitec HS-5645MG servo is a real pain to reach:

MorpHex_Fail_03

After removing the servo I opened the servo case just to confirm that one of the brass gears was broken:

MorpHex_Fail_04

Luckily I have several spare Hitec HSR-5990TG servos. They are much stronger and feature gears of titanium. FIY, the Hitec HSR-5990TG servo are discontinued. Some years ago I bought about 40 of them, used but in good shape and for a very good price. 

The new servo in place!:

MorpHex_Fail_05

So far so good.? But no. At this point I found another problem. You see, the main reason for why the servo broke down was that one of the screws that hold the pairs of "body-arms" loosened after a while. To improve this I had to remove all the arms again and also remove the upper sphere section and the ARC-32 mcu board. Believe me, this made me pretty frustrated. What a mess!

MorpHex_Fail_06

As you can see from the picture below, the screw marked with a red circle became loose and came in direct conflict with a fixed part of the inner body. On the head of the screw you can see some scratches, actually this was more visible on the fixed body part of aluminium (no pictures of that). The solution was to use inset screw (the red arrow) and using locktite this time:

MorpHex_Fail_07

I don't think I've explained this before. The upper section are mounted to the inner body part using only three 4M screws (marked with arrows and a circle on the next picture). All in all, its a pretty simple task to mount.

MorpHex_Fail_09

MorpHex_Fail_10

After assembling everything together and recalibrating the inner body servo, I only had to do some minor changes to the code and MorpHex was working fine again! smiley

My next upgrade might be the new Teensy3.1 board. But that require a lot of work on the code, not sure if that is my priority #1. I've some plans for a new robot too..

 

I wish you all a great Easter holiday!

 

 

 

MorpHex MKII, a short outdoor test

Five days ago, we (I and two of my youngest kids) did our first outdoor test on a basketball court. It worked fine and I was able to control it very well, rolling straight, to the left and right! It's just like driving a RC car.

Compared to the MKI the rolling method by pushing out only one section didn't work very good. The reason was that the sections are a bit heavier on MKII, so when pushing out one section the "ball" tends to roll towards the opposite direction as I want, this method work for rather slow rolling though. But the best approach was to push out the opposite sphere (the other side of the globe) at the same time to sort of keep the ball in balance. This method proved to be more effective, it moves more like a tread, kinda..

Still some tuning to do on the code.

I gave my 8 year old son my phone to shoot a short video of MorpHex for you on the forums, so it's a bit shaky. It's live sound this time and unlisted. I want to make a better video when going public on youtube though.

 

MorpHex MKII video

Yesterday I made a new video for demonstrating some of the new features of the MorpHex MarkII hexapod robot. Like I wrote in my last post I'm still working on the code. I'll try to post more info about the code later.

Meanwhile I hope you enjoy the video.