corba-example and OMNIORB4

I am trying to get the supplied "corba-example" to work with omniorb4. I am new to both orocos and corba and am trying to figure out what needs to be done here. It seems to me the example is for TAO and I have, in fact, been able to make that work. I have omniorb installed and the /etc/omniNames.cfg exists.

I have also rebuilt orocos rtt and ocl with the corba switches as directed and teh build was successful.

When I run the example, the server says it cant find a naming service and it dumps an .ior file.

Thanks in advance.

-Bob

corba-example and OMNIORB4

On Jul 8, 2010, at 23:44 , rkraml [..] ... wrote:

> I am trying to get the supplied "corba-example" to work with omniorb4. I am new to both orocos and corba and am trying to figure out what needs to be done here. It seems to me the example is for TAO and I have, in fact, been able to make that work. I have omniorb installed and the /etc/omniNames.cfg exists.
>
> I have also rebuilt orocos rtt and ocl with the corba switches as directed and teh build was successful.
>
> When I run the example, the server says it cant find a naming service and it dumps an .ior file.

What O/S?

What version of RTT, etc?

Is the name server running? Is this Ubuntu and if so, what nameserver did you start it with? "localhost" doesn't work, and I never figured out why. Somewhere around Jaunty it just started to fail, and you must use the host's IP address instead.

I don't know whether anything here will help ...

http://orocos.org/wiki/rtt/frequently-asked-questions-faq/using-corba

Stephen

corba-example and

Sorry bout the missing info. I am running Ubuntu 10.04LTS on an older Dell Latitude D800. Using rtt 1.10.3 and ocl 1.10.2.

I did a ps and grepped for omni and saw that omniNames and omniEvents are running, I didn't specify any host that I know of and I confess to not know how to do this -- I rather naively just tried the example with the OMNIORB build instead of TAO.

I tried omniNames -start from the command line and I received the message that the config file already exists which I expected from the CORBA docs I had read.

I guess what I really was asking is what commands do I need to issue for the example to work with OMNIORB? The supplied startdemo.sh script was instructive for TAO. Is there a similar one for OMNIORB?

btw: I find the captchas here are by far the hardest i've ever seen. Takes me 4 or 5 times to get it right.

-Bob

I'll take a look at your link as well as see how to specify a host.

-Bob

corba-example and OMNIORB4

Sorry bout the missing info. I am running Ubuntu 10.04LTS on an older Dell Latitude D800. Using rtt 1.10.3 and ocl 1.10.2.

I did a ps and grepped for omni and saw that omniNames and omniEvents are running, I didn't specify any host that I know of and I confess to not know how to do this -- I rather naively just tried the example with the OMNIORB build instead of TAO.

I tried omniNames -start from the command line and I received the message that the config file already exists which I expected from the CORBA docs I had read.

I guess what I really was asking is what commands do I need to issue for the example to work with OMNIORB? The supplied startdemo.sh script was instructive for TAO. Is there a similar one for OMNIORB?

btw: I find the captchas here are by far the hardest i've ever seen. Takes me 4 or 5 times to get it right.

-Bob

I'll take a look at your link as well as see how to specify a host.

-Bob

corba-example and

On Jul 9, 2010, at 13:37 , rkraml [..] ... wrote:

> Sorry bout the missing info. I am running Ubuntu 10.04LTS on an older Dell Latitude D800. Using rtt 1.10.3 and ocl 1.10.2.
>
> I did a ps and grepped for omni and saw that omniNames and omniEvents are running, I didn't specify any host that I know of and I confess to not know how to do this -- I rather naively just tried the example with the OMNIORB build instead of TAO.
>
> I tried omniNames -start from the command line and I received the message that the config file already exists which I expected from the CORBA docs I had read.

If omniNames is running, then that should be all you need.

> I guess what I really was asking is what commands do I need to issue for the example to work with OMNIORB? The supplied startdemo.sh script was instructive for TAO. Is there a similar one for OMNIORB?

