/// <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); }
/// <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); }
/// <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> /// 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); } }