Wireless communication with robot
One challenge using those types of RF modules is that the receivers can receive a lot of random noise between transmissions. They also like the signal transmitted to be DC balanced, long strings of zeroes and ones can cause distortion in the output from the data slicer in the receiver.

The usual way to deal with random noise between transmissions is to introduce a preamble to that the receiver knows a valid packet is on the way and to synchronize the UART ready. Maintaining the DC balance requires using an encoding scheme that keeps the number of 1 and 0 bits in each byte as close as possible to equal.

I've used the following application note from Radiotronix that includes a source code example in the past to implement a system that worked well using modules similar to the ones you're using. The only change I had to make was to introduce a delay before transmitting and increase the length of the preamble, although that was mainly required because I was powering down the transmitter between transmissions so you may not require the same.

Radiotronix Application Note AN-401

Once you have the basics sorted you'll need to consider what to do when a transmission is lost, I'd recommend sending the data several times and then have a timeout that will stop the robot after a pre-determined time. You may want to also consider using some relatively long (say 4 byte) commands that are essentially random (ie. don't use 1,2,3) so that you can determine the difference between a valid command and a data error.

I'd probably start with a baud rate of 2400bps for those modules. Using the above scheme that will give a transmission time of somewhere around 40mS so if you were to transmit each command twice a latency under 100mS should be realistic.