There are really two problems here:
- You are trying to derive an appropriate speed command to send to the motors, and
- You are trying to drive the vehicle in a straight line.
Suppose you get the "perfect" control scheme that sends exactly the correct signals to the motors. The problem then becomes: What if one wheel runs over a piece of paper and just spins for a little bit instead of generating traction? What if one wheel runs over some dust that sticks to the tire and now it's a little bigger than the other wheel?
I'm assuming here that your wheel odometry is coming off of encoders on the motor, but the same arguments are true if you've got an idle wheel to do odometry measurements.
Assuming some rotation of the motor $\theta$, each wheel should traverse a distance of $r\theta$, where $r$ is the wheel radius. However, if one wheel is slightly larger than the other $(r+\epsilon)$, then one wheel traverses $r\theta$ while the other traverses $(r+\epsilon)\theta$, or $r\theta + \epsilon \theta$.
Your vehicle will then turn (assuming a differentially steered or two-wheel robot) an angle of $\psi = \epsilon \theta / d$, where $d$ is the wheel base (distance between the two wheels.
You can see now that the angle your vehicle turns, $\psi$, is a linear function of how far your wheels turn, $\theta$.
I have posted an answer like this before - The only way you can be sure to drive in a straight line is to measure where the robot is relative to the straight line. This could be LIDAR, a localization routine (like SLAM), overhead webcam watching the robot, compass/magnetometer, etc. There will always be variations that prevent your vehicle from going exactly straight, so you need to be able measure how you're travelling and be able to adjust accordingly.
With regards to your original question though, first I'll comment that you're looking to provide only a wheel speed, so if anything it's multi-input single-output. If you're looking for someone to comment specifically on the block diagrams you've provided, then you need to explain what they mean. Typically the symbols $x$, $v$, and $a$ are used for linear position, speed, acceleration, respectively, and $\theta$, $\omega$, $\alpha$ are used for angular position, speed, and acceleration.
You use $v$* and $\omega$*, which looks like linear speed and angular speed, so I don't know what your inputs are, or what the star means, or why there aren't any integrator or derivative blocks (how are you getting between position and speed?), or why Structure 1 has G1 and G2 where Structure 2 has G1 and G1, etc.
If you want to drive in a straight line without measuring the orientation of the vehicle, send the same speed signal to both motors. That's probably the best you can do.