Let's Make Robots!

Kbot - now ROSBOT (bad with names)


   Well after a long time away from this hobby I am back again.. I am trying to create a little hobby robot that will hopefully eventually be controlled by voice commands and possibly be able to navigate around my house and possibly pick up small objects (dog toys) based on recognition and move them to a specific location (back to toy box), in an effort to keep the floor clear.. This little guy will be outfitted with a Kinect sensor and using the very powerful ROS(robot operating system) and Arduino it will hopefully be able to leveage SLAM navigation to accomplish these tasks.. Anyway the project is pretty infant at this point.. Step 1 is just to learn a bit about the ROS operating system and possibly make it teleoperated.. 

Step 1 is accomplished.. I was finally able after ALOT of reading and playing able to get the ps3 controller connected into ROS and sending joystick commands.. I was also able to finally program up the arduino to subscribe to those commands and from that create speed and rotation..Next step will be to get the arduino code setup to talk to the Navigation Stack in ROS and then add in the Kinect sensor.. I will keep you posted, so please keep checking back..

Step 2 ... is accomplished now.. I again after a ton of reading and playing have finally got the ROS navigation stack up and running on this unit with the Kinect sensor.. It is really neat to set it up for SLAM and watch the screen while it drives around my living room and builds a map of the place.. I am out of town for a few days but I will do a video when I am back and post it.. There have been a few fairly major hurdles along the way..

Problems encountered:

1. Although the Arduino is my very favorite microcontroller I have had a lot of challenges with the amount and frequency of data required by the ROS stack.. I would be very open to suggestions of ways around this whether it is another type of controller for motor drivers or encoders or maybe a better way to send larger amounts of data faster back to the PC???

2. Encoder error and Kinect sensor data.. I am not sure yet if I will be able to completely solve this.. Bascially I had several problems with the type of wheel I was using(wheel slip) and also the fact that the kinect sensor is blind below about 0.2 meters.. Definitely for the latter a laser range finder would be 1000 times better but I don't believe that will be in my budget anytime soon.. If anyone knows of a cheaper alternative or some DIY thing that they have done by all means please pass along the info..

Step 3 .. IN PROGRESS.. I think I now have to go back and clean up several things. I ordered new wheels with soft rubber to keep them from  slipping and a omni wheel for the back so it rotates smoother.. Then I am going to try and increase the resolution of the encoders since I really have too large of motors for this project but don't want to redo.. This will help keep ROS updated better for the pose of the robot.  Once that is done I will play with some of the settings in ROS a bit to tune the whole thing and let you know what I have run into at that point..

***Step 3 continued***   Ok I did most of what was listed above.. Definitely the soft wheels help alot with odometry.. I actually made so many changes that I can't even remember them all at this point but I will say.. Odometry is a huge part, also when using the navigation stack for the first time you will need to make sure that the map size and resolution is kept LOW to assist with processing power on a standard laptop.. Once I figured out those big hurdles and found a couple of KEY bugs in my arduino sketch and syntax issues in ROS then it was up and running and actually I am really pleased with the performance..

Anyway check out the video and let me know what you think.. Sorry for the crappy lighting I always seem to do these late in the evening with my iphone and they turn out fairly crappy.. I guess I need a videographer.. hehehe..

One other quick note on the arduino stuff.. I purchased a new mega 2560 and a short USB cable.. I can't say for sure if those things were directly related but I have not had any problems with the arduino communication since..

 

Step 4.. Well I will likely play with the settings a bit more and tweak some settings for performance.. After that my goal will be to start to try and implement voice recognition to 'command' the robot into a certain area of room and as well to buld a charging base so it can return to the base when it needs a charge.. Again I will keep everyone posted as I progress.. 

Stay posted if you are interested..

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Hey great robot, 

I have been working on a similar project for some time now, I have a 4wd robot using an arduino and a netbook running ubuntu and ros. I've been having trobuble with getting Ros to work with the kinect. How is rosserial_arduino. Can you explain the software side for me because Im having some trouble with packages and all of the nodes. 

