Hi everyone, Joe for jasmine'scasebreaks.com with a full case break of 2023 Bowman's best baseball picker team three Brand-new release just dropped today big. Thanks to this group for making it happen Here on the 17th on a Wednesday picker team three if you have up three next year And that means one those teams that update break Adam. You've got official last Bob Mojo with my Dodgers and there's everybody else Thanks, everybody. Ethan. I talking a little bit about the salary cap in baseball. Does that would that actually help? salary cap wouldn't Wouldn't help the A's Ethan's arguing that well less money for the big teams less money for the big teams would get To get big players would limit other teams that can afford big names allowing for team like the A's get cheaper deals For big names because no one else can I think I get what you're saying, Ethan I think in a perfect world. I think that would be the case but That implies that teams like the A's were interest are interested in spending money in the first place I think it's divided up into to owners that are willing to spend and owners that are cheap not willing to spend I think in a salary cap market. I think that would that would tell them Hey since the big teams are limited. I could be even more cheap And I think the teams like the like the A's. I don't think they're actually interested in In Scoot this over a little bit. I don't think they're actually interested in in improving the roster You're also suggesting that every team is interested in the team But many owners are not interested in Interested in decent guys on that could help a roster improve A's they're gonna move to Vegas and they're gonna double the money They're gonna double the money the value of their team Here's what I see in the NFL Ethan Ethan saying hey, that's true, but you don't see any stacked teams the NFL With the salary cap and if a team has a lot of good players big names have to take pay cuts to make that happen, correct And you know what else happens?  I can't keep another too good So I got now I got a shade that player away Let someone else take that team take that player that was a fan favorite and now you hurt the fans by trading away a Popular player that you couldn't that you couldn't afford because of all the other positions And because you're busy spending a quarter of your salary Cap if not more on the quarterback So now you're all you almost feel like a college basketball team in the one and done era where you were where a team has No identity because no player stays on a team for more than five years No team identity except for me with a quarterback who gets signed to the big deal There's Otani speaking of which this is what kind of sparked this whole debate here Salary cap does that actually help baseball I Know sometimes you kind of want to see a stack team you want to have like a team that can stay together for a good period of time create a generation of Of Raiders for Packers imagine Devonte Adams if they could pay Devonte Adams and Aaron Rodgers Keep him happy have that team together. That'd be a lot of fun to watch. There's Nukua Puka Grego Short soft for the Phillies. That's gonna be for Gary. There's Matt McLean astral projections And there's Dylan head 87 out of 151 of the big Padres prospects here He's been saying right, but I meant by big names to spread the league Making Harvard the same teams make the playoffs every year give all teams a decent shot Yeah, I suppose so so I give so Spread Otani Freeman Mookie bets out between different teams To make those teams more interesting I Feel like a lot of people in the NFL will complain about how there's too much parody. So it just creates a bigger Middle-class of teams and so it's just kind of in a way. There's really No team creating dynasties or There's Mack Hovarth Although it's harder to build a NFL roster, but that's for the Oreos. That's for EA It's Gunnar Henderson But I think I think it would be fans having the teams have a decent underneath class. They do The expanded playoffs I think is one of the most generous in professional sports. So now with that incentive That should incentivize teams to spend money, right? But the cheap owners will stay cheap and they even then They won't do it. They won't spend money. Why aren't the Orioles spending money? There's Brock Jones Tampa Bay Rays that'll be for Michael Spencer Jones to 150. I think there should be a salary floor There's an Adley Rushman green mini diamonds 99 and if you can't if you're If you can't afford the salary floor sell the team What happened with the A's is that they have a cheap owner. I think that's what it is That's all it is You can what's wrong with the MLB is that they allow John Fisher to retain ownership of that team and Refuse to spend on that team and then claim that oh Fans don't want to come and see Oakland baseball We'll do an autograph and hit recap at the end of this Salary cap or not John Fisher is not spending money on that team Even with the opportunity to get better players for cheaper because of the salary cap All right spreading talent around I I believe that he would never spend that money anyway No matter what the average payroll or whatever will be. I think you'll always be in the lowest percentile of spending money Yeah Well, you know what he's doing gets what he owns the building The A's will only play in that stadium Ethan 82 times a year 81 times a year Not the playoffs That's only 81 days out of a 365 day Calendar right guess what else that stadium is gonna do Ethan it's gonna have it's gonna have a WrestleMania it's gonna have concerts. It's gonna have other It's gonna have what else is it gonna have? It's gonna have the rodeo It's gonna have conferences. It's gonna have all sorts of other things happening motocross could be there They're gonna fill up, you know, they're gonna fill up that stadium with events The rest of the year and guess where that money is gonna go into John Fisher's pockets So 81 divided by 365 That's 22% of the year is gonna be for Oakland A's home games You know the other 78% Is gonna be all other revenue-building things that are non-A's related but stadium related No wonder he's so excited to build his own stadium to fill with other events where he can make money That he will not put into the A's Nice Jackson holiday to 199 Baltimore Orioles EA and Daniel Guarte brewers You don't get why Oakland fan showed up when they found out they were moving just to protest it It wouldn't show up during the rest of the year. Well, because then they're putting money into the pockets of a greedy and cheap owner Jimmy has the brewers. They'll get that one. They have to have events in Oakland too, right? new Have you seen the Oakland Coliseum? No one's booking concerts there No one's booking extra events there and that stadium is county owned not owner owned So the ownership would not get any money out of whatever the stadium does in non A's games There's camcaller Autographs it's gonna be for Gary the Reds. I mean the Oakland Coliseum was was is Easily regarded as the worst stadium in professional sports over the last 10-15 years Here's a mini diamonds Colin Hawk Davis Martin There's Roman Anthony Now, here's the here's the here's the crappy part. He does have the money for a stadium. Why is he not? building that in Oakland Because he knows it that if he moves that say if he moves to Vegas that his that the value of his team probably doubles almost instantly New stadium would be his Pockets more money Skaber Gonzalez to 150 Seattle, that's for Ryan Yeah, Raiders play Raiders played there since like the Since the beginning maybe And here's Axel Sanchez 16 out of 150 nice Seattle, that's gonna be for Ryan Yeah, Raiders owner Mark Davis hates John Fisher With the with the passion of a thousand sons the burning passion of a thousand sons John Fisher Continually made it impossible Because they both leased the stadium together John Fisher made it impossible for for the Oakland Raiders For them to build a stadium together Yeah, and now they'll be neighbors Mark Davis is livid There's had there has been some unflattering quotes that he's made already I mean he pretty much told the story. He was just like he's feel like oh, what do you think about time? He's like, you know what that guy effed Oakland and their fans He's like, I never wanted to leave Oakland. I want to build a new stadium in Oakland I want to get out of the lease and start the process of building a stadium and arena Or maybe even co-build that with Oakland because we needed their help And all they did and I think the a's at that time had had Had like the deciding factor in the lease or something like that and he said that they Decided to continue that lease Railroaded the Raiders into to any attempts to make a new stadium or partner with making a new stadium giving them no options Or much fewer, you know, not very good options and then that that precipitated the move Meanwhile, John Fisher and the a's You know, I don't know they made a lot of It's gonna be interesting having them in the same town, that's for sure in Vegas But it'll be funny that they're gonna be neighbors. Yeah, it's a sad story. I mean, I know No, Oakland Oakland County is not exactly a place that's flush with cash, but You know, there's there's a lot of passionate sports fans out there.  I mean even the Warriors moved across the Bay Here's Junior Caminero Tampa Bay Rays Michael Golder Right. Yeah, I think that's gonna be an interesting battle. There's a manual Bonilla now when the new You know when the new a stadium is there what kind of events because right thing about the Raiders stadium They're only hosting eight nine home games a year and what do they do the rest of the time? I Think I think nice Paul Skeens here for the Pirates John with Pittsburgh. I think they'll be You know, obviously the stadium sizes are gonna be really different. So they probably won't be competing for the same events There's Bryce Eldridge Because I think that a stadium is supposed to be a lot smaller 48 out of 99 on Bryce Eldridge for the Giants. That's gonna be for Darren Think big part of them. No, I don't think so. I don't think it was a f you specifically to mark Davis Don Fisher moving to Vegas. At least I don't think so It seems more like hey Here's it. Here's an opportunity for me to go to a new market build my own stadium bright shiny new new stadium in Vegas You know go to maybe moods more desirable part of the world for For rich people, you know what I mean Here's Davis and Gutierrez for the Mets. I think just Fisher saw an opportunity for a place where I hey I can build a stadium. I'm in a fun emerging market Here's orange Taj Bradley 20 out of 25 I'm gonna double the value of my team Same with the Chargers thing by the Chargers They doubled their value there. It's probably already a billion dollar franchise When they were in San Diego I Spencer Jones for the Yankees. It's gonna go to Tristin But I think Think Spanos constantly made it difficult to build a stadium outside of outside of San Diego You know a lot of people will point to oh, they did a vote They did a vote to see if they wanted to keep the Chargers the people didn't want them But I think that vote was only extended to the city limits of San Diego proper Not San Diego County, which I think would have been completely different Outside of Vegas is there another kid as a minor and major league baseball team in it? No Maybe well there the Dodgers A rookie ball team I Think the Dodgers rookie ball team is in Rancho Cucamonga, which is only about no traffic only about 45 minutes from from Dodger Stadium That that's a rookie ball team or single-aid team or something like that single-aid team I think I think Great Lakes is the rookie ball team, but I think Rancho Cucamong is a single-aid team and I think where the aviators play versus where the A's are gonna play Vegas's population wise is not as big as LA obviously But the city is pretty widespread probably would take about 40 minutes to get from that part of town north think northeast Northwest part of town to where they're building the A stadium in the southeast part of town so across town That's about 45 minutes probably the same But I think the aviators are a triple-aid team, right? I think there are there are teams That have other minor league teams within Right exactly exactly Ethan. So yeah, so there are teams that have minor their minor league teams pretty close I think it often makes sense sometimes you'll have major leagueers do a quick rehab start on like a on their single-aid team You know, and it's good to have them close by Do I think they'll change the logo much I doubt it everyone thought the Raiders were gonna change the name and logo, but the A's are a team that has so much history Over a hundred years of history probably right so to change it now I think would be Would would kind of suck I think Or if they do change the name, I hope that I Hope that they let Oakland retain the athletics name and logo and all that but I doubt it. I feel like I feel like they 88 out of 99 here's Masahoshi But I don't think Veg veg A's you want them to go with veg A's I don't think that would be a very good name. I think they'll do stuff like that like marketing They'll kind of incorporate sort of A's puns in there, but but I think for the most part they'll probably If they get if they have like a Nike City Connect Jersey or something like that Maybe that will be more related to the to Vegas itself But I think their main their main uniform I doubt will change Yeah, much further away. I mean not that much further away, but far far enough away. It's a crosstown Here's a manual of Bonilla It's Toronto Evan. How was I supposed to say it Toronto Toronto with this one vague A's Vague A's I don't know if that rolls off the tongue nicely. I'm sure there will be a lot of Teenagers who think that's gonna be awfully funny. There's Phelene Celestine to 250 and a Caden Wallace for the Royals. It's gonna be for Gary There's Phelene Celestine is supposed to be one of the Mariners big prospects coming up the ranks Ryan the m's Junior Cameron era mini diamonds to 299 and There's Dean Jorge For the Rockies that'll be for Gary won that team in the filler after this break Ethan anyone else who's curious Think we should have a little bit of time close to the top of the hour, but nice Dalton rushing One of the big died one of the many Dodgers catcher prospects. They seem to be collecting over the years And so it'll be for Adam and the Dodgers very nice I think one of the top prospects in the organization and One of the top pitching or top catcher prospects in all of baseball They should just say you know who already has a Vegas aces the WNBA team the world champion WNBA Team are your Vegas aces Which is owned by Mark Davis But yeah, I'd be I'd be Not ashamed WNBA team got it first their world champs And the world champs something they can't haven't been able to claim for a long time It's really smart for them to for the WNBA team to To get that name wrapped up Um, I I don't think they'll change if it was any other team You know without the kind of history that the A's have I Think they changed their there. I mean maybe they will I don't know it doesn't seem like there's any rumblings of that though I mean the Minneapolis Lakers Went to Los Angeles kept the name the Lakers even though not very many lakes in Los Angeles or some Not thousands of lakes. All right next the soccer team. Did Jose Bautista bring a soccer team? I don't think I don't think it's an it's a it's a major league soccer team though But I'm sure that's not too far away whenever MLS expands There's say a Suzuki to 199 soccer team they'll probably play in a They're probably play in an at a legion where the Raiders play Because you know V now plays there Unless they play where the UNLV used to play the football team. Oh, by the way, really nice Ethan solace Greg dash Padres Here's a say a Suzuki for the Cubs Dennis To 199 it's kind of crazy to think that oh nice masatake Yoshida masterpieces autograph That's for Todd and the Boston Red Sox It's strong season last year it's Michael Harris to 250 and he reveals a Nicao Puka Grego Phillies Gary Yeah, that you she is really nice But it's kind of crazy to think that Vegas is gonna have Vegas will eventually have NBA. I think the next The next time and Adams. I want to say Adam Silver has All but said that we are gonna expand at some point, right and LeBron James It says he wants to be part of the ownership group if not the owner of the next expansion franchise There's Davidson de la sound I think you should just buy the buy the cows There's a nice de la Santos going to Michael and the Diamondbacks Yeah, I think the NBA will expand. I think they're at 30 teams right now. I think they want to get to 32 I Think I feel like that's a nice sweet spot for For American professional sports 32. That's what the NFL has. I know base major league baseball wants to get to 32 Hockey's already got to 32 Right with the Golden Knights and the Seattle Kraken that gets them to 32 More teams mean more money Ethan for the league more teams mean more money More revenue to be made overall more More games to put on TV. I feel like the general consensus has been Seattle will get the Super Sonics back and then the Vegas will have a team and then they'll move Memphis and Minnesota over to the east Because I think they're considered they're still in the West right now both of those Yeah, I know someone who was saying this I think Buffalo Braves is a sick logo I want to say that I have a we have a friend I think I think Think Gilo who is our who is our resident Kansas City fan and supporter He's like, hey, why is it Kansas City? You got baseball. We got football. We don't have a where's our basketball team? You know the Kansas City Kings used to be out there ABA days or something like that. So But yeah, I'm not sure if basketball is gonna get back to Buffalo anytime soon. I think they've been saying Seattle and Vegas Move Memphis and Minnesota to the east and then redo the divisions and then go from there Baseball now that now that the A's are going to Vegas and now that the Tampa Bay rays have their stadium situation sorted out allegedly which I'm personally not a fan of a Fan of where they're reloc or where they're building their new stadium They're kind of staying in the same area, which is kind of difficult to get to but I guess it's part of a big long-term Redevelopment plan, but now that those two stadiums Situations are figured out and some of you may have seen that Amazon has bailed out the diamond sports network So that might actually help with two things with with some of those markets Getting Yeah, Amazon will invest in diamond sports as part of its bankruptcy Restructure agreements into there's like a number of teams 11 baseball team 15 basketball teams 11 HL teams They have their ballet sports networks interrupted because of the bankruptcy that that media company has been going through This includes like, you know teams like the Rangers the Royals the Padres, you know diamond backs, etc, etc, etc So I think they're gonna save those media rights there Which may read I mean, which may finalize the remaining Freedons left there, but once all once that was squared away the two stadium situations and TV stuff once that gets squared away Here's Machado to 75 Baseball is gonna look to get to 32 teams. Here's Fraley and Cronos you own for Boston. That's for Todd Now the big question is where those two expansion teams gonna go. I don't have a clear picture of that just from all the reading and research and listening that I've done over the Over the years That seems to be wide open Really Ethan saying there's some rumors here in the past coming is that we're selling the Sabres in Buffalo I'm trying to get a basketball team because her owner pays no attention to the Sabres Sabres make horrible revenue. What's the value of the Sabres? I wonder Here's Amborius Tavares and Boba Shet back there Here's the thing the values of those teams are still so great that the owners really don't have to make revenue in order to To keep the valuation of the team although hockey might be different That goes to the Braves Joey Pruitt and this is a nice Corbin Carroll shell act You can kind of see the word shell act in the background there Some of these can be autographed to this is a fun little insert That's gonna go to Michael and the Diamondbacks You know Ethan though if if like if Seattle didn't exist and if the Vegas market wasn't so Attractive right now first for sports teams and just the ease of travel into Las Vegas and nice Corbin Carroll mini diamonds and Dalton rushing another one another Dalton rushing for Adam the Dodgeville Dodger Joe mojo But unfortunately, I don't know if a basketball team is going back there Now if Seattle already had a team and if if Vegas wasn't a hyped up market, I could see markets like You know I could see markets like That used to have an ABA team You know get a basketball team An NBA team and that would be pretty interesting Another Corbin Carroll mini diamonds for Michael nice all those out up. I guess hockey is a little different. I Don't think they carry as much Kind of crazy value as and here's a brailing to Vera Future team at a Gunner Henderson someday EA without me. I don't know maybe Maybe teams maybe hockey teams franchise are a little bit different, but I guess they could be sold Does that mean a basketball team will get back there? That'd be kind of kind of cool But bring back the Boston Braves logo and all that would you be really awesome? Be cool to see it happen Vase will eventually get a major league soccer team too. Are they on the list? so I think Austin go Charlotte got a Got a major league soccer team. I think Think St. Louis is supposed to have a soccer team No, I think they had I think they made their debut this year in 2023 as an expansion team San Diego is gonna have a soccer team in 2025 and That's it for now current expansion can is So they're at 30 teams out right however after the San Diego's awarded the 30th team in May The Commissioner said I don't think sitting here today that we have any plan in the year for you to go beyond 30 teams Okay, so there looks like they're gonna sit at 30 for a little bit But I think Vegas and Phoenix according to this Wikipedia article Is is stated as being potential? Potential expansion teams Buffalo Ethan would would Buffalo take to soccer there are cities where you least expect it has to have taken to soccer pretty well There'd be a natural rivalry maybe with the Toronto and Montreal teams Be kind of cool if it was just like you know If it was like Buffalo FC and you lose you use all of the old a minor league soccer team What I mean this 80 much be indoors I Think the MLCC is during the summer anyway But if there could be like a Dome stadium or something like that that could work in England They play soccer in this no There's Mike both Going to the Brewers that'll be for Jimmy be kind of cool to see a major league soccer team in Buffalo Call it Buffalo FC. Maybe take over the name of the minor league team and then use all like kind of use Braves a Old Buffalo Braves ABA logo and coloring which would be kind of awesome 61 as 75 Juan a burrito for Cleveland. That's for Gary in the Guardians Cleveland This is for you. They're we still there were you scheduling soccer games because of the rain Gotta watch English soccer there.  Here's Paul Skeens shall act for John and the Pirates It's gonna Henderson. Oh nice 124 out of 250 shall act on card auto drew Jones That's for Michael and the Diamondbacks one of their up-and-coming prospects It's a nice looking card there Save that for a little social media picture time here Ziegel Tovar and Daniel Montero Padres Greg Nice Ziegel Tovar 36 out of 50 for the Rocks. That's gonna be for Gary All right final box coming up Thanks everybody I don't think we have any other orders coming up and keeping an eye on orders. That's why I've been kind of Kind of stretching this break out a little bit because I think I've got time knowing nothing's selling out You can take our time with this break and we can have some nice conversation in the chat as well So I think it's yeah, I mean I feel like if you want to establish You know especially since I mean in the summertime. What are you doing? There's no baseball in Buffalo You have to go all the way to Montreal, Toronto Drive down to New York for baseball. That makes it kind of tough You know a major league soccer team to have a professional summer league team a soccer team I think would be pretty cool. They could play in the bills new stadium Are we excited about the bills stadium? Yeah, I guess we'll have to unless you know unless people Want to sell out that absolute right now. I'll do it even though we're over 11 past 11 right now on the west coast I'm down to do it because I already have the case out here anyway Yeah, best bet's from Buffalo to go to a baseball in Toronto Pittsburgh or Cleveland Yeah, I think the big question now is like who's gonna We're gonna be the expansion team the new bill seems gonna be wild. I'll bet you could put an MLS team in there the office in the Summer That's right, Eric East Coast three hours ahead 11 o'clock West Coast 2am East Coast That is how time works. I Think I want to say because someone have to may have to fact check me on this But I want to say that there is a time zone that doesn't go by the hour. That's like there's like half hour Here's Welben, Francisca Cleveland, this is for you Gary with that one Yeah, I was hoping so too. Listen, if there's a if we've seen it happen before if there's a wild late night rally where that Absolute two box break sells out You know, I've seen it happen I've seen it happen where someone's like effort. I just bought 24 spots in a break Here's Tommy Troy for the dime backs 1999 Prince Michael with that one So if you want to do that I'll do it There's a Fraley and Karras he owned for Todd in the Red Sox, maybe someone's was thinking Joe's probably gonna go to bed or he's gonna call it because it's already past 11 and He's not gonna want to do another break. I will if it's absolute I all other breaks will be tomorrow, but if it's at that two box break of absolute I'll do it. Jasper's case breaks.com. There's a ton of spots left So I'm not gonna hold my breath for it, but if you want to do it, I'll do it So I'll put that out there if you dig deep if we've got a few people that knocks out 25 spots together and again I've seen it happen before so I know it can happen I'll do the break. I Like these hymn inserts here. I'm him EA With the Jackson holiday What days tomorrow Ethan mine I was out of town last weekend and switched some days and Tick a vacation day, so I'm all mixed up There's Eddie Beltran Padres Greg add the rushman masterpiece KC Schmidt. I've got a Jackson holiday She'll act we got a Raphael Devers 25 and Oh, our final auto is a dual auto and a Corbin Carroll right here and It's so it's gonna be a randomizer. Wow Thursday, okay So tomorrow, I'll be on Fnatic Thursday I'll be on Fnatic's live as usual and then I switched one of my days with Jason So I'll Jason will be off on Friday and I think I'll be on YouTube on Friday So you got it. You got a special Friday YouTube day with me All right. Well, we're gonna end the break like this. I guess well first of all, there's the Jackson holiday shall act insert We got the for EA the add the rushman masterpiece insert for EA We got the Corbin Carroll rookie card for Michael, which is really nice. We got the Raphael Devers for Todd Here, how are we gonna end the night? We're gonna end it with one person really happy and one person really sad So this has got to be a randomizer between the Mets Jimmy black and the Dodgers Adam Cuperman, good luck guys. Let's flip back to a flip back to a clean list new dice We'll put the New York Mets right there LA Dodgers right over there the team on top After three on the dice roll gets the dual auto fingers crossed. Good luck my friends one two and three After three times goes to the Mets Adam the Dodger Joe Mojo did not work that time. Sorry man We'll get him next time, but Jimmy With the Mets won that team in the filler After three times one that team with the filler Lands with the Mets you get this great Dual autograph with Kevin Parada up top Diego Cartier on the bottom 12 out of 25 Nice low number on that dual auto first to a lot. I've seen out of this best. There you go. Congrats I'm Joe for Jasper's case breaks on calm. Thanks for watching. Thanks for breaking with us You may as well do a quick little recap here, too There is even you can join me tomorrow if you have an iPhone you can download the fanatics live app And even if you don't have even if you have an iPhone you can still use the web browser Version as well that I just dropped into the chat. That's for Android and iOS I know a lot of even Apple users iPhone users like the web browser app because they can still use their phone for other stuff And then watch us on their desktop or laptop or whatever. So I'll be there tomorrow. It's a different crowd You know different crowd and a Save one of those Dalton Russians to And a kind of a really easy way to buy which is might be a little scary But it's a lot of fun. We do this we do group breaks there. We do Do even we even do a little more a few personal boxes here and there as well As opposed to you two where we don't do a lot of that And I've got the Drew Jones and the dual auto as well. So some nice hits being pulled out of here Thanks, everybody for watching for breaking with us. I'm Joe. I'll see you next time for the next break. Bye. Bye


