Hi Anis,
I'm not sure how to express this through your form, but something that's badly needed from Clearpath's perspective is a modern take on what the parts are which make up a typical ROS robot. This is beyond the "basics" of building a workspace, creating publishers and subscribers, launching things, etc, but it's not as high-level as specific packages like navigation, moveit, etc.
Obviously there's a lot of variability out there, but if someone were to build a robot today, from scratch, to use ROS, they'd ask some fundamental questions like:
- How do I build a URDF for my robot? How do I name the links and joints? Should I have a base_footprint? Should I use xacro?
- What's the deal with robot_state_publisher, and what's the relationship between the joint_states topic and my TF tree?
- Where do the odom and map frames come from? Should I always expect them to be there, or do they come and go depending what's running? How do I handle REP-105 if my robot has a GPS receiver? What about if it has an integrated GPS-INS?
- Now that I have a URDF, how do I bring my robot up in Gazebo? How do I give my simulated robot an IMU, LIDAR, and camera?
- How does my robot know where it is? What is localization, and what topics are consumed and produced by it?
- For a "typical" encoders + imu + LIDAR configuration, what topics should I expect to see, where, and on what frequencies?
- How do I set up my robot to use ros_control and the existing suite of available controllers? Should I have a real-time control loop? If so, how do I set that up in Ubuntu?
- How should I set up ROS to launch automatically when I turn on my robot? How do I manage logs, node output, and bag files?
There's been discussion in the past about specifying some standards for this kind of thing, possibly in a REP, but a great first step would be a book or other resource which presented this material in an approachable, linear kind of way.
Mike