is fully open source (part of the software for some commercial robots isn’t)
is high quality (the quality of the software linked from that page really differs a lot)
provides a Gazebo simulation of the robot, so you can actually run the parts of the software that don’t directly interface hardware
One example of a robot that fits those criteria (AFAIK) is the Care-O-Bot 3 , but it’s as extensive as the PR2. Can you be more specific about what parts you want to learn first? Obviously, the “more involved” a robot is, the more extensive the software. Some general categories are:
controlling motors – you want a robot that uses the ros_control stack (can be used both for mobile bases and arms)
moving a robot base, localization, 2D navigation, obstacle avoidance, SLAM – you probably only need to look at a mobile base with a 2D laser scanner and no robot arm
moving a robot arm, manipulation, grasp planning, collision avoidance – you want to look at a mobile arm that has a moveit config, or perhaps at a full mobile manipulator
The Turtlebot stack is a good starting point. Other robot software stacks may have proprietary closed-source drivers or controllers with an open source user-facing API, but I believe Turtlebot is almost completely open, and it has great ROS and Gazebo support:
It even has some minimal manipulation software, although I wouldn’t think of the Turtlebot arm attachment as a canonical example of a ROS robot with manipulation capabilities…
As Shawn said, the Rethink Baxter SDK is extensive and well-documented. The Github org is:
Martin makes several great points. You could try looking at these resources for some of the missing categories:
humanoid robotics: