use std::{env, time::Duration}; use anyhow::Result; use arci::{BaseVelocity, JointTrajectoryClient, MoveBase, Speaker}; use openrr_plugin::PluginProxy; #[tokio::main] async fn main() -> Result<()> { let plugin = PluginProxy::from_path(format!( "./target/debug/libopenrr_plugin_example.{}", env::consts::DLL_EXTENSION ))?; if let Some(joint_trajectory_client) = plugin.new_joint_trajectory_client(r#"{ "joint_names": ["a", "b"] }"#.into())? { println!("joint_names: {:?}", joint_trajectory_client.joint_names()); println!( "current_joint_positions: {:?}", joint_trajectory_client.current_joint_positions()? ); println!("sending joint positions: [1.0, -1.0]"); joint_trajectory_client .send_joint_positions(vec![1.0, -1.0], Duration::from_secs(1))? .await?; println!( "current_joint_positions: {:?}", joint_trajectory_client.current_joint_positions()? ); } if let Some(speaker) = plugin.new_speaker("".into())? { speaker.speak("hi!")?.await?; } if let Some(move_base) = plugin.new_move_base("".into())? { println!("current_velocity: {:?}", move_base.current_velocity()?); let new = BaseVelocity { x: 2.0, y: 1.0, theta: 0.5, }; println!("sending velocity: {new:?}"); move_base.send_velocity(&new)?; println!("current_velocity: {:?}", move_base.current_velocity()?); } Ok(()) }