Faits :
A.
A._ a travaillé depuis 2006 en qualité de serrurier-constructeur pour le compte de la société B._ SA à U._. A ce titre, il était assuré obligatoirement contre le risque d'accident auprès de le Caisse nationale suisse d'assurance en cas d'accidents (ci-après: CNA).
Le 3 décembre 2007, l'assuré a été victime d'un accident de travail qui a entraîné une fracture du cartilage du condyle fémoral interne. Les suites de l'accident ont consisté essentiellement en plusieurs interventions chirurgicales au niveau des genoux ainsi qu'une hospitalisation à la clinique C._ du 14 décembre 2010 au 11 janvier 2011. Dans leur rapport du 16 février 2011, les médecins de C._ ont retenu les limitations fonctionnelles suivantes: la position debout prolongée, l'accroupissement répétitif, la marche sur de longues distances essentiellement sur des terrains irréguliers, le port de charges lourdes, ainsi que la montée et la descente des escaliers. En conséquence, ils ont conclu à l'incapacité définitive de travail de l'assuré en tant que serrurier-constructeur, mais à une pleine capacité de travail dans une activité respectant ces limitations.
Entre autres prestations, la CNA a alloué à l'intéressé une rente d'invalidité fondée sur une incapacité de gain de 23 % à partir du 1 er juin 2013 par décision du 20 septembre 2013, confirmée sur opposition le 15 janvier 2014. Le taux d'invalidité était fondé sur un revenu sans invalidité mensuel de 5'705 fr. et un revenu avec invalidité mensuel de 4'391 fr. (part du 13 ème salaire comprise), calculé sur la base de cinq descriptions de poste de travail (DPT).
B.
L'assuré a recouru contre la décision sur opposition devant la Cour des assurances sociales du Tribunal cantonal du canton de Vaud. Il a fait valoir en cours de procédure qu'il avait trouvé un travail en qualité de "livreur de choses légères" auprès de la société D._ & Cie SA depuis le 9 septembre 2015. Il concluait à l'octroi d'une rente d'invalidité fondée sur un taux d'invalidité de 33 %, calculé en fonction du salaire qu'il toucherait s'il travaillait à plein temps dans sa nouvelle activité.
Par jugement du 29 janvier 2016, la cour cantonale a rejeté le recours.
C.
A._ interjette un recours en matière de droit public contre ce jugement dont il demande la réforme en concluant, sous suite de frais et dépens, à l'octroi par la CNA d'une rente d'invalidité fondée sur un taux de 33 %. En outre, il requiert le bénéfice de l'assistance judiciaire.
La CNA conclut au rejet du recours. La juridiction cantonale déclare n'avoir aucune remarque particulière à formuler, tandis que l'Office fédéral de la santé publique ne s'est pas déterminé.

