コード例 #1
0
        static void Main(string[] args)
        {
            RosBridgeUtility.RosBridgeConfig conf1 = new RosBridgeUtility.RosBridgeConfig();
            conf1.readConfig("XMLFile1.xml");
            RosBridgeUtility.RosBridgeLogic logic = new RosBridgeUtility.RosBridgeLogic();
            logic.AddStoppedListener(logic_MonitoringStopped);
            String fos = "[10, 10]";

            Console.WriteLine(Array.ConvertAll(fos.Replace("[", "").Replace("]", "").Split(','), Double.Parse));
            logic.Initialize(conf1.URI);
            logic.Connect();
            logic.InitializeCollection();

            /*
             * Dictionary<String, double> lin = new Dictionary<string, double>()
             * {
             *  {"x",1.5},
             *  {"y",0.0},
             *  {"z",0.0},
             * };
             * Dictionary<String, double> ang = new Dictionary<string, double>()
             * {
             *  {"x",0.0},
             *  {"y",0.0},
             *  {"z",3.14},
             * };
             * Object[] vals = { lin, ang };
             */
            //logic.PublishMessage("/turtle1/command_velocity", keys, vals);
            //logic.PublishMessage("/turtle1/cmd_vel", keys, vals);
            Object[] lin = { 2.0, 0.0, 0.0 };
            Object[] ang = { 0.0, 0.0, 3.14 };
            foreach (var item in conf1.getPublicationList())
            {
                logic.PublishTwistMsg(item, lin, ang);
            }
            logic.StartCollections(conf1.getTopicList());
            Object[] linNeo       = { 2.1, 2.1 };
            Object[] driveActive  = { true, true };
            Object[] quickStop    = { false, false };
            Object[] disableBrake = { true, true };
            //logic.PublishNeobotixCommandMsg("/DriveCommands", linNeo, driveActive, quickStop, disableBrake);
            System.Threading.Thread.Sleep(1000);

            logic.RemoveCollections(conf1.getTopicList());
            var x = logic.StopCollection();

            foreach (var attr in conf1.ProjectedAttributes())
            {
                Console.Out.WriteLine(attr.Item2);
                foreach (var item in logic.getResponseAttribute(attr.Item1, attr.Item2))
                {
                    Console.WriteLine(item);
                    //Console.Out.WriteLine(((List<Double>)item)[0]);
                    //Console.Out.WriteLine("{0}: {1} {2}", attr.Item1, ((List<Double>)item)[0], ((List<Double>)item)[1]);
                }
            }
        }
