On 08.04.2014 16:21, Sylvain Joyeux wrote:
In addition to making the controldev component simpler, having a 1D vector would allow to have more straightforward generic conversion components (e.g. a rawcommand-to-motioncommand would only need two axis IDs instead of 4 to convert from rawcommand to forward/rotation)
There were two different things in this discussion:
- using the controldev to directly output MotionCommands
--- I removed this feature because it's not generic doable to create motion commands from joysticks.
- Using 1D vs. 2D arrays
Even a conversion might be more complicated. We now using a RC-Control and it's really horrible to have only one 1D array.
It produces more faults in the usage from my experience.

To create a conversion-component. This Conversion component must be able to handle ALL Joints, and use-cases for ALL possible systems. We could start a basic one. But from my point of view this would get messed up. Nevertheless if someone would like to write a component, the 2D version is more complex but from my point of view the way to go. The Mapping could be done in a yaml file to for 2d arrays.

The Controldev is a DRIVER, not a motor or system controller by default. I understand the intention to use this as a controller, i would point out that this driver isn't a controller and therefore only should write outputs in a most-generic and understandable way.


I definitely +1 the 1D vector in principle, now I do understand that we don't necessarily want to update the type. That being said, did you guys not start to create a process to deprecate types ?

It's started but not completely tested:
http://rock.opendfki.de/ticket/419


Sylvain


