 Hey folks, it's 2024 and this is the second take because I just screwed up the opening by forgetting to unmute the microphone It's on the checklist and I missed it again. Anyway, I was talking about 2024 being the year of Democratic Society if we can keep it and I'm worried about that and I want to talk about that on the year going forward, but right now it's T Tuesday and Let's Make it happen here. Oh Okay the goals for this time was The single-loop interface running and the Breitenberg car running the I did pretty well with the single-loop interface talk about it the Breitenberg car is It's funny the hard part of the Breitenberg car seems to be the wheels And the second part is the light sensor, but step-by-step. I'll talk about it and then we'll go from there Um, okay the serial loop hardware the serial it's off where that's what I want to talk about and then the simulator This is the big picture the original first the t2 matrix stuff that we were doing for the Artificial life digital replicator all that stuff was completely internal to the t2 matrix The idea here is to have some kind of connection So that a chunk of matrix no longer necessarily you're even intended to be Indefinitely scalable in other words, I mean the matrix a finite chunk of the matrix. It's always been finite, of course Is going to connect to something out in the world and have sensors and motor actions and so forth. That's the goal The connection went through a couple of things and this is just straight engineering tasks given the t2 particular given their slowness This is not meant to be a biological model This is not meant to be an artificial life model none of that This is just straight engineering given how much bandwidth we have and how much time we need How much time we have and how much bandwidth we need To this idea of making a loop that here this laptop is the simulated world Goes through a usb to serial port and when it wants to send a packet to say this one It sends it to the first one that has to recognize that it's supposed to forward it Which ends to the second one it would send it to the third one which has to recognize it's for it And it does whatever it is and then the response comes back around the loop. That's the goal We had a terrible little prototype A couple of them that I hand put together Here's what we have now Sent a board off. So that's it. So here they are these are The first generation serial tabs and the idea is Instead of you know, I'm trying to figure out these are male and female Connectors and so we can just stick them together in the correct direction Assuming I can get the correct There it is And then they they click together and you know the idea is I can just kind of spin them While I'm connecting them so it'll make kind of a twisted pair And they disconnect and so forth. So, you know, it's it's not too bad Um And let's Right and oh so then the big trick, you know, so these things are all designed so that they fit right into the the tile Serial ports on the tile. That's what this thing is for But we also need to connect to the f tdi cable the usb thing that goes off to the laptop And uh in order to do that I figured well, you know, I'll just use a male to male connector here a gender changer So that I can plug one of these into that thing and then that'll look like an extra node on the loop and everything will be fine And so I hooked that up from a usb cable to the key master to another tile and then back to the f tdi cable and uh, you know, so here was a picture of it, you know, here's the there you can see the gender changer over there And then it comes out and it goes into one of these and then from one it goes to the other one The other one it goes on back like that beautiful and I hooked it all up And you know, so the this part is the part that's close to the world, right? Because that's going off to the usb connection and these parts here these tiles here are like a brain stem That's where the information from the spine hits The brain the matrix the cortex. This is going to be a lot simpler than that Um, there's going to be like a whole lot more tiles around it So only certain tiles will be connected to the spine and and the rest of the matrix that's involved We'll have to figure out how to route stuff to and from that. So that's the picture And and and we'll see how it's coming the the first attempt that I did It didn't work and uh, why didn't it work because When you use a gender changer, you're actually changing something important, which is Each of these cables has to take the transmit signal and turn it over And so that it plugs into the receive signal of the downstream thing and then it's Transmit or its tx goes into rx of the next one and when you put in a gender changer You don't do that. It ends up being tx going to tx rx going to rx. It doesn't work So I took one of them and you know, so the black wires are ground the red wires are the data I cut them I soldered them I heat shrunk them and that's what this actually is here. You can see there's the heat shrink I also use sharpies to color in the board just to make it clear that this is a crossover cable And then and then it worked So uh, uh, that was pretty cool Uh, I wanted to show you I've got it running right here. I wanted to show you the demo, but my overhead camera is Currently screwing up. I've got to deal with that Um, so I just took that picture instead, but uh, we can look at it here. So, uh In the top window, that's the uh talking directly to the workstation that we're at The one in the middle is talking to the key master by ssh One of the bottom is talking together. We can start t2 sir loop runner And this is all just debug stuff. It's you know, so they're just sending little messages to test what's going on We could start whoops. We can start the next guy And he's doing the same thing now when we start the world the one that's doing the simulation That's kind of in charge of everything. That's the host in this case again Because this is not meant to be indefinitely scalable. This is just meant to get the job done So we'll start this up and it will sort of take over and start doing things And that's the key right there loop length is two So it enumerated the loop by sending a special packet around that Get each of the The tiles that forwards it decrements a counter and then come back and you could tell from how many times it was Decremented how big the loop is and you know, uh, and again, this is all just silly debug stuff But you know one thing that is quite interesting is, you know, the last two characters of each of these packets cube omm kjf all that stuff those in fact is are A checksum two bytes that summarize the rest of the packet and they have to be consistent Based on a discussion on the discord with tim tiggs who was saying, you know, if you're going to feed this data through all of these Uh tiles, you know, how do you know it won't get corrupted and I said, you know, I'll put in a checksum I wasn't really thinking that it was going to be a problem But it turns out it really is why not actually because of like cosmic rays Although that could certainly happen. But what does happen for sure Is you know a tile in the loop might reboot or might be rebooted or whatever And as it turns out the serial port on the t2 tiles when the linux kernel is booting it gets used for debug messages And there's really, you know, nothing you can do to control that without getting extremely low level And if you do get low level then you you lose information that you may well need But the messages that the kernel have they have a 1 in 65 thousand chance of getting the right checksum So they don't and they all get rejected by the down the downstream guy He just tosses them all out and then whenever the one I mean the loop doesn't work while the thing is is in the middle But once it comes back up and the the t2 ser loop starts running, then it just picks right up again So that was pretty nice. Uh, uh, okay, so that's that And that's the serial loop software Well, so it first didn't work because we need to have to have to have the crossover cable But what was actually true in the demo that we just looked at I didn't take the time to show it to you exactly The packets run backwards, you know, like there it's you really can't see it But one of them is labeled One side of the thing is labeled loop out meaning the data is supposed to come out there The other side is labeled loop in and the data is going the other way. It's like I can't believe how I can screw up these things so reliably. I mean, you know Sergey has put in a pull request because I managed to screw up the inverse Symmetries in the MFMS simulator and I haven't dealt with it because I haven't gotten back to ulam yet But I will once we get this stuff set up and it's time to actually start running the signals through the matrix I'll have to go fix that, you know Terrible, uh, okay So what did I do about the fact the signals while I'm running it backward? I did another order to ash park the Printed circuit board manufacturer. I didn't use rush service on them. So they haven't come back yet They might actually ship today. We'll see what happens So that's the story on the hardware and the software for the spine in the fact now on the simulator The goal was to use this thing Mujoko I don't remember joint coordinates or something motion Whatever it is It was the newer more advanced thing and I completely failed and it's just sort of a reflection on what Programming design programming seems to be these days that the reason I failed is because there was a package called Mujoko underscore pi of a python package that was Previously used a lot. It had a lot of documentation Uh, it had a lot of tutorials easy to get going But now the the authors of the the creators of Mujoko came out with their own package Which is much lower level and there's very little Friendly documentation for it and I tried and tried to figure out how to do things in the new Mujoko way And I couldn't I even tried one of the large language model AI things and said stuff like you know How do you you know connect to the display in Mujoko without using Mujoko pi? As part of the prompt and it would give me a bad answer would say okay Here's how to do it without using Mujoko pi step one import Mujoko pi Kind of thing. Anyway, I finally gave up And so I looked around and I found you know, this our ludobots on reddit subreddit, uh for doing Little robots little 3d robots in a world and I didn't even I started working through it It's wonderful tiny little steps And I didn't even realize at first that it was created by josh bongard. Who's an artificial life guy? He's a buddy And this thing is great. So I just went through it, you know installation You know, here's an example of how finely down he takes it to he reminds us in each step to start a new branch So that you don't lose our old stuff and go check it out Very very detailed very nice Simulation one link two links joint sensors motors. I did it all the way up to the refactoring step that he's got to clean it up It's great. Uh, now I'm branching off because Um, I'm not going to use neurons and senses like he's doing since the point is to connect to the t2 matrix Uh, but it got me this far and you know, so that's the new plan To use pie bullet. So here's a little bit of what that's looking like so far This is one of the evolutionary robots The the simple beginning is three cubes that are that are connected together by joints And I started looking for wheels, you know, instead of just cubes. I wanted cylinders I found wheels I mean, there's basically this whole examples directory that I hadn't looked at but has like a ton of stuff in it Including a really complicated little car That I spent a lot of time trying to get it to drive like on the upper right here This thing is like the wheels are spinning 360 degrees. That's pretty tricky. Yeah But that's where we're at now and There's no sensors yet and there's, you know, these things are way more complicated than the, uh Um The Breitenberg vehicles are supposed to be now. I'm not a hundred percent sure it has to be Breitenberg vehicles But we'll see so overall, uh, we're supposed to do deploy the interface. Hello t2 matrix I'm saying enumerating a loop is hello t2 matrix. So we did okay The next goal is to actually come up with a Breitenberg vehicle Breitenberg car controlled by the t2 matrix plane. That's it That's the next goal and you know have lots of fun and so that's it and I've run a little bit long but Happy new year, uh, and thanks so much for stopping in whenever you came to take a look