Three Encoder Skid Steer Model

Our team has been having difficulty creating a three encoder skid steer chassis. We can get the chassis constructor to work with just the motors but as soon as we try to create a chassis with encoders, PROS says that there is "no matching function for call to ‘create’ ".

Has anyone worked with this type of drive before or know anything about what we are doing wrong?

1 Like

There is no 3 encoder chassis controller factory.
There are two things you can do.

  1. Create the chassis model using the 3 encoder chassis model factory or construct it yourself. The problem is to use it with a chassis controller, you have to directly construct the chassis controller yourself, which is more complicated than using a factory.
    Note that there is no point creating a 3 encoder chassis model unless you use it for some other algorithm, as the chassis controller does not use the third encoder for information.
    If you do write your own algorithm, then using the chassis model is the best option.
  2. Try out OkapiLib v4, which replaces factories with a much better system. That system supports easily creating a three-encoder chassis controller, and even has odometry.

Both solutions, in their full, require some non-documented C++ and PROS knowledge to get working. Let me know if you need help with using the chassis controller constructor, or with installing okapi v4.


We are trying to use the third encoder to do position tracking like 5225A had for In The Zone. How would I go about installing OkapiLib v4?

Wait for the encoders for a tracking wheel, are they the v4 type? Can someone post a picture of the encoders they use on here?

We are using the Optical Shaft Quadrature Encoder. Not sure what other encoder you’d be using for tracking wheels. Probably shouldn’t be using integrated encoders for that usage. And you really shouldn’t be using potentiometers for wheel tracking either.


1 Like

While the structures provided by OkapiLib may be useful for autonomous programming, you don’t need OkapiLib to do this. FWIW we implemented the tracking system before V5 or OkapiLib existed. If your goal is to learn how the tracking system works and implement it, I’d recommend going over our document and code release, and attempting to implement the same math in PROS on V5. If you’re having any trouble understanding the math or code, I’d be happy to help clarify (I’m aware that the document has plenty of room for improvement and the code has plenty of room for more comments).


I think there was some black encoder the looked like a v4 motor?
Although I could be mistaken.

V4 Motors can have integrated encoders if that’s what you’re talking about.
I can’t recommend it for this purpose though.

We have found that the integrated encoders are not as accurate to work with.

If you really want to install OkapiLib v4 (beta), head over to the releases page. Currently a Release Candidate is available for download.
It will be officially released soon, just some more testing and documentation is needed.

To install, download the template zip package.
Then run prosv5 c f to install the library into PROS.
Then, in your project, run prosv5 c u okapilib.
That will upgrade okapilib in your project.

Note that many things have been changed, so expect something to break.
Look at the header files for documentation, or the docs that are in development.

If you encounter any problems, please make sure to let someone know, so that it can be fixed.
Don’t expect official support until it is released, but okapilib is happy to receive beta testing feedback.


Thank you so much. I will let you know how it goes.

1 Like

Do you know how I would construct a chassis using c++? As far as I know, the docs are written for c.

There is no C version of okapilib.
Its all written in C++.
Look at the documentation for creating a chassis:

Ok. I found my issue. I was using two motors initial using pros, not okapi.