Some great questions here are some suggestions, but partially depends on your goals and students skills.
For a camera, if you are not looking to process the camera data at all, but just have a first person view. There are a number of inexpensive 5.8Ghz FPV cameras and receivers that would give you a great view at a low price. You can power the camera off of one of the servo headers on the XRP board.
GPS is a bit tricky. Normal GPS accuracy is in the meter range, which is pretty big for a robot this size. There is newer technology called RTK, SparkFun has some solutions, which uses a stable GPS station and a moveable one and can get down the CM accuracy. That can work for a small robot like the XRP, but both have to be able to āseeā GPS satellites, so it canāt be done inside.
FIRST teams have come up with a number of solutions. The one that would be easiest to convert to the XRP are around using odometry wheels. If you Google āfirst tech challenge odometryā and you will find a lot of information on how to track your robots location.
We will be very interested if you work on any of these solutions. Please post here if you do. Your students will be fully ready to be on a FIRST team if they learn these skills!
Bill and Frank, thank you for your wonderful recommendations.
Currently, we are testing a few 5.8 Ghz and Wifi (P2P) mini spy cameras.
One that appears quite interesting is the following:
Spy Camera, AOBO 4K HD Mini WiFi Wireless Hidden Camera Smallest Security Cameras with App Nanny Cam Night Vision Motion Activated Alerts Secret Surveillance Cameras for Indoor $45.28 CAD
Also, we would like determine if the XRP controller board could support the
Arducam Mini 2MP and 5MP cameras for Arduino UNO Mega2560 Board & Raspberry Pi Pico? If so, how would we connect them?
If you just want a first person view from the XRP, Iād really recommend getting some kind of dedicated wireless camera and strapping it onto the robot. This is by far the easiest option.
However iyour goal is to do vision processing with the XRP (eg. OpenCV), youāre almost definitely going to need a coprocessor of some kind. The XRP Control Board uses the RP2040 microcontroller, which is really not designed for vision processing. It has 264k of RAM (not enough for even a single 480p grayscale image), and it doesnāt have the computing power needed. I looked at one of the demos of the ArduCam with the RP2040, and it was getting about 4fps with a 240p camera stream; looked like it was just passing the video stream through to USB, not doing any processing on the image.
So a coprocessor is really needed to have decent vision processing. Weāve considered using a Raspberry Pi for this - connect a Pi Camera Module (or even a USB webcam), write OpenCV code on there, then send a small amount of data to the XRP Controller, such as through the Qwiic connector. This is not something weāve tackled yet, so if anyone is feeling adventurous and wants to take a crack at it, weād love to see what you come up with!
Qwiic question (see what I did there ).
I want to make the camera/vision system as easily integrated as I can. Thus, I intend to use a QWIIC hat on a Pi Zero 2W to make connection to the XRP as clean as possible.
Are there are QWIIC code examples I can use to see an easy way to export/import target data from Pi to the XRP?
Having the XRP and Pi Zero 2 communicate over Qwiic should be fine. I would suggest keeping the XRP as the I2C bus controller, then configuring the Pi Zero 2 as an I2C peripheral/slave device. Iāve not done this myself, but a qwiic Google seems to indicate thatās possible with the pigpio library (docs). I canāt provide any further help with this at the moment unfortunately, but I hope this helps!
OK, this will probably be my last post in this thread as I will be opening a separate thread to follow my journey in adding vision to an XRP. One quick update first.
The bottom line is that neither a RPi Zero W or a Pi Zero 2W are really well suited for any real vision processing. The biggest limitation appears to be caused by the tiny 512K RAM. Increasing the Swapfile size really just slows down the process. Yes, I was able to acquire images, but the performance was painfully slow. So, fortunately I have a Pi 4, a Pi 3, a Orange Pi 4 and an Orange Pi 5 I can use for this project. Their only drawback are their physical size.