I built SQLite3 as a vendor library to easily add to robots

Hi everyone, early last season I made a vendor library for sqlite3 to make it easier to add and use in robot code so I thought I’d make a post here and share it so more people can use it other than just my team. I’m a new user so I can’t upload files, but there’s a link to download it here. It’s not much but it should make it a lot easier to use in your robot without having to clunk around with getting Gradle to build and include a C (not c++) library with the rest of your code, or even getting Gradle to include a pre-compiled library. This includes support for Windows and Linux, If someone with a Mac wants to use it then I can try to make an updated version with Mac OS support. I also might make an online version so you don’t need to download it but I’m pretty tied up with finals and getting ready for college rn so I’m a bit short on time.

2 Likes

Out of curiosity, what are you using SqLite for on a robot? We had a small lookup table in our Rio for shooter calibration, but seems a lot easier to sure that as a CSV file.

We did a similar thing, we stored our vision targeting data in it. I prefer it over Network Tables because of how complicated you Can make the databases and for the more powerful querying.

I don’t mean to knock your choice, but I still don’t understand it. Having it as text made it easy to manually adjust. We read in the file when the robot code started and kept the data in a simple array, so it was as fast as possible.

Last I heard SqLite was purely a local DB, so I don’t see that it is comparable to NetworkTables. It also needs extra tools (well the app) to updated it.

So SQLite can’t work as a replacement for the Networking part of NetworkTables but it can fully interact with/create/use/query databases without any extra software. At least for what I’ve been doing I haven’t needed to do any more work integrating than NetworkTables to achieve the same functionality (-networking of course)

You are a scholar and a gentleman.

I’m at least a bit in agreeance prensing - I think this is real neat. For the next-step, you may want to also let folks know about recommended (or not-recommended) use cases.

In particular, I’d be curious what the latency of read/write cycles is. That is: if the data producer writes a new value to the database, what’s the amount of time required before a consumer can get that data back out? Not that you personally need to go figure this out now, it’s just the question I’d personally get the answer to before using it for certain tasks.