Skip to content

Latest commit

 

History

History
181 lines (130 loc) · 11.5 KB

File metadata and controls

181 lines (130 loc) · 11.5 KB

template: ../media/TB4Template.pptx

Unit 0, Lesson 3: Finding Help

Lesson Objectives

  • Remember that robotics is hard. You will get stuck. You will make mistakes.
  • Being able to quickly find help for your problems is crucial skill.
  • The objective for this lesson is to introduce the resources available for ROS.
  • You should bookmark all of these websites in your browser.

ROS Discourse

Discourse

  • ROS Discourse is the official ROS discussion forum.
  • ROS Discourse is intended for community announcements and discussion.
    • ROS Discourse should not be used for specific development questions.
  • On ROS Discourse you find.
    • Announcements of new packages and package releases.
    • Announcements of ROS releases and updates.
    • Technical discussions by package developers.
    • Event announcements.
    • Regular news updates.
    • Meet other ROS developers and package maintainers.

ROS 2 Documentation

ROS 2 Documentation

  • The ROS 2 Docs are the official ROS documentation pages.
  • The ROS 2 Docs provide detailed API level documentation, tutorials, and examples.
  • This is your best bet for comprehensive ROS information.
  • Make sure you are viewing the correct documentation for your ROS version.
  • Many other packages have documentation under the *.ros.org umbrella org.
  • Some packages maintain their own documentation from their own repository or website (e.g. SMACC).
  • Other packages may be linked to from within the ROS 2 docs. These are available under related projects.

ROS Answers

ROS Answers

  • ROS Answers are the official ROS Q&A Website.
  • ROS Answers is a Q&A website where users post questions that are answered by the community
  • Fun fact: ROS Answers was started roughly at the same time as Stack Overflow!
  • Make sure to tag your question appropriately.
  • Please search for your question before asking it!
  • ROS Answers is maintained by volunteers and community members, please be considerate!
  • The ROS 2 doctor CLI app can be used to quickly generate a report about your system. We'll cover this function in later classes.

Help Others Help You

Binary

  • Writing a good question is a critical to getting a good response.
  • Generally speaking, the shorter the question, the less likely it is to be answered.
  • Longer, more complete questions, that provide all the necessary information, allow others to more easily help you.
  • A good ROS question should contain:
    • The body of question with as much detail as possible.
    • General details about your system, such as host operating system, the version of ROS, and what packages you have installed.
    • The error message in its entirety. This should be quoted text and not a screenshot,
    • References to documentation, resources, and other questions you have tried but did not work.
  • Distinguish between a discussion questions, poorly scoped questions, and legitimate errors and issues.
    • A discussion question is one where there is no single correct answer.
      • Questions like, "What is the best...", or "How should I make X?" are discussion questions.
    • A poorly scoped question is one where the response could be multiple paragraphs long. These sort of questions need to broken down into smaller parts.
      • Questions like, "How do I build a delta robot in ROS?" or "How do I build a perception pipeline to find X?" are poorly scoped.
    • Legitimate errors and issues are usually easily described.
      • Questions like, "When I do X, Y error occurs" or "When I use X, I expect Y but get Z, why is this?"

ROS Index

ROS Index

  • ROS Index is a non-exhaustive list of ROS packages.
  • ROS Index will allow you to search packages by name and see relevant information about the supported distros, source repositories, documentation, and lots of other information.
  • ROS Index is a great place to find out about commonly used packages.
  • Most common packages are available on ROS index and its search features are quite helpful.

ROS Wiki

ROS Wiki

  • The ROS Wiki is a collection of primarily ROS 1 tutorials and resources.
  • While the wiki is primarily ROS 1 resources it still highly useful for new ROS 2 users.
  • We suggest browsing the wiki but heed its advice with a grain of salt!

TurtleBot Manuals & Other Resources

OAK-D Pro

Ignition / Gazebo Resources

Ignition Fortress

  • Ignition Gazebo has number of resources that are similar to ROS.
  • GazeboSim.org -- Main landing page for Ignition.
  • GazeboSim Community -- Similar to ROS Discourse. The GazeboSim Community is for announcements and discussion.
  • Answers.gazebosim.org -- Q&A website for GazeboSim.
  • Ignition Fuel -- Drag and drop models into a Gazebo Simulation! If you are trying to create a rich Ignition environment this is a great resource.
  • Open Robotics Vimeo -- Lots of Vimeo tutorials for ROS.

Other Official ROS Resources

ROS World

Primary Github Organizations

Octocat

  • ROS and Ignition are spread over a variety of Github organizations. Here are just a few of them.
  • ROS Infrastructure -- Tools that support ROS but aren't ROS (websites, buildfarm, tools, etc).
  • ROS 2 -- ROS 2 Core Packages
  • ROS Perception Packages -- Perception libraries for ROS 1 and ROS 2
  • TurtleBot -- TurtleBot tutorials and documentation.
  • Ignition on Github -- Ignition source code.
  • GazeboSim on Github -- Gazebo source code.
  • OpenRMF on Github -- RMF is a layer on top of ROS and Ignition for multi-robot control.
  • If you want to look for new packages, try the #ROS2 and #ROS topics on Github!

"Unofficial" Resources

StackOverflow

Thoughts on Problem Solving

Problem Solving

  • Debugging is an important skill for software developers but it takes years to master.
  • We recommend the three then me approach to debugging, where the me refers to another person.
  • Broadly, this means you should try using at least three resources before asking another human for help.
  • For example, if you encounter an error building a ROS package you should first:
    • Search for the error using a search engine and look at the results.
    • Compare the offending code against its API documentation.
    • Search Github for the function and see how others use it.
    • If none of these approaches are fruitful, ask another person or post your question to a forum.
  • One often overlooked developer resource are unit tests; for a given library the unit tests will show the function being used correctly.
  • Searching Github for a function call is often another way to find useful examples.
  • Good git practice also helps! You should compile, test, and commit your code often, generally every time you write a function.
    • If you encounter an error that you can't solve use git stash to return to your last commit and systematically eliminate possible causes.