I see nothing wrong with requiring an ID card to vote.
Here is how I'd do it:
First, implement a national system for federal level elections. Standard interface coast to coast. I would go with something that can be uploaded on any computer and a peripheral smart card reader but if you wanted to just have the standardized voting machines, that's fine. So the same equipment is used for every federal level election coast to coast. Localities can used beans in a jar for their own State, County, City, Hamlet elections or they will be allowed to upload ballots onto the the equipment as well. Most will use the standardized interface.
Next issue a standardized nationwide ID card. You can use this card to cast a ballot coast to coast. Once you insert it in the machine mentioned above, it calls up your local ballot. So if you work in Philly but live in Maryland, you can vote on your lunch break in Pennsylvania. The card would be the same coast to coast with your picture on it. The cards would be absolutely free. Other acceptable IDs would include State issued ID cards or driver's license.
Finally, there would be a provisional ballot for those who do not have one of the acceptable ID's listed above. These ballots would have to be filled out by hand like a scan-tron like we had back in school. This is to help eliminate stuffing the ballot boxes with voters who are either by mistake or by audacity, voting in the wrong location.
That is pretty much the nuts and bolts of it.