コード例 #1
0
ファイル: Program.cs プロジェクト: wijanarko-sukma/ROS.NET
        private static void serverGoalCallback(ServerGoalHandle <TestGoal, TestResult, TestFeedback> sgoalHandle,
                                               ActionServer <TestGoal, TestResult, TestFeedback> actionServer,
                                               ActionClient <TestGoal, TestResult, TestFeedback> actionClient)
        {
            // got goal to reach from clientsample
            Console.WriteLine($"Goal registered callback. Goal: {sgoalHandle.Goal.goal}");

            var goal = new Messages.actionlib.TestGoal();

            Console.WriteLine($"Send goal {goal.goal} from client");
            var cts = new CancellationTokenSource();

            actionClient.SendGoalAsync(goal,
                                       (cgoalHandle) =>
            {
                if (cgoalHandle.State == CommunicationState.DONE)
                {
                    int g      = cgoalHandle.Goal.Goal.goal;
                    var result = cgoalHandle.Result;
                    if (result != null)
                    {
                        Console.WriteLine($"Got Result for goal {g}: {cgoalHandle.Result.result}");
                        var aresult = new Messages.actionlib.TestResult
                        {
                            result = 999
                        };
                        sgoalHandle.SetGoalStatus(Messages.actionlib_msgs.GoalStatus.SUCCEEDED, "done");
                        actionServer.PublishResult(sgoalHandle.GoalStatus, result);
                    }
                    else
                    {
                        Console.WriteLine($"Result for goal {g} is NULL!");
                    }
                }
            },
                                       (cgoalHandle, feedback) =>
            {
                Console.WriteLine($"Feedback: {feedback}");
                var fb = new Messages.actionlib.TestFeedback
                {
                    feedback = feedback.Feedback.feedback
                };
                sgoalHandle.PublishFeedback(fb);
            },
                                       cts.Token
                                       ).GetAwaiter().GetResult();
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: wijanarko-sukma/ROS.NET
        static void Main(string[] args)
        {
#if (DEBUG)
            Environment.SetEnvironmentVariable("ROS_MASTER_URI", "http://192.168.200.32:11311/");
#endif
            Console.WriteLine("Start ROS");
            ROS.Init(ref args, "ActionServer");

            var asyncSpinner = new AsyncSpinner();
            asyncSpinner.Start();

            NodeHandle serverNodeHandle = new NodeHandle();

            Console.WriteLine("Create server");
            var actionServer = new ActionServer <Messages.actionlib.TestGoal, Messages.actionlib.TestResult,
                                                 Messages.actionlib.TestFeedback>(serverNodeHandle, "test_action");
            Console.WriteLine("Start Server");
            actionServer.Start();

            actionServer.RegisterGoalCallback((goalHandle) =>
            {
                Console.WriteLine($"Goal registered callback. Goal: {goalHandle.Goal.goal}");
                var fb      = new Messages.actionlib.TestFeedback();
                fb.feedback = 10;
                goalHandle.PublishFeedback(fb);
                Thread.Sleep(100);
                var result    = new Messages.actionlib.TestResult();
                result.result = 123;
                goalHandle.SetGoalStatus(Messages.actionlib_msgs.GoalStatus.SUCCEEDED, "done");
                actionServer.PublishResult(goalHandle.GoalStatus, result);
            });


            while (!Console.KeyAvailable)
            {
                Thread.Sleep(1);
            }
            actionServer.Shutdown();
            serverNodeHandle.shutdown();
            ROS.shutdown();
        }
コード例 #3
0
        static void Main(string[] args)
        {
            Console.WriteLine("Start ROS");
            ROS.Init(new string[0], "ActionServer");
            var asyncSpinner = new AsyncSpinner();

            asyncSpinner.Start();
            NodeHandle serverNodeHandle = new NodeHandle();

            Console.WriteLine("Create server");
            var actionServer = new ActionServer <Messages.actionlib.TestGoal, Messages.actionlib.TestResult,
                                                 Messages.actionlib.TestFeedback>(serverNodeHandle, "test_action");

            Console.WriteLine("Start Server");
            actionServer.Start();

            actionServer.RegisterGoalCallback((goalHandle) =>
            {
                Console.WriteLine($"Goal registered callback. Goal: {goalHandle.Goal.goal}");
                var fb      = new Messages.actionlib.TestFeedback();
                fb.feedback = 10;
                goalHandle.PublishFeedback(fb);
                Thread.Sleep(100);
                var result    = new Messages.actionlib.TestResult();
                result.result = 123;
                goalHandle.SetGoalStatus(Messages.actionlib_msgs.GoalStatus.SUCCEEDED, "done");
                actionServer.PublishResult(goalHandle.GoalStatus, result);
            });


            while (!Console.KeyAvailable)
            {
                Thread.Sleep(1);
            }

            actionServer.Shutdown();
            serverNodeHandle.Shutdown();
            ROS.Shutdown();
        }
コード例 #4
0
        static void Main(string[] args)
        {
            //#if (DEBUG)
            //      Environment.SetEnvironmentVariable("ROS_HOSTNAME", "");
            //      Environment.SetEnvironmentVariable("ROS_IP", "192.168.200.32");
            //      Environment.SetEnvironmentVariable("ROS_MASTER_URI", "http://192.168.200.231:11311/");
            //#endif
            Environment.SetEnvironmentVariable("ROS_HOSTNAME", "localhost");
            Environment.SetEnvironmentVariable("ROS_IP", "127.0.0.1");
            Environment.SetEnvironmentVariable("ROS_MASTER_URI", "http://localhost:11311/");
            Console.WriteLine("Start ROS");
            ROS.Init(ref args, "ActionServerSlowDummy");

            ICallbackQueue callbackQueue = new CallbackQueue();

            var asyncSpinner = new AsyncSpinner(callbackQueue);

            asyncSpinner.Start();

            //var spinner = new SingleThreadSpinner(callbackQueue);


            NodeHandle serverNodeHandle = new NodeHandle(callbackQueue);

            Console.WriteLine("Create server");
            var actionServer = new ActionServer <Messages.actionlib.TestGoal, Messages.actionlib.TestResult,
                                                 Messages.actionlib.TestFeedback>(serverNodeHandle, "test_action_slow");

            Console.WriteLine("Start Server");
            Param.Set("status_list_timeout", 999.9);
            actionServer.Start();

            actionServer.RegisterGoalCallback((goalHandle) =>
            {
                Console.WriteLine($"Goal registered callback. Goal: {goalHandle.Goal.goal}");
                goalHandle.SetAccepted("accepted");

                new Thread(() =>
                {
                    for (int x = 0; x < 77; x++)
                    {
                        var fb = new Messages.actionlib.TestFeedback
                        {
                            feedback = x
                        };
                        goalHandle.PublishFeedback(fb);
                        Thread.Sleep(100);
                    }

                    var result = new Messages.actionlib.TestResult
                    {
                        result = 123
                    };
                    goalHandle.SetGoalStatus(Messages.actionlib_msgs.GoalStatus.SUCCEEDED, "done");
                    actionServer.PublishResult(goalHandle.GoalStatus, result);
                }).Start();
            });

            Console.ReadLine();

            actionServer.Shutdown();
            serverNodeHandle.shutdown();
            ROS.shutdown();
        }