There are a number of bug fixes (see the commit history). The biggest additions are RosBridge connections and throttling of topics, and an update to the GUI.
RosBridge and Throttling
@wfvining has written example code included with this release that demonstrates how to setup recruitment using RosBridge. Please feel free to ask questions about how this works on the forums. @abbypribis our high school intern (and now incoming freshman at UNM) has put a lot of work into this code, so thanks to her!
We also enabled topic throttling. This sets an upper limit on the number of messages that a topic can broadcast. This prevents the cameras from saturating the network. For example. the camera rate from rover to GUI is capped at 5 FPS by default.
Four years ago, when we first wrote the GUI with its fixed height of 800 pixels the number one complaint we got was that it was too big to fit on a chrome book screen. Now with 2 and 4K laptop screens the GUI looks like a postage stamp. @Antonio-Griego with a lot of hard work retrofit the GUI so it is resizable and scales to whatever resolution screen you have. Thank you Antonio!
As usual we will fix bugs as we come across them but we will not implement any new features in the base code from now until after the competition.
Transient bug where the GUI will crash if multiple checkboxes are checked in the map. Issue #207.
Transient bug where a Swarmie gets into a state where it will not drop off a cube it is carrying when it sees the collection zone.
See https://github.com/BCLab-UNM/SwarmBaseCode-ROS/issues for a full list of known issues and to add to this list.
Thanks to all the Swarmathon students and mentors who have submitted issues and pull requests! Your help is much appreciated.
Please report any issues here on GitHub or on the forums at nasaswarmathon.com.
This is the beta release for the 2019 Swarmathon competition.
- New Scalable GUI
- Utilize rosbridge and roslibjs to remove laptop as a single point of failure
- Also includes changes that reduce data sent over the network by throttling the number of sensor readings that are sent back to the GUI to one message per second for the camera, IMU, and ultrasounds.
The latest release of Gazebo introduced a bug in which the gazebo client and server use the same node name. This causes the simulation to fail.
The workaround is to change the default node name on creation so there is no name space collision.
This is a maintenance release of the UNM base code. We intend this to be the last release before the competition at Kennedy Space Center.
This release has two purposes:
The Arduino code has been moved into the SwarmBaseCode-ROS repository. All Arduino code is now kept in the Arduino subdirectory of the repository rather than being maintained in a separate repository. This allows us to load Arduino sketches and manage custom Arduino code submitted by teams more easily. Scripts in the misc directory load Arduino sketches and automatically merge calibration data. The rover node launch script calls these scripts to load the Arduino code. Unless you already have an "arduino" directory in your repository there should be no merge conflicts.
Additional comments have been added to a number of packages. This is to improve documentation. Many teams will have modified those files extensively. There is no change in functionality so you may choose not to incorporate these comments when handling merge conflicts.
This release contains no functional updates to the code. It includes only updated comments to improve code readability and understandability. It also includes an update to the GUI to show where the end of the line is when viewing the odom frame in the map.
The rock models added to the simple_obstacle_example.world file are like the ones we will use in the physical and virtual competitions.
The arrangement or rocks is just an example.
The River Labs April Tag ROS library causes the recently updated OpenCV library to crash. We forked the River labs version to BCLab-UNM/apriltags_ros and patched the problem.
The SwarmBaseCode has been updated to use the fixed BCLab-UNM submodule.
Instructions for updating the newest AprilTags submodule are:
Assuming you set up the swarm base code as a remote as described in the swarm base code readme, execute the following command:
git pull SwarmBaseCode
Then update the AprilTag submodule:
git submodule sync — src/apriltags_ros
git submodule update —remote src/apriltags_ros
If the user hit the autonomous button when the Swarmie could see a target April tag then the Swarmie would not be able to collect targets later.
The problem is that the Swarmie sees the tag and enters the pick-up routine before it is in autonomous mode.
The fix is to not send the logic controller tag data when the Swarmie is in manual mode.
Two scripts contained hardcoded paths that assumed the repository was named SwarmBaseCode-ROS. This release replaces those references with relative paths.
The bug prevented the Swarmies from accessing the camera calibration file if SwarmBaseCode-ROS was missing from the rover. Not being able to access the calibration file meant rovers always reported their distance to April tags as zero.
The deployment script also contained a hardcoded path which prevented it from working as intended when run with the -R flag.