All right. So we are now at time. We're going to go ahead and get started. I appreciate the intro that Tim gave me. I hope that it stands up to that. My name is Mike Anderson. I'm from the PTR Group. I've been speaking here at Embedded Linux Conference now since 2007. I was looking at all my old presentations and everything. It's been a while since I've been speaking here. I'm always happy to present additional information. I do have four presentations this week. This one right now. I have another one this afternoon on reverse engineering. If you're interested in finding out what reverse engineering is all about, definitely come to that one. That'll be fun. Then I'm speaking. I'm doing the GDB debugging session at the AIL, the Embedded Linux Apprentice Linux Engineer program tomorrow. And then on Wednesday I'm doing a thing on sensors and everything you wanted to know about sensors, what they're good for, what you use them for, why you would use a particular sensor for a particular type of task, how you interface them, that kind of stuff. And that'll be on Wednesday. All right, so let's go ahead and get started. We're here to talk about the robot operating system. And in particular, what is it and what does it do and a little bit of how it works. Now, understand that ROS has been around for a while. We'll talk about some of that and what led to it. We'll talk about what ROS is and how you go about installing it. And then testing your installation. This is a relatively complex system. So being able to test the actual installation is a key piece of success with ROS. We'll get into some of the components and the concepts associated with the operating system. We'll deal with the computation graph and some of the naming conventions. And then we'll take a look at the work to build your first robot. And we'll examine a published subscribe example and then we'll finish up with a quick little summary here. So what exactly is ROS and why am I playing around with it? Well, the reason I'm playing around with it is this little robot right here. This is a robot that's targeted at being able to help the elderly. It's just a prototype at this point. But one of the things that we find in many cases, we have older parents that want to live by themselves. They don't want to move into some care facility. They believe they can take care of themselves and that's great. Unfortunately, sometimes you just need something to remind them, have you taken your medicine today? Or have you eaten lately? Or any of those sorts of questions that would typically be the responsibility of a healthcare giver. But because they've decided they want to continue living on their own, that healthcare giver isn't typically available. So the idea is to have an Alexa-enabled robot that has a little lidar on the top of it that it uses for mapping the area, mapping the room. And it's got a raspberry pie in here where we're doing most of the processing. The motor controllers, why is it a tank drive? I just happened to have had my fill of wheel-based robots for a while, so I thought I'd try a tank drive. The whole thing, it's about like that, not terribly big. The idea is to try and make these things so that the individuals can interact with it, ask it questions, order pizza, that kind of stuff. But more importantly, it is cheap enough that you could actually have them like Roombas, where they run around on different floors, and they can then kind of keep an eye on the house without having to spend a lot of money for caregivers. But there are a lot of things that, when we get into the robot operating system, we have to understand why they created it. The idea here is to create a general-purpose mechanism for creating robotic applications. Now, why is that needed? Well, for any of you who've ever actually built a robot, how many of you have ever built a robot? Most of you. Hell, that's great. Man, that's fantastic. Then you know how complicated it is to actually get a robot to move. Motor controllers, power supplies, radio controls, all the things that go into just making a robot simply move around the floor is a significant amount of work. So the raws operating system is actually not really an operating system per se. It really is middleware to try and help speed up the development process. Now, unfortunately, when we deal with humans, humans take a lot of things for granted. We walk up to a doorknob and we turn the doorknob and we open up the door. That seems fairly natural to us. Going up and down stairs also seems fairly natural to us. Unfortunately, both of those are incredibly hard problems for robots. Just being able to grab ahold of the doorknob, if it's not one of those ADA-style doorknobs, if it's an actual doorknob, just trying to grab ahold of the doorknob is a tricky problem. And certainly going up and down steps is a very, very difficult problem for robotics. So one of the things that I've focused on with this little robot here is, again, to make them cheap enough that you could have them like Roombas, several of them in the house and they could then run around and figure out what's going on in the house at any one point in time. Of course, when we're dealing with so many different robotic applications, we have flying robots. We have swimming robots. Of course, RAWS is used in a very famous application for an underwater rover. This is all stuff that basically an individual or a lab or even a university probably could not come up with on their own. It has to be a collaborative effort and we have to be able to kind of share things back and forth in a framework that allows us to actually reuse somebody else's software. So from the history perspective, this project actually started back in 2007 as an outgrowth of some work at Stanford University. They actually sponsored some of the work. It was more of a hobbyist-style approach. An organization called Willow Garage, they're a robotics incubator. They produced a robot known as the PR2, which is what you see right there. And actually, there was a PR2 in one of the charts, one of the slides at the keynote this morning. And the PR2 is a relatively complicated robot. It has vision. It has, obviously, manipulators. It's got grippers. It's mobile. It can turn. It can recognize things and people. So what they wanted to do is they wanted to create an environment that would allow folks to be able to share, develop and share individual pieces of code. Now, they licensed it under the permissive BSD license. Now, having been licensed under permissive BSD, it gives you the ability to release binaries without necessarily releasing the sources, but most of the community, of course, does release their source. However, not all of the modules for RAWS are actually covered under the BSD license. Some of them are under Apache Software License Version 2. Some are GPL. Some are MIT license. So when you're playing around with RAWS as just kind of something, a learning process, then you don't really have to pay all that much attention to the licenses because they're all open source. But if you're planning on doing something commercially, then you absolutely have to pay attention to the licensing to make sure that you don't run a foul of that. Now, RAWS is supported by the Open Source Robotics Foundation. They're at osrfoundation.org. Great organization. Good to get some, you know, work with those folks and try to figure out exactly what they're up to. They're trying to put RAWS forward as an operating system that could be used for multiple different applications. Now, installing RAWS, the latest and greatest version of RAWS came out in May of 2017. It's called the Lunar Loggerhead. You will find that all of the RAWS releases are named after turtles of some sort or another in alphabetical order. So the Kinetic Comma and the Lunar Loggerhead, and I'm not sure what M is going to be, but the thing about the way RAWS has been put together, if you are running a Debian distribution, you are in good shape. Debian distributions are the primary mechanism that they use on their website for doing their installations. They have Debian repos. So whether you're using Ubuntu, Linux Mint, Debian, or one of the derivative distributions, you're in good shape. There is some experimental support right now on Lunar Loggerhead for Gen2 and macOS, and of course on Yachto. The nice thing about the way they've done RAWS is they have associated with the... Let's see if I can pull it up here. Where did it go? Maybe there. Yes, there we go. So these are the installations that they support right now. They've got, of course, Debian Stretch. The nice thing that they have, which is kind of special, is that they have support for ARM. In the case of the Ubuntu distribution, of course that would be the Mate 0.2 distribution right now on the Raspberry Pi. They support both ARM-HF, the hardware float, and the 64-bit ARM architectures, in addition to the standard AMD64 type architectures. This is the 1604 release. They have not moved this forward on either the Yakini or Zesty releases. So I'm assuming that probably what will happen when they come out with their next release, they're probably gonna jump, and they'll jump to Bionic Beaver, which is the next long-term support release. So that'll be 1804. That'll come out next month, as a matter of fact, I hope, if everything's on time correctly. But you'll notice there's no explicit support here for any of the Fedora or RPM-based distributions. There are individuals who've taken the code and repackaged it for those, but it's not supported officially here at the RAWS website. Now, when you get ready to do the installation, it's a fairly straightforward installation.  If you follow this link that you see here, that link will actually lead you through the process of doing this in Ubuntu in the 16.04 release. So all that's pretty straightforward. Once we get it installed, we need to make sure that everything is installed correctly. Now, normally what we're going to do when we do an install, if it's going to be on a desktop-based machine, then we'll do a RAWS desktop full installation. That will bring down all of the extra goodies, the 3D visualization tools, Gazebo, which is a 3D simulation environment. We'll show you some examples of that a little bit later here. And if you do the desktop full, it brings all those things down. If you do the normal desktop, it brings our Viz down, but doesn't bring Gazebo. And then there are, of course, individual pieces that you can piece this thing out. Understand that the RAWS distribution is several dozen individual packages. So being able to select which packages you're really interested in is a challenge in and of itself. But if you go with the desktop distribution, just the desktop install, it'll bring down most of the meta packages that you need. The desktop distribution is a meta package that brings down most of the ones that you need for doing typical work. So now, assuming that we have it installed, we'll use the RAWSDEP command. RAWSDEP and NIT, it has to be done as root. So this is one of the few places actually in RAWS where we have to be super user. The RAWSDEP and NIT will then initialize the repos and make sure that it understands what packages are available to it. And then we'll do a RAWSDEP update, and that will then pull down whatever changes that may have been made in the meantime. We want to make sure that we have our environment set up. There is a setup.bash that they include. If you understand how RAWS works, basically there's a lot of Python in the background in RAWS. So although it works quite nicely with both Python and C and C++, most of the infrastructure here is Python. So we need to make sure that we have the correct sourcing of the paths to make sure we pick up the RAWS distribution, and we get this thing called the cat can build system. We'll talk about that here in a moment. If you want to be able to just run RAWS robots, that's all you have to do. If that's all you're interested in and you just want to deploy a robot, then hey, that's great. That's all you do. And as a matter of fact, you'll notice they have an option here that says select your robot. And so there are a number of robots that are available. It turns out that the PR2 robot that you saw there is several thousand dollars. So it's kind of out of the range of most hobbyists. But nonetheless, you can select a robot and then it'll pull down all the packages associated with that particular robot. But if you're going to be really working with RAWS, the whole reason you got this is to do new code. So we need to make sure that we have some additional packages installed. Again, these are typical packages that we would find in an Ubuntu distribution, 16.04 Xenial distribution. We see the Python RAWS install, RAWS install generator, WS tool, and of course the infamous build essential. If you've ever built a kernel, then you already have build essential in there. But in any case, that's just ready to... That's the additional stuff you have to have in order to be able to build code. Now, at this point, we're ready to test the actual installation. So the first piece of this is just to check to make sure that we have RAWS installed. Now we're going to actually try and build something. We'll build something really quick. Actually, it's an empty build just to make sure that the cat can build system is actually working correctly. Now, where does the name cat can come from? It turns out it is a tail-shaped flower cluster found on willow trees, which of course Willow Garage was the place where this all started. So it's kind of an homage to Willow Garage. So it's called the cat can build system. As if we needed another build system. Yes, this is yet another build system. Now, at this point, we want to try and simple build. So what we're going to do is we're going to create a directory called cat-can-ws-slash-source. This will typically be in our home directory. And then we'll CD into that directory and we'll initialize a workspace. Now, cat-can-init workspace is going to create some infrastructure for us, basically a few directory entries. And at that point, we can then CD back down to the cat-can-ws-base directory and issue cat-can-make. If all goes well, it should spit out about 25 or 30 lines worth of output that indicate a successful build. If something fails, obviously you need to go back and try and figure out what that is. But generally, if you just follow the instructions up to this point, you're going to be able to get past this initial build, no problem. And it should take you all of about, well, the longest amount of time that it takes is the actual installation of ROS itself because there are several dozen packages involved. The cat-can-make itself is over in about 10 seconds or so. Not a whole lot of stuff involved in that. Now, at its core, ROS is a published-subscribed message passing middleware. So what happens here, we will describe messages. We'll describe a format for a message and then that message will be published from one set of nodes, and the node is what they call their programs. We'll publish from one set of nodes and then we will subscribe to these things from other nodes. The communications in this particular model is asynchronous. So that actually works well for a lot of sensors, a lot of things that could potentially provide data at any time. However, it does not work all that well when you actually need lockstep behavior. So in order to handle lockstep behavior, they have another type of interface called a service interface, and we'll talk about that in a moment, but a service interface is remote procedure call-based. So if you need that lockstep, don't go beyond this point until after this has completed. There's a mechanism for doing that. Although the normal behavior here is to simply use asynchronous published-subscribed. Now, the modules, they publish the topics. And of course, in a typical pub-sub environment, you've got topics, people subscribe to topics. When you publish a topic, then it'll let folks know that the topic has been published and they'll be able to go read it. Communication is total message passing here. Because it is message passing, there is no global memory that people can somehow write things into and pass lots of data. Although there is a parameter server, we'll talk about that in a moment, but the idea here is by forcing everyone to use a message passing interface, we get nice clean interfaces. If it's not in the message passing format, if it's not part of the interface definition language, then basically it doesn't happen. So in some ways, they're actually trying to force you to do a better job at engineering your robots. Certainly I've built enough robots over the years that in some cases they're kind of slammed together and not necessarily as robust as they probably should have been. Now, the communications is basically running on top of TCP. So we have TCP connections. There is an option to get into UDP if you need that for whatever reason, but that is the primary mechanism that we use. It does support the recording and playback of messages. Now, this is interesting. The actual recording of messages goes into something called a bag, and what will happen is we can then kind of post-process the bag and then use that to regenerate those messages over and over and over again for regression testing. Of course, that's also something that you end up doing a lot of with robotics. There's a lot of regression testing because you always thought that you had it right the first time and it never quite seems to be what you thought it was. So that's always something that we need to be able to take into account. There is, as I mentioned, support for remote procedure calls and there is a distributed parameter system which allows me to have a master node. The master node is basically the clearing house for all the PubSub, all the topics and everything go through the master node, and then we have this parameter system that's usually associated with the master node. That parameter system will then be able to feed configuration data into individual nodes as needed. There are a lot of diagnostic capabilities built into ROS. There are replacements for the C-OUT functions, basically, that will then write into a bag so that you can then capture all that information. The interesting approach here, because it is using typical network protocols, the robot nodes, the individual controller pieces do not have to be on the same processor core. So they can be split out amongst various microcontrollers and processors and you can have them not only be distributed in the robot itself, but also geographically distributed if you needed to have a wide area kind of knowledge going on inside of the robot for whatever reason. Now, ROS has got three levels of concepts associated with it. They've got a file system level, a computation level, and then there's the community level. At the file system level, these are all the things that you will write and work with on the file system itself. These are things you find in directories. So we have packages and meta packages. Meta packages, of course, collect packages together to make some logical connection between the packages. We also have repositories. Repositories in this sense are not the same type of repository that we see in the Debian world. This is more like a stack. So we'll have a lidar repository that will have all the functions inside of it for using laser imaging or laser guided radars. We have, of course, then message types and service types. Message types will define the actual pub sub piece. Service types will define the remote procedure call interfaces. So now, when we get a little bit further into this, we get into the computation graph. Now, the computation graph is a peer-to-peer network. So all of these ROS processes, known as nodes, are all connected together and they are communicating with each other over the network. So the computation graph level has the node, the individual components. We have the master, which is responsible for setting up and running the namespace. We have the parameter server, which is going to be providing those configuration options down to the individual nodes. And then, of course, the messages associated with messages are topics because we are doing pub sub and the services for the remote procedure call mechanisms and I've already talked about bags. Now, at the community level, I understand there is a lot of folks working on ROS. And this is worldwide. They have their own distributions. The lunar loggerhead is one distribution. The kinetic commy is another one. We have the ROS wiki, excellent source of information. If you have questions about what's going on, definitely take a look at the ROS wiki. There is a blog, which kind of shows what people are up to and the latest and greatest things they've been able to do. And there's also a very nice fact site. So the community in ROS is very well set up, very well distributed, and very supportive of things that you're doing. So there's no...  It's a, well, I might do it a little bit differently and here's how we've done it in the past. Now, on the file system specifics, the package is the primary unit of software in ROS. It's the finest granularity. It basically is the source of libraries, nodes, datasets, configuration files. Anything that needs to be viewable at compile time will typically be associated with a package. Metadata then collects those packages together. There is a package manifest, and if for whatever reason you've been avoiding XML over the last several years of your career, you cannot avoid XML when it comes to ROS. ROS is extremely XML centric. So even when we get ready to describe robots, we describe them in XML, which can get a little bit tedious. We'll see some examples of this coming up here, but understand that the whole idea is to have some universal format that can be easily parsed, and that's why they went with XML. The message types, of course, these are actually data structures. Now, the data structures are comprised of primitive types. So we've got integers, we've got booleans, we've got floats, those are the basic types, and then we combine them together into structures just like we have in C or C++. Additionally, those structures can be nested, so we can, in fact, have structures within structures. That works fine in ROS. The service level entities, that is hardcore kind of remote procedure call, request, response type data structures, and of course we have to define those as well. Now, at the computation graph level, the nodes are processes that perform the computation. So they will have things like motor control, the LiDAR interface, the graphical view, all of those will be represented as nodes. We then have the nodes talking to each other. This might be a remote procedure call using service invocation, but normally nodes are going to publish topics. Other nodes have subscribed to topics, and as soon as the topic gets published, the node, when it goes into one of its loops to look for subscriptions, it'll basically update and pull down the latest information. The master is that clearing house for name registration and lookup for the rest of the graph. So if the master dies for whatever reason, the entire thing dies. So you need to make sure that the master is stable and is running on a machine that is stable with good power and all that sort of stuff associated with it in order to make sure that everything continues to function correctly. We talked about the primitive types there, so we got that. Now, the topics are the messages that are routed via the PubSub semantics. The node subscribes to topics. It does support one to many. It also supports many to many transport. So we do have the ability to kind of send a broadcast, if you will, to all of the nodes inside of the robot, something like, I'm getting ready to shut down now because the battery is almost out. All of these kinds of things actually are supported quite well. Additionally, what will happen inside of the ROS nodes, there is a secret, or silent, it's not really secret, but it's a silent signal handler that gets installed for Control-C. So the Control-C signal handler will intercept that and then it lets everybody know that the system is going down and it sends that information out automatically for you. All right, so we've got the bags. We've already talked about those. Now, the naming structure. As you might guess, since this looks like a file system, it is also very file system-like. Slash is the top level. Now, slash can then have associated with it resources. So resources are defined in their individual namespaces. They may define or share other resources. Effectively, what happens, the code as it's running will stay in its own namespace There is a way to get out of a namespace. We'll show you what that looks like here in a moment. But the name basically gets resolved locally as though each one of the domains was a top level domain. So if I have a slash and then I have a lidar and I have a motor controller and I have a camera, each one of those top level domains are going to be effectively a stovepipe. They can communicate with each other. We can actually have an integrator that sets up at a higher level that then takes messages from one, say the camera, and then feeds them over to the motor controller or what have you. That can actually be done. It's not that complicated. But it turns out that when we're dealing with the namespace, names will typically begin either with a tilde, which means you're at the home, a slash or an alpha character, either upper or lower. Then all the subsequent characters are either alphanumeric underscores or slashes. It is fairly pedestrian in some of the naming conventions that it uses, but it does keep you out of trouble when you're talking about relatively complex systems where more than one group may be responsible for individual subsystems. So the name resolution, we always have to have a base name. Without a base name, we can't start a robot. We then will have relative access, so it's going to be from wherever I am right now slash something underneath me. We have global names, which begin with a slash, and then we have private names, which begin with a tilde. The tilde private name allows me to have pieces of data that aren't visible outside of the namespace in case we need to be able to do that equivalent of the private call in C++. So the package resources names will then have this format, a package name slash message type. An example here, standard messages. There is a package called standard messages, which has the base types in it. One of those base types is the string base type. That's basically just a string-oriented message from that package. That's how that would be referenced. And when we look in the code, we'll actually see them reference these kinds of things.  And that is describing things in the unified robot description format, URDF. URDF is XML, and it is an interesting approach to representing things, given that you have to describe every possible connection that the robot may have. Joints, wheels, connection points on the wheels, you have to describe the physics associated with the wheels, the structure, you have to describe all of that. And this, at one level, this is focusing more on the simulation piece of it. Oftentimes what we will do is we will create a simulation of the robot so we can drive it around and it does what we think it should do in the world that we've defined in case of something like gazebo. And then we will take that and build the actual item. We like to be able to simulate it first just because that way we can work out a lot of the details of how things are going to be interfaced with each other. Obviously the real world always gets in the way and we never quite get the kind of wheel friction we hope for or the motor torque that we hope for, depending on how things are put together. But at least we have a simulation of how it's supposed to work so that we can then go, oh well that's not what it's supposed to do. It's supposed to turn to the right, not to the left. So those kinds of things can actually be done here in URDF. We have also, there's a developed language called ZACRO. ZACRO is an XML macro language and that's because when you start describing things like wheels and axles and motors and things of that sort, the number of descriptions can get very, very large. So for instance, some of my larger robots or six-wheel drive robots just defining the gearboxes and the wheels and the interfaces to RAZ for all of that is fairly long and tedious. So using ZACRO we can actually abbreviate that, create a macro that says give me a six-wheel drive, give me a six-wheel drive base and then boom, a six-wheel drive base shows up. So that helps us quite a bit in terms of being able to kind of rapidly develop things in this approach. So we're going to build a basic chassis here. We'll have two URDF components. They'll define a simple robot chassis. It's basically just a box. Then the link components will describe a rigid body based on its physical properties. So we'll talk about the width, the height, the length, the color, those kinds of things. Then the links are going to be connected by a joint. The joint components then describe how our wheels are going to be attached. We have to describe the type of joint, the degrees of freedom, the axis of rotation, the amount of friction. There's a lot of physics in this and that's of course because if you're actually trying to build real robots in the real world, physics matters. I try to describe this to my students, my robotic students and say, look, the real world is not very forgiving. Things have more friction than you anticipate. Wheels slip a lot more than you think they're going to. In our particular case for this last competition last weekend, chains break and you didn't anticipate that. So the real world is not a very forgiving place when it comes to robots. It's nice to be able to build a robot in a relatively nice little sandbox and work from there. So speaking of a box, here is the box in URDF. So we've described an ELC robot. We have declared it as the base link and in the visual world it has an origin at 0, 0, 0 which is right in the middle of the field. So as we'll see with RVIS, which is a 3D graphics visualization tool, we will describe the box sitting basically in the middle of the field. The RPY there, this is the roll pitch and yaw of the device, so it's starting out flat. No angles, no orientation other than just flat sitting on a floor. The box size itself, these are in meters. So this is a half meter long, half meter wide and a quarter meter high. That describes the geometry and we've ended the visual here and of course, you know, typical XML stuff here. We got to add all the additional verbosity associated with it. So now, assuming that we have described this adequately, we want to create the package that this URDF is going to go into. So we'll do a cat can create package and we'll call it ELC robot. This will be in our cat can workstation. So in the cat can WS directory we'll do this cat can create package ELC robot. This will automatically create some structure for me. It's going to create a package manifest, the package XML, and it's also going to create a CMake list that will allow me to then launch the build. So at this point, it's created the files in cat can source ELC robot, adjust the values and package that XML if you have to. I mean, if you're going to be bringing in additional depends, dependencies and things of that sort, you need to express them here in the make so that we can then make sure that we bring those in correctly. We then CD to cat can workspace and then do a cat can make. This will produce all kinds of build output. All this is doing now, and remember is building an empty project. There's nothing here yet other than just the infrastructure. So this is just a test to make sure that the infrastructure built correctly and now we can start populating it with actual files. So we're going to create the robot for URDF. We'll do the, we'll CD to source CD to source ELC robot and then we'll make a directory called URDF. We'll copy the URDF model we just created into that directory and in order to run the model we're going to have to have what's called a launch specification. So raw's launch is a mechanism for taking a launch spec and then turning that into running code. So what raw's launch will do is it'll be responsible for starting up the master, starting up the parameter server, making sure that all the connections are there. It will then look at your code to see if you've produced any, if you've produced any topics it will then make sure those topics are in the global namespace. All that stuff will be taken care of by raw's launch but we have to have the launch specification. So the launch specification is itself not necessarily trivial. We'll do a make-dure on launch and then we'll go in and edit the launch using your favorite editor. In my case that's VI. Oh, not VI. No, just simple, easy. Something simple. Here is the launch file. All right, so let's take a look at the launch file. First of all we are setting up a model here. We've defined the GUI. Right now it's not going to be coming on just yet. We'll actually do that a little bit later. We'll have our robot description. We are going to find ELC robot in the workspace. Look for URDF. And then we will specify the argument which model we're going to be using. So we'll show how this is done when you actually from the command line list a particular model of the robot. This is nice because it means that I can have subsequent releases in the same directory and simply launch them as different models. So I can have a ELC robot, ELC robot 2, robot 3, robot 4, etc. Getting up to the point where I've actually incrementally built all the tools or all the pieces that go along with the robot. I have a joint. In this particular case the joint state publisher will get into the actual joints associated with the wheels. Here's the robot state publisher and here is the mechanism that actually allows me to do the visualization. RViz and what RViz will do is it will run that, find ELC robot and look for URDF RViz. If it finds it then that says that this has already been created as a 3D model. If it doesn't find it and it won't in the first case there is no 3D model and I have to tell it to create one. We'll show you how that's done in a moment.  These launchers can get a lot more complicated. Obviously we can have more nodes, we can have more dependencies. There is its own kind of art to writing launchers, but this is a very simple one that we'll be using for this case. Now what we're going to do is we're going to launch it. We'll do a ROZ launch, ELC robot, ELC robot, RViz launch was the thing we just created. The model here will be ELCrobot.URDF which was that URDF that we looked at a couple charts ago. Now what we get out of that is this lovely red box sitting in the middle of the field. It seems like a lot of work to go through just to get a red box. But again, this is kind of incrementally developing a robot in a 3D space as we go through the process. So what we're going to do is we're going to put some wheels on it, we're going to color it something other than red and then in order for us to be able to do that we have to describe the wheels, we have to describe their radius, the joint connection to the base link, their inertia, the collision characteristics, the mass of the wheels. Fortunately again, there are predefined setups for certain classes of tires, wheels and general motors. So we can just simply use those instead of having to ride all this stuff by hand. But once we finish with all that we end up with Loala, a blue box with wheels. We have wheel on this side, wheel on that side. We have the indicators for the center of mass. And in this particular case what you don't see is I actually put a little caster underneath the robot. Otherwise the robot kind of does this. The caster is not a non-functional item. We just simply stick it underneath there to keep the robot level as the robot rolls around. Now once that's done we can actually load it into the 3D model and drive it around inside of Gazebo. So Gazebo is a 3D world simulator and it's used not only for Roz but it's used for many, many different examples. There's something called Stage as well.  And in this particular 3D world I have two objects, two cones. There is a sun which is generating the shadows that you see there. And my robot sitting in the middle of the field. At this point I have now the ability to do things like manipulate gravity. So I can go into the Gazebo environment and change things around. What we're not seeing here is the rest of the interface for Gazebo which allows me to describe characteristics like gravity is really heavy at this end or this is actually slanted in some way or it's a hyperbolic space. It turns out that Gazebo has about 100 or so predefined models associated with it and you can define your own models for your own space if you want to, you know, one of the examples we've used this for is in first robotics competition a couple of years ago they had the entire field which is a 56 by 28 field with a lot of objects on it completely described inside of Gazebo. So the teams could actually create robots and drive them around on the field using the actual joysticks and actuators that we were going to be using on the real robot. So it was a really handy way of being able to kind of test some ideas out does the arm do what it's supposed to do am I able to lift this thing up correctly can we drive all that sort of practice before the physical robot was actually created in the first robotics competition we have six weeks from the time they announced the game to the time we have to finish the robot and put it in a bag and then we can't touch it until we get to the competition and hopefully it works when we get it out of the bag it almost never does but in any case using something like this gives us the opportunity of being able to actually get the drive team familiar with the controls before we actually get out on the real field. So Gazebo is a very nice tool again you had to have installed the full desktop version of ROS in order to pull Gazebo down if you did not install Gazebo when you installed ROS that's okay you can go out to the Gazebo website and it has a one click link which then does the app get to add the GPG key adds the repository pulls Gazebo down installs all the auxiliary functions additional packages that have to be installed to support Gazebo. Gazebo is also 3D aware so if you happen to have NVIDIA graphics controllers or something else that's providing you 3D it knows OpenGL so if you have OpenGL it will actually do OpenGL acceleration which really helps for fields that have a lot of objects on them especially when you've got robots running in a swarm you're trying to see how the swarm behavior works or you're trying to figure out how you're going to interact with certain obstacles on the field. Now a PubSub of course the ROS Wiki's got an example of a simple PubSub but we're going to take a look at a PubSub just so that you can see what that looks like there is in this particular case it's just a pub on one side there's just one topic that's going to publish and then the listener will subscribe to the other side so let me see if I can go over there and actually make this come together I think it's this one yeah there we go alright so let's do this oops I think that's actually here there we go alright so what we have and hopefully you can read that from the back there I have two C programs one's called listener the other's called talker talker will be the publisher it will publish the object and the listener will be then waiting for updates so let's take a look at talker of course this is a demo so it's got lots of header stuff on it we're interested in let's just scroll up a little bit here there's our main include for raws so that's going to be the brain header and in this case we're going to be putting out a string so it's going to have a topic that will have just a string in it we're also we've got some other includes here for the streaming information our main looks just like any other main you would expect to see we will then do a raws and knit the raws and knit will then read the arguments from the command line and it's going to initialize a node called talker and that's what we see here then we're going to create a handle to be able to deal with that node so this will be the mechanism that the master uses for being able to actually get the the publishing the subscribe options so we're going to have an advertise here so this is how we actually put a topic out there into the global namespace we're going to use the advertise command and in this case we're just going to advertise a string into that world it's going to be called chatter and of course maximum length here is a thousand characters we will then set up a loop rate now this loop rate is in Hertz so this is running at 10 Hertz a hundred milliseconds per pass this is just simply setting our polling loop so in those cases where we're actually doing polled IO instead of interrupt driven IO we have a way of being able to control that poll rate now we've got an integer this is just standard stuff here but while we are connected to Roz while Roz is okay then what we're going to do is we're going to put a string out there and declare that is the message data and then we're going to turn around and publish that so this is the publish call here where we've now published that message at this point we now have an option in this case there's a thing called spin once that allows it to poll to see if there's been any updates since this is the publisher not the subscriber chances are we actually don't need this particular call but they do have it here and there is a sleep mechanism as well if we need to go to sleep for whatever reason it's going to keep track of how many times it's written that information out into the publish on the subscribe side the listener the listener is actually a little bit easier than the publisher so the listener again we have Roz that we had to declare and our standard messages string we do declare a callback so in this case when something gets published it's going to hit my callback and let me know that there's been an update to this particular topic so in the main I will do a Roz and it and I'm going to declare myself as the listener I again have a handle that I'll be using to be able to have the master talk to me and be able to keep track of what things have been subscribed and then I have the subscriber I'll just subscribe to chatter and when it happens it's going to call the chatter callback and call that piece of code that we just looked at and it'll let me know that there's been a message there and I'll be able to read it and in this case we do have the spin the spin actually does something here the spin in this case is just simply waiting for that update to happen when the update happens then I'll be able to call that chatter back that chatter callback and pull the information out and that's basically it for a listener to a particular message for services and things of that sort get a little bit more complicated unfortunately we don't have the time to get into that the tags they're all comments basically they are mechanisms that you don't actually don't have to have them the tags are just simply there that there are some error checking code that's available some actual testing code that's available that will allow you to make sure you've enumerated everything correctly so you don't actually have to have those tags but if you have them then you get a little bit more diagnostic information out of the build so that is basically it for being able to do a pub sub not a whole lot to that actually and what we have here of course is we are just about out of time but it's been kind of a whirlwind introduction to Roz Roz because of all the XML looks to be a little bit intimidating fortunately because of the definition of a lot of these macros we have the ability to just simply pull in a macro without having to go through the detail definition of everything and we're obviously we're standing on the shoulders of giants here we're actually working with other universities other labs and other hobbyists that are going through this process of actually trying to build up individual Lego block type components that we can then stick together there are a number of books that are out there some of them are really nice this one that you see up here the systematic approach to learning robot programming with Roz Roz robots by example is a nice one that gets you kind of up to speed quickly and then they have one that is the gentle introduction to Roz down here this one is a relatively new one I haven't had a chance to really play with it all that much and kind of read through and review it yet but I just like the idea of a gentle introduction to Roz because Roz is by no means gentle if you just simply start looking at all the XML and everything especially the definition of the languages and everything when you get ready to do a for instance I'll show you this when you get ready to do a robot that has let's see where am I I think they're there nope nope nope nope alright well that's okay catkin workspace go to source and go to the ELC robot and then go to URDF this robot here number six has got all the definitions in it for all the wheels and how the inertia works and everything else so for instance we see here there's the base that we've got defined we see what its mass is and this is in kilograms inertia this is an inertial framework if you look up inertia in Wikipedia it'll actually take you down this path and they use the exact same definition that Wikipedia has so if you're interested in that here is I told you I had a caster there's the definition of the caster and again this caster doesn't actually do anything it's just simply stuck on the bottom of the box and it's just simply there to keep the box from tipping over but we see this roll pitch and yaw again is zero we see the size and we see the relative attachment point we see that it's our sphere or radius 0.05 and again we have some characteristic of the inertia associated with the caster then the right wheel there's the right wheel we specify that we want a dark grey color we specify its radius in this particular case there is a roll associated with it because it is not flat it's kind of vertical here and it's going to be attached to the box we then have the that's the right wheel then we have the right wheel joint that we have to describe the left wheel and then the left wheel joint and once we get past the left wheel joint then we basically describe the whole robot to launch this what we'll do is we'll do a raw's launch and we need the launch file which is let me go look at that oh I'm in the wrong directory so there's the visualization so we'll do a raw's launch if I can spell yes there we go and this and then model colon equals elc robot 6 dot urdf and I messed up somewhere oh yeah yeah yeah so I messed up but I'm missing what but I should find it actually maybe I'm in the wrong directory here because I should have launched oh you're right there it is now you'll notice there's nothing here right now because what I have to do since this is the first time I've run it on this particular model I need to specify that I'm interested into the base link is what I'm interested in and I want to add a robot model there's my robot model and then I want to add the the transform so I can actually then roll it around so if you scroll in far enough you'll actually notice that there's a blue and a red marker here which indicates up and forward so we can now start messing around with this and start rolling it around just to see what it does but that's the general idea behind our vis and then you take that same thing and you put that into gazebo and now you have a 3D model that you can run around in space alright questions anybody still awake yes as a hobbyist not this actually there are a lot of ones from seed studio S-E-E-E there's three E's for whatever reason I'm not sure why they have the Cherokee which is a little like $49 robot chassis runs off of an Arduino has a very simple motor controller little 2 amp motor controllers so it's a good place to get started because it's easy to get it up and running obviously there's nothing really spectacular about it because it doesn't have RF control no Wi-Fi or anything like that but it's an easy platform that you can start with and then start adding Wi-Fi start adding or Bluetooth or 802.15.4 add cameras things of that sort it's a unit's about that big and you can actually buy it off of Amazon so that would be where I would start it's pretty easy to get up and running and doesn't cost a whole lot of money if you want to have higher end stuff you basically start at a hundred bucks and go up some of my robots are three or four thousand dollars so it's a hobby that my wife is not fond of okay thank you very much


