Hola
$archivo_name = $_FILES['$imagen']['name'];
Ahi está buscando el indice '$imagen', que no creo que sea lo que quieras. Las comitas simplen no interponal. Lo que puedes hacer es a) usar "comillas dobles", o b) (mejor) no usar nada

Algo asi:
$archivo_name = $_FILES[$imagen]['name'];
Saludos.