예제 #1
0
        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();
        }
예제 #2
0
    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);
    }
예제 #3
0
    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);
    }
예제 #4
0
    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);
    }