Faits : Faits : A. S._ a travaillé en qualité d'employé de chargement au service de l'entreprise X._ SA. A ce titre, il était assuré contre les accidents par la Caisse nationale suisse d'assurance en cas d'accidents (CNA). En 1988 et 1994, l'assuré s'est luxé l'épaule droite. Une nouvelle luxation de cette épaule, survenue le 15 décembre 1995, a entraîné une incapacité de travailler. La CNA a pris le cas en charge. Dans son rapport final du 2 novembre 1998, le docteur A._, médecin d'arrondissement de la CNA, a diagnostiqué une omarthrose avancée de l'épaule droite. Il a attesté que si le patient n'était plus en mesure de porter des sacs de grain durant toute la journée, il pouvait en revanche travailler en plein, dans une activité légère, exercée à hauteur d'établi. Pour établir le degré d'invalidité, la CNA a pris en compte un salaire mensuel de 4'750 fr. dont l'assuré aurait dû bénéficier sans la survenance de l'accident. Elle a comparé ce salaire avec un revenu mensuel de 3'150 fr. correspondant à la rémunération d'une activité adaptée au handicap de l'assuré. En conséquence, elle lui a alloué une rente d'invalidité de 33,33 % à partir du 1er juin 1998, par décision du 12 août 1999. Dans la même décision, la CNA a par ailleurs fixé le montant le montant de l'indemnité pour atteinte à l'intégrité sur la base d'un taux de 10 %. L'assuré s'est opposé à cette décision, en contestant aussi bien le degré d'invalidité que celui de l'atteinte à l'intégrité. La CNA a rejeté l'opposition, par décision du 22 octobre 1999. Quant à l'assurance-invalidité, elle a ordonné des mesures de réadaptation d'ordre professionnel; celles-ci se sont finalement soldées par un échec, l'assuré ayant de sa propre initiative interrompu un stage en entreprise sitôt le début de celui-ci (cf. rapport intermédiaire de l'Office de l'assurance-invalidité pour le canton de Vaud du 11 juin 1998). Dans un projet de décision du 3 décembre 1999, ledit office a proposé d'arrêter le taux d'invalidité de l'assuré à 33,68 %. Quant à l'assurance-invalidité, elle a ordonné des mesures de réadaptation d'ordre professionnel; celles-ci se sont finalement soldées par un échec, l'assuré ayant de sa propre initiative interrompu un stage en entreprise sitôt le début de celui-ci (cf. rapport intermédiaire de l'Office de l'assurance-invalidité pour le canton de Vaud du 11 juin 1998). Dans un projet de décision du 3 décembre 1999, ledit office a proposé d'arrêter le taux d'invalidité de l'assuré à 33,68 %. B. S._ a déféré la décision sur opposition du 22 octobre 1999 au Tribunal des assurances du canton de Vaud en concluant principalement au versement d'une rente d'invalidité de 100 % et d'une indemnité pour atteinte à l'intégrité d'un taux de 25 %, subsidiairement au renvoi du dossier à la CNA. Le Tribunal des assurances a ordonné une expertise et nommé à cette fin le docteur B._, spécialiste en chirurgie orthopédique. L'expert a déposé son rapport le 21 mai 2001. Par jugement du 3 octobre 2001, la juridiction cantonale a partiellement admis le recours, en ce sens qu'elle a porté le taux de l'atteinte à l'intégrité à 20 % et invité la CNA à calculer le montant de l'indemnité afférente à cette atteinte. Pour le surplus, elle a confirmé la décision sur opposition litigieuse. Par jugement du 3 octobre 2001, la juridiction cantonale a partiellement admis le recours, en ce sens qu'elle a porté le taux de l'atteinte à l'intégrité à 20 % et invité la CNA à calculer le montant de l'indemnité afférente à cette atteinte. Pour le surplus, elle a confirmé la décision sur opposition litigieuse. C. S._ interjette recours de droit administratif contre ce jugement. Il en demande l'annulation, avec suite de dépens, dans la mesure où il porte sur la rente d'invalidité, en concluant à ce que cette prestation soit arrêtée sur la base d'un taux d'invalidité de 100 %, ou à tout le moins de 50 %, dès le 1er juin 1998. En ce qui concerne le degré de l'atteinte à l'intégrité, il conclut à la confirmation du jugement cantonal. La CNA conclut au rejet du recours. L'Office fédéral des assurances sociales ne s'est pas déterminé.