Newsflash, no f***ing good girls in today's society. And it might be one, two percent, maybe being generous, three, four percent of women who are saving themselves for their husband for marriage. But today, women are f***ing at the age of 11, 12, 13 years old. There's women by the time they're 25, they've been f***ing for 10 years. And there's a book I promote from time to time by a guy named Daniel Berkner. It's called, What Do Women Want? But essentially, what he says is that there's a lot of things that men believe about women because they want to believe it about women. Because it makes them sleep better at night. And one of those things is, when women are born with more monogamous tendencies than men are, that's bulls***. Women like to f*** just like we do. You better believe that s***. They love to f***.  You think these women are using that s*** in the kitchen?


The Moodle community is actually one of the strongest communities I've seen for open source. The ethos of the community is build something that empowers teachers to improve our world. It started 20 years ago, it is now two thirds of the higher education and it's because it's open source. So, we share that ethos. We're open source as well. We've been at it for 14 years, Moodle's been at it for 20 years, but the Moodle community is, everybody is here together to improve Moodle and as we work together it just multiplies across the entire world.


It's just coming into that relaxed state of just enjoying life, really being able to kick back and just enjoy the present moment and enjoy a beautiful state of being and actually to celebrate that and that's why I'm here and that's why Jennifer's here. We believe in fun, we believe in celebration, we believe in joy and love and happiness and that you don't have to sacrifice anything for that, it's a choice in the mind. Some people call that self-realization or enlightenment. When I think of know thyself or self-realization, I just think of just a pure state of being this that's happy and all of us want to be happy and we have sometimes some beliefs in our mind that tell us that we can be happy through various ways in the world and a lot of us have tried those and sometimes they don't succeed very well or maybe they seem to succeed for a while and then they kind of peter out, they fall apart, they just don't last and so what we would like to have these chatakas dedicated to is a state of pure oneness and joy and love and happiness and also it's my experience that that state has no affiliations with particular books or pathways or theologies and so we may often refer to a saint or a mystic or a book or audio recording or a YouTube or whatever. Those are just reference points, I think it's fun, all of us find all kinds of beautiful tools along the way and there's so many of them and they come in so many traditions and it's more than non-denominational, it actually goes beyond belief, there's no point in defending or promoting beliefs or even separate pathways, it's just that if you can follow your heart, if you can follow your intuition and really tune into that inner voice then that's what it's all about. So I know for myself I am very, very non-affiliated, I have been grateful for the tools and the resources that the Spirit has brought into my awareness but I don't mistake those tools and resources for the truth which I feel is absolutely beyond description and absolutely beyond definition and if anybody ever says here I'm going to make a definition of the truth or God or even love, it's okay to just turn and go for a swim, I don't really feel that definitions are part of that state of happiness, it's actually a state of complete non-affiliation with absolutely everything and every one of the world. But what we'll try to do is just use experiences and examples and things and we want this as always to be a very open gathering so we want you to feel free to raise your hand, ask anything, ask any questions, make any comments, share your miracle stories or awakening stories that you're having. There's no set traditions as I said or definitions that we're using here so it's just like the word shatakwa, it's very open and also I think for some of us who are on this path we can talk about this term called non-dualism because it seems like we have glimpses and revelations at times of this beautiful absolute oneness but then our awareness can seem to be clouded over at times by what we would call dualism and interestingly enough this dualism gets incorporated into a lot of spiritualities and religions, the do's and the don'ts, the goods and the bads, the rights and the wrongs, it gets incorporated into morality, it gets incorporated into ethics and it gets incorporated into psychology, philosophy and I was just discussing with the group this morning how really the pathway to love or oneness or God is bringing all illusions to the truth or all darkness to the light and it will disappear but the temptation on the spiritual journey and a lot of us I would say would think of ourselves as consciously on the spiritual journey, the temptation is to try to bring the light into the darkness or the truth into the illusions and you can't do that, this is what I've discovered and so these subtleties that come up in what seems to be daily lies for human beings are these little pops in awareness of still wanting to hold on to a scrap of duality and feeling irritation, annoyance, upset, fear, anger just by holding on to scraps of duality even though pretty much we're onto it that it's a game and we don't really have to stay so invested in that game of duality, we can actually open up to unity and union and oneness and so for me the whole journey has been a very very practical diving in to this experience of unification and watching to see if there was any scraps that were left that were coming up to just release so that's the invitation I have today I know that as we talk in common terms of daily living then there are going to be these little scraps and concepts that will come up and we do have to deal with them we can't just try to push them out of awareness and hope that they're going to go that way we do have to kind of raise them up and be aware of what we're holding on to in order to make the decision to let it go.


