コード例 #1
0
ファイル: Program.cs プロジェクト: wijanarko-sukma/ROS.NET
        static void Main(string[] args)
        {
#if (DEBUG)
            Environment.SetEnvironmentVariable("ROS_MASTER_URI", "http://localhost:11311/");
#endif
            Console.WriteLine("Start ROS");
            ROS.Init(ref args, "ActionServerClientSlowDummy");

            ICallbackQueue callbackQueue = new CallbackQueue();

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

            NodeHandle nodeHandle = new NodeHandle(callbackQueue);

            ActionClient <Messages.actionlib.TestGoal, Messages.actionlib.TestResult,
                          Messages.actionlib.TestFeedback> actionClient = null;

            // setup action server start
            Console.WriteLine("Create server");
            var actionServer = new ActionServer <Messages.actionlib.TestGoal, Messages.actionlib.TestResult,
                                                 Messages.actionlib.TestFeedback>(nodeHandle, "test_action");
            Param.Set("status_list_timeout", 999.9);
            actionServer.RegisterGoalCallback((sgoalHandle) =>
            {
                Thread thread = new Thread(() => serverGoalCallback(sgoalHandle, actionServer, actionClient));
                thread.Start();
            });
            Console.WriteLine("Start Server");
            actionServer.Start();
            Console.WriteLine("Server Started");
            // setup action server finish


            // setup client
            actionClient = new ActionClient <Messages.actionlib.TestGoal, Messages.actionlib.TestResult,
                                             Messages.actionlib.TestFeedback>("test_action_slow", nodeHandle);
            // send action request to serverslowdummy
            Console.WriteLine("Wait for client and server to negotiate connection");
            bool started = actionClient.WaitForActionServerToStart(new TimeSpan(0, 0, 3));

            if (!started)
            {
                Console.WriteLine("Negotiation with server failed!");
            }

            Console.ReadLine();

            actionServer.Shutdown();
            nodeHandle.shutdown();
            ROS.shutdown();
        }
コード例 #2
0
ファイル: ActionLib.cs プロジェクト: wiwing/ROS.NET
        public void Should_CreateGoalAndGetItDone()
        {
            NodeHandle serverNodeHandle = new NodeHandle();
            NodeHandle clientNodeHandle = new NodeHandle();

            Console.WriteLine("Create server");
            var actionServer = new ActionServer <FollowJointTrajectoryGoal, FollowJointTrajectoryResult,
                                                 FollowJointTrajectoryFeedback>(serverNodeHandle, "SimpleTest");

            Console.WriteLine("Create client");
            var actionClient = new ActionClient <FollowJointTrajectoryGoal, FollowJointTrajectoryResult,
                                                 FollowJointTrajectoryFeedback>("SimpleTest", clientNodeHandle);

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

            bool goalRegistered = false;

            actionServer.RegisterGoalCallback((goalHandle) =>
            {
                Console.WriteLine($"Goal registered callback. Joint Name {goalHandle.Goal.trajectory.joint_names[0]}");
                goalRegistered = true;
            });

            Console.WriteLine("Wait for client and server to negotiate connection");
            bool started = actionClient.WaitForActionServerToStart(new TimeSpan(0, 0, 20));

            Assert.Equal(true, started);

            var goal = new FollowJointTrajectoryGoal();

            goal.trajectory             = new Messages.trajectory_msgs.JointTrajectory();
            goal.trajectory.joint_names = new string[] { "Hallo Welt!" };

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

            actionClient.SendGoalAsync(goal, cts.Token).GetAwaiter().GetResult();

            Console.WriteLine("Wait for action server receiving the goal");
            while (!goalRegistered)
            {
                Thread.Sleep(1);
            }
        }
コード例 #3
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();
        }
コード例 #4
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();
        }
コード例 #5
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();
        }