@schornakj yeah of course! The robotics competition that I’m competing in called VEX Robotics. Each year there is a different game on a standardized 12 by 12 foot field. There are game objects that the robot manipulates to score points. There are two teams controlling two robots and whichever team has the most points at the end wins.
This year’s game is to score balls in the cylinder goals for points. Here is a video of the field in gazebo. This is an example of a robot that another team made.
In my diagram above, there are five nodes marked by color. The controller node provides the default state of all the objects in the simulation. This is mainly used at the start of the runtime to take in or to reset the objects position data. This system has to factor in using a real (robot package) or fake robot (simulation package). It also needs to take in data from either of the packages, process the data, and feed out the data to either of the packages. To keep that more simple than it sounds, the controller publishes an Int for all of the nodes to determine what state the system is in: simulation, robot, or resetting the data. There is also a bool that when true, it will stop the entire system for safety.
The detection package’s purpose is to take the encoder, IMU, pointcloud, object position data, etc and convert it so that there is one central node for querying and updating the positions of all the objects.
The driver package’s purpose is to take the state of all the objects around it, decide what the robot should do, and then actually controls the robot. It also makes sure that while the robot is set to complete a goal, it has conditions based off of the feedback on whether to change the goal or continue with the current goal. This part of the system is the part that I have spent the least amount of time on. I need to come up with a set of Actions that will use the drive, the ball intake, and other systems asynchronously while still ensuring that the odometry sensors update and it continues on it’s current task. I have gotten the ROS navigation stack working, by setting a goal pose in RVIZ, but I haven’t found a good way to use something like actionlib with the navstack and my code for that (if it’s even necessary…).
I hope that’s enough background information.