55 releases (32 stable)
new 4.4.0-alpha | Nov 2, 2024 |
---|---|
4.2.0 | Nov 4, 2024 |
3.2.3-experimental | May 15, 2024 |
3.2.1 | Sep 9, 2024 |
0.3.2 | Nov 16, 2023 |
#198 in Hardware support
1,208 downloads per month
2.5MB
594 lines
safe-vex
A modular, safe and data-orientated rust wrapper over the Purdue PROS library for Vex Robotics
Disclamer
safe-vex
is an open-source project by kalscium. safe-vex
is neither endorsed by or affiliated with Innovation First, Inc. VEX and VEX Robotics are trademarks or service marks of Innovation First, Inc. safe-vex
is also not developed by nor endorsed by the developers of the Purdue PROS library.
Quickstart (Nix)
you will need:
- nix
- nix flakes
then:
- Clone the
safe-vex
project template by running the following command:
git clone https://github.com/kalscium/safe-vex-template.git
- Enter the newly cloned directory
- Enter the nix dev-environment with
nix develop
- Turn on and connect to the vex v5 brain
- Give permission to upload code to the robot with: (doesn't matter if this fails)
sudo chmod a+rw /dev/ttyACM0 || sudo chmod a+rw /dev/ttyACM1
- While connected to the v5 brain run:
cargo run --release
- Your robot should now be up and running :D
Quickstart (Debian)
you will need:
- A rust toolchain managed by
rustup
: - An
arm-none-eabi
toolchain gcc
andlibclang-dev
/libclang
- (optional)
libc6-dev
if rustc is throwing the error:
--- stderr
/usr/lib/arm-none-eabi/include/sys/reent.h:14:10: fatal error: 'stddef.h' file not found
thread 'main' panicked at /home/dev/.cargo/registry/src/index.crates.io-6f17d22bba15001f/vex-rt-0.15.1/build/main.rs:266:10:
Could not generate bindings.: ClangDiagnostic("/usr/lib/arm-none-eabi/include/sys/reent.h:14:10: fatal error: 'stddef.h' file not found\n")
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
- The
pros-cli
installed throughpip
then:
- Clone the
safe-vex
project template by running the following command:
git clone https://github.com/kalscium/safe-vex-template.git
- Enter the newly cloned directory
- Turn on and connect to the vex v5 brain
- Give permission to upload code to the robot with: (doesn't matter if this fails)
sudo chmod a+rw /dev/ttyACM0 || sudo chmod a+rw /dev/ttyACM1
- While connected to the v5 brain run:
cargo run --release
- Your robot should now be up and running :D
Updating the PROS Library Version
(For future reference for the maintainence of this library) To update the pros library version used by
safe-vex
, follow the following steps (with the correct toolchains installed)
- Enter the
build
directory of the library
While inside the build
dir
- Create an empty pros project
pros conductor new kernel
- Delete the unnecessary bloat libraries and files that are irrelevant to
PROS
rm -rf kernel/bin kernel/firmware/{okapilib.a,squiggles.mk} kernel/okapi
- Rename the
project.pros
file totemplate.pros
and take note of the version
mv kernel/project.pros kernel/template.pros
{
"py/state": {
"templates": {
"kernel": {
"target": "v5",
"version": "<version>, eg 1.0.0 (TAKE NOTE OF THIS FOR LATER STEPS)",
}
}
}
}
- Zip and package the kernel for compilation use
(cd kernel && zip ../kernel@VERSION.zip -r *)
rm -rf kernel
- Update references to the kernel package in bindgen build code (still in the build dir
main.rs
)
// Path to PROS release zip (relative to project root)
const PROS_ZIP_STR: &str = "build/kernel@VERSION.zip"; // update the vesrion
In the project root
- Clean the project and publish it (given you have changed the project version in
Cargo.toml
to something appropriate to this update to the kernel)
cargo clean
cargo publish