On Tue, Apr 8, 2014 at 4:13 PM, Alexander Duda <[email protected] <mailto:[email protected]>> wrote:

    On 04/08/2014 03:55 PM, Javier Hidalgo Carrió wrote:
    > On 04/08/2014 03:10 PM, Alexander Duda wrote:
    >> On 04/08/2014 03:04 PM, Javier Hidalgo Carrió wrote:
    >>>> The reason is that each axis could control several sub-axes.
    >>> How many axis go to each sub-axes (sub-joystick)? How do you
    map then?
    >>> ... The first two one, the first three ones...
    >> I would say, the naming is really bad. In general, an axis is
    defined
    >> as a 1D line.
    >>>> The idea behin is that one one-dimensional arrays does not
    scale very
    >>>> whell with different kind of input-devices.
    >>>> In the past it was one 1D array. We decided to change this.
    >>> Actually I think that 1D array scale better with different kind of
    >>> input
    >>> devices just because it is a plain 1D.
    >> Yes, the mapping could also be done with a single std::vector which
    >> would at least to me more natural. But the question is is, it worth
    >> to change everything?
    > I also asked myself this question. In that case it is not worthy but
    > in reality it doesn't seem to be that much.
    > n/scale
    > Only two things so far:
    > 1) Change the RawCommand struct which is NOT a base type
    > 2) The method in JoystickTask.cpp to map from RawCommand to
    > MotionCommand2D (rotational and translation velocity).
    >
    > Also... there is a property in the current version of the controldev
    > component:
    >     property("axisScale","/std/vector<double>")
    > which is a std::vector (not a std:vector<std::vector> ).
    Therefore it
    > will play nicer with 1D array.
    > I don't want to pollute the mailing-list with this topic. My
    > suggestion: I could make the changes in a different branch and
    in case
    > it is not the way of going we could always go back or find a merge
    > point. Do you agree?
    >
    > Javier.
    I would always try to avoid branching away.  Therefore, the best think
    would be to convince Matthias as he is the guy maintaining condrolDev.
    Personally, I would like to see the proposed change because like you
    said it would have the same syntax like axisScale.

    In any case, you have to do some kind of mapping insight the component
    to get a proper motion command.

    Greets Alex

    >>
    >> enum Axes
    >> {
    >>     axis1_x
    >>     axis1_y
    >>     axis2_x
    >>     ..
    >> };
    >> a[axis1_x] = 123
    >>
    >> Alex
    >>
    >>>> If you have multiple input deviced, the mapping should be
    done by a
    >>>> conversion component. There could be no generic rule how to apply
    >>>> RawCommands to something else.
    >>>>
    >>>> You joystick-driver should output the values from the
    Joysticks as
    >>>> they
    >>>> are. The mapping for your rover's should be done in a specialized
    >>>> component.
    >>> Therefore the especialized component should compute e.g.: 2D
    commands
    >>> from a common RawCommand.
    >>>   From my point of view the RawCommand should be generic and
    therefore
    >>> raw (plain). Unless there is a way of asking to the Linux api:
    >>> number of
    >>> sub-joysticks to create this 2D array. I still don't see it.
    >>>
    >>> Javier.
    >>>> So no i'm against a change here.
    >>>>
    >>>> Best,
    >>>> Matthias
    >>>>
    >>>> On 08.04.2014 14:32, Javier Hidalgo Carrió wrote:
    >>>>> Hi rocks!
    >>>>>
    >>>>> Is there any particular reason why the axisValue is a 2D array?
    >>>>>
    >>>>>      /* Index 1: num-of input axis, //index 2: dimensions of
    this
    >>>>> axis
    >>>>>              * If you have an gamepand which has 2 2Dknops you
    >>>>> have an [2][2]
    >>>>>              * size'd array for an 3D Mouse you could have
    [1][6]
    >>>>>              */
    >>>>> std::vector<std::vector<double> > axisValue;
    >>>>>
    >>>>> Why not to create a plain  std::vector<double> instead?
    >>>>>
    >>>>> I am controlling with a joystick the ESA rover and there are
    several
    >>>>> types of joysticks. They do not all have 4 axis in the
    main/principal
    >>>>> joystick.
    >>>>> Therefore, I do not see the benefit of having a std::vector
    inside
    >>>>> another std::vector.
    >>>>> My suggestion is to change it to a plain (1D array) std::vector
    >>>>> and use
    >>>>> the first 4 axis as it is now but without a 2D structure.
    >>>>>
    >>>>> Javier.
    >>>>>
    >>>>>
    >>>>> _______________________________________________
    >>>>> Rock-dev mailing list
    >>>>> [email protected] <mailto:[email protected]>
    >>>>> http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev
    >>>
    >>>
    >>> _______________________________________________
    >>> Rock-dev mailing list
    >>> [email protected] <mailto:[email protected]>
    >>> http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev
    >>
    >>
    >
    >


    --
    Dipl.-Ing. Alexander Duda
    Unterwasserrobotik
    Robotics Innovation Center

    Hauptgeschäftsstelle Standort Bremen:
      DFKI GmbH
      Robotics Innovation Center
      Robert-Hooke-Straße 1
      28359 Bremen, Germany

      Tel.: +49 421 178 45-6620 <tel:%2B49%20421%20178%2045-6620>
      Zentrale: +49 421 178 45-0 <tel:%2B49%20421%20178%2045-0>
      Fax: +49 421 178 45-4150 <tel:%2B49%20421%20178%2045-4150> (Faxe
    bitte namentlich kennzeichnen)
      E-Mail: [email protected] <mailto:[email protected]>

      Weitere Informationen: http://www.dfki.de/robotik
    -----------------------------------------------------------------------
      Deutsches Forschungszentrum fuer Kuenstliche Intelligenz GmbH
      Firmensitz: Trippstadter Straße 122, D-67663 Kaiserslautern
      Geschaeftsfuehrung: Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster
      (Vorsitzender) Dr. Walter Olthoff
      Vorsitzender des Aufsichtsrats: Prof. Dr. h.c. Hans A. Aukes
      Amtsgericht Kaiserslautern, HRB 2313
      Sitz der Gesellschaft: Kaiserslautern (HRB 2313)
      USt-Id.Nr.:    DE 148646973
      Steuernummer:  19/673/0060/3

    _______________________________________________
    Rock-dev mailing list
    [email protected] <mailto:[email protected]>
    http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev




_______________________________________________
Rock-dev mailing list
[email protected]
http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev


--
 Dipl.-Inf. Matthias Goldhoorn
 Space and Underwater Robotic

 Universität Bremen
 FB 3 - Mathematik und Informatik
 AG Robotik
 Robert-Hooke-Straße 1
 28359 Bremen, Germany
Zentrale: +49 421 178 45-6611 Besuchsadresse der Nebengeschäftstelle:
 Robert-Hooke-Straße 5
 28359 Bremen, Germany
Tel.: +49 421 178 45-4193
 Empfang: +49 421 178 45-6600
 Fax:     +49 421 178 45-4150
 E-Mail:  [email protected]

 Weitere Informationen: http://www.informatik.uni-bremen.de/robotik

_______________________________________________
Rock-dev mailing list
[email protected]
http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev

Reply via email to