Check out the omniOrb sections in the link I sent you. See the "-ORBInitRef" section and try that with your IP adrs, or FQDN. That is where you specify the host.

S

corba-example and

I confess to being completely and utterly lost. The simple example I am trying to get to work is "corba-example" in the examples package. There is no reference to any deployer-corba-gnulinux command or any xml file as shown in the faq. There is only a client and server that runs on the same machine. It runs in TAO by a simple script that starts Naming_service, the server, and then the client.

Again I am (extremely) new to this and I just need to get this simple example (or anpother simple example) working in omniorb for now.

corba-example and

I confess to being completely and utterly lost. The simple example I am trying to get to work is "corba-example" in the examples package. There is no reference to any deployer-corba-gnulinux command or any xml file as shown in the faq. There is only a client and server that runs on the same machine. It runs in TAO by a simple script that starts Naming_service, the server, and then the client.

Again I am (extremely) new to this and I just need to get this simple example (or anpother simple example) working in omniorb for now.

corba-example and

On Friday 09 July 2010 23:38:51 rkraml [..] ... wrote:
> I confess to being completely and utterly lost. The simple example I am
> trying to get to work is "corba-example" in the examples package. There
> is no reference to any deployer-corba-gnulinux command or any xml file as
> shown in the faq. There is only a client and server that runs on the same
> machine. It runs in TAO by a simple script that starts Naming_service,
> the server, and then the client.

You'll get the deployer-corba-gnulinux when you build and install OCL.
Practically every orocos-rtt user uses OCL to run his applications, including
for doing the CORBA setup.

>
> Again I am (extremely) new to this and I just need to get this simple
> example (or anpother simple example) working in omniorb for now.
>

In principle, the 'only' difference between omniorb and TAO is the 'networking'
setup of your system: The setup of the naming service is different and the
definition of endpoints (= where an orocos app listens to: network interface +
port number). Unfortunately, it seems neither TAO nor Omniorb get this right
automatically. It's probably the largest frustration Orocos+CORBA users are
experiencing.

In a way, the 'simple' examples are not the simplest way to get started. The
simplest way is to fire up twice the deployer-corba-gnulinux and play with the
'helloworld' component. Create it as a server on one end and access it as a
proxy on the other end (using the IOR in case the name service doesn't work
right now).

In order to check that the basics work, you can do:

console 1:
deployer-corba-gnulinux
(will print IOR... copy it with your mouse)
console 2:
ctaskbrowser-gnulinux IOR....

And the latter should see the former. For example, modify the AutoUnload flag
and see on console 1 that it changed. You can then start to load a component
in the first and access it in the second console by 'cd'-ing to it in the
TaskBrowser, or by directly connecting to it by name or by IOR using the
ctaskbrowser-gnulinux command.

Peter

corba-example and

This seems to work although the IOR is cumbersome.

My question then becomes: I have two networked Ubuntu 10.04LTS machines: one at 192.168.0.1 and another at 192.168.0.2. How to I get these two to work as in the two console example?

When reading further I quickly get bogged down in what seems to be complicated (to me) xml. I would like to be able to show a simple system whereby I can command/control a simple component running on machine A from machine B.

For now, I need to show a simple example, say a component on A with two data ports that takes a double number from B in one port, squares it, and sends it back to B out the other port.

-Bob

corba-example and

This seems to work although the IOR is cumbersome.

My question then becomes: I have two networked Ubuntu 10.04LTS machines: one at 192.168.0.1 and another at 192.168.0.2. How to I get these two to work as in the two console example?

When reading further I quickly get bogged down in what seems to be complicated (to me) xml. I would like to be able to show a simple system whereby I can command/control a simple component running on machine A from machine B.

For now, I need to show a simple example, say a component on A with two data ports that takes a double number from B in one port, squares it, and sends it back to B out the other port.

-Bob

corba-example and

On Thursday 15 July 2010 09:23:30 rkraml [..] ... wrote:
> This seems to work although the IOR is cumbersome.

