Legacy Forum: Preserving Nearly 20 Years of Community History - A Time Capsule of Discussions, Memories, and Shared Experiences.

Sensor's Robot Brains and Notifications

Bioloid robot kit from Korean company Robotis; CM5 controller block, AX12 servos..
22 postsPage 1 of 21, 2
22 postsPage 1 of 21, 2

Sensor's Robot Brains and Notifications

Post by Rob » Wed Feb 13, 2008 6:27 pm

Post by Rob
Wed Feb 13, 2008 6:27 pm

Hi bioloid programmers,

I'm currently writing a framework for the Bioloid in C# I've got the movement of the servos part down that was easy. I am now getting to design the part of the framework that attains and processes sensor information. I was wondering how people out there have tackled this using custom bioloid code either C, C++, C#, Java or SmallTalk. I'm more interested in how you designed reading and responding to sensor information than the actual code.

By sensors I mean:
AX-12 (load values)
AX-S1
Jons IMU Board etc

The obvious method is to poll each sensor at regular intervals and then raise an event or use an observer pattern to notify the "robot brain" that the sensor has produced data of interest. The "robot brain" then has to decide: is this information actually of interest in it's current context and if so what action to take.

This is quite an expensive process polling and raising events is there a better solution? At this stage I'm not interested in how the "Robot Brain" interprets the notifications from the sensors.

I hope this makes sense and at least one person replies, it is an interesting topic.

Cheers
Rob
Hi bioloid programmers,

I'm currently writing a framework for the Bioloid in C# I've got the movement of the servos part down that was easy. I am now getting to design the part of the framework that attains and processes sensor information. I was wondering how people out there have tackled this using custom bioloid code either C, C++, C#, Java or SmallTalk. I'm more interested in how you designed reading and responding to sensor information than the actual code.

By sensors I mean:
AX-12 (load values)
AX-S1
Jons IMU Board etc

The obvious method is to poll each sensor at regular intervals and then raise an event or use an observer pattern to notify the "robot brain" that the sensor has produced data of interest. The "robot brain" then has to decide: is this information actually of interest in it's current context and if so what action to take.

This is quite an expensive process polling and raising events is there a better solution? At this stage I'm not interested in how the "Robot Brain" interprets the notifications from the sensors.

I hope this makes sense and at least one person replies, it is an interesting topic.

Cheers
Rob
Rob
Savvy Roboteer
Savvy Roboteer
Posts: 51
Joined: Sun Nov 25, 2007 2:05 pm

Post by JonHylands » Wed Feb 13, 2008 9:04 pm

Post by JonHylands
Wed Feb 13, 2008 9:04 pm

Hi Rob,

In my current system, I run everything (at the low level) on a clock, which ticks 30 times a second. So every 33 ms, I query all the physical sensors, get the responses back, and update the "virtual" sensors in my brain model. The update process triggers an event to tell the higher level functions that there are new values available for that specific sensor.

So, its more or less exactly the same as what you have described...

- Jon
Hi Rob,

In my current system, I run everything (at the low level) on a clock, which ticks 30 times a second. So every 33 ms, I query all the physical sensors, get the responses back, and update the "virtual" sensors in my brain model. The update process triggers an event to tell the higher level functions that there are new values available for that specific sensor.

So, its more or less exactly the same as what you have described...

- Jon
JonHylands
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 512
Joined: Thu Nov 09, 2006 1:00 am
Location: Ontario, Canada

Post by BillB » Wed Feb 13, 2008 10:33 pm

Post by BillB
Wed Feb 13, 2008 10:33 pm

What a great topic to raise.

I also poll at regular intervals. For sensors like Jon's IMU board a high polling frequency is required, especially if you are using it to (try and) stay upright. I have toyed with the idea of maximising the bandwidth by using separate bus for the sensors and another for the Actuators.

It would be nice if the IMU could be given some threshold values and and for it to send a bus packet if that threshold has been exceeded - much like the AX-S1 does.
What a great topic to raise.

I also poll at regular intervals. For sensors like Jon's IMU board a high polling frequency is required, especially if you are using it to (try and) stay upright. I have toyed with the idea of maximising the bandwidth by using separate bus for the sensors and another for the Actuators.

It would be nice if the IMU could be given some threshold values and and for it to send a bus packet if that threshold has been exceeded - much like the AX-S1 does.
BillB
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 232
Joined: Sun Aug 06, 2006 1:00 am
Location: Hampshire, UK

