Inspiration

Our inspiration was the Hitchbot, the viral traveling robot from 2015. The Hitchbot relied on human altruism to get from place to place, and was able to travel all over the world – until it got to Philadelphia where it was beheaded.

What it does

Our project’s intended purpose was to create a robot similar to the Hitchbot but with more features by incorporating more user-interaction via ChatGPT generated questions and answers (requiring internet connectivity) to “talk” to the robot.

How we built it

Our design was to use the STM32 as the central microcontroller and connect it to an e-ink display which would prompt the user of the Hitchbot with a question, and three possible answers the user could reply with. Based on the user’s reply, the Hitchbot would present another question with 3 more possible answers – ultimately trying to get the user to bring the bot along with them. The questions and answers were to be generated by GPT3, which was told to behave as the reincarnation of the Hitchbot using an OpenAI API. The communication between GPT and the STM32 microcontroller was to be done using the LoRaWAN module that would send the response it received from the user up to an AWS server that would then communicate with GPT3, and send back the response it got from GPT3 back to the STM32 via the LoRa module to be displayed on the e-ink display.

Challenges we ran into

Our biggest issue was the LoRaWAN Module – which we selected due to its low power requirement as compared to other IoT platforms. We attempted to port a LoRaWAN library made for Arduinos to work with the STM32. We were able to uplink payloads with a near 100% success rate. However, our downlinks were only received with about a 10% success rate. This led to troubles connecting to the network reliably because of the OTAA protocol. We believe this fault arose because of bugs in the arduino-LMIC library. Because of this, we spent several hundreds of hours trying to figure out how to get the module to work. Due to this issue, we were rendered unable to communicate with GPT – as that required an internet connection to work for the OpenAI API to be used with the STM32 microcontroller.

We also had some major issues with the E-ink display. Similarly to the LoRaWAN, there are no libraries written to work in bare metal C for e inks. Consequently, we again had to port a library to work with the ATMega328P. We got it working with some minor bugs. After a lot of debugger and using the logic analyzer we determined that the screen itself was broken. After ordering a new screen the occasional bugs disappeared. However we decided to use a STM32 so we were forced to rewrite the library a second time. After we did this the screen worked flawlessly and had more RAM to generate the bmp conversions of text.

Accomplishments that we're proud of

We are proud of being able to work with hardware we didn’t have prior experience with and make substantial headway in terms of getting the e-ink, and the uplink payloads from the LoRa to AWS servers working using the STM32F103C8T6 microcontroller.

What we learned

We learned how to work with the STM32F103C8T6 microcontroller and the HAL library.

What's next for Hitchbot 2.0

Our project could be improved by properly getting the communication between LoRa and AWS working, and then connecting GPT to the project (which works independently as of now). Furthermore, we would try to add some way for Hitchbot2.0 to interact with its hitchhiking partners – which we could do by using the Instagram Graph API that allows people to send pictures of themselves with Hitchbot to a designated Instagram account, from where it would be posted on the Hitchbot2.0 account. The Instagram Graph API would also enable the bot to reply to comments while logging its adventures from people that voluntarily submit pictures they took with the bot.

Built With

Share this project:

Updates