Faits :
A.
A._ a été mis au bénéfice d'une rente entière de l'assurance-invalidité du 1 er octobre 2003 au 31 mars 2006, puis d'un quart de rente à compter du 1 er avril 2006 fondé sur un taux d'invalidité de 45,65 % (cf. jugement de la Cour des assurances sociales du Tribunal cantonal du canton de Vaud du 10 février 2009, réformant une décision de l'Office de l'assurance-invalidité pour le canton de Vaud du 26 juin 2008 [ci-après: l'office AI]).
En juin 2013, l'office AI a ouvert une procédure de révision du droit à la rente. Sur recommandation du Service médical régional, l'office AI a confié un mandat d'expertise orthopédique au docteur B._, spécialiste en chirurgie orthopédique et traumatologie de l'appareil locomoteur. Ce médecin a déposé son rapport le 8 juin 2015, selon lequel l'assuré disposait d'une capacité de travail entière dans une activité adaptée aux limitations fonctionnelles décrites. Sur la base des conclusions de l'expert, qui s'est encore déterminé le 3 octobre 2015, l'office AI a maintenu le droit de l'assuré à un quart de rente par décision du 10 juillet 2017, compte tenu du taux d'invalidité qu'il a fixé à 39,6 %.
B.
A._ a déféré cette décision au Tribunal cantonal. Par jugement du 19 décembre 2019, la juridiction cantonale a rejeté le recours au sens des considérants et confirmé la décision du 10 juillet 2017. En bref, elle a nié que les conditions d'une révision de la rente étaient réalisées, de sorte que le taux d'invalidité fixé en 2009 à 45,65 % devait être maintenu.
C.
A._ interjette un recours en matière de droit public contre ce jugement. A titre principal, il conclut à sa réforme en ce sens que le droit à une rente entière d'invalidité lui soit reconnu à compter du 1 er juin 2013. Subsidiairement, il demande l'annulation du jugement cantonal et le renvoi de la cause au Tribunal cantonal ou à l'office AI pour instruction complémentaire et nouvelle décision dans le sens des considérants. Par ailleurs, il sollicite le bénéfice de l'assistance judiciaire.

Considérant en droit :
1.
Le recours en matière de droit public (<ref-law>) peut être formé pour violation du droit au sens des art. 95 et 96 LTF. Le Tribunal fédéral applique le droit d'office (<ref-law>), n'examine en principe que les griefs invoqués (<ref-law>) et fonde son raisonnement sur les faits retenus par la juridiction de première instance (<ref-law>), sous réserve des cas prévus à l'<ref-law>. Le recourant ne peut critiquer la constatation de faits importants pour le jugement de la cause que si ceux-ci ont été établis en violation du droit au sens de l'<ref-law> ou de manière manifestement inexacte (<ref-law>), c'est-à-dire de manière arbitraire et si la correction du vice est susceptible d'influer sur le sort de la cause (<ref-ruling> consid. 4.3 p. 62 et les références).
2.
Le litige porte sur l'augmentation éventuelle du droit à un quart de rente à une rente entière à partir du 1 er juin 2013, par la voie de la révision.
Les premiers juges ont exposé de manière complète les dispositions légales applicables en matière de révision du droit à la rente et d'appréciation des preuves (art. 7 al. 1, 8 al. 1, 17 al. 1 et 61 let. c LPGA; <ref-law>), ainsi que les motifs de récusation qui peuvent être dirigés contre un expert (cf. <ref-ruling> consid. 7.1 p. 109). Il suffit d'y renvoyer.
3.
3.1. Dans un premier moyen, le recourant reprend le grief de prévention qu'il avait soulevé à l'encontre de l'expert B._ devant l'instance précédente et que celle-ci avait écarté. En ce qui concerne les propos de l'expert relatifs au "lourd sac" de radiographies qu'il portait de la main gauche, le recourant soutient que les premiers juges ont admis à tort qu'il ne s'agissait pas de savoir si la constatation de l'expert avait eu une incidence sur son appréciation, mais de dire si cette remarque, qu'il qualifie d'inadéquate, traduisait une posture orientée de l'expert donnant à retenir une apparence de prévention. Le recourant est aussi d'avis que l'autorité précédente a validé à tort les assertions de l'expert selon lesquelles il avait refusé de suivre des mesures professionnelles et attendait le versement d'une rente entière d'invalidité, de même qu'elle a retenu de manière erronée qu'il avait demandé à l'expert de prendre note d'une remarque. Il soutient que l'expert avait eu à son égard un comportement vexatoire, mesquin et relevant de l'exercice d'un rapport de force, notamment lorsqu'il l'avait enjoint de ranger une chaise qu'il lui avait précédemment demandé de déplacer. Regrettant que l'instance précédente ne se soit pas déterminée plus précisément sur ses griefs de prévention de nature formelle, le recourant conclut à la mise en oeuvre d'une nouvelle expertise qui lui aurait été refusée arbitrairement.
3.2. Quoi qu'en dise le recourant, le Tribunal cantonal s'est déterminé sur le grief de prévention, apportant des réponses pertinentes et convaincantes aux critiques du recourant. Avec l'instance précédente, il convient ainsi d'admettre que les propos incriminés de l'expert relèvent de constatations qu'il a effectuées dans le cadre de l'accomplissement de son mandat d'expertise orthopédique, qu'il a ensuite consignées dans son rapport. Ses observations effectuées au cours de l'expertise concernant par exemple le port et le poids du sac de radiographies figurent au nombre des éléments que l'expert était en droit de mentionner pour que son rapport soit complet. Il s'agit en effet de constatations relatives au comportement de l'assuré quant à l'utilisation de ses membres supérieurs, en particulier le bras gauche. Ces constatations n'étaient pas de nature à douter de l'impartialité de l'expert ni, au demeurant, à fausser son appréciation de la situation orthopédique. En ce qui concerne ensuite l'épisode du rangement de la chaise, le docteur B._ s'en est expliqué dans sa prise de position du 3 octobre 2015 sans qu'on puisse en déduire un comportement agressif ou vexatoire de sa part. Quant à la mention par l'expert de déclarations de l'assuré sur le refus de mesures de réadaptation et la nécessité financière d'une rente, la juridiction cantonale a expressément retenu qu'elles étaient contestées par le recourant, voire fondées sur d'autres pièces du dossier, et en a nié à juste titre l'influence sur les conclusions du médecin quant à la capacité de travail de l'assuré. En tout état de cause, l'expert a également fait état, dans la même rubrique "remarques de l'assuré", des plaintes du recourant quant aux douleurs à l'épaule gauche. On comprend dès lors bien que les démarches de l'assuré auprès de l'intimé étaient fondées sur l'aggravation de son état de santé. Dans leur ensemble, la transcription - contestée - des propos de l'assuré ne revêtait pas un caractère tendancieux. Le grief tiré de la partialité de l'expert n'est pas fondé.
Pour le surplus, le recourant n'invoque aucun argument susceptible de remettre en cause les observations cliniques de l'expert concernant la situation orthopédique; il ne contredit pas non plus les conclusions de l'expertise relatives au diagnostic et aux limitations fonctionnelles. A défaut de grief sur ce point, il n'y a pas lieu de s'écarter des constatations de la juridiction cantonale fondées sur les conclusions du docteur B._ ni de faire compléter l'instruction.
4.
4.1. Dans un second moyen, le recourant reproche à la juridiction cantonale de ne pas lui avoir alloué de dépens, au moins partiels, dès lors que le taux d'invalidité avait été porté de 40 % à 46 % (valeurs arrondies) dans le jugement attaqué. En se référant à une écriture de SwissLife SA du 15 décembre 2015, il rappelle qu'il avait signalé en première instance que le taux d'invalidité retenu par l'assurance-invalidité aurait une incidence directe sur l'étendue de ses droits en matière de prévoyance professionnelle.
4.2. Ainsi que l'intimé l'avait admis en procédure cantonale, il n'y avait pas matière à procéder à une nouvelle évaluation de l'invalidité dans le cadre de la révision de la rente, dès lors que les conditions posées par l'<ref-law> n'étaient pas réalisées. Il s'ensuit que le taux d'invalidité de 45,65 %, fixé par le jugement du 10 février 2009 devait être maintenu comme l'a retenu à juste titre la juridiction cantonale, ce qui conduisait à la confirmation de la décision du 10 juillet 2017 en son résultat (poursuite du droit au quart de rente).
Cela étant, le recourant n'a pas obtenu gain de cause quant à sa conclusion principale en procédure cantonale (reconnaissance d'une rente entière). En ce qui concerne sa conclusion subsidiaire sur la constatation du droit à un quart de rente fondé sur un taux d'invalidité de 46 %, elle n'apparaît pas recevable, faute pour l'assuré d'avoir établi un intérêt digne de protection (cf. <ref-law>). A cet égard, selon la jurisprudence (cf. arrêt 9C_858/2010 du 17 mai 2011, consid. 2.2 et 2.4), l'assuré dispose d'un intérêt digne de protection à faire constater le taux d'invalidité exact qui prévaut en assurance-invalidité, lorsqu'en vertu du règlement d'une institution de prévoyance, ce degré précis influence concrètement l'étendue du droit à la rente d'invalidité servie par la prévoyance professionnelle. Or le recourant se limite à invoquer une incidence directe du taux d'invalidité retenu par l'assurance-invalidité sur le montant de sa rente de la prévoyance professionnelle. Il n'a toutefois fourni aucune pièce en instance cantonale qui aurait démontré que sa rente de la prévoyance professionnelle aurait été influencée de manière négative en raison du taux d'invalidité de 40 % fixé par l'assurance-invalidité dans sa décision du 10 juillet 2017 et corrigé par la suite par la juridiction cantonale. Une simple affirmation sur ce point en instance fédérale ne suffit pas. Par conséquent il n'y avait dès lors pas matière à l'octroi de dépens à ce titre pour la procédure cantonale, même si le taux d'invalidité a été rectifié dans le jugement attaqué.
5.
Il s'ensuit que le recours est en tous points infondé.
6.
Le recourant, qui succombe, supportera les frais de la procédure (<ref-law>). Il remplit les conditions de l'octroi de l'assistance judiciaire pour la procédure fédérale (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
L'assistance judiciaire est admise pour la procédure devant le Tribunal fédéral et M e Gilles-Antoine Hofstetter est désigné comme avocat d'office du recourant.
3.
Les frais judiciaires, arrêtés à 800 fr., sont mis à la charge du recourant. Ils sont toutefois supportés provisoirement par la Caisse du Tribunal fédéral.
4.
Une indemnité de 2800 fr., supportée par la Caisse du Tribunal fédéral, est allouée à M e Gilles-Antoine Hofstetter à titre d'honoraires.
5.
Le présent arrêt est communiqué aux parties, au Tribunal cantonal du canton de Vaud, Cour des assurances sociales, et à l'Office fédéral des assurances sociales.
Lucerne, le 7 octobre 2020
Au nom de la IIe Cour de droit social
du Tribunal fédéral suisse
Le Président : Parrino
Le Greffier : Berthoud