Great question! That is indeed a huge and confusing field as well. Hard to find the perfect solution. I have a blog in fact where I have written various articles about this. I have a section here on Maker stuff.
I must admit I go a bit against the grain in my views here. I know Lego is huge and my kids has a lot of Lego, but when it comes to robots and machinery I am just an enormous fan of Fischertechnik.
I must admit it is almost a bit risky for me to even mention Fischertechnik because I could go ranting on for hours about how amazingly well designed and thought out Fischertechnik is.
The magic of Fischertechnik is the basic building block looking like this:
This may not be suited to make pretty houses like Lego blocks. But to build machinery this is just brilliant because these blocks makes it really easy to build in 3D. You can easily attach these blocks to each other in every direction.
This is no accident. Fischertechnik is German, and the Germans know their engineering. The company making these pieces is not actually a toy company originally. In fact they make parts for industrial purposes. What is cool about learning Fischertechnik is that you learn how industrial style prototype systems work. If you are going to build a robot as a student in an engineering school, you will use metal pieces suprisingly similar in function to Fischertechnik.
What I like about Fischertechnik compared to Lego Robots is that there is just such a much larger variation in kits. They don’t just make robots, but also kits resembling little factories, marble tracks, physics experiments and many other things.
And the Fischertechnik parts typically are much easier to match with standard industrial prototyping components and electronics.
Ok finally to attempt to keep this short: Fischertechnik creations stick together way better than Lego. When my kids where younger this was a big advantage. E.g. I built this street sweeper for the kids when they where toddlers.
At that age they pretty much destroyed anything I made from Lego quickly. Lego creations are quite easy to break. Fischertechnik in contrast due to their special interlocking mechanism based on sliding, cannot easily be taken apart by a small kid. That meant I could basically build toys for my kids that they could have fun with. When they got bored by it, I could build something else.
The beauty of this was that they could drop these creations without easily breaking them. Fischertechnik creations are quite solid, so they feel like semi-permanent creations which you can play a lot with. Lego feels like it is just meant to look at. So much Lego stuff breaks too easily.
MakeBlock Robot Kits
This is probably make second favorite. MakeBlock make some really well thought out products.
I must confess I have some prejudice against Chinese made stuff. Usually I am accustomed to poorly designed and confusing manuals. Hastily put together stuff etc. However MakeBlock really blew me away. They have superb user manuals for how to put together stuff. Everything is very well put together in terms of color coding and how the whole system fits together.
What is nice is that they base their programming on Arduino which is widely used. However they have added special kinds of color code ports which make it really easy to connect electronics to it and control motors and sensors.
Their programming is based on a variation of Scratch, so you can reuse your Scratch knowledge. They also have various iPad app applications to help control your robots.
I must warn, that they lack some polish in this area. I have a MakeBlock plotter, which I had to fiddle a bit with. Their most sold robots should work quite well though.
So I must confess, while in terms of building I like Fischertechnik and MakeBlock a lot, I am less certain about what the best programming is. Fischertechnik e.g. has their own visual programming, but I prefer using something that is more standardized such as Scratch, and to use more commonly available hardware such as Arduino or Rasberry Pi.
Both Fischertechnik and MakeBlock is quite flexible in the hardware you connect, so I actually programmed my Fischertechnik creations with Arduino. But my solution was not necessarily all that child friendly.