#33 — Small widgets to monitor data
| State | In progress |
|---|---|
| Release: |
—
|
| Area | User interface |
| Issue type | Feature |
| Severity | Medium |
| Submitted by | Sébastien Lelong |
| Submitted on | 2008-02-24 |
| Responsible | Sébastien Lelong |
| Target release: | 0.3 |
Last modified on
2009-02-25
by
Sébastien Lelong
GUI needs to... exist :)
For now, everything is done within a python CLI. While developing the DC motor controller board, I needed to plot data (motor's speed eg., using gnuplot). With some nice, little, autonomous widgets, this can be done easily.
This point is huge. Developing a GUI for Sirbot can be very long. So this point is firstly a starting point, an exploration point. For example, there are constraints:
* plot data in real-time
* display huge amount of data (coming from serial)
* don't want to fire a big GUI window, widgets should be called, as needed, from a python CLI
In this step, I plan to create:
* widget to see serial data (raw) coming from and going to the serial com.
* widget to plot data in real-time
For now, everything is done within a python CLI. While developing the DC motor controller board, I needed to plot data (motor's speed eg., using gnuplot). With some nice, little, autonomous widgets, this can be done easily.
This point is huge. Developing a GUI for Sirbot can be very long. So this point is firstly a starting point, an exploration point. For example, there are constraints:
* plot data in real-time
* display huge amount of data (coming from serial)
* don't want to fire a big GUI window, widgets should be called, as needed, from a python CLI
In this step, I plan to create:
* widget to see serial data (raw) coming from and going to the serial com.
* widget to plot data in real-time
Added by
Sébastien Lelong
on
2008-02-24 11:40
Issue state:
unconfirmed → open
"Should I Qt or should I GTK ?"
Choosing the gi toolkit... I know Qt, I've built GUIs with it, using C++. It's amazing how simple and pleasant it is. I don't know GTK (very few). So I should choose GTK :)
http://www.riverbankcomputing.co.uk/pyqt/
http://www.pygtk.org/
The fact is it's not about choosing Qt or GTK (or something else), it's about choosing the GUI toolkit which comes with a handy way of plotting data, particularly in real-time. PyGTK comes with RTGraph (http://rtgraph.sourceforge.net/), a nice small lib which would really make my life easy on that... With PyQt comes PyQwt (http://pyqwt.sourceforge.net/), a great package I've used years ago, using C++. No real-time functionality as in RTGraph, but, the real problem is installing it. It's very tricky about versions of dependencies to use. While it's not impossible, I don't want to build a GUI no one could use, because of a tricky installation of dependencies.
So, I'd choose PyGTK... even if threading support is weird (it's so much easier in PyQt).
Choosing the gi toolkit... I know Qt, I've built GUIs with it, using C++. It's amazing how simple and pleasant it is. I don't know GTK (very few). So I should choose GTK :)
http://www.riverbankcomputing.co.uk/pyqt/
http://www.pygtk.org/
The fact is it's not about choosing Qt or GTK (or something else), it's about choosing the GUI toolkit which comes with a handy way of plotting data, particularly in real-time. PyGTK comes with RTGraph (http://rtgraph.sourceforge.net/), a nice small lib which would really make my life easy on that... With PyQt comes PyQwt (http://pyqwt.sourceforge.net/), a great package I've used years ago, using C++. No real-time functionality as in RTGraph, but, the real problem is installing it. It's very tricky about versions of dependencies to use. While it's not impossible, I don't want to build a GUI no one could use, because of a tricky installation of dependencies.
So, I'd choose PyGTK... even if threading support is weird (it's so much easier in PyQt).
Added by
Sébastien Lelong
on
2008-02-24 11:43
A serial Console using PyGTK... Poor performance compared to PyQT...
Added by
Sébastien Lelong
on
2008-02-24 11:44
Equivalent version using PyQt. Great performances... Should I really use PyGTK ?
Added by
Sébastien Lelong
on
2008-11-27 08:03
Issue state:
open → in-progress
Let's have a bigger view... SirBot's GUI could also be a RIA (Rich Internet Application, http://en.wikipedia.org/wiki/Rich_Internet_Application), that is, based on a client/server. This potentially means a bot could be controlled from everywhere there's a browser and an internet connection.
I was first thinking about developing a small web gui, in addition to a big fat desktop gui. Too much time. There are many way to create a RIA, mainly it's either writing html with javascript, Ajax stuff, or using flash. Both needs a way to push data. Flash has this as a built-in feature (XMLSocket and Socket). For pure DHTML/Javascript gui, there're things like Comet (implementation like Cometd and Orbited). A comet server could be used for both js and flash gui.
Building a GUI using javascript can be time-consuming. Flash has Flex (SDF is free, http://www.adobe.com/fr/products/flex/) or OpenLaszlo (free, http://www.openlaszlo.org/). Probably time-consuming too, but maybe less... I don't know, but what I know is Flex seems fun :) and may have less performance issue when processing real-time data.
Still need a way to plot and produce graphs from real-time data... Flex has some nice charts, but not bundle with the free SDK. Openlazslo seems more complicated, and I prefer investing my time on a Adobe product.
So, let's go with Flash/Flex and ActionScript, and let's find a way to plot real-time data !
I was first thinking about developing a small web gui, in addition to a big fat desktop gui. Too much time. There are many way to create a RIA, mainly it's either writing html with javascript, Ajax stuff, or using flash. Both needs a way to push data. Flash has this as a built-in feature (XMLSocket and Socket). For pure DHTML/Javascript gui, there're things like Comet (implementation like Cometd and Orbited). A comet server could be used for both js and flash gui.
Building a GUI using javascript can be time-consuming. Flash has Flex (SDF is free, http://www.adobe.com/fr/products/flex/) or OpenLaszlo (free, http://www.openlaszlo.org/). Probably time-consuming too, but maybe less... I don't know, but what I know is Flex seems fun :) and may have less performance issue when processing real-time data.
Still need a way to plot and produce graphs from real-time data... Flex has some nice charts, but not bundle with the free SDK. Openlazslo seems more complicated, and I prefer investing my time on a Adobe product.
So, let's go with Flash/Flex and ActionScript, and let's find a way to plot real-time data !
Added by
Sébastien Lelong
on
2008-11-27 08:14
Severity:
Important → Medium
Target release:
0.3 → IHAD
later, probably
Added by
Sébastien Lelong
on
2009-02-25 07:55
Several GUI tools, graphical GUI tools may be used for this. See http://sirloon.net/loonaweb/sirblog/gui-toolkit-to-view-data-coming-from-your-pic for a review of potential applications.
Added by
Sébastien Lelong
on
2009-02-25 07:58
Target release:
IHAD → 0.3
Pure Data (http://puredata.info/) seems to be a nice choice:
* versatile, can be accessed and used for many things
* runs under Linux
* open source
* fun
I've prototyped some widgets, looks promising (real-time plotting, based on a OSC server, ...). But... I guess implementing a serial console with it may not be possible: when dealing with text, it's not the proper tool. Or maybe there's an extension...
* versatile, can be accessed and used for many things
* runs under Linux
* open source
* fun
I've prototyped some widgets, looks promising (real-time plotting, based on a OSC server, ...). But... I guess implementing a serial console with it may not be possible: when dealing with text, it's not the proper tool. Or maybe there's an extension...
Console.py
(