I finally figured it out.
In /boot/config.txt,
dtoverlay=pi-disable-bt
should be used instead of
dtoverlay=pi3-disable-bt
This seems make sense as I have seen some unofficial 3B+ adaption image/software tell you to replace the pi3 files with plain pi files. So looks like 3/3B files may not work 100% on 3B+.
After changing this, my ROS works fine with my Ubuntu Mate on pi
Thank you very much KiloNovemberDelta