# mechDOG (robot dog based on Arduino and LSS)

@dickel Well done! Can see the SPOT Mini inspiration. Your creations are always very professional. Think it will need an extra DoF per leg to help with turning?

2 Likes

Awesome! You should tag your post NSFW…cuz I just lost an hour of work time checking out all your videos. haha. You have some great videos and nice job on the new robot workspace.

2 Likes

Thanks!

For sure!

1 Like

Thank you very much!

I think and hope that the 3 DoF will be enough… at least it worked on several similar DIY robots I’ve seen.

2 Likes

Haha! Thank you very much!

3 Likes

And… IT WALKS!

I am very happy with the result. I know… there is a lot to improve… but, having worked practically only with robots moved by tank tracks and DC motors and having very limited knowledge in programming, this project is well outside my comfort zone…

Spent about 3 days trying to figure out how to make it walk and write a functional code. For now the code has no IK implemented.

As I previously worked with Flash to make animations, it was easy for me to find the angles, creating two lines (red and blue) that represent the leg segments and I was able to position them where I wanted and to find the angles I used a drawing of a protractor of angles.

Yep. It’s a bit hard-working… but for now it’s fine.

You may have noticed the green tape on the feet… it is temporary, and serves to reduce the friction caused by the rubber tips (this should be corrected with improvements in the code).

Below is an example of how the code works:

``````float targetPos;
float currentPos;
float previousPos;
byte stepPhase;

void setup()
{
Serial.begin(9600);
}

void loop()
{

if (stepPhase == 1)
{targetPos = 100;
if (currentPos != targetPos)
{
currentPos += (targetPos - previousPos)/(50);
}

else
{
currentPos = targetPos;
previousPos = targetPos;
stepPhase = 2;
}
Serial.print(currentPos);
delay(300);
}

else if (stepPhase == 2)
{targetPos = -100;
if (currentPos != targetPos)
{
currentPos += (targetPos - previousPos)/(50);
}

else
{
currentPos = targetPos;
previousPos = targetPos;
stepPhase = 1;
}
Serial.print(currentPos);
delay(300);
}

else {stepPhase = 1;}

}``````
3 Likes

That is well done! There’s really not much out there “ready to go” regarding IK for animal quadruped motion (quite a few papers), so the approach you took got you to a working result. As you’re likely aware, the (current) Phoenix code implemented on the Lynxmotion legged robots uses coordinate systems as opposed to IK. The lower limb seems to be at a very acute angle to the ground, likely requiring quite a bit of torque - might want to straighten it more? If you can work out a system to automatically determine joint angles, you’ll be able to adapt the walking gait, work on turning etc. Given your interest and abilities, wonder if you want to look into jumping on the ROS 2.0 bandwagon?

1 Like

Thanks!

Next iteration on the code for walking routine will have some improvements. This may be one of them. Lack of time to work more on coding right now.

I have been following the SES V2 Legged Robots thread and that got me a bit interested in ROS 2.0… but my knowledge on this is zero… also, not very familiar with RPi. So, there would be a learning curve. And I don’t have much time to work (due to my job, house, wife, son, real dogs)… so it would take a little longer to start working.

BUT I really dreamed (a few times) about an advanced/more adaptive and slightly larger version of mechDOG (even more inspired by Spot), and that would need RPi + ROS 2.0. Off course it would also need HT1 servos (everything improved, stronger).

Just daydreaming… for now!

2 Likes

This is sweet. Very well put together… great work!

2 Likes

Thank you very much!

1 Like

Hopefully as Lynxmotion moves towards ROS 2.0, we’ll be creating tutorials etc.
However, as you indicated, it’s quite a learning curve. Arduino is always a great language and looking forward to seeing your progress!

1 Like

Yes… first, let’s see how this project evolves… still many things to do to consider this robot “functional”… like turnings and so. Then, let’s plan the next steps on it… next improved version!

1 Like

Another task accomplished… now mechDOG can turn!

To be honest, I was concerned about this specific movement… because the design of mechDOG is not symmetrical and what that implies in CoG / CoM.

Note that the green tape remains on the tips (remove it and it will be an issue… because of the asymmetrical design, the mass distribution is not well done, and the body tends to tilt to one side, and the rubber tips would cause friction.).

But maybe it can be balanced with IMU.

BUT… it’s working! Not perfect… but working. I’m happy with the result!

3 Likes

mechDOG in other media:

2 Likes

@dickel
Bravo!

2 Likes

This video summarizes all the progress with this project so far. Now it can be considered “functional”. Can walk, turn, do side trotting. It’s very stable and has a good speed.

5 Likes

Well done! Really happy to see it reach this point and looks professional as always.

2 Likes

How the chassis was built.

3 Likes

Nice - Lot of hand work in here. I am usually lazy and cnc everything…

2 Likes

Improved gait.