Finding certain positions in a room?
There are a few different but related problems here.


Position Your robot should be able to know where it is in the room. This can be achieved in a few ways:


Using the ultrasonic sensor as a sonar, rotating it around and storing the readouts, then calculating based on the known map of the room (if the layout is fixed and known in advance).
Tracking the movements and calculating from the last known position. This method depends on how accurate are the starting data and the measurement of the movement. This also loses accuracy over time.
Placing unique markers along the floor or the wall that the robot can read. I don't know how could this be accomplished using LEGO pieces, but I wouldn't say it's impossible to do. However, you could mark the two important locations (the green box and the center) to have an easy way to tell if you're at them.

Orientation Your robot should also know which direction is it facing. Most of the above methods offer a way to calculate this, but you could also use a compass sensor.
Knowledge of the environment Your robot should know if there is an obstacle in its way. The random obstacles are by definition impossible to know in advance, so you'll need to detect them somehow.


You could use the aforementioned ultrasonic sonar if the obstacles provide a good enough acho.
If the obstacles are made of a suitable material, you could try to use a color sensor to see if there is one in front of the robot
In theory, you could try to measure the resistance of the motors when you try to drive into an obstacle but this might prove impossible, depending on the capabilities of the hardware and software you are using. This method also makes it impossible to use the incremental location method.



Given these problems in my opinion your best bet would be a simpler, more brute force approach. Outlined in highly abstract pseudocode below:

going to the green target box:
while not in target area
  while not at wall
    if obstacle is in front of me: get around
    else: move forward
  end while // now you're at the wall
  move forward along the wall
end while // now you're at the target

going to the center: // assuming you're at the green box
turn towards the center
while not at center:
  if obstacle is in front of me: get around
  else: move forward
  if moved more than the journey should have taken: announce that you're stuck
end while // now you're at the center or lost