(Python)
from itertools import product
def pal(s): return s == s[::-1]
def pp(w):
for i in range(len(w)):
if not pal(p:=w[:i]): continue
for j in range(i, len(w)+1):
if not pal(s:=w[i:j]): continue
if (ps:=p+s) == "": continue
if w == (ps*len(w))[:len(w)]: return True
return False
def a(n):
return 2*sum(1 for b in product("01", repeat=n-1) if pp("1"+"".join(b)))
(Python) # faster version that works by contruction
from itertools import count, islice, product
def binpals(d):
left, mid = product("01", repeat=d//2), [[""], "01"][d&1]
yield from ((l:="".join(t))+m+l[::-1] for t in left for m in mid)
def agen(): # generator of terms
psset = set() # {ps | p, s palindromes; ps != ""}
for n in count(1):
for i in range(n):
for p in binpals(i):
for s in binpals(n-i):
psset.add(p+s)
yield len(set((ps*n)[:n] for ps in psset))