Anyone using MS Robotics Studio, on a DIY bot?
rwgast_logicdesign
Posts: 1,464
So another forum member told me he was using this a while back. and I went and checked it out, found out its only for vista and above. I then ended up with an older version which works with XP. I installed it checked it out and was just totally confused so I I uninstalled it and forgot about it. Well last night I was reading a bunch off the off site articles parallax has, and one was about MSRDS.
So from what I understand you basically program your micro to drive all the hardware on your bot, then you implement a protocall that talks to an ms robotics service running on your computer. The communications can be done via WiFi, BT, the web, whatever from what it sounds like.
Now I know theres some custom firmware out there to have RDS talk to a BOE Bot, then there is of course the eddy which uses RDS. But what I was wondering and couldn't find examples on is how would one get RDS working on a homeade piece of hardware? I was hoping I could find a simple Propeller or Arduino or even BS2 demo, that just implements a bare bones service that allows you to control an h-bridge. I was hoping that id find a whole little package, including firmware and the custom RDS service.
RDS seems like a powerful tool, im amazed no one has somehow conected it to at the least a WiFi Arduino (king of the hobby scene) running a simple l293 hbridge, with vary basic services. MS has really good documentation, I wish all development tools had an MSDN equivalent, Maybe there alot of details in the docs about how to write a simple service and piece of firmware, the problem is the sweet is so overwhelming I wouldnt even know where to start looking. The other issue is, is it worth the time to learn? Like I said I dont see any simple Arduino bots using it, everything has been done on an Arduino, so maybe its just not as great of a tool as I imagine?
The reason I bring this up is I had a similar idea to write custom software in Processing to control my bot and do heavy computations PC Side. Its a very basic easy thing to do, but RDS is already out there. Not only that but ive been looking in to some pretty intense localization algorithms and im sure using something like RDS would make implementing those things a drag and drop affair.
I still have a lot to learn being rather new to electronics, and Ive never taken trig, only half a pre calc class. So any tools that will save me from having to study math books along with hardware/programming books are A ok with me . Being a mostly Hi Level programmer most of my life working with GUI and Databases, I had never really had to learn much about writing effiecent algorithms and IDK about anyone else but hardcore recursion causes me to bang my head on the wall, I once read a chapter on a sorting algorithm and it took me an hour of re reading the code over and over to follow all the recursion and understtod how it worked. Im starting to realize there will be a lot more of this stuff in robotics!
So from what I understand you basically program your micro to drive all the hardware on your bot, then you implement a protocall that talks to an ms robotics service running on your computer. The communications can be done via WiFi, BT, the web, whatever from what it sounds like.
Now I know theres some custom firmware out there to have RDS talk to a BOE Bot, then there is of course the eddy which uses RDS. But what I was wondering and couldn't find examples on is how would one get RDS working on a homeade piece of hardware? I was hoping I could find a simple Propeller or Arduino or even BS2 demo, that just implements a bare bones service that allows you to control an h-bridge. I was hoping that id find a whole little package, including firmware and the custom RDS service.
RDS seems like a powerful tool, im amazed no one has somehow conected it to at the least a WiFi Arduino (king of the hobby scene) running a simple l293 hbridge, with vary basic services. MS has really good documentation, I wish all development tools had an MSDN equivalent, Maybe there alot of details in the docs about how to write a simple service and piece of firmware, the problem is the sweet is so overwhelming I wouldnt even know where to start looking. The other issue is, is it worth the time to learn? Like I said I dont see any simple Arduino bots using it, everything has been done on an Arduino, so maybe its just not as great of a tool as I imagine?
The reason I bring this up is I had a similar idea to write custom software in Processing to control my bot and do heavy computations PC Side. Its a very basic easy thing to do, but RDS is already out there. Not only that but ive been looking in to some pretty intense localization algorithms and im sure using something like RDS would make implementing those things a drag and drop affair.
I still have a lot to learn being rather new to electronics, and Ive never taken trig, only half a pre calc class. So any tools that will save me from having to study math books along with hardware/programming books are A ok with me . Being a mostly Hi Level programmer most of my life working with GUI and Databases, I had never really had to learn much about writing effiecent algorithms and IDK about anyone else but hardcore recursion causes me to bang my head on the wall, I once read a chapter on a sorting algorithm and it took me an hour of re reading the code over and over to follow all the recursion and understtod how it worked. Im starting to realize there will be a lot more of this stuff in robotics!
Comments
Always do a full search before unneccesarily creating a new thread. The info is out there waiting for you.
http://forums.parallax.com/showthread.php/100177-Boe-Bot-Robot-for-Microsoft-Robotics-Studio-with-a-Spin-Stamp-Microcontroller?highlight=ms+robotic+studio
Its still a bit more of a complicated example than just a basic blink an LED example or switch a motor control pin hi.
Most of the reason I had started this thread was actually to get some non-review fluffy type opinions about MSRDS. I have a friend who swears by ROS (Robot oOS) its a little Open Source Linuxprogram that allows you to plug in a bunch of python files, used the same way as MSRDS At first glance it very easy to use, if you know Linux and python, its almost all command line. I hadn't heard of MSRDS till i told Andy (nwcctv) about an ROS project my bud had in the works and he suggested I look at MSRDS.
Like I said the thing looks a little daunting, with its enterprise style flow charts and simulations. No where near as easy as plugging a python file in on the command line! Im sure learning to master it is a huge ordeal, along with learning C# and .net. Is this tool worth the effort, or is it just alot of fancy GUI and docs, with very little substance? Im surprised by the lack of hobby robots I see using it, i mean every little Ardunio/Picaxe bot can benefit from something like MSRDS. The only bots i see using RDS have already had firmware files and windows services programmed for them by there manufacturer, bots like, eddie, boe, lego, roomba. This leads me to believe RDS is either mostly Hype and impractical, or too hard to use for most people, but maybe its just one of those goodies people dont know a lot about. Just looking for some opinions, experiences, and good conversation.
With so many good and not so good tools out there it gets hard to figure out whats worth it and whats not, there's no time to learn, or even test them all! I mean we have Robot Basic. ROS, MSRDS and that's only the tip of the iceberg. I would like to see a micro controller or a robot interface program like the ones above that implement LISP, although about as commonly used as FOURTH or ADA these days, it is still designed specifically as a Hi Level way to solve AI problems. I wonder if they ever threw some motors on one of the old M.I.T LISP machines and called it a robot
I will have to dig up their web site. They have downloads available and also have tutorials that will walk you through step by step. I will say that you will be happier with the newer version. You also will need Visual Studio. MSRS is VERY powerful, but it is also quite a learning curve.
Why do you think the newer version is better? In reality ig I got a cheap PCI video card and 20 bucks in ram, I could run windows 7. The biggest issue is my intel graphics chipset is not supported, so I cant change my monitors resalution.
Since you have to program your micro to drive all the hardware on your bot anyway, why don't you start there. Other than using the P.C. to pick out faces using a cam; there is not much use for a PC running a robot. For me I think it would take to much of my time to learn all that just to run a robot who knows someones face. If you plan it out, there really isn't that much math in running a robot.
Al
http://ocw.mit.edu/courses/aeronautics-and-astronautics/16-412j-cognitive-robotics-spring-2005/projects/1aslam_blas_repo.pdf
Im acually looking at using my phone to stream video to my PC, like an IPCam to have robo realm do image processing, that is totally unrelated to the above article. Having a bot randomly drive around avoiding objects, can be done with any modern micro. A propeller can acually do some pretty darn cool stuff on its own, like simple machine vision, but it can only do very basic stuff in when it comes to more complex things.
I do have full intention of programming my micro first, and writing all the hardware driver, and implementing odometery on the micro, maybe even interial navigation some day. But at some point one wants to implement, AI via machine learning/neural networks, do hardcore accurate navigation, sound recognition and speech. These things arent so easy to do with a micro and would require multiple propellers or for example a 60 dollar emic 2, a 100 dollar cmu cam etc, etc, At this point it is cheaper to just start using a powerfull computer to save money, or using a PC over a network. A better solution to me would be to strap a rasberry pi on the thing with a camera! This has always been my goal for the future. But the idea of something like MSRDS or ROS intrigues me also, as it allows for the massive computing power of a network of computers to solve complex problems. Im not saying I will ever do this but imagine this, but machine vision is a perfect example of scaleabilty. Solution A, cmucam, or prop with cmos cam, with this we can analyze blobs for color detection and motion tracking, simple problems, this is possible at low resolutions and low expectations in speed. Solution 2 RasPI, we can now use openCV and and probably do edge detection at 5fps 640x480 when the camera module is available . Solution #3 a laptop, we just got up to 20fps or so at 800x600. Solution #4 Streaming 1080p video over the network to a cluster of 20 PCs, now we can run multiple openCV/roborealm filters on hi res video at massive frame rates.
I know machine vision is a bad example, because you mentioned it would be the only reason for a PC. The reason I chose it is I just cant think of anything specific that could make use of a hi end cluster setup. But the point is your robot can do as complex of tasks as you want or as simple tasks as you want, a micro, even prop or ARM cant always do everything! In this day and age of machine learning and complex AI systems, the solution to the problem may require a massive amount of RAW DMIPS, or maybe the massive parallelism of an FPGA.
I do agree using MSRDS or RasnerryPI's to control a robot whos main sensors are push buttons on the bumper, is well overkill. But it is also good and simple way to teach your self to use something like MSRDS to help you expand in to the bigger picture of robotics experimentation. My interest has always been navigation whos primary sensor is a DIY M.I.T Cantanna RADAR that can do hi res imaging. This is not something im ready to put together tommorow, but when I get there ill need more than the biggest baddest micro out, this is actually another application which may scale well to something as large as a cluster of PCs, so the doppler info can be imaged as quickly as possible for the bot to make use of.
Simultaneous localization & mapping algorithm?
Time to manage expectations. Build your Stingray, try the figure 8 challenge, and THEN we can talk. Until then, all this chatter is merely uninformed speculation.
But its ok to have a goal/dream in mind, no reason to stop at figure 8s and dead reckoning, that would make robotics very boring! On a plus note I think my goal is fairly achievable with hard work, and has been done before, im not shooting to make my "robot learn and think" or some nuts thing like that! I actually found this on parallax's site and figured it would be the best place to start trying to do room mapping, after I have a good handle on odometry, and basic navigation. Its a boebot with a wireless using a pc do do very very simple mapping.. quick nice read if you've never seen it
http://www.parallax.com/Portals/0/Downloads/docs/article/RobotMappingLauraWong.pdf
Edit: I meant to say yes I have used it with a robot somewhere in there hehe...
Thats was soooo confusing.... LOL. Is version 4 a beast as in good, or bloated. Are you saying you have used version 4 and liked it, or that you wouldnt consider running any version? Reading your post 3 more times I think your saying if I want to do SLAM with a Kinetic MSRDS will make my life easy but other than that you would never use it?
Probably true. In recent weeks, I've drained my "helpful" tanks in numerous attempts to seriously answer rwgast's robotics questions with hopes of encouraging him to actually build his first robot. Never happened, AFAIK. Yet his postings have accelerated and became more fanciful and less focused (from "attaching a wheel" to "simultaneous localization & mapping algorithms"), so I'll just keep my opinions to myself and wish him the best.
However;
If the discussions are not related to a particular project, they really don't advance a project.
I know about procrastination involved in starting a new or different project.
Currently, I'm working on my first differential platform using plywood wheels and Chevy Tahoe wiper motors
It took me a few weeks to finally start building my wheels.
Mr Gast
It will always be helpful to define what your end goal is.
erco and I are trying to tell rwgast_logicdesign the same thing. Build something 1st then play with it and learn.
"Probably true. In recent weeks, I've drained my "helpful" tanks in numerous attempts to seriously answer rwgast's robotics questions with hopes of encouraging him to actually build his first robot. Never happened, AFAIK. Yet his postings have accelerated and became more fanciful and less focused (from "attaching a wheel" to "simultaneous localization & mapping algorithms"), so I'll just keep my opinions to myself and wish him the
best."
"Thats all depends, I use to think like that but its definately not true... as ive mentioned one of my biggest goals is navigation, and mapping, this uses a ton of trig and physics. Give this a browse, Simultaneous Localization and Mapping algorithm.
http://ocw.mit.edu/courses/aeronauti..._blas_repo.pdf"
I looked at it. Like I said before; if you plan it out, there really isn't that much math in running a robot. The more you have the harder you are going to make the problem!
Want the robot to find it's way around the house. Have it run close to wall; have what you are using for a range finder point at the wall. You will know if you are going too far off the path. Have the range finder point forward. You know it's 10 ft until you would hit the wall. Your robot counts your wheel turns. If your range finder "see" something way before 10 ft you know it's an object.
Ex: 2 If the robot moves all the way to the wall and the wheel counter says it's only 9'10"
add to the wheel counter so it says 10 ft.
See no hard math.
Want to put a compass on your robot a, micro can handle it.
What we are both trying to say is, it's time to get some hands on.
Al
I do admit I have a tendency to ask a lot of questions, maybe be a bit OCD on the research, and ive probably even given up on perfectly good things I had going due to perfectionism. Some of the questions I ask like the DIY encoder thing are just true questions im hoping to learn a bit about from a practical side, since ive researched the theory. I ask these questions number 1, it will help benefit me when I build my own, number 2 I just like talking about stuff with people I like hearing what people have to say its interesting.
I read up on MSRDS and thought it sounded super neat Googled the heck out if and it peaked my curiosity I couldn't find very many from scratch projects using it. I know there are people on this forum like NWCCTV who use it, I figured instead of writing him an e mail i would would bait him with a post, this way if anyone else is using it, they can chime in too, and anyone who is curious about it can read it.
I never claim I have done any of this stuff or that I can to do it. Heck as far as MSRDS I dont even claim to want to use it, I just wanted to start a conversation to talk about it, because it sounds like it could be potentially interesting. Heck maybe by the end of the thread I would be convinced its as good as chocolate cake, and I would know this is something I really want to invest time in learning, its not a gimmick. I don't think using MSRDS is any kind of huge challenge even for a robotics NEWB. If anything it could make my life easier, I would be writing code on the prop to parse serial data and call Obex objects. If you bust through the learning curb of MSRDS you can write everything in familiar PC languages and not worry about any of the low level tasks going on, on the micro.
Next on to the grand mapping idea of mine. Like I said I know its not easy, I know it wont be anytime soon. I know I may not even be able to achieve it myself I think it would make a great open group project for anyone interested in mapping, I know there are a lot of people out there who would like to be able to do solid room mapping, Duane said its one of his goals. I also made the comments about slam in passing as to why encoders are so important to me, if I eventually want to do anything cool like this I will need to build the best encoder I can, and I will need to learn as much about odometry and dead reckoning as I can. Heck Ill be the first to say that maybe it will take me a year till I am happy with just my odmetery skills. I wasn't asking how to do SLAM, or any kind of basic mapping. Once again I was just throwing something out there to see what people may say about the idea. Its a cool topic im interested to see if maybe someone else out there was already doing it.
As ive said a few times before, my inspiration in to robotics almost had nothing at all to do with robots... I want to eventually sit down and do the MIT open course ware on continuous wave doppler radar systems. These things are super neat and can even do super hi resolution imaging and height mapping, There are quite a few hobbyist who have built these systems. I mean the kind of data you can pull back from these guys make 2 grand laser scanners look pitiful and im sure if you ran the images they can produce in to something like openCV you could do some awesome awesome stuff. Anyways I thought about building one but then I thought hey this is something that would be awesome on a rolling platform, that why I started learning about robots. As I found out more about what goes in to a rolling platform I realized that I needed to learn quite a bit before I would accomplish my dream. But this is still the final goal... maybe by the time I get to it technology will be way better, or at least cheaper.
I understand you have to walk before you can crawl, believe me. But it is also ok to have long term goals, and it is ok to be so excited about that stuff you want to talk about it and see what other people have to say about it. Unfourtantely I don't have anyone to talk to about this kind of stuff these days, besides you guys. I know that these ideas you say are "fanciful" do seem grandiose, but there not impossible they have all been done and most of them have a lot of documentation explaining how they have been done. A "fanciful" idea would be something like making a robot truly "think" and take action based on "emotions" it remembers from past experiences..... maybe making a ridiculously massive FPGA stack like the "Big Brain" to solve neural networks.... These are the kind of ideas that are impossible or just plain impractical and a waste of time.
The thing is I do walk away learning from what ive been told, for example, the encoder thread helped me make a few decisions I was sketchy on, while at the same time I learned that not all Modulated IR Receivers work with continuous pulsing. You know I think ive come up with a pretty decent and quite power and motor control system for my bot, thanks to getting a bit of help with inductor layout and battery charging, these things can still be improved on but there a lot better than using l298 Chinese motor controllers and non rechargeable alkaline batteries.
I respect you a lot and I think your a pretty smart guy, one of the top guys on this forum as far as building bots goes. Basically ill sum it up, i know sometimes I may ask to many questions, and maybe you think your answers go anywhere and your wasting your time, but that is in no way true at all.
On that not I will reiterate its just fun to have discussions about this kind of stuff, and im not an engineering student, my girlfriend surely doesn't care...
Version 4 is a beast as in system requirements. I have not used it so I shouldn't comment on it. I think it's mostly due to the 'Virtual Lab'. It just doesn't seem like something you'd run onboard a robot. Maybe if you want to develop large robots or self driving cars.
Sure you don't need to run the laptop and RDS onboard the robot but then you lose the Kinect which to me is only thing worth using RDS for.
As far as SLAM goes RDS is awesome, minus the above, you'll be up and running in minutes. But, if you want to do that, you'll need a laptop on your robot to use the Kinect and then you might start to feel as I did. SLAM is great but do you really need to strap a laptop with a dual core, 2+GB RAM, 10GB HDD space, decent dx9 video hardware, and 2+ USB channels to a robot to do anything but SLAM? Probably not.
I hate to say to not try something that I didn't personally like lol. You should try it, if you have the hardware it won't cost you anything. Kinect sensors are pretty cheap on eBay.
I 3d mapped my entire office using a robotic camera tripod, the files are massive and require lots of number crunching. That could be due to me not fine tuning things as well as they should be. I had way more fun seeing the capabilities of SLAM, no so much implementing them. Suddenly putting 20 PINGs on a robot seemed like a better idea, but again that is because I didn't really need the full wonders of SLAM, nor did I plan on using a Kinect sensor over a laser.
I dug up some SLAM stuffs...
Here's one of my benches SLAM'd -
Here's a better view of the details - http://youtu.be/9p_xERWQIAk
Here's a SLAM spycam spying on a wannabe mad scientist - http://youtu.be/NWIYj2SF_H8
One really cool thing with the Kinect is tracking people and gestures - http://youtu.be/QZ9fOop9zkc (the cool part is how easy it is to code into your program) this was a demo someone wrote.
Very Very Impressive!
I'm guessing the closest you'd get to connecting a Kinect to a microcontroller would be some ARM based Windows system. Kinect is data and bandwidth intensive in my book I wouldn't even want to see the performance you'd get running it on a USB port connected to a micro, if it's even possible.
After digging through some of those videos I'd like to change my stance to- The Kinect and RDS are awesome, you just need the right application, and the price is right for both at least to try out regardless of what building stage you're in.
PrimeSense has a bunch of fuuuuun SDKs too. There's a few videos NSFW we made with it, if ya know what I mean hehe.
The info on MS site. It looks like it supports more features and has longer range, but a lot of people above seem to mention pros and cons so I'd read it thoroughly. The Windows 8 support is interesting, I may play around with that and not sell the highly annoying Windows 8 PC I just built, maybe it is good for something.
I had the oldest 360 version, not even sure if there was a PC version when I was using it.
I did get the Asus version, it was cool looking, nice and small and lightweight, but it didn't work with a lot of the SDKs I had, so I returned it because I didn't need the XBox one to begin with.
I'm not sure what the Asus can do right now, but it seemed to have it's own unique set of SDKs. All of my experiences in this were almost two years ago so it's pretty vague...
To the point of RDS for a DIY bot, it boils down to the question of what you need. I would love a CNC controlled router but I just don't do enough wood work to justify the cost, learning curve and storage space. If you want to do line following with a one pound robot then RDS is probably WAY overkill. If you are creating a critical robotics application that needs distributed processing either for power or redundancy, or if your sensor base is distributed over disparate elements then RDS makes sense. If you are trying your hand at incorporating the Kinect onto a larger robotic platform using VPL in RDS makes sense as it is fairly easy to do, can be done in simulation if you don't have the hardware, and most importantly is free.
If you're looking for a challenge and are a C# programmer then RDS is definitely the way to go!
Todd