Version 40 (modified by atorf, 5 years ago)

Home | Preview | News | In the Press | Projects | Features | Download | Development | Bug Reports | FAQ | Login


Newsflash

  • Proposal for new toolbox commands with USB support, discussion about changes for toolbox version 2.00, see here: DiscussionRelease2.00 (16.5.2008)
  • NXT-USB communication successfully tested (using official LEGO Mindstorms NXT Fantom Driver Version 1.02 on Windows and libusb on Linux).
    Toolbox-Prototype with USB support is being developed, first tests point towards data rates of about 150 analog sensor / motor requests per second (as opposed to a maximum of about 15 per second using Bluetooth). See here for details: USBStuff (29.4.2008)
  • Lowlevel private functions dec2wordbytes and wordbytes2dec rewritten and optimized by about factor 10.
  • New Ultrasonic Sensor mode "snapshot" (aka PING-Mode or SINGLE_SHOT) successfully implemented and tested.
    Observed multiple echos seems complex, might not be as useful as expected.
  • New I²C sensors (compass, acceleration, IR, color) are to be tested and implemented.



Brainstorming

  • Overview and comments about comparison between other solutions for MATLAB: Toolboxes from Chikamasa, The MathWorks?
  • Try using a different firmware than official standard NXT, like LeJOS / NXC / RobotC? There are hints to more precise motor control (TachoLimit? problem potentially fixed in LeJOS) or better performance of direct commands / bluetooth transmission!
  • Consider Bluetooth / serial port code from MathWorks?' NXT toolbox to reduce Bluetooth timeouts (try using option NumRetries??)



Further Concepts & To Do List

Here we try to summarize some of the new concepts and bigger To-Do issues for future toolbox releases. These are basically just translations and short explanations of the German developer's notepad developer's notepad.

  • Split GET-Functions into REQUEST and COLLECT parts again, making it possible to do calculations inbetween. I.e. add possibility for non-blocking (asynchronous) functions, as known from many sockets implementations.
  • Add verbosity-level support in textOut.m and of course in all files using it, to enable complete and detailed logging, that is configurable.
  • Check the MATLAB-Help for the command readasync. Can it help to reduce timeouts and lags? Can it be used for the above mentioned non-blocking functions?
  • textOut and dec2hex are slow. String-handling is slow. What can be done? Consider various performance improvements, use the Profiler.
  • Apparently the commands pause and tic / toc have only an accuracy/resolution of 15ms when using Windows or Linux (someone said)? Is that true?Investigate how accurate they are and decided wether it still makes sense to use SendSendPause and SendReceivePause…
  • The (sometimes optionally) passed Bluetooth-Handle (to functions) gets checked/validated far too often inside these functions. Checking/validating is only necessary at the lowest level, the other checks are a waste of performance…
  • Compatibility for multiple bluetooth handles / NXT connections at one time is not perfectly implemented: The settings SendSendPause etc. are unique and global, and should be defined PER connection, not only once. Workaround: Disable those pauses by setting to 0.
  • /!\ Add USB-Support, try to use as many existing BT-functions as possible (by using wrappers if necessary). Some code snippets, hints etc are collected on this temporary page: USBStuff
  • Note: Apparently we CAN access the PID regulation directly, as this post suggests ( http://forums.nxtasy.org/index.php?showtopic=2054&view=findpost&p=16463). Code-Sample:
    def set_PID(motor,P,I,D):
        """Change the PID parameters 
    		>>> set_PID(motor,"\x78","\x78","\x78")    Use only hexadecimal number in string !"""
    		brick.write_io_map(131073,motor.port*32+22,P)
        brick.write_io_map(131073,motor.port*32+23,I)
        brick.write_io_map(131073,motor.port*32+24,D)
        update(motor,Update.PID_VALUES)
    
  • Note: John Hansen supported the module ids at  http://news.lugnet.com/robotics/nxt/nxthacking/?n=14 to access the module directly, without request sequentially the modules
    The interpretation should be MSB PP TT CC FF LSB —> 0xPPTTCCFF
    PP: identify programmer TT: module type identification CC and FF: module version identification
    The module IDs are:
    CommandModuleID  = 0x00010001
    OutputModuleID   = 0x00020001
    InputModuleID    = 0x00030001
    ButtonModuleID   = 0x00040001
    CommModuleID     = 0x00050001
    IOCtrlModuleID   = 0x00060001
    SoundModuleID    = 0x00080001
    LoaderModuleID   = 0x00090001
    DisplayModuleID  = 0x000A0001
    LowSpeedModuleID = 0x000B0001
    UIModuleID       = 0x000C0001
    
    /!\ As long as a new firmware update doesn't change this IDs, we are fine to use constants.
  • Own tests and example programs "DriveAlong" using the NXT-G software showed no different behaviour of the driving robot. The motors also switch into the coast mode after the defined rotation angle is set.



Checklist for New Releases

This todo-list might have to be updated for future public releases with many developers / contributors collaborating, it was first intended for internal use and then published → Checklist for New Releases.



Further Concepts (German developer's notepad)

This page provides a developer's notepad to discuss further concepts → Further Concepts (German).