#automation #framework

sybot_lib

A simple library to control groups of components and robots

2 releases

0.8.2 Apr 21, 2023
0.8.1 Apr 20, 2023
0.8.0 Apr 18, 2023
0.7.8 Apr 18, 2023

#92 in Robotics

Download history 4/week @ 2024-02-23 2/week @ 2024-03-01 3/week @ 2024-03-29 63/week @ 2024-04-05 5/week @ 2024-04-12

71 downloads per month

Custom license

100KB
2K SLoC

sybot_lib

Crates.io version sybot_lib: rustc 1.68+

A simple library to control groups of components and robots.

Extension library for the stepper_lib.

-- UNFINISHED DOCS --

Full documentation will be added soon

Goal

  • Create an all-in-one library for controlling robots, exposing them to networks and doing basic calculations

In action

The following example creates a new SyArm robot, runs all setup functions and executes a GCode-script.

Click to show Cargo.toml
# ...

[dependencies]
# Include the library configured for the raspberry pi
sybot_lib = { version = "0.8.2, features = [ "rasp" ] }

# ...

use sybot_lib::{SyArm, Robot, JsonConfig};
use sybot_lib::intpr::Interpreter;
use sybot_lib::intpr::gcode::init_intpr;

fn main() -> std::io::Result<()> {
    // Load the standard-partlibs in order to use motor names as data
    //
    // ```json
    // "ctrl": {
    //     "consts": "MOT_17HE15_1504S",    // Motor name, see
    // // <https://docs.rs/stepper_lib/0.11.1/stepper_lib/data/struct.StepperConst.html#associatedconstant.MOT_17HE15_1504S>
    //     "pin_dir": 17,
    //     "pin_step": 26
    // },
    // ```
    let libs = sybot_lib::partlib::create_std_libs();

    // Create the robot out of the [configuration file]
    // (https://github.com/SamuelNoesslboeck/sybot_lib/blob/master/res/SyArm_Mk1.conf.json)
    let mut syarm = SyArm::from_conf(
        JsonConfig::read_from_file(&libs, "res/SyArm_Mk1.conf.json")
    )?;

    // Run setup functions
    syarm.setup();
    // Enables async movements (multiple motors moving at once)
    syarm.setup_async();

    // DEBUG
        // Select "NoTool" at index 2
        syarm.set_tool_id(2);
    // 

    // Create a new GCode interpreter
    let intpr = init_intpr();

    // Run a GCode script
    dbg!(intpr.interpret_file(&mut syarm, "res/gcode/basicYZpos.gcode"));

    Ok(())
}

(Source: "examples/in_action.rs")

Features

For more features, see stepper_lib#features

Issues and requests

If you encounter any issues or if you have any request for new features, feel free to create an issue at the GitHub repo.

Dependencies

~8–25MB
~319K SLoC