Considérant en droit :
1.
Le recours est dirigé contre un arrêt final (<ref-law>) rendu en matière de droit public (<ref-law>) par une autorité cantonale de dernière instance (art. 86 al. 1 let. d LTF). Il a été déposé dans le délai (<ref-law>) et la forme (<ref-law>) prévus par la loi. Il est donc recevable.
2.
Le litige porte sur le taux de la rente d'invalidité de l'assurance-accidents allouée au recourant à partir du 1 er juin 2013, singulièrement sur le point de savoir si la CNA était en droit d'établir le revenu d'invalide en référence aux DPT.
Dans la procédure de recours concernant l'octroi ou le refus de prestations en espèces de l'assurance accidents, le Tribunal fédéral n'est pas lié par l'état de fait constaté par l'autorité précédente (<ref-law>).
3.
Selon l'<ref-law>, l'assuré a droit à une rente d'invalidité s'il est invalide à 10 % au moins par suite d'un accident. Est réputée invalidité l'incapacité de gain totale ou partielle qui est présumée permanente ou de longue durée (<ref-law> [RS 830.1]). Conformément à l'<ref-law>, pour évaluer le taux d'invalidité, le revenu que l'assuré aurait pu obtenir s'il n'était pas invalide est comparé avec celui qu'il pourrait obtenir en exerçant l'activité qui peut raisonnablement être exigée de lui après les traitements et les mesures de réadaptation, sur un marché du travail équilibré.
4.
4.1. En l'espèce, la juridiction cantonale a estimé qu'il n'était pas démontré que seule l'activité de chauffeur-livreur serait compatible avec l'état de santé du recourant et que les différents postes de travail sélectionnés par la CNA respectaient les limitations fonctionnelles de ce dernier. En outre, le recourant se référait uniquement aux conditions de rémunération de son contrat de travail pour affirmer qu'il ne pourrait pas réaliser un salaire mensuel supérieur à 3'800 fr. Or, il apparaissait qu'au vu des autres activités compatibles avec son état de santé, il serait en mesure d'obtenir un salaire plus élevé.
4.2. De son côté, le recourant soutient que le taux d'invalidité doit être calculé en référence à son activité effective de chauffeur-livreur et non pas en référence à un salaire hypothétique basé sur des données statistiques ou sur des DPT.
5.
5.1. Selon la jurisprudence, le revenu d'invalide doit être évalué avant tout en fonction de la situation professionnelle concrète de l'intéressé. Si l'activité exercée après la survenance de l'atteinte à la santé repose sur des rapports de travail particulièrement stables, qu'elle met pleinement en valeur la capacité de travail résiduelle exigible et encore que le gain obtenu correspond au travail effectivement fourni et ne contient pas d'éléments de salaire social, c'est le revenu effectivement réalisé qui doit être pris en compte pour fixer le revenu d'invalide. En l'absence d'un revenu effectivement réalisé - soit lorsque la personne assurée, après la survenance de l'atteinte à la santé, n'a pas repris d'activité lucrative ou alors aucune activité normalement exigible - le revenu d'invalide peut être évalué sur la base des données salariales résultant des descriptions de postes de travail établies par la CNA (cf. <ref-ruling> consid. 2.3 p. 594 s.; <ref-ruling> consid. 4.2.1 p. 475). Dans un tel cas, afin de s'assurer que le revenu d'invalide corresponde aussi exactement que possible à celui que l'assuré pourrait réaliser en exerçant l'activité que l'on peut raisonnablement attendre de lui, l'évaluation dudit revenu doit nécessairement reposer sur un choix large et représentatif d'activités adaptées à l'état de santé de la personne assurée. C'est pourquoi la jurisprudence impose, en cas de recours aux DPT, la production d'au moins cinq d'entre elles (cf. ATF <ref-ruling> précité consid. 4.2.2 p. 480).
5.2. En l'occurrence, les circonstances qui prévalaient au moment de la naissance du droit à la rente, soit en juin 2013, sont déterminantes pour évaluer le degré d'invalidité, partant procéder à une comparaison des revenus (cf. <ref-ruling> consid. 4.3.1 p. 224). Le recourant n'a débuté son activité de chauffeur-livreur qu'en septembre 2015, de sorte qu'on ne saurait reprocher à la CNA de s'être fondée - dans ses décisions successives des 20 septembre 2013 et 15 janvier 2014 - sur des DPT pour déterminer le revenu d'invalide. En outre, au vu des limitations fonctionnelles, il n'apparaît pas qu'à elle seule, l'activité de chauffeur-livreur mette pleinement en valeur la capacité de travail résiduel exigible du recourant. Pour le reste, il n'y a pas lieu de revenir sur le choix des DPT sélectionnés par la CNA, contre lequel le recourant n'émet aucune critique.
En conséquence, la CNA n'a pas violé le droit fédéral en se fondant sur les DPT pour déterminer le taux d'invalidité du recourant.
6.
Vu ce qui précède, le jugement attaqué, qui confirme la décision sur opposition du 15 janvier 2014, n'est pas critiquable et le recours se révèle mal fondé.
7.
La demande d'assistance judiciaire présentée par le recourant doit être rejetée, dès lors que ses conclusions étaient d'emblée dénuées de chances de succès (<ref-law>). Succombant, le recourant supportera les frais judiciaires (art. 66 al 1 LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 800 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties, à la Cour des assurances sociales du Tribunal cantonal du canton de Vaud, et à l'Office fédéral de la santé publique.
Lucerne, le 30 septembre 2016
Au nom de la Ire Cour de droit social
du Tribunal fédéral suisse
Le Président : Maillard
La Greffière : Castella