Would you consider posting a screenshot of an rxgraph of your robot in operation?

Great project.  You're really making progress implementing ROS.

One thing I've noticed with a lot of the creanect ROS robots out there--They mount the Kinect further back on the robot to lessen the navigation deadspace.  You can see this on robots like Bilibot, Turtle, and Polyro.

Are you using rosserial_arduino, or some other package? What is your main programming language?

  Thanks for the comments.. Yes I have seen those bots with the kinect farther back and I do agree, I was just in a rush (hehe) to get going on this one.. I am actually debating rebuilding it from the ground up once I am finished all the testing, at that point I will take all those issues into account.. I am using rosserial with a custom message and I am throttling that back to eliminate some of the earlier issues I was having with too much data on the serial port.. If you mean the main programming language in ROS then it is C++ as that seems to be a bit easier for me to understand comming from arduino.. This has been some of my largest challenges, since this is a hobby I have no formal background in programming.. It is all trial, error and reading reading reading.. hehehe

Thank you this is realy help full.

I dont know much about Linux, however, i decided to install the Ubuntu 10.04 beside Windows Vista  in my Laptop. after long time downloading the 680MB it is not compatable with my CPU!!! :( I have to download another vesion (another 680MB).

I started in building My new Robot http://letsmakerobots.com/node/30812  I m using Matlab R2010b for controlling the Arduino.

I also downloaded  RoboRealm last year :) I was working on Robot Arm Project. I think this software is very helpful but i did not have enough time to complete the project. i used the free version.

Good project.

I have just started reading about ROS. The bad news, it is not fully supported for Windows OS. I think better explenation about ROS is needed.

I will start building my new Robot soon. I will use the Arduino Mega2560, hopefully it can be used with ROS.

 

   Yeah I was a bit dissappointed that I had to switch to Ubuntu for ROS, however I think long term that is where we will all likely end up.. The learing curve isn't that bad and both Ubuntu and ROS are amazing products with unlimited potential..

  I actually just purchased a 2560 myself and am awaiting its arrival.  I did have quite a few problems using arduinos with ROS.. The limitations of serial communication on the arduinos are really brought to light when you start running more advanced programs with ROS. With that said I do want to drop a shameless plug for the guys who developed Arduino as it is really an awesome product, and I believe short of video processing with work for almost any robots needs.

  On a final note if you are a windows guy and want to stay with windows and arduino, then you might want to check out RoboRealm. I purchased this a year ago and am still playing with it.. They have some really good modules for working with video whether it is just a cheap webcam or a kinect sensor.. And they interface nicely with arduino. Well worth the money for sure.

WOW, this is a pretty heavy-duty piece of work you have going here.  The robot is a good size and using a serious battery.  I can only imagine what it took to get the wireless remote working with that.  Not a trivial task I am sure.  Right now I am totally fascinated with the microcontrollers, but getting a PC type computer into the game brings some serious horsepower to what you can do with sensor analysis.

Congratulations on getting all of this together.  Not surprised at all you have a 100 hours in already.  Thanks for letting us see it.

 

                     -Hal

 

I think this is exactly what Frits was asking for here. How do you feel about it? I think there'd be a lot of people interested if you could provide details on how to do this.

Have you thought about removing the laptop and communicating wirelsessly with it?

  I read that post and it looks like an awesome idea.. I would love to be apart of that in anyway possible.. I will work away at this platform to start with as some of my final plans involve removing the board from a laptop and trying to see if I can get it to run headless with possibly VNC or something to connect via wireless.. I will try and keep this post as updated and detailed as possible but I am sure it will take a couple of weeks/months to get this one up and working.. Then I will try and possibly contact Frits and see if we can setup some type of group..

  Also I do have a balancing bot that I will be connecting an old ps2 wireless controller to, thus eliminating the laptop. However without the laptop there is no ROS operating system, so then it just becomes an arduino project again which is great (love the product and all that went into it), but I was hoping to do some nav/slam type navigation stuff with this one..