One of the outcomes I'd like to have of the RTT developer's workshop is a
'rttwtf' tool that analyses the current system:
* Can CORBA naming be reached ?
* Which (system) settings may cause trouble ?
* What types/plugins are available ?
*...

>
> My question then becomes: I have two networked Ubuntu 10.04LTS machines:
> one at 192.168.0.1 and another at 192.168.0.2. How to I get these two to
> work as in the two console example?
>
> When reading further I quickly get bogged down in what seems to be
> complicated (to me) xml.

I've seen setups where people only use the XML to load the component, and do
everything else in a program.ops script file. For example:

components.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "cpf.dtd">
<properties>
  <struct name="A" type="OCL::HelloWorld"></struct>
  <struct name="B" type="OCL::HelloWorld"></struct>
</properties>

program.ops:

program MyProgram {
   do connectPorts("A","the_data_port", "B","the_data_port");
   // ...
}

deployer-gnulinux -s components.xml
and then load the program.ops script in the Deployer
(scripting.loadPrograms("program.ops") ) and start it with MyProgram.start()

> I would like to be able to show a simple system
> whereby I can command/control a simple component running on machine A from
> machine B.

We do this through the concept of 'component proxies'. These are components in
your process that represent a component in another process. The idea is that
you first create the two processes with component A in one and B in the other.
In the first process, you then create a 'B' that is a proxy of the real B and
the same in the second process, an 'A' that proxies the real A:

All in the taskbrowser (deployer-corba-gnulinux):

Console A:
deployer-corba-gnulinux
loadComponent("A", "OCL::HelloWorld")

Console B:
deployer-corba-gnulinux
loadComponent("B", "OCL::HelloWorld")

Console A:
loadComponent("IOR_of_B", "IOR")
or:
loadComponent("B", "CORBA")
in case the name service works

Console B:
loadComponent("IOR_of_A", "IOR")
or:
loadComponent("A", "CORBA")
in case the name service works

Now both processes are setup and see each other's component. You can now
simply use the 'classical' deployment commmands. For example, to connect two
data ports, in either console type:

connectPorts("A", "the_data_port", "B", "the_data_port")
And do a Get()/Set() on either side to send data from A to B:
Console A:
A.the_data_port.Set( "new test" )
Console B:
B.the_data_port.Get()

The same principles remain in 2.0, but the ports themselves have changed to be
more flexible and robust.

>
> For now, I need to show a simple example, say a component on A with two
> data ports that takes a double number from B in one port, squares it, and
> sends it back to B out the other port.

We are aware that this is an urgently needed example. I'll add such an example
to the rtt-exercises package for 2.0, using the taskbrowser commands I
described above. Since you're not using RTT yet, It's maybe better to start
using/evaluating 2.0, since it has simplified a lot of concepts in RTT.

Peter

corba-example and

Thanks. I think I need to take classes. As a person with low level C/C++ embedded programming and VxWorks background, I am finding this taking a long time to get out of the ground effect.

I'll keep looking though and if time permits, try 2.0. I am coming to the conclusion that the only way I can get going is to have a fully working simple example of the machine A and B scenario and build off of that.

I had thought "corba-example" in the examples bundle was that one since it appeared to be simple and do what I wanted. Other than not working with OMNIORB, I am still not quite sure why it is "not the simple example" unless I am grossly misinterpreting what it says. If it is not a good example, I am not sure what other purpose it can serve other than leading me down an incorrect path. You might want to think about removing it.

-Bob

corba-example and

I revisited the CORBA FAQ hoping I could make that example work since it makes references to having something working with no DNS present. There is reference to a demo.xml and demogui programs. Do these exist or are they hypothetical? Again I am hoping to get a simple something that works "out of the box" (e.g. no ellipses ... for me to fill in).

By the way, I AM using rtt (as far as i know) and have both it and ocl installed and built (1.10.x). One of your past comments have assumed I want using rtt.

Of note: I tried to build the latest v2 beta yesterday but the build hangs my machine after 4-5 minutes of activity (I mean hard hangs with the HD full-on -- I have to cycle power -- never had this happen in Linux yet). Laptop only has 1GB so maybe that has something to do with it.