Post by JonHylands » Thu Feb 14, 2008 2:50 am

Post by JonHylands
Thu Feb 14, 2008 2:50 am

BillB wrote:It would be nice if the IMU could be given some threshold values and and for it to send a bus packet if that threshold has been exceeded - much like the AX-S1 does.


That's actually a really interesting idea... I'll have to think on that one, although really I need more experience using the IMU for balance first.

- Jon
BillB wrote:It would be nice if the IMU could be given some threshold values and and for it to send a bus packet if that threshold has been exceeded - much like the AX-S1 does.


That's actually a really interesting idea... I'll have to think on that one, although really I need more experience using the IMU for balance first.

- Jon
JonHylands
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 512
Joined: Thu Nov 09, 2006 1:00 am
Location: Ontario, Canada

Post by Rob » Fri Feb 15, 2008 12:06 am

Post by Rob
Fri Feb 15, 2008 12:06 am

Hi Jon,

From following your blogs and forum posts, I gather you transmit all data from the sensors and AX-12s over wifi to your pc for processing. As the event handling and brain functions require too much memory and mhz for an embedded board like the gumstix. Bummer I was kind of hoping I could take the pure embedded path.

Rob
Hi Jon,

From following your blogs and forum posts, I gather you transmit all data from the sensors and AX-12s over wifi to your pc for processing. As the event handling and brain functions require too much memory and mhz for an embedded board like the gumstix. Bummer I was kind of hoping I could take the pure embedded path.

Rob
Rob
Savvy Roboteer
Savvy Roboteer
Posts: 51
Joined: Sun Nov 25, 2007 2:05 pm

Post by JonHylands » Fri Feb 15, 2008 4:18 am

Post by JonHylands
Fri Feb 15, 2008 4:18 am

Rob,

You could certainly do a decent version of a brain on the gumstix, depending on how complex you want to get. I would use a webcam in that case, but 600 MHz is still a lot of power, and 128 MB is a lot of memory...

- Jon
Rob,

You could certainly do a decent version of a brain on the gumstix, depending on how complex you want to get. I would use a webcam in that case, but 600 MHz is still a lot of power, and 128 MB is a lot of memory...

- Jon
JonHylands
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 512
Joined: Thu Nov 09, 2006 1:00 am
Location: Ontario, Canada

Post by SK » Fri Feb 15, 2008 9:06 am

Post by SK
Fri Feb 15, 2008 9:06 am

In RoboCup, quite some teams used PocketPCs with XScale CPUs in their humanoid robots in the last few years, doing all computation autonomously onboard (vision, world modelling, behavior etc.). Those PocketPCs should be roughly comparable to fast Gumstix boards if I´m not mistaken.
Of course, it depends on the envisioned application if that´s enough CPU power or not.
In RoboCup, quite some teams used PocketPCs with XScale CPUs in their humanoid robots in the last few years, doing all computation autonomously onboard (vision, world modelling, behavior etc.). Those PocketPCs should be roughly comparable to fast Gumstix boards if I´m not mistaken.
Of course, it depends on the envisioned application if that´s enough CPU power or not.
SK
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 105
Joined: Mon Jun 26, 2006 1:00 am
Location: near Frankfurt/Main, Germany

Post by BillB » Fri Feb 15, 2008 10:46 am

Post by BillB
Fri Feb 15, 2008 10:46 am

Out of interest how do you connect the Pocket PC to the Bioloid Bus?
Out of interest how do you connect the Pocket PC to the Bioloid Bus?
BillB
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 232
Joined: Sun Aug 06, 2006 1:00 am
Location: Hampshire, UK

Post by siempre.aprendiendo » Fri Feb 15, 2008 11:09 am

Post by siempre.aprendiendo
Fri Feb 15, 2008 11:09 am



The videos are very funny :D


The videos are very funny :D
siempre.aprendiendo
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 559
Joined: Wed Aug 08, 2007 9:13 pm
Location: Barcelona

Post by siempre.aprendiendo » Fri Feb 15, 2008 11:16 am

Post by siempre.aprendiendo
Fri Feb 15, 2008 11:16 am

BillB wrote:Out of interest how do you connect the Pocket PC to the Bioloid Bus?


I have used two very easy (and lazy for me) connections.

