ROS is definitely the way to go. Aside from the plethora of existing libraries for preexisting robots, its the 'industry-standard' for personal robots. Plus, its really quite easy to learn, well-documented and capable of really impressive things.
I have had nothing but problems with ROS. I've tried it with Lego Mindstorms and with a Turtlebot. Both experiences were painful beyond words.
I think the problems with ROS stem from two things:
1) Complexity - way too much complexity for the really simple stuff
2) Change - code samples and documentation you find on the web don't always work when you think they should. I've wasted hours getting simple stuff to work.
I strongly suggestion you think about why you need a robotics OS. If all you want is a library to move motors around, you don't need ROS or anything fancy. You don't need it if you just want to interface with a Kinect. Just use individual libraries and write the glue code.