franka_rust 0.1.14

Rust bindings for the Franka Emika Panda robot
Documentation
#[cfg(test)]
mod gripper_tests {
    use serde::{Deserialize, Serialize};
    use serde_repr::{Deserialize_repr, Serialize_repr};
    use std::mem::size_of;

    use franka_rust::types;

    #[derive(Serialize_repr, Deserialize_repr, Debug, Copy, Clone)]
    #[repr(u16)]
    pub enum Command {
        Connect,
        Homing,
        Grasp,
        Move,
        Stop,
    }

    #[derive(Serialize, Deserialize, Debug, Copy, Clone)]
    #[repr(C, packed)]
    pub struct CommandHeader {
        pub command: Command,
        pub command_id: u32,
        pub size: u32,
    }

    #[derive(Serialize, Deserialize, Debug, Copy, Clone)]
    #[repr(C, packed)]
    pub struct ConnectRequest {
        pub version: u16,
        pub udp_port: u16,
    }

    #[derive(Serialize, Deserialize, Debug, Copy, Clone)]
    #[repr(C, packed)]
    pub struct ConnectRequestWithHeader {
        pub header: CommandHeader,
        pub request: ConnectRequest,
    }

    #[test]
    fn type_size_test() {
        println!(
            "ConnectRequestWithHeader size: {}",
            size_of::<ConnectRequestWithHeader>()
        );

        println!(
            "ConnectRequestWithHeader serialize as bytes: {:?}",
            bincode::serialize(&ConnectRequestWithHeader {
                header: CommandHeader { command: Command::Connect, command_id: 0, size: 14 },
                request: ConnectRequest { version: 3, udp_port: 1338 },
            })
            .unwrap()
        );

        println!(
            "Self ConnectRequest size: {}",
            types::gripper_types::ConnectRequest::size()
        );

        println!(
            "Self ConnectRequest serialize as bytes: {:?}",
            bincode::serialize(&types::gripper_types::ConnectRequest {
                header: types::gripper_types::CommandHeader { command_id: 0, size: 8 },
                data: types::gripper_types::ConnectData { version: 1, udp_port: 2 },
            })
        );
    }
}

#[cfg(test)]
mod robot_test {
    use franka_rust::types;
    #[test]
    fn type_size_test() {
        println!(
            "Self ConnectRequest size: {}",
            types::robot_types::ConnectRequest::size()
        );

        println!(
            "Self ConnectRequest serialize as bytes: {:?}",
            bincode::serialize(&types::robot_types::ConnectRequest {
                header: types::robot_types::CommandHeader { command_id: 0, size: 8 },
                data: types::robot_types::ConnectData { version: 1, udp_port: 2 },
            })
        );
    }
}