Differences between revisions 16 and 17
Revision 16 as of 2012-05-08 23:08:46
Size: 4566
Editor: 195-241-239-132
Comment:
Revision 17 as of 2012-05-08 23:16:36
Size: 5009
Editor: 195-241-239-132
Comment:
Deletions are marked like this. Additions are marked like this.
Line 75: Line 75:
=== MATLAB-socket<=>socket-Processing-Arduino/AdMoveo: Using TCP/IP client/server sockets ===
 * Both MATLAB and Processign are able to communicate with the others over a TCP/IP connection, acting as either a client or a server.
 * Robbert van Vliet, Rik Vegt, Martijn Kors and Michael Geertshuis are able to use this approach in their project. In their report you can find the technical details: [[attachment:Learning_Robots_Socket.pdf]]

Learning Robots

This wiki site is part of the Learning Robots module.

1. Connecting MATLAB and Arduino/Admoveo

1.1. Arduino support in MATLAB (no Admoveo robot support)

  • MathWorks has a software package to support Arduino directly in MATLAB. You can find the package from its website. Please notice that:

    • You do need to login with your MATLAB account, in order to download the package and get access to other resources such as tutorials.
    • Check out the Additional Resources to find a useful Webinar.

    • In the downloaded zip file, readme.txt has very detailed instructions for installing the firmware to Arduino and the necessary library to MATLAB.
    • if you plan to use servo motors, you need the motor shield for MATLAB to control the motors properly using the given package.

    • To get the online documentation of the arduino class in MATLAB, type in "arduino(" and wait for a dialogue box to pop up:

      attachment:arduinomatlab.jpg

1.2. MATLAB-Processing-Arduino/AdMoveo: Using matlabcontrol in Processing

  • The matlabcontrol library for Java is available from http://code.google.com/p/matlabcontrol/

  • To install the library to be used in Processing:
    1. Download "matlabcontrol jar with source files included" from http://code.google.com/p/matlabcontrol/downloads/list.

    2. Rename the jar file (for example, matlabcontrol-4.0.0.jar) to "matlabcontrol.jar".
    3. Create a directory in your Processing library path: <Sketchbook location>\libraries\matlabcontrol\library, put "matlabcontrol.jar" in this directory.

    4. To verify your installation, start processing, go to menu "Sketch->Import Libraries", you should be able to able to import "matlabcontrol":

      attachment:matlabcontrol.jpg

  • Follow the Walkthrough to understand how to communicate to MATLAB in JAVA.

  • Similar approach described in the Walkthrough can be done in Processing. Take the "Hello World" example in Java:

       1 public static void main(String[] args) throws MatlabConnectionException, MatlabInvocationException
       2 {
       3     //Create a proxy, which we will use to control MATLAB
       4     MatlabProxyFactory factory = new MatlabProxyFactory();
       5     MatlabProxy proxy = factory.getProxy();
       6 
       7     //Display 'hello world' just like when using the demo
       8     proxy.eval("disp('hello world')");
       9 
      10     //Disconnect the proxy from MATLAB
      11     proxy.disconnect();
      12 }
    

    The same can be done in Processing by removing the "main" method. However in Processing we need to catch the exceptions:

       1 import matlabcontrol.internal.*;
       2 import matlabcontrol.extensions.*;
       3 import matlabcontrol.*;
       4 
       5 try {
       6   //Create a proxy, which we will use to control MATLAB
       7   MatlabProxyFactory factory = new MatlabProxyFactory();
       8   MatlabProxy proxy = factory.getProxy();
       9 
      10   //Display 'hello world' just like when using the demo
      11   proxy.eval("disp('hello world')");
      12 
      13   //Disconnect the proxy from MATLAB
      14   proxy.disconnect();
      15 } 
      16 catch (Exception e) {
      17   //do nothing, or cry.
      18 }
    

    Other examples in the Walkthrough can be modified in a similar manner for Processing.

  • This approach, in combination with Admoveo robots, has been used successfully by F.N.A. Al-Kaylani, K.J.F de Greef and N.M. Nelson in their project. See their report: Learning_Robots_SuggestionRobot.pdf

1.3. MATLAB-socket<=>socket-Processing-Arduino/AdMoveo: Using TCP/IP client/server sockets

  • Both MATLAB and Processign are able to communicate with the others over a TCP/IP connection, acting as either a client or a server.
  • Robbert van Vliet, Rik Vegt, Martijn Kors and Michael Geertshuis are able to use this approach in their project. In their report you can find the technical details: Learning_Robots_Socket.pdf

2. Admoveo Robot

JunHu: LearningRobots (last edited 2014-02-19 22:57:04 by JunHu)