Giter Site home page Giter Site logo

aseba-community / aseba Goto Github PK

View Code? Open in Web Editor NEW
48.0 48.0 62.0 25.56 MB

Aseba is a set of tools which allow beginners to program robots easily and efficiently. To contact us, please open an issue.

Home Page: http://aseba.wikidot.com

License: GNU Lesser General Public License v3.0

CMake 3.56% Shell 0.18% C++ 69.05% CSS 0.18% HTML 14.92% C 7.29% QMake 0.01% Python 3.20% JavaScript 0.98% Ruby 0.01% Batchfile 0.01% NSIS 0.62% Smarty 0.01%
education ide iot-framework k12 robotics visual-programming

aseba's People

Contributors

antoinealb avatar basilstotz avatar benzonico avatar brettle avatar cbarraud avatar chlongv avatar cor3ntin avatar cwalther avatar cyrillebiot avatar damieng002 avatar davidjsherman avatar fabianhahn avatar frankybonnet avatar ioannagreece avatar jiwonshin avatar kralf avatar marvelous avatar paraskevasleivadaros avatar riedo avatar sampla avatar severinklingler avatar shilingwang avatar stephanemagnenat avatar syrianspock avatar titwin avatar witwicki avatar ypiguet-epfl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aseba's Issues

Unity test: Simulate user's input

Often, the compiler crashes during an incomplete input, when the user is writing a line. This is not caught by the regular test suite, as only the final state is checked.

The idea would be to have a (let's say) Python script, taking a script as input and looping over each character, truncating the end and compiling. This will generate a lot of compilation, but will effectively simulate a user typing a new script. Should not be hard to do...

Add the "switch" instruction

This issue was moved from gna bug tracker, there it was bug 18102 (http://gna.org/bugs/?18102).

Florian Vaussard
I agree, this is not a mandatory feature, but would be more confortable for big state machines.

Stéphane Magnenat
Doing this is purely a syntactic extension, if implemented with chained if <-> else if.

The question whether it is worth the work and the complexification of the language, as chained elseif do implement the same idea:

if a == 1 then

elseif a == 2 then

elseif a == 3 then

else

end

Florian Vaussard
It would be nice to have the "switch" instruction like in C.

Crash on paste

I go the following crash on paste, unfortunately on a release build:

*** glibc detected *** studio/asebastudio: free(): invalid pointer: 0x0000000000d387c0 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x78a8f)[0x7fe190523a8f]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x73)[0x7fe1905278e3]
/usr/lib/libQtGui.so.4(+0x4343d4)[0x7fe1925363d4]
/usr/lib/libQtGui.so.4(+0x43804b)[0x7fe19253a04b]
/usr/lib/libQtGui.so.4(_ZN11QTextCursor10insertTextERK7QStringRK15QTextCharFormat+0x117)[0x7fe1925669d7]
/usr/lib/libQtGui.so.4(_ZN11QTextCursor10insertTextERK7QString+0x3a)[0x7fe19256702a]
studio/asebastudio(_ZN5Aseba10AeslEditor18insertFromMimeDataEPK9QMimeData+0x31f)[0x44f1cf]
/usr/lib/libQtGui.so.4(+0x402b23)[0x7fe192504b23]
/usr/lib/libQtGui.so.4(_ZN12QTextControl12processEventEP6QEventRK7QMatrixP7QWidget+0x80b)[0x7fe192505bcb]
/usr/lib/libQtGui.so.4(_ZN12QTextControl12processEventEP6QEventRK7QPointFP7QWidget+0x56)[0x7fe1924fbd86]
/usr/lib/libQtGui.so.4(_ZN9QTextEdit13keyPressEventEP9QKeyEvent+0x2c7)[0x7fe192729c77]
studio/asebastudio(_ZN5Aseba10AeslEditor13keyPressEventEP9QKeyEvent+0x3a)[0x44903a]
/usr/lib/libQtGui.so.4(_ZN7QWidget5eventEP6QEvent+0x71c)[0x7fe19230cd4c]
/usr/lib/libQtGui.so.4(_ZN6QFrame5eventEP6QEvent+0x26)[0x7fe1926bf156]
/usr/lib/libQtGui.so.4(_ZN19QAbstractScrollArea5eventEP6QEvent+0x7b)[0x7fe1927408eb]
/usr/lib/libQtGui.so.4(_ZN9QTextEdit5eventEP6QEvent+0x50)[0x7fe19272d140]
/usr/lib/libQtGui.so.4(_ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent+0xb4)[0x7fe1922bb9f4]
/usr/lib/libQtGui.so.4(_ZN12QApplication6notifyEP7QObjectP6QEvent+0x9a1)[0x7fe1922c0c41]
/usr/lib/libQtCore.so.4(_ZN16QCoreApplication14notifyInternalEP7QObjectP6QEvent+0x8c)[0x7fe19161a49c]
/usr/lib/libQtGui.so.4(+0x25f3d9)[0x7fe1923613d9]
/usr/lib/libQtGui.so.4(+0x25f856)[0x7fe192361856]
/usr/lib/libQtGui.so.4(_ZN12QApplication15x11ProcessEventEP7_XEvent+0x86f)[0x7fe19233c72f]
/usr/lib/libQtGui.so.4(+0x263842)[0x7fe192365842]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_dispatch+0x1dd)[0x7fe18f8b0bcd]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(+0x433a8)[0x7fe18f8b13a8]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_iteration+0x69)[0x7fe18f8b1639]
/usr/lib/libQtCore.so.4(_ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE+0x6f)[0x7fe1916453ef]
/usr/lib/libQtGui.so.4(+0x2634de)[0x7fe1923654de]
/usr/lib/libQtCore.so.4(_ZN10QEventLoop13processEventsE6QFlagsINS_17ProcessEventsFlagEE+0x32)[0x7fe191619882]
/usr/lib/libQtCore.so.4(_ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE+0xdc)[0x7fe191619abc]
/usr/lib/libQtCore.so.4(_ZN16QCoreApplication4execEv+0xab)[0x7fe19161decb]
studio/asebastudio(main+0x9fb)[0x47ff2b]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xff)[0x7fe1904c9eff]

