Helping a Robot Dog Navigate Through Crowds
Katie Hughes looks back on her capstone project and the challenges she faced helping a robot dog move through a group without any collisions.
Navigating through crowds is a tricky problem for robots.
When a person encounters a crowd, they subconsciously predict how the other people are going to move. A robot in that same situation has to track and predict the trajectories of people around it and react as quickly as possible.
Katie Hughes (MSR '23) was fascinated by that conundrum and tackled it for her capstone project. She used a quadruped Unitree Go1 robot — colloquially known as a robot dog — for her project, and successfully had it navigate through a large crowd of people without colliding with anyone or anything.
"Social navigation for robots is a really open-ended problem in the field," said Hughes, who today is a software robotics development engineer at The AI Institute. "A key idea is cooperation with people in the crowd. Instead of trying to plan a path through the gaps in the crowd, the algorithm assumes that people will have some willingness to change their path to avoid hitting the robot."
Hughes worked with professor Todd Murphey — co-director of Northwestern Engineering's Master of Science in Robotics (MSR) program — and PhD candidate Muchen Sun, whose research into crowd navigation focuses on low computational cost and capability of running in real-time.
Hughes was drawn to this project for multiple reasons. She was familiar with the quadruped robot from working with it for her independent project earlier in the program. For that project, she implemented a trotting gait for the robot to walk forward, backward, and side to side. She also developed a custom stand-up and lie-down procedure.
Hughes said she encountered countless challenges throughout the project, but the biggest was determining the best design for her system.
"This project has a lot of moving parts, from how you track the pedestrians to physically computing the optimal path for the robot to take," she said. "Additionally, this all needs to happen fast enough so that the robot is appropriately reactive to people moving in front of it."
Hughes tried two initial designs — including one with a laptop strapped to the robot's back — before deciding on her final layout. She also converted much of her code from Python to C++ to help with speed optimization.
"I am really proud of how this project turned out," she said. "One of the biggest things I took away was structuring my code in a way that was flexible to many different system designs."
Hughes said she focused on making her code modular so it could easily be adjusted if the system design changed. She also prioritized documentation of her project and processes so it could continue to be modified and used in Murphey's future research.
"I learned a lot in collaborating with a lab that had already made significant progress on this topic before I joined," she said. "Figuring out what to prioritize with such a complex project was difficult, but talking to my mentors about what was most important to test helped push me along."