While we stay mostly indoors to escape or heal from COVID, our society outside is changing faster and more profoundly than before. There are accelerants inflaming these changes. Trump is one of them, but there are others too. These are sea changes disrupting everything in a huge tidal wave of change. Much like the frog in the kettle of hot water, we don't integrate these changes into our daily thinking. But they include changes in our relationships with friends, family, business associates, strangers, and those who are wearing the power of government. This speaks of a complete reordering of our world. The problem is not so much that our government is failing us. The much more threatening phenomenon is that government doesn't care about us, and soon enough we won't care about the government, or each other. Or worse, that our officials, for their own purposes, will become more interested in exacerbating the divisions among us. Democracy can save us, but the decline of democracy and the emergence of autocracy leads to injustice and ultimately to a complete if not intentional and violent breakdown. This could happen in any country, and it can happen here. Increasingly, we seem oblivious and unprepared for it. Instead of returning to the old normal, we are entering a time very different than the one we came from. We need to appreciate the personal life experience of living in a more challenging world. To some, it's an interesting intellectual exercise. To others, it's quite terrifying. While personal ruminations on this destructive process may somehow be comforting, the end result could take us to a dark and fearful time. So we must ask ourselves what can we do to deal with the decline that is upon us. That is the greatest challenge of all. We need to realize, like the frog, that we are boiling. Then we need to join together under the very best leadership to restate our values and the rule of law, and develop and ethically deploy the best technology. Can any one person do this? No, but it is incumbent on each of us to help and do what we can. It's plain to see that we are on a road to perdition, surrounded by a red sea of deception, drowning our democracy as we race to where the lord of the flies is king. We should rather take the higher road, the road focused on protecting our institutions, our values and our people. What to do, be decent and kind, that would be an important countervailing principle in the contention at hand. Only accept what you know to be true. Don't be afraid of speaking the truth to power, and never stand by idly when you see outrage that needs correction. Complacency will destroy us all. Our country is in a state of madness these days, and more and more the inmates are running the asylum. The light at the end of the tunnel seems further away, but hope for happier days is still here. Although, frankly, right now, that unrealized hope may be all we have.