Beispiel #1
0
        /// <summary>
        /// Asynchronous version by TAP (Task-based Asynchronous Pattern)
        /// </summary>
        static void AsyncMainTAP()
        {
            Ros.InitNodeAsync("/Talker")
                .ContinueWith(node =>
                {
                    return node.Result.PublisherAsync<RosSharp.std_msgs.String>("/chatter");
                })
                .Unwrap()
                .ContinueWith(publisher =>
                {
                    int i = 0;
                    while (true)
                    {
                        var data = new RosSharp.std_msgs.String() { data = "test : " + i++ };
                        Console.WriteLine("data = {0}", data.data);
                        publisher.Result.OnNext(data);
                        Thread.Sleep(TimeSpan.FromSeconds(1));
                    }

                })
                .ContinueWith(res =>
                {
                    Console.WriteLine(res.Exception.InnerException.Message);
                }, TaskContinuationOptions.OnlyOnFaulted);
        }
Beispiel #2
0
 /// <summary>
 /// Asynchronous version by TAP (Task-based Asynchronous Pattern)
 /// </summary>
 static void AsyncMainTAP()
 {
     Ros.InitNodeAsync("/Talker")
     .ContinueWith(node =>
     {
         return(node.Result.PublisherAsync <RosSharp.std_msgs.String>("/chatter"));
     })
     .Unwrap()
     .ContinueWith(publisher =>
     {
         int i = 0;
         while (true)
         {
             var data = new RosSharp.std_msgs.String()
             {
                 data = "test : " + i++
             };
             Console.WriteLine("data = {0}", data.data);
             publisher.Result.OnNext(data);
             Thread.Sleep(TimeSpan.FromSeconds(1));
         }
     })
     .ContinueWith(res =>
     {
         Console.WriteLine(res.Exception.InnerException.Message);
     }, TaskContinuationOptions.OnlyOnFaulted);
 }
Beispiel #3
0
        /// <summary>
        /// Synchronous version
        /// </summary>
        static void SyncMain()
        {
            try
            {
                var node = Ros.InitNodeAsync("/Talker").Result;
                var publisher = node.PublisherAsync<RosSharp.std_msgs.String>("/chatter").Result;

                int i = 0;
                while (true)
                {
                    var data = new RosSharp.std_msgs.String() { data = "test : " + i++ };
                    Console.WriteLine("data = {0}", data.data);
                    publisher.OnNext(data);
                    Thread.Sleep(TimeSpan.FromSeconds(1));
                }

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Beispiel #4
0
        /// <summary>
        /// Synchronous version
        /// </summary>
        static void SyncMain()
        {
            try
            {
                var node      = Ros.InitNodeAsync("/Talker").Result;
                var publisher = node.PublisherAsync <RosSharp.std_msgs.String>("/chatter").Result;

                int i = 0;
                while (true)
                {
                    var data = new RosSharp.std_msgs.String()
                    {
                        data = "test : " + i++
                    };
                    Console.WriteLine("data = {0}", data.data);
                    publisher.OnNext(data);
                    Thread.Sleep(TimeSpan.FromSeconds(1));
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        // ================================================================================================
        /// <summary>
        /// 送信
        /// </summary>
        public void Publish()
        {
            try
            {
                // ロータリーエンコーダ パルス値
                if (null != pubRE)
                {
                    var data = new RosSharp.geometry_msgs.Twist() { linear = new Vector3() { x = reRpulse, y = reLpulse, z = 0.0 } };
                    //Console.WriteLine("data = {0}", data.data);
                    pubRE.OnNext(data);
                }

                // ロータリーエンコーダ プロット値
                if (null != pubPlot)
                {
                    var data = new RosSharp.geometry_msgs.Twist() { linear = new Vector3() { x = rePlotX, y = rePlotY, z = 0.0 }, angular = new Vector3() { x = reAng, y = 0, z = 0 } };
                    //Console.WriteLine("data = {0}", data.data);
                    pubPlot.OnNext(data);
                }

                // 地磁気
                if (null != pubCompus)
                {
                    var data = new RosSharp.geometry_msgs.Twist() { linear = new Vector3() { x = 0.0, y = 0.0, z = compusDir } };
                    //Console.WriteLine("data = {0}", data.data);
                    pubCompus.OnNext(data);
                }

                // GPS
                if (null != pubGPS)
                {
                    var data = new RosSharp.geometry_msgs.Twist() { linear = new Vector3() { x = gpsGrandX, y = gpsGrandY, z = 0.0 } };
                    //Console.WriteLine("data = {0}", data.data);
                    pubGPS.OnNext(data);
                }

                // URG
                if (null != pubUrg)
                {

                    //var data = new RosSharp.sensor_msgs.LaserScan(); // { linear = new Vector3() { x = gpsGrandX, y = gpsGrandY, z = 0.0 } };
                    //Console.WriteLine("data = {0}", data.data);
                    var data = MakeLaserScanData();

                    pubUrg.OnNext(data);
                }

                if (null != pubClock)
                {
                    var data = new RosSharp.rosgraph_msgs.Clock()  { clock = DateTime.Now };
                    pubClock.OnNext(data);
                }

                // LED
                if (null!= pubBenzLED)
                {
                    var data = new RosSharp.std_msgs.String() { data = ledCommand };
                    pubBenzLED.OnNext(data);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }