Faits :
A.
A._ a travaillé en qualité de manoeuvre bûcheron, ouvrier et ferblantier. Le 29 septembre 2008, il s'est annoncé à l'assurance-invalidité, en indiquant qu'il souffrait de hernie discale, d'une pathologie sanguine, d'infection aux reins et d'arthrose.
Dans le cadre de mesures de réadaptation, l'assuré a notamment suivi un stage auprès du Centre D._, du 14 novembre 2011 au 19 février 2012. Dans leur rapport du 20 février 2012, les responsables du centre ont estimé que la capacité de travail était très faible, inférieure à 20 % (compte tenu d'un rendement de 30 à 35 % pour un taux de présence de 50 %). L'Office de l'assurance-invalidité du canton de Fribourg (ci-après: l'office AI) a ordonné une expertise bidisciplinaire (ortho-psychiatrique) qui a été réalisée par les docteurs C._, spécialiste en chirurgie orthopédique et E._, spécialiste en psychiatrie et psychothérapie. Une capacité de travail de 80 % dans une activité adaptée a été attestée depuis la fin septembre 2011; au plan psychiatrique, la capacité de travail est entière (rapports du 23 août 2012 et complément du 18 septembre 2012).
Par décision du 24 juin 2013, l'office AI a fixé le degré d'invalidité à 27 % et refusé d'allouer une rente.
B.
A._ a déféré cette décision au Tribunal cantonal du canton de Fribourg, Cour des assurances sociales, en concluant principalement à l'octroi d'une rente entière depuis le 1 er janvier 2003 fondée sur un taux d'invalidité de 75 %, subsidiairement au renvoi de la cause à l'office AI.
Par jugement du 17 septembre 2015, la juridiction cantonale a rejeté le recours. L'assistance judiciaire a été accordée et une indemnité à titre d'honoraires de 6'429 fr. 05 a été allouée à M e Nicolas Charrière, avocat à Fribourg.
C.
A._ interjette un recours en matière de droit public contre ce jugement dont il demande l'annulation, en concluant au versement d'une rente entière d'invalidité fondée sur un taux d'invalidité de 75 %. Dans l'éventualité où le jugement cantonal serait réformé, il conclut au versement d'une indemnité de partie de 8'543 fr. 30 pour la procédure de recours cantonale. Il sollicite le bénéfice de l'assistance judiciaire pour la procédure fédérale.

Considérant en droit :
1.
Le litige porte sur le degré d'invalidité du recourant.
2.
La conclusion portant sur le versement d'une indemnité de partie de 8'543 fr. 30 concerne le montant des dépens en procédure cantonale. Le recourant justifie cette prétention par le fait que le montant devrait recalculé si le recours cantonal était admis. Vu l'issue du présent litige, il n'est pas nécessaire de se prononcer sur cette conclusion.
3.
Les premiers juges ont exposé correctement les règles applicables à la solution du litige, si bien qu'il suffit de renvoyer au jugement attaqué.
4.
La juridiction cantonale a considéré que les données médicales, mises en lumière lors de l'expertise bidisciplinaire, l'emportent sur les constatations faites à l'occasion des deux stages au Centre D._. En conséquence, elle a retenu que le recourant souffre depuis fin septembre 2011, avec répercussion sur sa capacité de travail, de lombosciatalgies droites sur status après trois interventions chirurgicales; de plus, il présente, sans répercussion sur sa capacité de travail, un status après cure chirurgicale bilatérale de hernie inguinale en mai 2011. Dans une activité adaptée respectant ses limitations, le recourant dispose d'une capacité de travail de 80 %.
5.
Dans un unique moyen, le recourant reproche aux premiers juges d'avoir suivi les conclusions de l'expertise bidisciplinaire des docteurs C._ et E._ (rapports des 23 août 2012 et complément du 18 septembre 2012), qui attestaient que ses problèmes de santé ne limitaient sa capacité de travail qu'à hauteur de 20 % dans une activité adaptée respectant les limitations mises en évidence par les experts. Selon le recourant, la juridiction cantonale n'a pas appliqué correctement la jurisprudence (arrêt 8C_214/2014 du 8 avril 2015 consid. 5.2). Il relève que les responsables du Centre D._ ont pu mettre en évidence que ses problèmes de santé (hernies dorsales et inguinale, ainsi que des problèmes respiratoires) ont entraîné un taux d'absentéisme important. Il en déduit qu'en raison des divergences importantes entre les observations faites par les responsables du Centre D._ et les conclusions des experts C._ et E._, des mesures d'instruction supplémentaires devaient impérativement être ordonnées. En procédure cantonale de recours, il avait ainsi expressément requis l'audition de témoins, notamment les auteurs du rapport du Centre D._, afin qu'ils puissent justifier leurs observations consignées dans leur rapport du 20 février 2012.
Le recourant fait grief aux premiers juges d'avoir, par une appréciation anticipée des preuves, rejeté ses requêtes de preuve et d'avoir suivi à tort les conclusions des experts C._ et E._. Il soutient que l'appréciation de ses problèmes de santé observés médicalement doit se faire à la lumière du rapport du Centre D._ du 20 février 2012. Sur la base de celui-ci, un taux d'invalidité de 75 % doit être retenu, ouvrant droit à la rente entière.
A titre subsidiaire, le recourant estime que la cause devrait être renvoyée à l'autorité cantonale pour un complément d'instruction.
6.
6.1. D'après l'<ref-law>, le recours ne peut critiquer les constatations de fait que si les faits ont été établis de façon manifestement inexacte ou en violation du droit au sens de l'art. 95, et si la correction du vice est susceptible d'influer sur le sort de la cause.
Le Tribunal fédéral n'examine le résultat de l'appréciation des preuves à laquelle a procédé l'autorité cantonale de recours que sous l'angle restreint de l'arbitraire. L'appréciation des preuves est arbitraire lorsque l'autorité ne prend pas en compte, sans raison sérieuse, un élément de preuve propre à modifier la décision, lorsqu'elle se trompe manifestement sur son sens et sa portée, ou encore lorsque, en se fondant sur les éléments recueillis, elle en tire des constatations insoutenables (<ref-ruling> consid. 2.3 p. 266 et les arrêts cités).
Par ailleurs, compte tenu de son pouvoir d'examen restreint, il n'appartient pas au Tribunal fédéral de procéder une nouvelle fois à l'appréciation des preuves administrées, mais à la partie recourante d'établir en quoi celle opérée par l'autorité cantonale serait manifestement inexacte ou incomplète, ou en quoi les faits constatés auraient été établis au mépris de règles essentielles de procédure.
6.2. Les juges cantonaux ont rappelé que selon la jurisprudence (<ref-ruling> consid. 4 p. 261s; <ref-ruling> consid. 2 p. 134), l'administration ou le juge, en cas de recours, se fonderont sur les avis des médecins pour calculer le degré d'invalidité. Les données médicales permettent généralement une appréciation objective du cas et l'emportent sur les constatations qui peuvent être faites à l'occasion d'un stage d'observation professionnelle (arrêt 8C_214/2014 précité).
En l'espèce, l'intimé avait ordonné la mise en oeuvre d'une expertise bidisciplinaire afin de faire la lumière sur le volet médical du dossier, après avoir pris connaissance des conclusions du stage professionnel. Le recourant ne s'était pas opposé au principe d'une telle expertise qui s'est déroulée conformément à la procédure prévue à l'<ref-law>, ni à la désignation des experts qui devaient la conduire et aux questions qui devaient leur être posées (lettre du 23 mai 2012).
Devant le Tribunal fédéral, le recourant soutient implicitement que la règle de preuve qu'il rappelle (cf. arrêt 8C_214/2014) n'aurait pas dû être appliquée, dans la mesure où il estime que l'avis des médecins aurait dû céder le pas à celui des responsables du stage professionnel. Ce point de vue, qui revient à suivre les conclusions d'un stage professionnel lorsqu'elles sont contredites par une expertise médicale, est contraire à la jurisprudence; il ne peut donc être suivi. De surcroît, le recourant n'aborde pas la question de la force probante de l'expertise bidisciplinaire ni l'appréciation des preuves à laquelle la juridiction cantonale a procédé, mais il reproche en définitive simplement à cette autorité de n'avoir pas ordonné un complément d'instruction. En cela, il échoue à démontrer en quoi les premiers juges auraient apprécié et administré les preuves de manière contraire au droit (cf. art. 61 let. c LPGA) et seraient de la sorte parvenus à des constatations de fait insoutenables.
6.3. Pour le surplus, les autres éléments du calcul de l'invalidité ne sont pas contestés en tant que tels.
En conséquence de ce qui précède, le recours est mal fondé (<ref-law>).
7.
Les conclusions du recours étaient vouées à l'échec, si bien que l'assistance judiciaire ne saurait être accordée pour la procédure fédérale (<ref-law>).
Vu les circonstances, il sied de renoncer aux frais judiciaires (art. 66 al. 1, 2 e phrase, LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
La requête d'assistance judiciaire est rejetée.
3.
Il n'est pas perçu de frais judiciaires.
4.
Le présent arrêt est communiqué aux parties, au Tribunal cantonal du canton de Fribourg, Cour des assurances sociales, et à l'Office fédéral des assurances sociales.
Lucerne, le 22 juin 2016
Au nom de la IIe Cour de droit social
du Tribunal fédéral suisse
La Présidente : Glanzmann
Le Greffier : Berthoud