I have a LEGO NXT robot, and after some movements I would like it to return back where it started. After some research, it looks like my best option is to revert the motors. To decode their movements but I couldn't find any examples for it, could someone give me a hand? I'm using leJOS for programming.
You can read the tacho count and rotate a negative amount of degrees. Or you may want to use the Navigation class and create a path while you move, then you just need to follow the path back.
But unless the robot is perfectly calibrated it will fail miserably. I explain it all here http://thetechnicgear.com/2014/06/howto-calibrate-differential-drive-robot/
Are you programming your robot to move? If so, then you could just keep a running log in your code of how far did each of the motors turn. Based on this log you could replay the whole log backwards to return to the starting point (with the approppriate precision of course). If your robot is moving due to external forces (e.g. someone is pushing it) then you can only rely on the decoding that you mentioned above.
For code references see these resources: