- Only one SoftwareSerial port can receive at a time : This is fine because the motors don't have RX port on the Arduino end.
That's an odd point of view. The motors don't have a transmit pin. That's all that you can, or need to, say.
- You cannot simultaneously transmit and receive : This I am not quite sure. I guess it (LiDAR) doesn't need to transmit and receive simultaneously. Does anyone have experience with this?
What are you sending TO the LiDAR? Does it continuously send data? Or does it only send data in response to you sending a request?
If it only sends data when you request it, AND you can afford to block waiting for a response, then you can easily use multiple instances of SoftwareSerial, since all but one of them don't need to listen for data, and that one only needs to listen for short periods of time.
I really don't want to go for Teensy board since I already own an Arduino nano.
By the time you are done, the cost of a faster Teensy, with multiple hardware serial ports, will be a tiny fraction of the investment you make in robot, so I do not understand this stance.