Loading ...
Sorry, an error occurred while loading the content.
 

Re: [SeattleRobotics] Laptop with 2 USB Cards

Expand Messages
  • Xandon Frogget
    ... If you are connecting 2 computers directly then a crossover cabe might be what you are talking about. Although most ethernet ports have automatic crossover
    Message 1 of 22 , Feb 13, 2013

      On Feb 12, 2013, at 8:32 PM, jamericanfreddy wrote:

      I see 3 computers together,where one is the brains,another is navigation and another is motors and sensors.

      Hook them up together only need the yellow RJ45 network cable,i think its the yellow one,i forgot the type of cable its called or may be you have another way to do it.

      If you are connecting 2 computers directly then a crossover cabe might be what you are talking about. Although most ethernet ports have automatic crossover now, so a crossover cable may no longer be necessary. A standard cat 5 with RJ45's will most likely work, but if you cannot get a connection then try using a cat 5 RJ45 with crossover.


      You can use many types of network nodes to connect 3 computers with cables ie switch, hub, etc. There are many options for this. I do not believe you need a crossover if you are using a node.

      If you have a reliable wifi network you could use that as well and forgo using cables. Really depends on the needs and interference expected. Distance between devices and so on.

      Most of my earlier time at the end of last year was spent connecting several micro-controllers together. Once I switched to having a laptop in line, managing the micro controllers becomes a little tedious to plug and unplug them for changing values and reprogramming.

      A useful thing I found  to help in this case was to pair a network module with the main or central micro controller, like an RNXV wifly.  When the micro controller powers up, (or the program on the laptop) it is able to use default variable to startup. It will then check on startup if the server is available and if it is, it might load newer variables. At any time I can send a command to force the updated variables or have it polled at regular intervals. Depends on what is needed. It can of course also send data the other direction allowing for those long GPS reads to get reviewed in real time on the laptop or web interface. (XBee will work as well but you need to have a proxy program to run interference.) Recently I have been setting up all my variables in a database table to be read and be written to in this way. I use MySQL now as it is part of the MAMP install.

      This made it easier to make adjustments to the program without having to plug in, reprogram, and unplug the robot. I could quickly update things without having to restart the micro controller, saving a huge amount of time. Extra useful since the micro controller was being used generally to bridge to a sensor.

      For some of this I would use the laptop computer as the proxie especially when working with XBee, but a lot of transmissions were direct http requests to the php server (part of MAMP) from the  micro controller.
      You can telnet and send http commands  since it is on the network so it could go anywhere to gather or send info if the network was open to the internet.

      The nice thing about this is once you have networked the micro controller and if you are familiar with web development then you can easily build web tools to interact with your data, allowing you to control and read the micro controller from a distance or a cell phone etc.

      All of this seems pretty logical when I was setting it up, but there are probably better ways than I described, this was just some things I have found handy. With a little bit of setup invested to route the variables I could save myself a lot of time when I started testing and refining the program.

      A book I found very helpful in the beginning and I highly recommend is called  "Making Things Talk" by Tom Igoe.

      -Xandon

    • Xandon Frogget
      I was finally able to get 2 kinects to work. After testing on a few different machines at SRS meeting, I learned a little and was able to confirm that my 2.3
      Message 2 of 22 , Feb 18, 2013
        I was finally able to get 2 kinects to work. After testing on a few different machines at SRS meeting, I learned a little and was able to confirm that my 2.3 Ghz intel core i7 Macbook Pro does use 2 separate hi speed busses for the 2 usb ports on the side. I also found out that a docking station can add USB ports on other laptops that may not. Theoretically the PCI MCIA cards would work this way as well.

        Here are instructions for installing:
        http://code.google.com/p/simple-openni/wiki/Installation

        The processing example MultiCam works for me now with 2 kinects since I found this thread and changed the order of the enableDepth():

        https://groups.google.com/forum/?fromgroups=#!topic/simple-openni-discuss/HY312618Qb8

        For some reason changing the order that the depth image is turned on allows it to work....?
        Sounds kind of fuzzy to me but it works.

        Basically from this:
        /* ------------------------------ */
        // init the cameras
        cam1 = new SimpleOpenNI(0,this);
        cam2 = new SimpleOpenNI(1,this);

        // enable depthMap generation
        cam1.enableDepth();
        cam2.enableDepth();
        /* ------------------------------ */

        to this... fixes it:
        /* ------------------------------ */
        // init the cameras
        cam1 = new SimpleOpenNI(0,this);
        cam2 = new SimpleOpenNI(1,this);

        // enable depthMap generation
        cam2.enableDepth();
        cam1.enableDepth();
        /* ------------------------------ */


        -Xandon
      • Xandon Frogget
        I tested on the older Macbook Pro intel core two duo 2.4 Ghz and it worked fine there now too. Not sure how the slight difference in order of enabling
        Message 3 of 22 , Feb 18, 2013
          I tested on the older Macbook Pro intel core two duo 2.4 Ghz and it worked fine there now too. Not sure how the slight difference in order of enabling depthImage changed it, must be a bug in SimpleOpenNI library. The important thing is it works, and so it should work on many of the same board layouts by different manufacturers. (Not just Apple).

          I hope this helps others who may be trying to integrate multiple Kinect's into their robot using processing. Another helpful technique for multiple Kinects is presented by Microsoft Research that they call "Shake 'n' Sense"


          A big thanks to MicrosoftResearch for sharing this great technique.
          -Xandon


          On Feb 18, 2013, at 4:26 AM, Xandon Frogget wrote:

           

          I was finally able to get 2 kinects to work. After testing on a few different machines at SRS meeting, I learned a little and was able to confirm that my 2.3 Ghz intel core i7 Macbook Pro does use 2 separate hi speed busses for the 2 usb ports on the side. I also found out that a docking station can add USB ports on other laptops that may not. Theoretically the PCI MCIA cards would work this way as well.

          Here are instructions for installing:
          http://code.google.com/p/simple-openni/wiki/Installation

          The processing example MultiCam works for me now with 2 kinects since I found this thread and changed the order of the enableDepth():

          https://groups.google.com/forum/?fromgroups=#!topic/simple-openni-discuss/HY312618Qb8

          For some reason changing the order that the depth image is turned on allows it to work....?
          Sounds kind of fuzzy to me but it works.

          Basically from this:
          /* ------------------------------ */
          // init the cameras
          cam1 = new SimpleOpenNI(0,this);
          cam2 = new SimpleOpenNI(1,this);

          // enable depthMap generation
          cam1.enableDepth();
          cam2.enableDepth();
          /* ------------------------------ */

          to this... fixes it:
          /* ------------------------------ */
          // init the cameras
          cam1 = new SimpleOpenNI(0,this);
          cam2 = new SimpleOpenNI(1,this);

          // enable depthMap generation
          cam2.enableDepth();
          cam1.enableDepth();
          /* ------------------------------ */

          -Xandon


        Your message has been successfully submitted and would be delivered to recipients shortly.