New triple lift preview

About three years ago I posted an animation of a conceptual triple lift to try and explain what team 1103 had done for roundup.

I never had a chance to build the lift, team 8888 did build another variation for gateway but it was slow and heavy.

So here is a preview of a new lift design I’m working on, not many details, there’s no CAD and I probably won’t have time to develop this much more. It’s only three stages at present and uses two linear slide kits, it could be taken to at least one more stage I think. It’s not exactly the same as the animation, it uses two loops of chain rather than the single continuous loop. This makes lifting twice as fast and avoids the issue of the stages not moving together.

Here it is temporarily installed on the new mecanum drive I built a couple of weeks ago.

and it only uses one motor, although it’s designed with two in mind.

and a (bad) video, again this is using one motor and an almost dead battery !



Excellent build quality. It seems that this design and the reverse double four are dominating the forum. Although our team is not building this design it could be more affective, another team in out school are doing this.

But I think for sure that a lot of teams will be thanking 1103 in their worlds inspire award video.

That’s really good for only one motor and an almost dead battery! How is the chain routed through the stages?

looks great. Since the stages all move simultaneously the third stage goes twice as fast. Does this mean it also has half the power?

It might just be me, but the link isn’t working for me. I’m on mobile which might be the problem.

Like this.

Two loops of chain.

The red chain is attached to stage two at position 1. The blue chain is attached to stage one at position 2 and to stage three at position 3.

As the middle section rises it causes the blue chain to move and raise section three.

The finished design looks quite simple, the devil is in the details, getting everything to line up correctly with enough clearance but also keeping the three sections close together. I was going to use the 6 tooth sprockets for the middle section but reverted back to the 12 tooth with the offset after struggling with the design for a few hours. In all I iterated this design multiple times before arriving at something I’m happy with. If anyone tries to copy this expect to spend at least 12 hours refining the details, I was surprised how long this took to get right. Then again, you are all much better at building than me, I’m doing this so I can develop some better demonstration software for lift control.

More speed = less power. It works in the same way as gearing.

One motor is enough to run the lift with no objects. Two motors (perhaps three) will be needed once I add some type of claw to hold objects.

I need to start using youtube I guess.


Made a few changes today, added a second motor, re-engineered part of the base to accommodate that and allow them to be more easily replaced. I don’t like putting two motors on either side of an axle hence the decision to chain them together. Here are pics of the individual stages.

Stage 1, fixed, 28oz. The second chain is not shown.

Stage 2, 23 oz. The chain attached here is the red chain from the previous post. It’s attached to stage two before the first and second are joined together.

Stage 3, 13oz, not much to the third stage.

And another bad video with a zip tie intake :slight_smile: I need an assistant, it’s hard to hold the phone, start the video and drive the robot with the other hand ! or I guess get myself a real camera (somewhat ironic when you consider what my day job is).

(click the pic)

A quick word on the code controlling this. I’m using ConVEX and the optional PID library included with that but running as a PD controller (i.e. no integral constant). The drive value from the controller is then tweaked a little, when going up, any values between 0 and 40 are set to become 15, this is enough power to the motors to hold the lift at a given height. The reason for this is the non-linear nature of the motors, control values at the lower end of the scale don’t tend to make the motors move proportionally. The PID control would tend to reduce the error to the point where the motor control value would be in the 30 to 40 range expecting that value to continue to cause movement, it does not. This value will trip the PTC in the motor after perhaps 30 seconds so I circumvent that by reducing it.

When the lift is going down I limit maximum power to -40. The problem is gravity, when the error for the PID control is large the motor drive will also be large, this causes the lift to go down too quickly and overshoot, the lift then sort of stutters. There are cleverer ways to improve this control but it’s just as easy to not send so much power to the motor, hence the limit to -40.


I usually set up 2 control schemes on my remotes for this very reason. One that is slow/ complicated but can be done with 1 hand and one that is efficient. Or you can just set up more code to handle every foreseeable drive maneuver.

Beautiful! Btw JPearman, I did not know mentors were allowed time for day jobs.

More speed = less force (at same power). Power = force * speed. /nitpicking

Have you considered adding rubber bands or the like to help the motor(s)? Since the stages are mechanically linked, and the chain does not move that far, some kind of ballast (in the general sense) should be easier to implement than in a single-loop design.

Great build quality, by the way!

College student > old software guy.

Short answer, yes I considered elastic assistance.