corba-example and

On Mon, Jul 19, 2010 at 2:35 AM, <rkraml [..] ...> wrote:
> I revisited the CORBA FAQ hoping I could make that example work since it makes references to having something working with no DNS present. There is reference to a demo.xml and demogui programs.  Do these exist or are they hypothetical?  Again I am hoping to get a simple something that works "out of the box" (e.g. no ellipses ... for me to fill in).

As far as I know, these are hypothetical, ie what people implemented
in their own lab, but did not share.

>
> By the way, I AM using rtt (as far as i know) and have both it and ocl installed and built (1.10.x).  One of your past comments have assumed I want using rtt.
>
> Of note: I tried to build the latest v2 beta yesterday but  the build hangs my machine after 4-5 minutes of activity (I mean hard hangs with the HD full-on -- I have to cycle power -- never had this happen in Linux yet).  Laptop only has 1GB so maybe that has something to do with it.

This is a known and hot issue which we are looking at this week in
Barcelona. I'll commit a 'workaround' that makes your build succeed on
a 1GB system, by splitting up the 'heavy' file into multiple parts.
But we hope to find a more fundamental solution too.

Until then, you'll need a 2GB system and certainly don't 'make' with a
-j option.

Peter
--
Orocos-Users mailing list
Orocos-Users [..] ...
http://lists.mech.kuleuven.be/mailman/listinfo/orocos-users

corba-example and

Thanks. I think I need to take classes. As a person with low level C/C++ embedded programming and VxWorks background, I am finding this taking a long time to get out of the ground effect.

I'll keep looking though and if time permits, try 2.0. I am coming to the conclusion that the only way I can get going is to have a fully working simple example of the machine A and B scenario and build off of that.

I had thought "corba-example" in the examples bundle was that one since it appeared to be simple and do what I wanted. Other than not working with OMNIORB, I am still not quite sure why it is "not the simple example" unless I am grossly misinterpreting what it says. If it is not a good example, I am not sure what other purpose it can serve other than leading me down an incorrect path. You might want to think about removing it.

-Bob

corba-example and

On Sat, Jul 17, 2010 at 8:04 PM, <rkraml [..] ...> wrote:
> Thanks.  I think I need to take classes.  As a person with low level C/C++ embedded programming and VxWorks background, I am finding this taking a long time to get out of the ground effect.
>
> I'll keep looking though and if time permits, try 2.0.  I am coming to the conclusion that the only way I can get going is to have a fully working simple example of the machine A and B scenario and build off of that.

Please realize that the real problem is not RTT related, but related
to how (broken) the CORBA naming services work. Sephen's wiki page
tries to unveil all the tricky points and should help you to set it up
correctly.

>
> I had thought "corba-example" in the examples bundle was that one since it appeared to be simple and do what I wanted.  Other than not working with OMNIORB, I am still not quite sure why it is "not the simple example" unless I am grossly misinterpreting what it says.  If it is not a good example, I am not sure what other purpose it can serve other than leading me down an incorrect path.  You might want to think about removing it.

As I noted earlier, I'm planning to add the deployer based version as
an exercise to my rtt-exercises series. The example *is* simple, but
it's not how 'we' use CORBA in RTT nowadays. As far as I can diagnose
your problem from here, it's network related, not RTT related. In the
end, the simple example should just work.

Peter
--
Orocos-Users mailing list
Orocos-Users [..] ...
http://lists.mech.kuleuven.be/mailman/listinfo/orocos-users

corba-example and

How do folks use orocos in a distributed system these days? Do they use corba or something else? Do they use their own client-server solutions. How would you do it if you were starting out new?
-Bob

corba-example and

How do folks use orocos in a distributed system these days? Do they use corba or something else? Do they use their own client-server solutions. How would you do it if you were starting out new? -Bob

corba-example and

On Mon, 26 Jul 2010, rkraml [..] ... wrote:

