openrr-remote 0.1.0

Remote execution support for arci
Documentation
use std::time::{Duration, SystemTime};

use arci::{
    Gamepad, JointTrajectoryClient, Localization, MoveBase, Navigation, Speaker, TransformResolver,
};
use openrr_remote::{
    RemoteGamepadSender, RemoteJointTrajectoryClientSender, RemoteLocalizationSender,
    RemoteMoveBaseSender, RemoteNavigationSender, RemoteSpeakerSender,
    RemoteTransformResolverSender,
};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    const ENDPOINT: &str = "http://[::1]:50051";

    let client = RemoteJointTrajectoryClientSender::connect(ENDPOINT).await?;
    let speaker = RemoteSpeakerSender::connect(ENDPOINT).await?;
    let base = RemoteMoveBaseSender::connect(ENDPOINT).await?;
    let nav = RemoteNavigationSender::connect(ENDPOINT).await?;
    let loc = RemoteLocalizationSender::connect(ENDPOINT).await?;
    let resolver = RemoteTransformResolverSender::connect(ENDPOINT).await?;
    let gamepad = RemoteGamepadSender::connect(ENDPOINT).await?;

    println!("JointTrajectoryClient");
    dbg!(client.joint_names());
    dbg!(client.current_joint_positions()?);
    client
        .send_joint_positions(vec![1.0, 2.0], Duration::from_secs_f64(0.1))?
        .await?;
    client
        .send_joint_trajectory(vec![arci::TrajectoryPoint::new(
            vec![3.0, 4.0],
            Duration::from_secs_f64(0.1),
        )])?
        .await?;

    println!("Speaker");
    speaker.speak("abc")?.await?;

    println!("MoveBase");
    dbg!(base.current_velocity()?);
    base.send_velocity(&arci::BaseVelocity {
        x: 1.0,
        y: 2.0,
        theta: 3.0,
    })?;

    println!("Navigation");
    nav.send_goal_pose(
        arci::Isometry2::new(arci::Vector2::new(1.0, 2.0), 3.0),
        "",
        Duration::from_secs_f64(0.1),
    )?
    .await?;
    nav.cancel()?;

    println!("Localization");
    dbg!(loc.current_pose("")?);

    println!("TransformResolver");
    resolver.resolve_transformation("", "", SystemTime::UNIX_EPOCH)?;

    println!("Gamepad");
    dbg!(gamepad.next_event().await);
    gamepad.stop();

    Ok(())
}