Inspiration

Oliver Cuellar lived near the ocean for most of his life, walking across the beaches and seeing many sea turtle nests cordoned off. He always wondered about the many more that weren’t discovered and protected, that were vulnerable to being crushed or confused as they made their way to the ocean. We came up with TurtleBot as a low-cost, low-environmental impact robot and accompanying machine learning model that can find and report likely turtle nesting spots so the proper authorities can be aware and can protect endangered turtles. Our project is primarily machine-learning based, but we’ve noticed that many proposed machine learning models do not address how data is to be collected even if they are able to predict effectively based on that data. We wanted to demonstrate the feasibility of our project, so we also present a simple prototype of a TurtleBot that has all the capabilities necessary to collect the needed data. We wanted to create a ground-based robot rather than the more common aerial drones because drones can have a negative impact on the environment: they’re perceived as a predator by nesting birds, cause sound pollution, and cause undue stress to local wildlife. We also decided to make TurtleBot tiny and lightweight so it would cause minimal disturbance to areas around turtle nests and carry no risk of crushing the eggs. With these parameters in mind, an NVIDIA JetBot kit served as a perfect prototype for this hackathon. Although it doesn’t have all the components our production robot will have (sand-friendly tires and IMUs, waterproof casing), it otherwise has all necessary TurtleBot components: a LiDAR and camera to collect data about the beach and navigate, a small footprint, and relatively inexpensive hardware.

What it does

TurtleBot is designed to drive around a beach and gather data about beach characteristics such as elevation and dune shape via LiDAR mapping. It then sends these data along with its current location to a TurtleBot machine learning model API that predicts the likelihood of a turtle nest being present. If our algorithm predicts that a nest is present, it forwards the TurtleBot’s location to cooperating volunteer organizations so they can confirm, mark, and protect any nests in the area. The TurtleBot’s onboard NVIDIA Jetson runs ROS (Robot Operating System) to collect and process LiDAR point cloud readings into data the machine learning model needs to make its predictions. Its lightweight and envirofriendly design with a relatively low cost for LiDAR scanning and processing and industry standard ROS programing makes it more accessible and easier to implement around the world. The intentional design with the ecosystem involved led us to make sure it is light enough to not crush potential sea turtle eggs under the sand. The robot is also designed to be silent to not disturb nature and the environment. The TurtleBot ML model intakes beach elevation, width, slope and distance_from_shoreline to output a binary value (0 for absent, 1 for present) with over 94% accuracy. It uses TurtleBot’s reported location to inform local organizations of its positive results.

How we built it

The TurtleBot ML model is based on data available here that provides beach geomorphology with labels for the presence or absence of a turtle nest. We trained a random forest model with 100 trees and hyperparameter tuning using the Yggdrasil machine learning library. We achieved an accuracy of 0.944089 and an AUC of 0.954344, and we are confident that these values can be improved with additional training time and resources. A link to our training process (hosted on Google Colab) can be found here. The TurtleBot supports a ROS implementation of LiDAR data processing into point clouds, and we plan to use a custom algorithm to filter and extract beach width, slope, and maximum elevation value from this data.

Challenges we ran into

A large challenge is the age of the materials that we are using and the lack of recently supported data for the Nvidia JetBot that we are using. Another challenge is that we decided that since the Jetbot was an NCSSM resource that we will have to return, we decided to not alter the robot for our specific use. This limited our ability to test and alter the robot to be better suited for driving on the beach. Gathering data was another difficulty because we cannot simply go out and find testing data due to the beach being quite far away. Additionally, the Nvidia Jetson hardware was difficult to set up initially. Once we found suitable libraries and created suitable scripts it worked well, but getting there was quite challenging. There are many operating system images that are meant to be flashed to Nvidia Jetson boards, each for a specific use. The pre-provided image for our JetBot model from the manufacturer didn’t work, so we opted instead to use the stock Nvidia version and install the JetBot software manually. Tracking down package versions that were compatible with our aging hardware was another difficult task. However, if this project were to be scaled up for real-world use this likely would not be an issue because we would be able to use more modern hardware rather than whatever was available.

Accomplishments that we're proud of

We are proud of being able to reuse old technology and outdated software to provide a modern solution that is more accessible than LiDAR drones and can let communities protect turtles and teach kids how to use industry level technology to gain experience and confidence. We are also proud of our ability to synthesize and accessibly deploy a demo-able machine learning model in such a short amount of time.

What we learned

We learned how to deploy machine learning models on the web from a Google Colab-training environment through Flask. In doing so, we learned about efficient and wise use of LLM-generated code in production. We wrote all of our critical training code by hand to ensure we thoroughly understood our process, but we delegated certain unimportant frontend tasks to locally-hosted large language models. Additionally, we got a wonderful trial-by-fire introduction to Nvidia Jetson Robotics. Issues with higher-level libraries forced us to interact with hardware components manually, allowing us to learn more about low-level communication between components. Although our TurtleBot prototype ultimately wasn’t able to achieve full function due to lack of available hardware, we learned a lot about setting up and using NVIDIA Jetsons and ROS in conjunction with sensors to collect and process data.

What's next for TurtleBot

We are excited to continue improving our TurtleBot model through increased training time and acquisition of additional resources such as more GPU and CPU computing power. Someday we hope that we’re able to take our TurtleBot down to the Outer Banks and give it a true test with our own data. Some improvements we will make to the physical TurtleBot are making the robot more sand-tolerant through use of specialized sand wheels, a non-ball bearing-based IMU, and a robust outer case. We intended to add a feature in which Park Rangers could remotely interrupt autonomous scouting to manually pilot and investigate potential turtle nests without the need to travel over in person. We ran out of time for that feature but our hardware stack is more than capable of switching between remote operation and coordinating a fleet of autonomously scouting TurtleBots.

Acknowledgements Section

TurtleBot Model Data: https://data.griidc.org/data/HI.x833.000:0002 https://www.frontiersin.org/journals/marine-science/articles/10.3389/fmars.2020.00214/full#S2 https://www.usgs.gov/centers/wetland-and-aquatic-research-center/science/beach-compaction-and-impacts-tilling-nesting https://www.youtube.com/watch?v=-SkqLta93Ys

Waveshare wiki for lots of troubleshooting assistance: https://www.waveshare.com/wiki/JetBot_2GB_AI_Kit_for_AWS

Built With

Share this project:

Updates