I’ve developed a basic robot that navigates around my son’s Duplo train track. It works find on the flat parts, but once it reached an incline at the start of a bridge, the wheels just spin and the robot stays at the bottom of the incline.
I’ve 3D printed most of the parts using PLA for everything, but printed tyres using TPU. The tyres definitely help, as the wheels were originally spinning even on the flat. Moving the batteries (2xAA) to sit over the drive axle also helped.
What else can I do to increase the traction and give my robot a chance of making it up the hill?
Two seemingly contradictory approaches come to mind. One is to increase the friction between the wheels and the track. You can do this by coating the tires with a soft material, such as a gasket or brush-on rubber compound. This approach also benefits if you can increase the surface area of the tire that touches the track. Increasing the radius of the tires can help with this, as can widening them up to the width of the track. Adding weight to the robot will also linearly increase the force of friction between the tires and the track.
A second approach is to attempt to get positive engagement between the tire and the track instead of relying on friction. This would work if you can add teeth to your track and corresponding teeth to the wheels. The downside of this approach is that the tires will not roll as smoothly on flat tracks.
In addition to SteveO's approaches you could try to change the center of gravity in a way, that the mass of the robot is pushing more downwards onto the wheels when it goes uphill instead of more and more draging it in vertical direction.
This means: Adding some more mass directly above driving wheels and/or using the rear wheels for driving the robot, might help. Also implementing an all-wheel-drive might be beneficial.
Another idea is to use a tire profile, instead of "slicks". But, this is intuitive and might even worse the issues if the track itself is flat and even.