static void Subscribe(IRosbridgeMessageDispatcher messageDispatcher) { RosSubscriber <Twist> subscriber = new RosSubscriber <Twist>(messageDispatcher, "/turtle1/cmd_vel"); subscriber.RosMessageReceived += (s, e) => { Console.WriteLine(e.RosMessage); }; subscriber.SubscribeAsync(); }
protected bool Subscribe <T>(string name, string topic, double rate, out RosSubscriber <T> subscriber) where T : IRosClassInterface, new() { if (prevTimeStamp.ContainsKey(name)) { subscriber = default(RosSubscriber <T>); return(false); } prevTimeStamp[name] = Time.unscaledDeltaTime; period[name] = 1 / rate; subscriber = new RosSubscriber <T>(name, topic, 1); return(true); }
protected bool Unsubscribe <T>(RosSubscriber <T> subscriber) where T : IRosClassInterface, new() { if (prevTimeStamp.ContainsKey(subscriber.name)) { prevTimeStamp.Remove(subscriber.name); period.Remove(subscriber.name); subscriber.Terminate(); subscriber = null; return(true); } return(false); }
protected bool Receive <T>(RosSubscriber <T> subscriber, out T message) where T : IRosClassInterface, new() { System.Double currTimeStamp = Time.unscaledTime; if (subscriber.MsgReady && (currTimeStamp - prevTimeStamp[subscriber.name] > period[subscriber.name])) { message = subscriber.GetNewMessage(); return(true); } message = default(T); return(false); }