> How do folks use orocos in a distributed system these days? Do they use
> corba or something else? Do they use their own client-server solutions.
> How would you do it if you were starting out new?

ROS is becoming a very popular "middleware" these days. K.U.Leuven is
having a project with Willow Garage to improve the ROS/OROCOS integration
even further. This will not mean that ROS will become _the_ default
middleware for Orocos, though!

Herman

corba-example and

You're saying that OROCOS becomes part of ROS or are you saying that OROCOS uses ROS for communication?

I guess I am asking the question from a low level aspect... if someone wants to start with OROCOS, then what mechanism do they likely use to realize their distributed system? For example, if I were a robot guru and I wanted to implement a swarm of say 5-10 robots which need to coordinate and communicate with one another over some interface (likely Ethernet), what do I use? Do I implement my own client/server? Do I use CORBA, perhaps? something else entirely?

I ask this because of all the problems I am having demoing a simple two processor system with OROCOS/CORBA (still haven't been able to do it) and the fact that there see to be no good complete examples. It seems that this might be a clue I am trying to go down the wrong path. I am not wedded to CORBA and am open to other methods of communication and so folks might be generally using some other methodology when it comes to multiple robots.

-Bob

corba-example and

You're saying that OROCOS becomes part of ROS or are you saying that OROCOS uses ROS for communication?

I guess I am asking the question from a low level aspect... if someone wants to start with OROCOS, then what mechanism do they likely use to realize their distributed system? For example, if I were a robot guru and I wanted to implement a swarm of say 5-10 robots which need to coordinate and communicate with one another over some interface (likely Ethernet), what do I use? Do I implement my own client/server? Do I use CORBA, perhaps? something else entirely?

I ask this because of all the problems I am having demoing a simple two processor system with OROCOS/CORBA (still haven't been able to do it) and the fact that there see to be no good complete examples. It seems that this might be a clue I am trying to go down the wrong path. I am not wedded to CORBA and am open to other methods of communication and so folks might be generally using some other methodology when it comes to multiple robots.

-Bob

corba-example and

On Thu, Jul 29, 2010 at 6:09 PM, <rkraml [..] ...> wrote:
> You're saying that OROCOS becomes part of ROS or are you saying that OROCOS uses ROS for communication?
>
> I guess I am asking the question from a low level aspect... if someone wants to start with OROCOS, then what mechanism do they likely use to realize their distributed system?  For example, if I were a robot guru and I wanted to implement a swarm of say 5-10 robots which need to coordinate and communicate with one another over some interface (likely Ethernet), what do I use?  Do I implement my own client/server?  Do I use CORBA, perhaps?  something else entirely?
>
> I ask this because of all the problems I am having demoing a simple two processor system with OROCOS/CORBA (still haven't been able to do it) and the fact that there see to be no good complete examples.  It seems that this might be a clue I am trying to go down the wrong path.  I am not wedded to CORBA and am open to other methods of communication and so folks might be generally using some other methodology when it comes to multiple robots.

The truth is that RTT 1.x was designed for hard real-time in-process
communication applications, and that the CORBA transport was added
*later* such that external processes could see (not real-time) what is
going on in that process and influence it. Only in RTT 2.2 (or 2.4),
we'll start to see support for appearing / disappearing components,
and reconnection strategies over distributed processes.

So if your use case is swarm robotics, RTT 1.x transports (nor the
deployer) can not cope with that, and you'll have to implement an own
reconnection mechanism / policy.

Peter
--
Orocos-Users mailing list
Orocos-Users [..] ...
http://lists.mech.kuleuven.be/mailman/listinfo/orocos-users

corba-example and

I revisited the CORBA FAQ hoping I could make that example work since it makes references to having something working with no DNS present. There is reference to a demo.xml and demogui programs. Do these exist or are they hypothetical? Again I am hoping to get a simple something that works "out of the box" (e.g. no ellipses ... for me to fill in).

By the way, I AM using rtt (as far as i know) and have both it and ocl installed and built (1.10.x). One of your past comments have assumed I want using rtt.

Of note: I tried to build the latest v2 beta yesterday but the build hangs my machine after 4-5 minutes of activity (I mean hard hangs with the HD full-on -- I have to cycle power -- never had this happen in Linux yet). Laptop only has 1GB so maybe that has something to do with it.

corba-example and

On 07/16/2010 06:34 PM, Peter Soetens wrote:
> On Thursday 15 July 2010 09:23:30 rkraml [..] ... wrote:
>
>> This seems to work although the IOR is cumbersome.
>>
> One of the outcomes I'd like to have of the RTT developer's workshop is a
> 'rttwtf' tool that analyses the current system:
> * Can CORBA naming be reached ?
> * Which (system) settings may cause trouble ?
> * What types/plugins are available ?
> *...
>
Funnily enough, that's what you easily can do when you bind to a
scripting language.

in the orocos/ruby "world" it is called oroinspect and orops

The first one inspects what's available as task contexts, types and
deployments (by using the oroGen descriptions, obviously, feel free to
extend it to load non-model data) and the second one lists all tasks
that are available through CORBA along with their state.

corba-example and

On Jul 15, 2010, at 03:23 , rkraml [..] ... wrote:

> This seems to work although the IOR is cumbersome.

I never use IOR's. They are a pain, but at least we know that your setup works now.

> My question then becomes: I have two networked Ubuntu 10.04LTS machines: one at 192.168.0.1 and another at 192.168.0.2. How to I get these two to work as in the two console example?

They need to find the same name server. Hence the additional parameters to the deployers, shown here

http://orocos.org/wiki/rtt/frequently-asked-questions-faq/using-corba

> When reading further I quickly get bogged down in what seems to be complicated (to me) xml. I would like to be able to show a simple system whereby I can command/control a simple component running on machine A from machine B.
>
> For now, I need to show a simple example, say a component on A with two data ports that takes a double number from B in one port, squares it, and sends it back to B out the other port.

1. Create two components
2. Build them into a shared library on each machine
3. Write a deployer file to deploy component A in one deployer
4. Write a deployer file to deploy component B in the other deployer, and also in the deployer file have component B but as a corba component.
5. Deploy A on one machine, as a corba server in this deployer, and supply the command line parameters for a name server on the other machine(e.g. for omniORB, "-ORBInitRef ...")
6. Deploy B on the other machine, with component A as a corba server in the other deployer, and supply the command line parameters for a name server on this machine

The two components should now be talking to each other.

... we should really generate simple examples for cases like this. It is too much knowledge for a newbie to figure out on their own ... I'll try to take a whack at this while on the plane, or in damn airports ...
S

// for component A in deployer A
  <struct name="ComponentA" type="mynamespace::componentA">
 
	<!-- runs as a Corba server in this deployer -->
	<simple name="Server" type="boolean"><value>1</value></simple>
        <simple name="UseNamingService" type="boolean"><value>1</value></simple>
 
	<struct name="Ports" type="PropertyBag">
              <simple name="PortA" type="string"><value>PortA</value></simple>
              ... 
	</struct>
    ...

// for component A in deployer B
  <struct name="ComponentA" type="CORBA">
 
	<!-- runs as a Corba server in remote deployer -->
	<simple name="Server" type="boolean"><value>0</value></simple>
        <simple name="UseNamingService" type="boolean"><value>1</value></simple>
 
	<struct name="Ports" type="PropertyBag">
              <simple name="PortA" type="string"><value>PortA</value></simple>
              ... 
	</struct>
  </struct>

corba-example and OMNIORB4

I am trying to get the supplied "corba-example" to work with omniorb4. I am new to both orocos and corba and am trying to figure out what needs to be done here. It seems to me the example is for TAO and I have, in fact, been able to make that work. I have omniorb installed and the /etc/omniNames.cfg exists.

I have also rebuilt orocos rtt and ocl with the corba switches as directed and teh build was successful.

When I run the example, the server says it cant find a naming service and it dumps an .ior file.

Thanks in advance.

-Bob