Recommended Posts

Hi,

I am new to this forum and hope I can live up to your standards.

I wanted to share my holonomic robot Agilis. It is build for the EV3 and uses Rotacaster holonomic wheels.

The robot is fast and agile, hence its name. The trianguar frame is sturdy and has three sensors docks (not populated in the picture). I do not have a video of this robot, but I do have

from an older version that uses the NXT for control. It highlights the kind of complex movements this robot can make.

You can also download the building instructions I made, in PDF or in LDraw.

I tried to describe the technique of the movements on my blog in several posts regarding Agilis. They might be a bit technical though.

Aswin

agilis21.png

Share this post


Link to post
Share on other sites

No one expects high standards and thats why I like this forum, I'll be getting ev3 later in the year so I'll bookmark this for now because it looks quite interesting.

Anyone that can use LDRAW has talent, thats one tough app to use.

Edited by JM1971

Share this post


Link to post
Share on other sites

Very nice Aswin. I've been wanting to build something similar for a while but never got around to ... In fact, I even got the rotacaster wheels and they've been sitting as well. Now you're giving me motivation to bring this project to completion. Some technical aspects:

1. The robot you've built has 3 degrees-of-freedom, 2 translations and one rotation.

2. I'm picturing the control to be done by some 'joystick' that has exactly those DOFs

Real question is ... how easy/complicated is it to control the motion?

3. Rotation can be achieved by rotating all 3 motors in the same direction

4. One translation can be done by blocking one wheel and letting other two run in opposite directions

5. Other translation would involve one wheel to move at some speed X, while other two wheels to move at X/cos(60)

Are above statements correct? Lastly, would it be possible to share the EV3 code?

Edited by DrJB

Share this post


Link to post
Share on other sites

@DrJB

Controlling a holonomic robot requires some math. But nothing more than sinus, cosine and calculating circumference. The trick is to translate robot speed (both linear, in xy-space, and angular, around the robots center) into wheel speed. You'll find the math explained on my blog.

Things get a bit more complicated when you want the robot to rotate while making movements. This requires the wheels to rotate at ever changing speeds. So that needs a tight control. It also requires you to always know the orientation of the robot. But again, this is explained on my blog.

I used LeJOS to program the brick. It has the best motor control by far. leJOS does not synchronize motors against each other but it synchronizes against time. This gives exact speeds and allows to synchronize an unlimited number of motors. LeJOS has a class, the so called omnipilot, that can be used of the shelf to control a holonomic robot. This class is well suited for joystick control. I wrote my own code however as I wanted to implement more complex movements. Like keeping the robot aimed at a target while driving around, as you can see here:

Share this post


Link to post
Share on other sites

I can do the math, no issue there :) ... Thinking that the controller might be a challenge, something like a joystick with xy and YAW controls ...

Share this post


Link to post
Share on other sites

I can do the math, no issue there :) ... Thinking that the controller might be a challenge, something like a joystick with xy and YAW controls ...

Is that like delta angles in games programming so the game character goes in the right direction in relation to the view point in a 3D world?

Share this post


Link to post
Share on other sites

Not sure what delta angles are ... care to elaborate?

The kinematics is rather easy: the rpm of each tire is the same (scaled by the radius) as that tire's tangential speed, or alternatively the speed (along the tire circumference) of the tire's attachment point.

Thus, one can write the motion of each tire's center point in terms of the robot's 3 DOF (2 translations and a rotation). This is the forward kinematics problem. If one wants to know the robot's motion in terms of what each of the tires is doing, then it's an 'inverse' kinematics problem and the equations can be 'reversed'. The next level would be to make the robot 'interact' with its surroundings, by adding some sensors. That is where some combination of forward/inverse kinematics might come in handy.

Edited by DrJB

Share this post


Link to post
Share on other sites

It is just like DrJB says. Here is the full forward kinematics formula

motorSpeed =

xSpeed * (cosine(wheelAngle) * nEncoderTicks / ( gearRatio * 2 * PI * wheelRadius) -

ySpeed * (sinus(wheelAngle) * nEncoderTicks / (gearRatio * 2 * PI * wheelRadius) +

angularSpeed * distanceToCenter * nEncoderTicks / (gearRatio * 2 * PI * wheelRadius)

xSpeed, ySpeed and angularSpeed express the robots speed in units/second. WheelRadius should be using the same unit. MotorSpeed is expressed in encoder ticks per second.

You will see that this formula solves to

motorSpeed = xSpeed * aConstantValue - ySpeed * anotherConstantValue + angularSpeed * yetAnotherConstantValue

With different constants for each wheel. These constants can be put in a matrix. The inverse of this matrix can be used to translate wheel speed into robot speed and thus for odometry.

I have played with joystick control. What worked best for me were two different control modes. In one mode the x and y axes of the joystick translated directly into x and y speed of the robot. In the second mode the y axis translated into angular speed, the function of the x axis was unchanged. The first mode was default, the second mode was on when the fire button was pressed. It was fun to drive.

Share this post


Link to post
Share on other sites

Aswin: Sounds like this definitely will be a fun robot to build/program ... I just need to find the time to sit down and do this. In your initial post (blog) you mentioned you're using a 3rd party OS for the Brick (LeJos?) ... Simple Question: Is this a must? Can't the original EV3 software handle the programming?

Edited by DrJB

Share this post


Link to post
Share on other sites

an't the original EV3 software handle the programming?

There is a topic on mecanum wheels somewhere here. AFAIR a 4wd car was controlled by original EV3 software using math very similar to described above.

Share this post


Link to post
Share on other sites

@DrJB

I suppose you can do this in any language, including NXT-G and it's successor. I would use Excel to calculate the constants and the inverse matrix if you need that. The constants can be used in your program.

@EV3Noob

The math for mechanum wheels is almost the same. WheelAngle should be the angle of the rollers, not the wheel assembly. And there is a small complication regarding angular speed. In a typical mechanum wheel setup the axis of the rollers does not go through the center of the robot as in most holonomic robots. You have to take this into account in the angular speed component.

Share this post


Link to post
Share on other sites

Thank you Aswin and EV3Noob ... promising to be a lot of fun, will most likely do this on spring break (in 3 weeks) ... working adult life does not go hand in hand with such a dedicated hobby ... will update then.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.