The integration order is different in Chipmunk. Setting the velocity like that outside of the timestep doesn't really work so well. You have two options to fix it:
Put your velocity changes into a custom integration function. (Such as the following function)
https://github.com/slembcke/Chipmunk-Ph ... anet.c#L43
... or use constraints configured in a special way to calculate and apply forces:
https://github.com/slembcke/Chipmunk-Ph ... emo/Tank.c
The first solution should work exactly like it did in Box2D, but keep in mind that you are potentially applying gigantic impulses to your object to keep its velocity constant. Depending on the object's mass and your timestep, that can add up to a lot of force that you didn't intend. Secondly, because it's not done inside the solver, it may not apply enough force to keep something moving at the speed you wanted if other collisions/forces are involved.
The second solution works better because the constraint can apply the correct force even when other collisions become involved. You can also trivially limit the force to a sane amount.
Can't sleep... Chipmunks will eat me...
Check out our latest projects! -> http://howlingmoonsoftware.com/wordpress/