By bluetooth, with blueconsoleconnected to the CM-5 serial bus

And by a discontinued Quatech Compact Flash-serial port card.
BillB wrote:Out of interest how do you connect the Pocket PC to the Bioloid Bus?


I have used two very easy (and lazy for me) connections.

By bluetooth, with blueconsoleconnected to the CM-5 serial bus

And by a discontinued Quatech Compact Flash-serial port card.
siempre.aprendiendo
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 559
Joined: Wed Aug 08, 2007 9:13 pm
Location: Barcelona

Post by SK » Fri Feb 15, 2008 11:45 am

Post by SK
Fri Feb 15, 2008 11:45 am

BillB wrote:Out of interest how do you connect the Pocket PC to the Bioloid Bus?

When we used the Pocket PC (replaced with a PC104 board now) with our robot it was connected to the microcontroller via RS232. I´m not familiar with CM-5, so I can only guess that the teams using Bioloids did it in some similar way. It´s probably interesting to note that the Bioloid doesn´t cope too well with the additional load of a PocketPc on front or back though.
BillB wrote:Out of interest how do you connect the Pocket PC to the Bioloid Bus?

When we used the Pocket PC (replaced with a PC104 board now) with our robot it was connected to the microcontroller via RS232. I´m not familiar with CM-5, so I can only guess that the teams using Bioloids did it in some similar way. It´s probably interesting to note that the Bioloid doesn´t cope too well with the additional load of a PocketPc on front or back though.
SK
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 105
Joined: Mon Jun 26, 2006 1:00 am
Location: near Frankfurt/Main, Germany

Post by Rob » Fri Feb 15, 2008 12:16 pm

Post by Rob
Fri Feb 15, 2008 12:16 pm

SK was the software developed in C on Linux?
SK was the software developed in C on Linux?
Rob
Savvy Roboteer
Savvy Roboteer
Posts: 51
Joined: Sun Nov 25, 2007 2:05 pm

Post by siempre.aprendiendo » Fri Feb 15, 2008 12:33 pm

Post by siempre.aprendiendo
Fri Feb 15, 2008 12:33 pm

Rob wrote:SK was the software developed in C on Linux?


It seems that in the previous version they used Windows CE 5.0, at least with Bruno...
Rob wrote:SK was the software developed in C on Linux?


It seems that in the previous version they used Windows CE 5.0, at least with Bruno...
siempre.aprendiendo
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 559
Joined: Wed Aug 08, 2007 9:13 pm
Location: Barcelona

Post by SK » Fri Feb 15, 2008 1:02 pm

Post by SK
Fri Feb 15, 2008 1:02 pm

True, but the software is running on a platform independent framework ( http://wiki.robot-standards.org/images/ ... slides.pdf ), so Windows CE or Linux can be used. While CE was a natural choice with the Pocket PC, this year we´ll probably be using Linux.
The software was mainly developed using C++ on Windows systems.
True, but the software is running on a platform independent framework ( http://wiki.robot-standards.org/images/ ... slides.pdf ), so Windows CE or Linux can be used. While CE was a natural choice with the Pocket PC, this year we´ll probably be using Linux.
The software was mainly developed using C++ on Windows systems.
SK
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 105
Joined: Mon Jun 26, 2006 1:00 am
Location: near Frankfurt/Main, Germany

Post by siempre.aprendiendo » Fri Feb 15, 2008 2:02 pm

Post by siempre.aprendiendo
Fri Feb 15, 2008 2:02 pm

SK wrote:True, but the software is running on a platform independent framework ( http://wiki.robot-standards.org/images/ ... slides.pdf ), so Windows CE or Linux can be used. While CE was a natural choice with the Pocket PC, this year we´ll probably be using Linux.
The software was mainly developed using C++ on Windows systems.


It's very interesting, thanks for sharing it!
SK wrote:True, but the software is running on a platform independent framework ( http://wiki.robot-standards.org/images/ ... slides.pdf ), so Windows CE or Linux can be used. While CE was a natural choice with the Pocket PC, this year we´ll probably be using Linux.
The software was mainly developed using C++ on Windows systems.


It's very interesting, thanks for sharing it!
siempre.aprendiendo
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 559
Joined: Wed Aug 08, 2007 9:13 pm
Location: Barcelona

Next
22 postsPage 1 of 21, 2
22 postsPage 1 of 21, 2