Hi,
I recently followed the wiki tutorial and finished my Toolkit & CorbaPlugin (good tutorial).
I tested both briefly and wanted to apply it to a simple Qt GUI for visualization of some data.
However I am stuck on a couple of problems:
1.
What is the best way to start a simple TaskContext class for receiving and sending data.
Right now I just wanted to put something like that into the main:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
RTT::Toolkit::Import( Streamable::StreamToolkit );
RTT::Toolkit::Import( Streamable::Corba::corbaStreamablePlugin );
OrocosHMI hmi ("QtHMI"); // w should
PeriodicActivity hmi_activity(ORO_SCHED_OTHER, 0, 1.0 / 5, hmi..engine());
ControlTaskServer::InitOrb(argc, argv);
ControlTaskServer::Create( &hmi );
ControlTaskServer::ThreadOrb();
hmi.configure();
hmi_activity.start();
OrocosGUI w();
w.show();
return a.exec();
}
Will that even work (I know hmi and w don't have a reference to each other)? Could someone describe a good way for a simple setup?
2.
More importantly I get compile errors as soon as I try to include anything regarding RTT etc.
My .pro file looks like this:
Temp_Dir = /home/peter
TEMPLATE = app
TARGET = OrocosGUI
QT += core \
gui
HEADERS += src/OrocosCommunication/OrocosHMI.h \
src/orocosgui.h \
src/components/Components.h \
src/components/ISimpleDashboard.h \
src/components/RenderArea.h
SOURCES += src/OrocosCommunication/OrocosHMI.cpp \
src/main.cpp \
src/orocosgui.cpp \
src/components/Components.cpp \
src/components/RenderArea.cpp
FORMS +=
RESOURCES +=
QMAKE_CXXFLAGS += -DOROCOS_TARGET=gnulinux
INCLUDEPATH += /usr/local/include \
/usr/local/include/rtt/corba \
$${Temp_Dir}/OrocosApp
LIBS += -L/usr/local/lib \
-lorocos-deployment-corba-gnulinux \
-lorocos-deployment-gnulinux \
-lorocos-reporting-gnulinux \
-lorocos-helloworld-gnulinux \
-lorocos-timer-gnulinux \
-lorocos-taskbrowser-gnulinux \
-lorocos-ocl-common-gnulinux \
-lorocos-rtt-corba-gnulinux \
-lorocos-rtt-gnulinux \
-lpthread \
-L$${Temp_Dir}/OrocosApp/build \
-lStreamableToolkit-gnulinux \
-L$${Temp_Dir}/OrocosApp/build/corba \
-lStreamableToolkit-corba-gnulinux
If I don't include any RTT header everything compiles and starts fine. So I must have some error in that .pro...I guess.
Is there something wrong?
I wouldn't even mind to change to a cmake Qt project but I have little clue with
cmake (just enough to edit existing stuff).
Well, that were my 2 problems. Hope someone can help out.
Thanks,
Peter
Orocos & Qt
On Aug 25, 2009, at 15:30 , Peter Müller wrote:
> Hi,
> I recently followed the wiki tutorial and finished my Toolkit &
> CorbaPlugin (good tutorial).
> I tested both briefly and wanted to apply it to a simple Qt GUI for
> visualization of some data.
> However I am stuck on a couple of problems:
> 1.
> What is the best way to start a simple TaskContext class for
> receiving and sending data.
> Right now I just wanted to put something like that into the main:
> int main(int argc, char *argv[])
> {
> QApplication a(argc, argv);
> RTT::Toolkit::Import( Streamable::StreamToolkit );
> RTT::Toolkit::Import( Streamable::Corba::corbaStreamablePlugin );
>
> OrocosHMI hmi ("QtHMI"); // w should
>
> PeriodicActivity hmi_activity(ORO_SCHED_OTHER, 0, 1.0 / 5,
> hmi.engine());
>
> ControlTaskServer::InitOrb(argc, argv);
> ControlTaskServer::Create( &hmi );
> ControlTaskServer::ThreadOrb();
>
> hmi.configure();
> hmi_activity.start();
>
> OrocosGUI w();
> w.show();
> return a.exec();
> }
>
> Will that even work (I know hmi and w don't have a reference to each
> other)? Could someone describe a good way for a simple setup?
We do it a little differently. We only have components running within
a remote deployer, and create proxies for the components within the
GUI application. We then use the proxies to connect proxy methods,
ports, etc, and use those locally. We went away from using the above
approach, but it was so long ago that I don't remember why.
Something like this ...
> 2.
> More importantly I get compile errors as soon as I try to include
> anything regarding RTT etc.
> My .pro file looks like this:
> Temp_Dir = /home/peter
> TEMPLATE = app
> TARGET = OrocosGUI
> QT += core \
> gui
> HEADERS += src/OrocosCommunication/OrocosHMI.h \
> src/orocosgui.h \
> src/components/Components.h \
> src/components/ISimpleDashboard.h \
> src/components/RenderArea.h
> SOURCES += src/OrocosCommunication/OrocosHMI.cpp \
> src/main.cpp \
> src/orocosgui.cpp \
> src/components/Components.cpp \
> src/components/RenderArea.cpp
> FORMS +=
> RESOURCES +=
>
> QMAKE_CXXFLAGS += -DOROCOS_TARGET=gnulinux
>
> INCLUDEPATH += /usr/local/include \
> /usr/local/include/rtt/corba \
> $${Temp_Dir}/OrocosApp
>
> LIBS += -L/usr/local/lib \
> -lorocos-deployment-corba-gnulinux \
> -lorocos-deployment-gnulinux \
> -lorocos-reporting-gnulinux \
> -lorocos-helloworld-gnulinux \
> -lorocos-timer-gnulinux \
> -lorocos-taskbrowser-gnulinux \
> -lorocos-ocl-common-gnulinux \
> -lorocos-rtt-corba-gnulinux \
> -lorocos-rtt-gnulinux \
> -lpthread \
> -L$${Temp_Dir}/OrocosApp/build \
> -lStreamableToolkit-gnulinux \
> -L$${Temp_Dir}/OrocosApp/build/corba \
> -lStreamableToolkit-corba-gnulinux
>
>
> If I don't include any RTT header everything compiles and starts
> fine. So I must have some error in that .pro...I guess.
> Is there something wrong?
> I wouldn't even mind to change to a cmake Qt project but I have
> little clue with
> cmake (just enough to edit existing stuff).
We use CMake exclusively, and don't use qmake. Can't help you here.
Stephen
For whatever it's
For whatever it's worth:
#include
#include
#include
//#include
//#include
//#include
//#include
If I uncomment any of those 4 I get the compile errors, the other includes seem to work during compilation.
This is an example g++ command generated by qmake:
g++ -c -pipe -DOROCOS_TARGET=gnulinux -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I/usr/local/include -I/usr/local/include/rtt/corba -I../../OrocosApp -Idebug -o debug/main.o src/main.cpp
I can't seem to find anything wrong with it, honestly. I must overlook something very badly...
For whatever it's
Ok update: I ported my GUI to a cmake build system. Builds fine until I do the same as with the qmake system, ie importing TaskContext etc.
I don't even know what I do wrong at this point. I derived this cmake Qt project from my OrocosApplication project and just added Qt specific stuff to make it work.
If anyone cares, I can post any file you want.
Here is a small example of the error:
solved by importing RTT
solved by importing RTT first, Qt second...
Orocos & Qt
Hi,
I recently followed the wiki tutorial and finished my Toolkit & CorbaPlugin (good tutorial).
I tested both briefly and wanted to apply it to a simple Qt GUI for visualization of some data.
However I am stuck on a couple of problems:
1.
What is the best way to start a simple TaskContext class for receiving and sending data.
Right now I just wanted to put something like that into the main:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
RTT::Toolkit::Import( Streamable::StreamToolkit );
RTT::Toolkit::Import( Streamable::Corba::corbaStreamablePlugin );
OrocosHMI hmi ("QtHMI"); // w should
PeriodicActivity hmi_activity(ORO_SCHED_OTHER, 0, 1.0 / 5, hmi..engine());
ControlTaskServer::InitOrb(argc, argv);
ControlTaskServer::Create( &hmi );
ControlTaskServer::ThreadOrb();
hmi.configure();
hmi_activity.start();
OrocosGUI w();
w.show();
return a.exec();
}
Will that even work (I know hmi and w don't have a reference to each
other)? Could someone describe a good way for a simple setup?
2.
More importantly I get compile errors as soon as I try to include anything regarding RTT etc.
My .pro file looks like this:
Temp_Dir = /home/peter
TEMPLATE = app
TARGET = OrocosGUI
QT += core \
gui
HEADERS += src/OrocosCommunication/OrocosHMI.h \
src/orocosgui.h \
src/components/Components.h \
src/components/ISimpleDashboard.h \
src/components/RenderArea.h
SOURCES += src/OrocosCommunication/OrocosHMI.cpp \
src/main.cpp \
src/orocosgui.cpp \
src/components/Components.cpp \
src/components/RenderArea.cpp
FORMS +=
RESOURCES +=
QMAKE_CXXFLAGS += -DOROCOS_TARGET=gnulinux
INCLUDEPATH += /usr/local/include \
/usr/local/include/rtt/corba \
$${Temp_Dir}/OrocosApp
LIBS += -L/usr/local/lib \
-lorocos-deployment-corba-gnulinux \
-lorocos-deployment-gnulinux \
-lorocos-reporting-gnulinux \
-lorocos-helloworld-gnulinux \
-lorocos-timer-gnulinux \
-lorocos-taskbrowser-gnulinux \
-lorocos-ocl-common-gnulinux \
-lorocos-rtt-corba-gnulinux \
-lorocos-rtt-gnulinux \
-lpthread \
-L$${Temp_Dir}/OrocosApp/build \
-lStreamableToolkit-gnulinux \
-L$${Temp_Dir}/OrocosApp/build/corba \
-lStreamableToolkit-corba-gnulinux
If I don't include any RTT header everything compiles and starts fine. So I must have some error in that .pro...I guess.
Is there something wrong?
I wouldn't even mind to change to a cmake Qt project but I have little clue with
cmake (just enough to edit existing stuff).
Well, that were my 2 problems. Hope someone can help out.
Thanks,
Peter
Orocos & Qt
Triple post: yahoo gave me some trouble.
OROCOS & Qt
Hi folks, like every student I can't stop trying to do some different
things. I'm trying to insert some Qt based interface on my already made
OROCOS app. So I got some helloworld example to make some experiences but
sincerely I don't have any idea how to integrate both (my interface and my
OROCOS app).
Some basic questions are:
1 - OROCOS app has an ORO_main and Qt app has just main. Does it make any
difference? Should I call OROCOS from Qt or the opppsite? How to do it?
2- Should I still use browser.loop() command after call my GUI?
3 - Does anyone have an simple example to let me see or any tutorial to
guide me?
4 - How to set up the Makefile?
.....
I hope someone have made some simple example that I could see so that we
could exchange more about this issue.
Thanks for any help,
Breno
OROCOS & Qt
On Thu, Dec 3, 2009 at 11:34 PM, <breno [..] ...> wrote:
> Hi folks, like every student I can't stop trying to do some different
> things. I'm trying to insert some Qt based interface on my already made
> OROCOS app. So I got some helloworld example to make some experiences but
> sincerely I don't have any idea how to integrate both (my interface and my
> OROCOS app).
>
> Some basic questions are:
>
> 1 - OROCOS app has an ORO_main and Qt app has just main. Does it make any
> difference? Should I call OROCOS from Qt or the opppsite? How to do it?
>
>
> 2- Should I still use browser.loop() command after call my GUI?
>
It depends on what you want your Qt interface to do. If you only want to
show a graphical frontend, then maybe you won't even be interested in using
the task browser (or are you using the ktaskbrowser?).
>
> 3 - Does anyone have an simple example to let me see or any tutorial to
> guide me?
>
I believe other people in the list have successfully integrated Qt-based
interfaces with Orocos. Dig in the posts of the past year, there should be
multiple references to Qt-Orocos. You may also consider studying the code of
the ktaskbrowser (KDE3-based task browser), but it might be a little old,
and there might be better ways now to achieve the same result (also
discussed in previous posts).
>
> 4 - How to set up the Makefile?
>
> .....
>
>
> I hope someone have made some simple example that I could see so that we
> could exchange more about this issue.
>
> Thanks for any help,
>
> Breno
>
>
>
>
>
>
> --
> Orocos-Users mailing list
> Orocos-Users [..] ...
> http://lists.mech.kuleuven.be/mailman/listinfo/orocos-users
>
OROCOS & Qt
> On Thu, Dec 3, 2009 at 11:34 PM, <breno [..] ...> wrote:
>
>> Hi folks, like every student I can't stop trying to do some different
>> things. I'm trying to insert some Qt based interface on my already made
>> OROCOS app. So I got some helloworld example to make some experiences
>> but
>> sincerely I don't have any idea how to integrate both (my interface and
>> my
>> OROCOS app).
>>
>> Some basic questions are:
>>
>> 1 - OROCOS app has an ORO_main and Qt app has just main. Does it make
>> any
>> difference? Should I call OROCOS from Qt or the opppsite? How to do it?
>>
>>
>> 2- Should I still use browser.loop() command after call my GUI?
>>
>
> It depends on what you want your Qt interface to do. If you only want to
> show a graphical frontend, then maybe you won't even be interested in
> using
> the task browser (or are you using the ktaskbrowser?).
>
>
>>
>> 3 - Does anyone have an simple example to let me see or any tutorial to
>> guide me?
>>
>
> I believe other people in the list have successfully integrated Qt-based
> interfaces with Orocos. Dig in the posts of the past year, there should be
> multiple references to Qt-Orocos. You may also consider studying the code
> of
> the ktaskbrowser (KDE3-based task browser), but it might be a little old,
> and there might be better ways now to achieve the same result (also
> discussed in previous posts).
>
>
>>
>> 4 - How to set up the Makefile?
>>
>> .....
>>
>>
>> I hope someone have made some simple example that I could see so that we
>> could exchange more about this issue.
>>
>> Thanks for any help,
>>
>> Breno
Hi folks, thanks for all observations but it sounds a bit hard to get it
through. At least for me. The best comments I saw about OROCOS is at
http://www.orocos.org/forum/orocos/orocos-users/orocos-qt but it´s not
very clear to me yet.
In the code is mentioned the following lines:
OROCOS & Qt
breno [..] ... wrote:
> How can a learn more about those steps? What is it for? That´s the way to
> integrate both environment?
I am doing something similar and using Qt. I don't have answers to your
questions, but I can describe what works for me. In the orocos related
code, I only use Qt for non-gui work like, sockets, strings and so on.
> At the end of the page it´s said: solved by importing RTT first, Qt second...
> I really can´t understand.
He is referring to a compiler error, which is fixed by importing Qt
first. Although I've never imported anything, that line helped me fix a
Qt related compile error. Quite simply, the only way I can get my stuff
to compile is by including all the RTT related headers BEFORE I include
any Qt related headers. If I don't do that, for example, if my file
looks like
#include <QObject>
#include <QtDebug>
#include <rtt/TaskContext.hp
Then the compiler grumbles about problems in a lot of RTT related
headers and halts.
> Let me escribe what I´m doing :
>
> I have a underwater vehicle that´s not underwater yet. At this moment we´d
> like to do some simulations. The rotational process is made with
> gyroscope. I set my motors control code in Orocos in order to get some
> functionalities in future. I also have an IMU and others stuff. I wonder
> to get the movemnts of the robot on my screen and then show some
> parameters from the control strategy and the robot itself like its actual
> angle. That´s why I pick Qt to get me some facilities.
I have a robot moving around and I wish to show a CAD model of the robot
on the screen, which is in sync with the movements of the real robot.
The screen additionally displays other parameters.
To do this, I have a separate software program using Qt and Open
Inventor (actually, Coin and SoQt). Coin/Inventor make it ridiculously
easy to show and manipulate realistic CAD models on the screen. For
example, to do a photorealistic Robot model, all I had to do was 1)
import the robot model into Blender from any standard 3d CAD format 2)
Export the model to .iv and 3) Read in the .iv file and display it on
screen. Some screenshots are at
http://cogvis.nada.kth.se/~behere/sarathi/dokuwiki/doku.php?id=movies_an...
So how to connect this program and the orocos world? Well, I created an
aperiodic TCP Server TaskContext based on a modification of
http://www.orocos.org/wiki/rtt/simple-examples/simple-tcp-client-using-n...
and my GUI program queries it periodically. The orocos server component
acts as a "Reporter", gathering data from the rest of the
orocos-components and streaming it out to whoever is interested in it. I
can also create multiple clients/visualizers and connect to this server
component.
> I saw blender but it really seems to be harder than Qt, I suppose.
> I also have OROCOS running on ARM arch (gumstix) and a I make the
> communication between my PC using RS232. I inted to use CORBA next time.
>
> I really appreciate some good example anybody send because I found no clue
> to integrate Qt-OROCOS.
You could get my (in-progress) code and Makefiles from launchpad
(bazaar) by
bzr branch lp:~sagar/+junk/sarathi
Hope this has helped more than it has confused :)
> Breno
Sagar
--
Orocos-Users mailing list
Orocos-Users [..] ...
http://lists.mech.kuleuven.be/mailman/listinfo/orocos-users
OROCOS & Qt
On Sat, 5 Dec 2009, Sagar Behere wrote:
[...]
> I have a robot moving around and I wish to show a CAD model of the robot
> on the screen, which is in sync with the movements of the real robot.
> The screen additionally displays other parameters.
>
> To do this, I have a separate software program using Qt and Open
> Inventor (actually, Coin and SoQt). Coin/Inventor make it ridiculously
> easy to show and manipulate realistic CAD models on the screen. For
> example, to do a photorealistic Robot model, all I had to do was 1)
> import the robot model into Blender from any standard 3d CAD format 2)
> Export the model to .iv and 3) Read in the .iv file and display it on
> screen.
Why didn't you use Blender itself...? It has _so_ much more features, and
is scriptable via Python. And you are not alone:
<http://wiki.blender.org/index.php/Robotics:Index>
> So how to connect this program and the orocos world? Well, I created an
> aperiodic TCP Server TaskContext based on a modification of
> http://www.orocos.org/wiki/rtt/simple-examples/simple-tcp-client-using-n...
>
> and my GUI program queries it periodically. The orocos server component
> acts as a "Reporter", gathering data from the rest of the
> orocos-components and streaming it out to whoever is interested in it. I
> can also create multiple clients/visualizers and connect to this server
> component.
Similar things have been done with Blender too. And the approach of
wrapping a "component container" around your (G)UI program is certainly the
appropriate one :-)
>> I saw blender but it really seems to be harder than Qt, I suppose.
Blender has extremely much functionality already, and recoding this in Qt
will be hopeless...
>> I also have OROCOS running on ARM arch (gumstix) and a I make the
>> communication between my PC using RS232. I inted to use CORBA next time.
Please let us know how well CORBA on an ARM performs. Are you interfacing
any real hardware with the ARM module? (FYI, we will probably try out the
ARM9-based Armadillo to make an Orocos wrapper around Sick and Hokuyo laser
scanners
<http://www.openrtm.org/OpenRTM-aist/html-en/Documents2FRT-Component20Cross-Development2028Armadillo24029.html#yfe0a024>
Herman
OROCOS & Qt
On Dec 4, 2009, at 03:41 , Adolfo Rodríguez Tsouroukdissian wrote:
>
>
> On Thu, Dec 3, 2009 at 11:34 PM, <breno [..] ...> wrote:
> Hi folks, like every student I can't stop trying to do some different
> things. I'm trying to insert some Qt based interface on my already made
> OROCOS app. So I got some helloworld example to make some experiences but
> sincerely I don't have any idea how to integrate both (my interface and my
> OROCOS app).
>
> Some basic questions are:
>
> 1 - OROCOS app has an ORO_main and Qt app has just main. Does it make any
> difference? Should I call OROCOS from Qt or the opppsite? How to do it?
Call Orocos from Qt. See below ...
> 2- Should I still use browser.loop() command after call my GUI?
>
> It depends on what you want your Qt interface to do. If you only want to show a graphical frontend, then maybe you won't even be interested in using the task browser (or are you using the ktaskbrowser?).
Agreed. We don't use the taskbrowser in any of our graphical applications, though I can see why you might want to.
> 3 - Does anyone have an simple example to let me see or any tutorial to
> guide me?
>
> I believe other people in the list have successfully integrated Qt-based interfaces with Orocos. Dig in the posts of the past year, there should be multiple references to Qt-Orocos. You may also consider studying the code of the ktaskbrowser (KDE3-based task browser), but it might be a little old, and there might be better ways now to achieve the same result (also discussed in previous posts).
We've done this on several projects, though I'm sure there are alternatives to our approach. In short
1) We run a deployer with our Orocos-based runtime system in it (ie all the components)
2) We create an Human Machine Interaction (HMI) component in the deployer that deals with all external access. This allows for clean separation of the real-time code, from the network-based, non-real-time access.
3) We create a single object in our Qt application, that deals with starting/stopping the CORBA-based connection to the deployer. This object also contains proxies for all the ports, methods, etc, in the HMI (in the deployer) that we wish to use.
4) We actually wrap most/all of the proxy objects into a Qt-based slots/signals approach, so that GUI widgets, etc, just interact with these slots and signals. They seldom/never need direct access to the proxies.
> 4 - How to set up the Makefile?
CMake. In some of Peter's example code is some very straight-forward CMake code to use Orocos. And Qt is already present in CMake itself. Just put them together in your own CMake code and go from there.
Stephen
[Not the first time we've seen this question - when I return in 2010, I'll work on a tutorial for this]
OROCOS & Qt
On Thu, 3 Dec 2009, breno [..] ... wrote:
> Hi folks, like every student I can't stop trying to do some different
> things. I'm trying to insert some Qt based interface on my already made
> OROCOS app. So I got some helloworld example to make some experiences but
> sincerely I don't have any idea how to integrate both (my interface and my
> OROCOS app).
>
> Some basic questions are:
>
> 1 - OROCOS app has an ORO_main and Qt app has just main. Does it make any
> difference? Should I call OROCOS from Qt or the opppsite? How to do it?
>
OROCOS is a component based design, so the best way to couple it to other
parts of your system is through a data port, not by directly linking things
together!
BTW, there is a _MAJOR_ difference between object-oriented programming and
component-based programming, and you should be thoroughly aware of the
implications before using Orocos. Using it as just another library is not
the smartest thing to do :-)
Herman
>
> 2- Should I still use browser.loop() command after call my GUI?
>
> 3 - Does anyone have an simple example to let me see or any tutorial to
> guide me?
>
> 4 - How to set up the Makefile?
>
> .....
>
>
> I hope someone have made some simple example that I could see so that we
> could exchange more about this issue.
>
> Thanks for any help,
>
> Breno
>
>
>
>
>
>
OROCOS & Qt
This is an interesting issue. Additionally, I would like to add
5 - If I don't have an ORO_main, but instead use deployer, cdeployer or
deployer-corba, what are the options and best practices for
incorporating Qt?
6 - How do the thread management systems of Orocos and Qt play with each
other?
As regards (4 - Makefiles), cmake has a pretty good mechanism for
detecting / requiring / locating Qt libraries.
/Alex
-----Original Message-----
From: orocos-users-bounces [..] ...
[mailto:orocos-users-bounces [..] ...] On Behalf Of
breno [..] ...
Sent: Thursday, December 03, 2009 2:34 PM
To: orocos-users [..] ...
Subject: [Orocos-users] OROCOS & Qt
Hi folks, like every student I can't stop trying to do some different
things. I'm trying to insert some Qt based interface on my already made
OROCOS app. So I got some helloworld example to make some experiences
but
sincerely I don't have any idea how to integrate both (my interface and
my
OROCOS app).
Some basic questions are:
1 - OROCOS app has an ORO_main and Qt app has just main. Does it make
any
difference? Should I call OROCOS from Qt or the opppsite? How to do it?
2- Should I still use browser.loop() command after call my GUI?
3 - Does anyone have an simple example to let me see or any tutorial to
guide me?
4 - How to set up the Makefile?
.....
I hope someone have made some simple example that I could see so that we
could exchange more about this issue.
Thanks for any help,
Breno