Software Overview - Pitt-RAS/iarc7_common GitHub Wiki
Instructions to install and set up our software can be found on the iarc7_common README.
Github Basics
Basic info on how to use git and GitHub can be found in the club's general resources document here. A good tutorial if you're just getting started is this one. We do all of our stuff for IARC on branches, so even if you know how to use git but haven't used branches much, it would be good to take a look at the part of that tutorial that goes through making a branch and a pull request.
List of Repositories
All of the repositories in the Pitt-RAS organization that start with iarc7_
belong to the IARC team, along with the cleanflight repository. If you're a member of the Pitt-RAS organization, our repositories are all owned by the IARC7-2017 team.
ROS Basics
To control the drone, we will be utilizing ROS (Robot Operating System). ROS provides a framework to abstract different tasks for robot control and allow for easy code reuse. It accomplishes this by organizing code into Nodes and grouping them into packages. Each node performs a specific task and each package groups related nodes. If you would like to work on the software for IARC and haven't used ROS before, the ROS tutorials are a great place to start.
Since having a lot of isolated nodes will not do us much good, nodes need to communicate. The communicating nodes do not necessarily need to be running on the same machine. ROS allows nodes to communicate through topics. A topic is a channel which nodes can send messages along. To receive messages from a certain topic nodes subscribe to that topic, and vice versa to send messages to a certain topic nodes will publish to that topic. As long as the name is known, any node can publish and subscribe to any topic. Multiple nodes can publish and subscribe to the same topic. Similarly, a single node can publish and subscribe multiple topics. All topics and messages are a specific type.
For more information on these topics you can click the ROS line in the first link to visit the ROS wiki, where they have explanations and tutorials. Additionally, I found the tutorial here to very helpful. The next videos in the series introduce the basics for C++ and Python.
Transforms
ROS has a transform framework which lets you publish and use data about where different parts of your robot are in relation to each other. For more information, look here. Here's our TF tree (i.e. all the coordinate frames we have, who's publishing them, and some stats about how fast they get published:
Nodes
This section is an explanation of the Nodes found in the Nodes Document.
Here's what our nodes currently look like (ellipses are nodes, arrows are topics):