Crate sybot

Source
Expand description

§sybot

Crates.io version sybot: rustc 1.68+

A simple library to control groups of components and robots.

Extension library for the syact.

– 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 = { version = "0.8.2, features = [ "rasp" ] }

# ...

use sybot::{Robot, JsonConfig, ActRobot, Setup};
use sybot::robot::SyArm;
use sybot::intpr::Interpreter;
use sybot::intpr::gcode::init_intpr;

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

    // Create the robot out of the [configuration file]
    // (https://github.com/SamuelNoesslboeck/sybot/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 syact#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.

Re-exports§

pub use robs::Robot;
pub use desc::Descriptor;
pub use stat::Station;

Modules§

config
Configurations for the robot in terms of position, speed and mode
desc
Everything related to the Descriptor trait
prelude
Quick and easy import of the library essentials
rcs
RCS (Robot-Coordinate-System) module, manages the coordinate system and positions
robs
Everything related to the Robot trait
stat
Everything related to the Station trait

Enums§

PushMsg
Different types of events that can occur

Traits§

Interpreter
Interpreters convert a string prompt into actions for the robot
PushRemote
A PushRemote defines a remote connection that the robot can push values to

Type Aliases§

Error
Universal error type used in the crate