Compiler crachs when compiling i = ~1

The compiler segfault at the optimization step. Here is the dump:

Program:
1 var i
2
3 i = ~1
4
5
Dumping tokens:
Line: 1 Col: 1 : var keyword
Line: 1 Col: 5 : string : i
Line: 3 Col: 1 : string : i
Line: 3 Col: 3 : = (assignation)
Line: 3 Col: 5 : binary not
Line: 3 Col: 6 : integer : 1
Line: 5 Col: 0 : end of stream

Syntax tree before optimisation:
ProgramBlock
Assign
Store: addr 0
UnaryArithmetic: binary not
Immediate: 1

Type checking:
correct.

Optimizations:
Abandon (core dumped)

Add the "return" instruction

This issue was moved from gna bug tracker, there it was bug 18103 (http://gna.org/bugs/?18103).

Florian Vaussard
The problem is not to return a value to someone, this can be managed using variables.
The concept would be to stop prematurely the execution of the event / subroutine. Like adding an "end" label and jumping to it. Otherwise, you have to declare a completion variable, and test it each time to see if you have to do some other work or not, until the end of the routine...

Stéphane Magnenat
It is not possible to return from event handlers as it is not defined to whom a value should be returned.
It might be possible to implement it for subroutines, but it is not trivial. It is important to note that subroutines are currently not functions, they do not have local scopes. They do have a call stack, but the latter only stores return addresses. But it might be nice to add an optional scalar return value to subroutines, indeed.

Florian Vaussard
The absence of "return" in event handlers / subroutines is really painful.
The structure of one's (real-world) program could be made really more clear with this :-)

Execute the compiler in a separate process

Currently, if the Aseba compiler segfault (yes, it can happen...), it makes Aseba Studio to crach. Running the compiler in a different process would prevent Aseba Studio to crach, avoiding frustration to the user and lost of the unsaved work.

Of course, this would imply to standardize the input and output interfaces.

And what about performance issues?

Allow to write compiled code to a file

It would by useful to be able to write binary (==compiled) code to a file.
Thus this code could be dynamically loaded by the thymio from the SD card.

In order to not automatically load code which is incompatible the following information should be in the file and checked by the VM:

  • VM name
  • VM ID
  • VM fwversion
  • VM productid
  • VM_STACK_SIZE
  • VM_BYTECODE_SIZE
  • VM_VARIABLES_ARG_SIZE
  • VM_VARIABLES_FREE_SPACE

Maybe a hash (CRC, or maybe md5) of the Full VM description could be used.

Translate compiler error messages

Compiler error messages are currently not translated, which is not nice when the environment is being used by non-English speakers. This tend to have the users ignore the error messages, which is a bad thing.

Adding translation to error messages requires the error-message class to hold all informations about the message in such way that messages can be reconstructed after translation.

Intelligent else indentation

The automatic indentation system does not provide any support for the else keyword, it would be nice to provide something consistent with the if automatic indentation.

Memory view: add the possibility to color some variables

When debugging, it would be really nice to apply some kind of label / formatting (example: background or font color) to chosen variables. A bit like the labels of GitHub... Doing so would significantly ease when dealing with a big amount of variables, by keeping track of important variables.

Add a watch window

Most modern debuggers offer a watch window, so you can keep track of a limited set of variables.

In Aseba, this could translate to a network-wide watch window, so you can even look at the variables of other nodes at the same time. Of course, the variables should be grouped by node (or maybe the user should be able to order them?), and an icon should inform the user about the status of this node / variable (running, stop, step-by-step,...) :-)