Obviously I’m not competing in Skyrise, just playing around with this as a design exercise. If this were a real competition robot it would need a fourth stage and perhaps a fifth. I wanted to see if the linear motion kit could do what the team did with the old slides a couple of years ago but using a much simpler and lighter design. I also want to explore some slightly different software using two stages of closed loop control, one for position followed by one for velocity and perhaps then add some motion profiles on top of all that. It’s hard to develop software without having a representative robot to test it on. I also like to get experience actually building using the same parts as the students, this lift ended up being reasonably simple but it took time and effort to get to the end result. It gives me a better understanding of how hard it really is to produce a high quality robot.

Thanks. That’s part of the challenge, even if someone outright copies this it won’t work without accurate construction. The rails need to be perfectly parallel, structure needs to be connected so that it’s rectangular and not skewed. Without attention to the details friction will be high and the lift will just get stuck.


The huge advantages I see in this design over others is that lifting force is constant (I’m not even mentioning continuous…well I just did I guess) and you’ve got the potential for a simple elastic system:
-Both from software and hardware perspectives, the constant force improvement will allow much smoother control of the lift, something unfortunately and often ignored in VEX in favor of sheer speed (and chaos).
-And as a mechanical guy, I love the smaller chain travel. When we experimented with elevator lifts, we had to run elastic tubing over a bunch of pulleys to get anything close to a constant assisting force. This is something that could be much improved-upon, especially in Skyrise with huge lifts popping up everywhere.

If you get good results from different, non-PD control loops, I’d love to see it, and I’m sure it’d benefit others as well.

Did a bit more work on this.

Added limit switch for low lift position, it’s really there to be able to reset the IME to zero.

The lower chain (the one on the left ) was jumping under heavy loads, this is a problem with the motors being at the bottom with a long run of chain to the attachment point on the first stage. The chain becomes very loose as it leaves the lower sprocket and can jump a tooth. So…

added a better chain tensioner.

Here’s a view from the top.

Finally, rewrote the lift control software. This now uses two stages of PID control. The first stage handles movement of the lift to a target position, this is the traditional PID many of my (the teams) previous robots have used, however, instead of this stage directly controlling the motors it produces a target speed for a second stage of PID that controls velocity. There’s also some other processing between the two, the block diagram for this code is as follows.

I’ll do a full post on this another time and explain some of the issues I ran into. Bottom line is this allows much better slow speed control than I’ve achieved before.


Whoa, that Flowchart is cool, what did you use to make it?

Well, it’s just a drawing. I’m using iDraw these days (Mac App store, $25). I used a program called Canvas for years but that became obsolete after OSX 10.6 and I haven’t found a comparable replacement yet. Autocad is overkill for this sort of thing and I try to avoid PCs whenever possible.

1 Like

Thanks, I use PCs primarily, so I just downloaded visio, it hopefully should be good enough.

Another question, do you think you could post a tutorial on the basics of programming with a PID library, I am still a bit confused as to how it can be used in vex, but I do understand the math behind it.

Take a look at this thread first.

Using closed loop control can be hard. It’s not just about the programming, the actual code is fairly simple, but much more about the mechanical system it is trying to control.

We use it in VEX in a couple of ways, I’m sure there are others as well.

  1. Moving a motor (on either a drive or lift/arm/intake mechanism) to a pre-determined position. PID will allow the software to compansate for varying friction and load.

  2. Orientating the robot, driving in a straight line or turning exactly 90 degrees, things like that.

1 Like

Great work JP. We are very curious to see if you have as many issues as we did after we added the 4th and 5th stage. Especially after you add an intake and a cube or 2. Our lift worked flawlessly at 3 stages:), and no load, but after we added 4th and 5th stages and cube/cubes…not so good(unreliable):(:mad: We had to compensate by tilting our lift backwards to keep our lift parallel and 90 degrees. LOTS of binding at 50":frowning:

There is no immediate plan to add a fourth or fifth stage, as a mentor I built this for my own amusement, this robot will never compete. If a fourth stage were to be added, it would be an exact copy of the current middle stage. More motor power would probably be needed but I’m not seeing any indications that it would’t work. The lift does work with a load (equal to a single cube), that’s already been tested, if it were competing the strategy would be quick and accurate building of four sky rise sections and cubes. My rational is that it would be better to have a really good three stage lift able to score four sections than a mediocre four or five stage lift that, although could theoretically build higher, was slower and less relaible.

1 Like