Faits : A. Par jugement du 13 octobre 2016, le Tribunal de police de l'arrondissement de l'Est vaudois a condamné X._, pour homicide par négligence, entrave aux mesures de constatation de l'incapacité de conduire, violation des obligations en cas d'accident et contravention à l'ordonnance sur la circulation routière, à une peine privative de liberté de dix mois, avec sursis pendant deux ans, et à une amende de 2000 francs. B. Par jugement du 29 mars 2017, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel formé par X._. En substance, elle a retenu les faits suivants: Le 13 février 2014, aux alentours de 18h00, circulant à la vitesse du pas au volant d'un poids lourd sur l'avenue B._ à C._, sous une pluie battante, X._ n'a pas remarqué la présence de D._ sur la chaussée, roulant sur son corps et causant immédiatement sa mort. Il a ensuite immobilisé son véhicule plusieurs mètres après le lieu de l'accident, est sorti de l'habitacle du camion et s'est rendu à proximité du corps de la victime puis, réalisant être l'auteur de l'accident, est immédiatement retourné à son véhicule et a quitté les lieux. Arrivé à son domicile, il a consommé trois verres de vin blanc durant le repas, avant l'interpellation de la police. C. Contre ce dernier jugement, X._ a déposé un recours en matière pénale devant le Tribunal fédéral. Il a conclut, principalement, à sa libération du chef des infractions d'homicide par négligence, de violation des obligations en cas d'accident et d'entrave aux mesures de constatation de l'incapacité de conduire ainsi qu'à l'allocation d'une indemnité selon l'art. 429 CPP. A titre subsidiaire, il demande l'annulation du jugement de première instance et du jugement d'appel et le renvoi de la cause au tribunal de première instance pour complément de l'instruction dans le sens des considérants. En outre, il sollicite l'assistance judiciaire.