 So our next speaker is Shrikanth Vertigiri from ActiveSphere. He's personally sponsoring part of your beer so you can bug him for extras. It's true. Oh, he's going, no, okay, that's fine. So he works with ActiveSphere and he's been hacking on, he likes JavaScript and Ruby. That's what he does for work. He's been hacking on this little device called the R drone. It's a quadcopter and he's been messing with it using the Node API. And using this, he's been using this to teach kids programming and he wants to show you what he's come up with. So yeah, that's pretty much it. So everybody give a big round of applause for Shrikanth Vertigiri. ShriX. Apparently we have calculated about a 6-10% chance of fatality in the next 20 minutes. Just saying. Because of the hotspots, yes, I will find that person. All good? Cool. So Shrikanth, I work for ActiveSphere like Sunil introduced. I'll be talking about programming flying robots. I mean, it's like a really broad sort of thing. So specifically I'll be talking about R drone. How many of you heard of R drone? Oh, pretty cool. How many have R drone? Oh, very cool. We should talk. So without much ado, I mean I'll be like, actually I'll just show it. It's basically a quadcopter. I have it here. It looks just like this. Let me stick the... Yeah, I've got some nodes there but like, yeah, ignore it. I guess I can't avoid it. So it's got a battery that comes along with it. Stick it in. It also has a USB thing, which sort of lets you record stuff. Yeah, it's flipped on its own. So this is the hull that you sort of attach to it, just to protect you guys and this thing itself from doing bad stuff. So basically what I plan to do is sort of flight. Hope it all works. Can I go back to the... Sorry, yeah. So just a couple of warnings. It's pretty safe. Like somebody said, it's pretty safe. Nobody's gotten hurt from what I've heard yet. So don't touch the rotors. It's for me rather than you guys. I don't think it'll hurt you. I think if it breaks the rotors, I'll have to get them and do stuff with it. Other than that, I'll probably show you how to cut it or stop making it just to avoid injury. So let me switch back to the... Oh, this is strange. So... Oh, shit. Okay. Okay, so... Okay, okay, just let the fun begin. Wrong place. So basically what I'm trying to do is... Actually, see if I can... Can you see our drone there? I forgot to mention, basically sets up a Wi-Fi connection. So you basically connect to it and then you can do stuff with it. So if you see my... If config, it's got like 192.168. It's got a port from our drone. So on the R2, can you see if I'm on the R drone? Anyone with a Wi-Fi hotspot gets stucked out in about 20 seconds. Just saying. Yeah, you're connected to it. Okay, so the very basic thing you do is sort of... Can you see take off? O-F-F. Yeah. So what it does is it goes at 1 meter height and stays there. Will I ask it to do something? Like stuff like up 0.1. It starts to raise up. So it can do... It can do from 0 to 1. I want it really slow so that I can do 1 but it'll just end up going really high. So let me go... Okay. So you just like... That's... Sorry about the trouble. So... So this is just no-drepple. This is basically I'm sending some commands to it to do. It can do weird stuff. Stay, stay, stay. So it needs light to be there. It has like the video up front. Let me try showing you the video stuff. So basically it's streaming as we speak before it comes towards you. Let me... Backpoint 2. That's basically... This is like sort of what it can do. It's still showing the video right now because it's streaming whatever. Cool. So does it seem like a toy? It's like the RC copter that we use. Does anybody know the shortcut for this? Sorry. Cool. So we know what it is. So it seems like a toy but it's actually not really a toy. It's got an ARM processor on it. It's got Linux 2.600. You can probably read it front sensors, front camera, back camera, motion sensors. It seems like a mobile phone. It seems like a mobile phone as well. Except it doesn't come with a plan. The beauty of this is you can program it. Unlike the RC copters, it's hard to... Which are hard to program. This is actually quite trivial to program. And pretty much what I'll be using to program is this guy called Felix G. Sintoffer. If you're in the Node community, you definitely have heard him. He's written this thing called Node-R-Drawn. So this itself is like locked firmware. So you can't actually upgrade or change the firmware on this stuff. But what it gives you is an API to access it. So programmatically access it and sort of say up-down, do the stuff that we were sort of doing. There is actually a Github project that sort of does open-drawn firmware. I think last time I looked it wasn't going anywhere or it wasn't getting committed to sort of thing. So it will be really interesting to have that sort of thing so that you can do very crazy stuff. So what does the SDK provide? This is like... So when you get the drone, you also get CD along with it. This is the SDK and stuff. It gives you low level access to the drone. It also has C++ bindings. It also has iPhone bindings. So if you have an iPhone, it's actually really easy to program, do stuff that is... that you can actually do it directly on talking to the protocol. But if you are like me on a computer and don't have an iPhone, you probably want to use the Node-R drone stuff. Quick, this thing on API, it gives you three... actually four ports, I'll just talk about three. All of them are UDP. You just say send and forget sort of API. So 555 is for the video. So that's how I sort of access the video. It does H.264 encoding. So you have to sort of decode it back when you want to display it on the browser. 80 commands are the way you sort of say send, move up, up down, left, right, back, forward, stuff like that. It's actually very C++ oriented. So if you've done... like if you set this specific bit to one, it will fly up. If you actually reset this specific bit to zero, it'll land sort of API. So it's really complicated. So I also written an API for SDK on Ruby. And it's really, really painful. Like if your byte-oriented is really hard, bit-oriented is really hard. Cool. So 80 commands go on to that port. It also has the incoming data, as in what's the height, what's the direction, what's the pitch and yo and stuff like that coming. Like it's about 30 times a second. So it's like really, really fast. So you have to sort of throttle it down to sort of make it really work. Cool. So by the way, I just... it's like a 15-minute thing, so I wanted to make sure I cover the whole range. So it'll be nice if you can ask the questions later, right at the end. And I've sort of planned for it, I guess. There is a huge ecosystem around Node and... and Rdrone. I think pretty much no other community has... language has this many Node modules or modules for handling Drone. Like Drone Stream is the one that I used to do the video. Like do the decoding stuff. Copterface is really cool. I really wanted to try that for this demo, but basically what it does is it sort of moves the drone around and uses OpenCV. Have you used OpenCV? Yeah, basically use OpenCV to sort of detect faces. And there are lots of cool uses you can do with that. Cool. Just one last thing before I get on to something else. This is Nodecopter. Have you heard of Nodecopter? Oh, really cool. So if somebody had... a couple of people had drones, so we should sort of plan for a Nodecopter in Bangalore or something. Basically it's an event where a bunch of geeks get together, they get like 10 drones and a day to hack on it and do interesting software with it. Like I think lots of new things have... the modules and stuff have come out of Nodecopter events. I think it's probably based out of... like Felix is based out of Berlin and Berlin is probably the hub for all this Nodecopter stuff. So if you want, we should try something like that. So context switch. So let me... before talking about Turtle Drone, I'll talk about how it sort of came about. So I go play with the drone like in the badminton court and kids come over there and like they're obviously interested in seeing what this thing is. So I've been teaching them programming a little bit, like using Rocket and stuff, but this seemed like a really cool way of teaching programming. How many of you have learned... like Logo was your first programming language? Wow. That's super. So I'm pretty sure all of them, all of you guys are aware of Turtle Graphics. So we started doing Turtle Graphics with them. Turtle Graphics is a really simple API. It's based out of Logo, but it has forward turn repeat. That's pretty much the stuff that we do. So what we did is basically built the Turtle Graphics API onto drone. So it actually does the movement of the... as you actually speak. So it may look really simple. For people who've done Turtle Graphics, you can do actually really, really complicated stuff with Turtle Graphics. Like, yeah, crazy. I mean, like, I can show... if I had time, I'd probably show you what all can be done with that sort of a thing. But basically, we implemented this sort of thing so that we can play around. And so actually, the reason kids wanted it was they wanted to raise this. And it turns and stuff, right? So you have to pre-program the ability to turn at the end of the room and stuff like that. So that's why this sort of project started. I actually committed it yesterday to GitHub. So still now it's been on my laptop. Cool. So let me... so I'd probably show you a demo quickly. Basically, what we planned to do was to sort of do HelloJ Spoo with the drone API. Actually do the movement along with it. I'll see, like, there isn't enough space and the light isn't that good to sort of do it precisely, and probably my code is buggy as well. So let's see if it works. It's actually... Could you get the lights on? Anyone? Hello! It's cool. I mean, I have an excuse for that. So basically, the way it was implemented was it does it horizontally, actually draws it horizontally. But it's actually not very visible in this sort of a thing. So we actually switched it to make it vertical. So let's do that. Oh, you can't see? Give me just one second. Just to be safe, I think I tried this morning. It sort of flew back in there. So I'll keep it... Okay, it's trying to do a J by the way. And it's stuck. No, no, it's not battery though. So probably you can see the J and the S. It sort of messed up because all the monkeying around. But basically that's sort of what I was trying to do. Cool. Sorry, it sort of works in large places where you can just... Yeah, we should definitely do it outside. Okay, so it's at this place. There are lots of... I'm sort of winding down now. There are lots of interesting ideas that you can build with this sort of a thing. And hackers want it. I mean, if you're interested, let's team up sometime. Like there are lots of interesting ideas. I mean, some of them have been around street sentries and like having games with kids that actually play one of the participants sort of like don't allow this guy to cross this line or something like that. So there are lots of interesting games. If you have time, feel free to hack on it and let me know. So I'm shrieks. Thanks. I'm not finished yet. I have one more other thing that I'd like you guys to play when we have questions, which is what I'll do is set up this as a node server on my machine. So if you have telnet, you can just connect to it and sort of... So I guess people around here should get to the odd-rone network, telnet to it and run those commands. Go easy. Yes, let me start the server up and... So you need to be on the odd-rone network. Connect to my IP address, which is 192.168.1.4.9999. I guess I can show you an example. Yeah, so these are the commands you can do. Be careful of the animate because it needs a lot of space. Somebody did a land, huh? So this is the stuff like I was talking about. It buffers and the command. So it'll start executing it almost immediately. So basically the way API works, it's like it's incremental. You have to keep sending the same command over and over again for it to do. If you want to make it go up, you have to keep sending up, up, up, up. The 80 commands that... So if something else comes, I'm sending that 192.164.168. You have to be on the odd-rone network. Sure, I can take questions. Is there an API to check if the battery is low or something? Yes, so actually I maybe didn't show it. At the bottom of it, if you can see, it's actually showing a lot of information. It's static now because it's not getting any more information, but it's giving you pretty much everything. There's a lot of data, more data than you can... And how high can it go? I've pushed it to 40 sort of meters, basically three-story high building. Maybe around that sort of range. So say what happens when you're on the... But I know that it can go till 50 and 60. It's the Wi-Fi range that sort of stops how far it can go. Yeah, it was about to ask the same thing. Did it happen? So it was on the second floor and suddenly it went off the Wi-Fi range and you had to wait the battery to go down so that it would come down or something like that? No, so... So there are cases where it just goes away and you have to wait for the battery to come down. There are other things you can use to sort of bring it down. All these apps that I've written basically have control C which will land it. So you sort of have to build that into this thing. When you go out of control, set time out. Is there a way to plug in Johnny-Fi or something like that to this? There is this Johnny-Fi, which is for the Raspberry Pi and things like that and interface, probably. I don't know. We'll take it off. Thank you. Okay, you guys can obviously bug him outside. I expect he's going to be taking a bunch of questions and demos. Big, big hand for Shreya Khan. What are you getting at, everybody?