コード例 #2
0
 private void pushView(JObject jsonData)
 {
     if (jsonData["topic"].ToString().Equals(showState))
     {
         Dispatcher.Invoke(new Action(() => labelX.Content = "x: " + valueToView(jsonData, bridgeConfig.ProjectedAttributes()[0].Item2)));
         Dispatcher.Invoke(new Action(() => labelY.Content = "y: " + valueToView(jsonData, bridgeConfig.ProjectedAttributes()[1].Item2)));
     }
     else if (jsonData["topic"].ToString().Replace("\"", "").Equals(laserScan))
     {
         /*
          * var x1 = jsonData["msg"]["ranges"].ToList();
          * foreach (var itemx in ((IList<JToken>)x1))
          * {
          *  Console.WriteLine(itemx);
          * }
          */
         Double angle_inc;
         Double min_angle;
         if (jsonData["msg"]["angle_increment"].ToString().Contains(","))
         {
             Double.TryParse(jsonData["msg"]["angle_increment"].ToString(),
                             NumberStyles.Number,
                             CultureInfo.CreateSpecificCulture("hu-HU"),
                             out angle_inc);
             Double.TryParse(jsonData["msg"]["angle_min"].ToString(),
                             NumberStyles.Number,
                             CultureInfo.CreateSpecificCulture("hu-HU"),
                             out min_angle);
         }
         else
         {
             Double.TryParse(jsonData["msg"]["angle_increment"].ToString(),
                             NumberStyles.Number,
                             CultureInfo.CreateSpecificCulture("en-US"),
                             out angle_inc);
             Double.TryParse(jsonData["msg"]["angle_min"].ToString(),
                             NumberStyles.Number,
                             CultureInfo.CreateSpecificCulture("en-US"),
                             out min_angle);
         }
         Dispatcher.Invoke(new Action(() =>
                                      laserScanCanvas(jsonData["msg"]["ranges"].ToList(), angle_inc, min_angle)));
     }
     else if (jsonData["topic"].ToString().Replace("\"", "").Equals(odometry))
     {
         odometryCount++;
         Double measuredDistance = 0;
         Double measuredAngle    = 0;
         if (bridgeConfig.target == "neobotix_mp500" || bridgeConfig.target == "pr2")
         {
             /*Console.WriteLine(Double.TryParse(jsonData["msg"]["pose"]["pose"].ToString(),
              *  NumberStyles.Number,
              *  CultureInfo.CreateSpecificCulture("en-US"),
              *  out measuredDistance));
              */
             Double x, y, angleX, angleY, angleZ, angleW = 0;
             if (jsonData["msg"]["pose"]["pose"]["position"]["x"].ToString().Contains(","))
             {
                 Double.TryParse(jsonData["msg"]["pose"]["pose"]["position"]["x"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("de-DE"),
                                 out x);
                 Double.TryParse(jsonData["msg"]["pose"]["pose"]["position"]["y"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("de-DE"),
                                 out y);
                 Double.TryParse(jsonData["msg"]["pose"]["pose"]["orientation"]["x"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("de-DE"),
                                 out angleX);
                 Double.TryParse(jsonData["msg"]["pose"]["pose"]["orientation"]["y"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("de-DE"),
                                 out angleY);
                 Double.TryParse(jsonData["msg"]["pose"]["pose"]["orientation"]["z"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("de-DE"),
                                 out angleZ);
                 Double.TryParse(jsonData["msg"]["pose"]["pose"]["orientation"]["w"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("de-DE"),
                                 out angleW);
             }
             else
             {
                 Double.TryParse(jsonData["msg"]["pose"]["pose"]["position"]["x"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("en-US"),
                                 out x);
                 Double.TryParse(jsonData["msg"]["pose"]["pose"]["position"]["y"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("en-US"),
                                 out y);
                 Double.TryParse(jsonData["msg"]["pose"]["pose"]["orientation"]["x"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("en-US"),
                                 out angleX);
                 Double.TryParse(jsonData["msg"]["pose"]["pose"]["orientation"]["y"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("en-US"),
                                 out angleY);
                 Double.TryParse(jsonData["msg"]["pose"]["pose"]["orientation"]["z"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("en-US"),
                                 out angleZ);
                 Double.TryParse(jsonData["msg"]["pose"]["pose"]["orientation"]["w"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("en-US"),
                                 out angleW);
             }
             if (odometryCount % 100 == 0)
             {
                 //Console.WriteLine("X: {0}, Y: {1}, Z: {2}, W: {3}", angleX, angleY, angleZ, angleW);
                 currRot = bridgeLogic.convertQuaternionToEuler(angleX, angleY, angleZ, angleW);
                 //Console.WriteLine("Roll: {0}, Pitch: {1}, Yaw: {2}", currRot.roll, currRot.pitch, currRot.yaw);
                 Dispatcher.Invoke(new Action(() => visualizeOdometry(x, y, currRot.yaw)));
             }
         }
         else
         {
             if (jsonData["msg"]["distance"].ToString().Contains(","))
             {
                 Double.TryParse(jsonData["msg"]["distance"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("de-DE"),
                                 out measuredDistance);
                 Double.TryParse(jsonData["msg"]["angle"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("de-DE"),
                                 out measuredAngle);
                 Dispatcher.Invoke(new Action(() => visualizeOdometry(measuredDistance, measuredAngle)));
             }
             {
                 Double.TryParse(jsonData["msg"]["distance"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("en-US"),
                                 out measuredDistance);
                 Double.TryParse(jsonData["msg"]["angle"].ToString(),
                                 NumberStyles.Number,
                                 CultureInfo.CreateSpecificCulture("en-US"),
                                 out measuredAngle);
                 Dispatcher.Invoke(new Action(() => visualizeOdometry(measuredDistance, measuredAngle)));
             }
         }
     }
 }