Provide context-aware help, automatic completion and automatic indentation

Currently Studio supports some form of context-help, automatic completion and automatic indentation. However, this is done through ad hoc methods where the source code is parsed by Studio (essentially in AeslEditor.h), that is, outside the compiler parser. Moreover, when people drag and drop elements, for instance from the memory area or from the event list, Studio knows the semantics of these elements, which is lost when they are dropped and recovered by ad hoc parsing.

I propose a new paradigm: instead of having the editor holding raw text, it should hold an abstract syntax tree and only display raw text as a matter of convenience. When the text is edited the abstract syntax tree should be updated accordingly. This should allow the editor to provide context-dependant help and completion in a very convenient way. It is of course non-trivial from a user-interface perspective, as the question of what to do when people are deleting some text is very interesting to explore, but such editors could be the missing link between graphic programming and text programming.

Check and notify user when new binaries are available

As we now have a central place for binaries, Aseba Studio should offer the possibility to check for updates, and possibly launch the update process, or at least notify the user on how to update.

Maybe should this be part of a separate program, mainly Aseba Updater?

Tell people where to find programs

There is a missing piece in the wiki between the "Download" part and the page supposing Studio is running (either challenge or Thymio tutorial). This should be solved using a "Starting Aseba programs" page that give system-specific instructions on how to launch studio and challenge.

improve drag and drop

when drag and drop a buffer it should add the [ ] or directly the buffer[value] when drag from the value

[enki marxbot] Crashes if studio disconnects

no check for dashel exception: asebamarxbot: targets/enki-marxbot/AsebaMarxbot.cpp:64: void AsebaSendBuffer(AsebaVMState_, const uint8_, uint16): Assertion ‘stream’ failed.

aseba studio didn't connect to argos

This issue was moved here from the forum post by yamani:

hi
i install aseba from sources in ubuntu . i want to work with aseba and argos but, asebastudio didn't connect to argos.what is wrong?
can i use aseba for footbot robot in argos?
thanks

zfuzz-based tests fail if zfuzz is not installed

The error being typically the following:

Traceback (most recent call last):
1128 File "/home/steph/data/epfl-lsro/aseba/tests/fuzzyinput.py", line 41, in
1129 stdout=open(os.devnull), stderr=open(os.devnull))
1130 File "/usr/lib/python2.7/subprocess.py", line 486, in call
1131 return Popen(_popenargs, *_kwargs).wait()
1132 File "/usr/lib/python2.7/subprocess.py", line 672, in init
1133 errread, errwrite)
1134 File "/usr/lib/python2.7/subprocess.py", line 1213, in _execute_child
1135 raise child_exception
1136 OSError: [Errno 2] No such file or directory
1137

CMake should test for zfuzz and not enable tests depending on it if not present.

Add an offline documentation browser

Following the integration of the wikidot documentation into Aseba Studio, it may be interesting to have a dedicated process to browse this documentation without Aseba Studio. This will allow users (like me) to browse the doc without having to start a simulation, just to start Aseba Studio...

This is easy to do, we just have to move the corresponding .cpp / .h to a new folder, create a short asebadoc.cpp, [create a library?], and link both applications with this file. The only unknown is where to place the documentation files. In the root folder maybe?

Any interest in this feature?

Find a way to make removal/change of event safely

When one removes an event (or re-order if the feature gets implemented), the event names refer to different event id. Therefore, if the program is running and if one sends an event, another code that the expected one might be executed. This might be dangerous when working with hardware. We should find a way to make this safe, either by warning the user or by preventing the sending of events until the code has been reloaded.

memory tree no closing itself

the memory tree is closing when we type some code, it is some time very painful to every time reopen the value we want to see

Add automatic-refresh option for variables

It would be nice to add an option to allow the variables to automatically refresh. In the idea case, Studio should only refresh the variables currently being shown, but as a first implementation it is ok to refresh all variables.

Allow template code from command line

When playing with the thymio, people write some code before being introduced to the concept of event. However, this code is painful to understand because being it is executed only when the nod starts, therefore the node must be resetted each time one wants to run the code.

A simple solution to this is to pass some template code (or file) from the command line such that the initial code has a "onevent button" as the first line, which would help children to have something working faster. Once they understand what happens, introducing the concept of events is easier.

Increase unit test coverage

  • Should cover all available operators (arithmetic, comparison,...)
  • Should test graceful exit for inconsistent inputs (no segfault)
  • Should test different loops

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.