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

Robosavvy pushing new features onto Robobuilder Kits

Korean company maker of Robot kits and servos designed for of articulated robots. Re-incarnation of Megarobotics.
57 postsPage 1 of 41, 2, 3, 4
57 postsPage 1 of 41, 2, 3, 4

Robosavvy pushing new features onto Robobuilder Kits

Post by PedroR » Wed Oct 14, 2009 11:56 am

Post by PedroR
Wed Oct 14, 2009 11:56 am

[EDIT: this information relates to the Robobuilder offers for Chirstmas 2009. The Christmas line up is usually changed every year as we add or change the features included with each Robot.
Furthermore, Robobuilder sometimes discontinues some features or accessories from one year to the other meaning the features mentione dhere may not all be available at the time of purchase.
Please check our store htp://robosavy.com/store/robobuilder for an updated list of offers for Robobuilder ]


Hi all

As you may have noticed my activities with Robobuilder have been quite calm in the past few months.

Now that we are preparing for Christmas I am planning a whole new set of activities and promos for Robobuilder that I wanted to share with you and that also involve some new projects.

1) For all Christmas sales, we will be selling the 5710K with the Free Distance Sensor (which we have been doing) and this Christmas we'll ADD the Acceleration Sensor as well.
There will be slight price adjustment but I think it will make the 5710K even more appealing so hopefully we'll be getting more participants here on the forum ;)

2) If you have a 5710K and would like to purchase an upgraded RBC (the one on the 5720T with Voice output) for your exiting Robobuilder we'll be offering it for 52.50 GBP+VAT (60.38 GBP total) and we'll include the Acceleration Sensor pre soldered. You get the RBC-YNN with Voice Output and the Acceleration Sensor pre soldered inside.
We're running this offer for our forum members/participants only. We won't be advertising this in store.
So if you'd like to order one of these please send me a PM or email pedro@robosavvy.com (or sales@robosavvy.com) asap (since we'll be ordering with Robobuilder very soon)

[EDIT: Voice Output support has been discontinued for Robobuilder.
Therefore at the time of this edit (Nov 2011) Robobuilder was not producing controllers with Voice Output and thus are unavailable.]



Now for the projects:

I really really wanted to sit down and write a wrapper DLL for the RBC protocol (the recently released protocol that shows how to read the sensors from the PC).
Pairing this with the Bluetooth module makes it very appealing to control the Robot using the PC and programming languages here as I had mentioned before: VBScript, Python, .Net, Delphi, etc.
Hopefully this will also pave the way for upgrading the robot with a Roboard. If we manage to get some better wrapper libraries in place (including improving the ones I already wrote for the wCK protocol) it would ease things a lot.

If any of you would like to be involved I'd be delighted to work with you.

Regards
Pedro.
[EDIT: this information relates to the Robobuilder offers for Chirstmas 2009. The Christmas line up is usually changed every year as we add or change the features included with each Robot.
Furthermore, Robobuilder sometimes discontinues some features or accessories from one year to the other meaning the features mentione dhere may not all be available at the time of purchase.
Please check our store htp://robosavy.com/store/robobuilder for an updated list of offers for Robobuilder ]


Hi all

As you may have noticed my activities with Robobuilder have been quite calm in the past few months.

Now that we are preparing for Christmas I am planning a whole new set of activities and promos for Robobuilder that I wanted to share with you and that also involve some new projects.

1) For all Christmas sales, we will be selling the 5710K with the Free Distance Sensor (which we have been doing) and this Christmas we'll ADD the Acceleration Sensor as well.
There will be slight price adjustment but I think it will make the 5710K even more appealing so hopefully we'll be getting more participants here on the forum ;)

2) If you have a 5710K and would like to purchase an upgraded RBC (the one on the 5720T with Voice output) for your exiting Robobuilder we'll be offering it for 52.50 GBP+VAT (60.38 GBP total) and we'll include the Acceleration Sensor pre soldered. You get the RBC-YNN with Voice Output and the Acceleration Sensor pre soldered inside.
We're running this offer for our forum members/participants only. We won't be advertising this in store.
So if you'd like to order one of these please send me a PM or email pedro@robosavvy.com (or sales@robosavvy.com) asap (since we'll be ordering with Robobuilder very soon)

[EDIT: Voice Output support has been discontinued for Robobuilder.
Therefore at the time of this edit (Nov 2011) Robobuilder was not producing controllers with Voice Output and thus are unavailable.]



Now for the projects:

I really really wanted to sit down and write a wrapper DLL for the RBC protocol (the recently released protocol that shows how to read the sensors from the PC).
Pairing this with the Bluetooth module makes it very appealing to control the Robot using the PC and programming languages here as I had mentioned before: VBScript, Python, .Net, Delphi, etc.
Hopefully this will also pave the way for upgrading the robot with a Roboard. If we manage to get some better wrapper libraries in place (including improving the ones I already wrote for the wCK protocol) it would ease things a lot.

If any of you would like to be involved I'd be delighted to work with you.

Regards
Pedro.
Last edited by PedroR on Fri Nov 18, 2011 10:46 am, edited 1 time in total.
PedroR
Savvy Roboteer
Savvy Roboteer
Posts: 1199
Joined: Mon Jun 16, 2008 11:07 pm

Post by l3v3rz » Thu Oct 15, 2009 4:53 pm

Post by l3v3rz
Thu Oct 15, 2009 4:53 pm

count me in ! I have a C# library I use based on the PC remote code. It enables direct wck control and Ive used it to generate motions.

See : http://code.google.com/p/robobuildervc/

This all pre-alpha code - but the motion control classes work. I have two classes. PCremote handles connecting and commands such as firmware version, whilst wckMotion switches to direct mode and allow control over the servos. The big area not developed is the reading IR, PSD etc. It can read the accelerometer.

PCremote.cs

http://code.google.com/p/robobuildervc/source/browse/trunk/PCControlMode/PCControlMode/PCremote.cs

and

wckMotion.cs
http://code.google.com/p/robobuildervc/source/browse/trunk/PCControlMode/PCControlMode/wckMotion.cs
count me in ! I have a C# library I use based on the PC remote code. It enables direct wck control and Ive used it to generate motions.

See : http://code.google.com/p/robobuildervc/

This all pre-alpha code - but the motion control classes work. I have two classes. PCremote handles connecting and commands such as firmware version, whilst wckMotion switches to direct mode and allow control over the servos. The big area not developed is the reading IR, PSD etc. It can read the accelerometer.

PCremote.cs

http://code.google.com/p/robobuildervc/source/browse/trunk/PCControlMode/PCControlMode/PCremote.cs

and

wckMotion.cs
http://code.google.com/p/robobuildervc/source/browse/trunk/PCControlMode/PCControlMode/wckMotion.cs
l3v3rz
Savvy Roboteer
Savvy Roboteer
Posts: 473
Joined: Fri Jul 18, 2008 2:34 pm

Post by PedroR » Thu Oct 15, 2009 5:29 pm

Post by PedroR
Thu Oct 15, 2009 5:29 pm

Hi l3v3rz

It's great that you want to be involved ;)

May I ask which was the programming language and platform you used on the files you mention above?

I thought about using the "old" VB 6 but I would like to be in sync with you on the programming language you use. It doesn't have to be this one and it's probably best not to use it considering all the new 64 bit platforms.

Also, I believe your code is C# correct?

My only issue is that I do not have VS 2005 / 2008. Are the Express Editions good enough for this task?
Hi l3v3rz

It's great that you want to be involved ;)

May I ask which was the programming language and platform you used on the files you mention above?

I thought about using the "old" VB 6 but I would like to be in sync with you on the programming language you use. It doesn't have to be this one and it's probably best not to use it considering all the new 64 bit platforms.

Also, I believe your code is C# correct?

My only issue is that I do not have VS 2005 / 2008. Are the Express Editions good enough for this task?
PedroR
Savvy Roboteer
Savvy Roboteer
Posts: 1199
Joined: Mon Jun 16, 2008 11:07 pm

Post by PedroR » Thu Oct 15, 2009 5:30 pm

Post by PedroR
Thu Oct 15, 2009 5:30 pm

I also take the opportunity to let you know tomorrow we'll be placing the order with Robobuilder so if anyone is interested in getting one of the RBC YNN with Voice and Acc Sensor pre soldered please let me know asap.
(details on this offer for the RBC incl pricing are discussed in the first post)

We've had a couple of requests so far and I'll probably be getting one for myself as well. Anyone else? ;)

Pedro.
I also take the opportunity to let you know tomorrow we'll be placing the order with Robobuilder so if anyone is interested in getting one of the RBC YNN with Voice and Acc Sensor pre soldered please let me know asap.
(details on this offer for the RBC incl pricing are discussed in the first post)

We've had a couple of requests so far and I'll probably be getting one for myself as well. Anyone else? ;)

Pedro.
PedroR
Savvy Roboteer
Savvy Roboteer
Posts: 1199
Joined: Mon Jun 16, 2008 11:07 pm

Post by l3v3rz » Thu Oct 15, 2009 5:38 pm

Post by l3v3rz
Thu Oct 15, 2009 5:38 pm

My code is all c# - and yes I use the express edition - all free downloads from Microsoft. The code also runs on ubuntu under mono without change (even the serial port code works- that surprised me ! - and thats as binary.exe don't even need to recompile )

I've used vb6 in the past - and there is a bit of learning curve to c# (I wouldn't bother with basic.Net as the learning curve is same) but its worth it, lots more feature available.

cheers
My code is all c# - and yes I use the express edition - all free downloads from Microsoft. The code also runs on ubuntu under mono without change (even the serial port code works- that surprised me ! - and thats as binary.exe don't even need to recompile )

I've used vb6 in the past - and there is a bit of learning curve to c# (I wouldn't bother with basic.Net as the learning curve is same) but its worth it, lots more feature available.

cheers
l3v3rz
Savvy Roboteer
Savvy Roboteer
Posts: 473
Joined: Fri Jul 18, 2008 2:34 pm

Post by PedroR » Fri Oct 16, 2009 1:13 pm

Post by PedroR
Fri Oct 16, 2009 1:13 pm

the learning curve is not too much of a problem.

I have used VB.NET and also Java in the past, and from what I understand, C# is very much like Java. Maybe I'll need some time to get up to speed on the specific language instructions but other than that I think it should be ok.

One other question: does VS Express Edition compile COM compatible DLLs?

The final goal is really to be able to instantiate the Robobuilder code from, for example, VBScript, giving people the ability to write code on their own, using a free tool included in all windows editions.
the learning curve is not too much of a problem.

I have used VB.NET and also Java in the past, and from what I understand, C# is very much like Java. Maybe I'll need some time to get up to speed on the specific language instructions but other than that I think it should be ok.

One other question: does VS Express Edition compile COM compatible DLLs?

The final goal is really to be able to instantiate the Robobuilder code from, for example, VBScript, giving people the ability to write code on their own, using a free tool included in all windows editions.
PedroR
Savvy Roboteer
Savvy Roboteer
Posts: 1199
Joined: Mon Jun 16, 2008 11:07 pm

Post by l3v3rz » Fri Oct 16, 2009 4:32 pm

Post by l3v3rz
Fri Oct 16, 2009 4:32 pm

Yes syntactically is very close to Java - you'd be hard pressed to tell the difference.

Yes it can create COM compatible DLL - there's a couple of options you need to set when you build and it creates the DLL and a TLB file. So you could call the library from VB6 if you want.

I might have ago and build one for you to try out if you like.

cheers
Yes syntactically is very close to Java - you'd be hard pressed to tell the difference.

Yes it can create COM compatible DLL - there's a couple of options you need to set when you build and it creates the DLL and a TLB file. So you could call the library from VB6 if you want.

I might have ago and build one for you to try out if you like.

cheers
l3v3rz
Savvy Roboteer
Savvy Roboteer
Posts: 473
Joined: Fri Jul 18, 2008 2:34 pm

Post by PedroR » Fri Oct 16, 2009 5:03 pm

Post by PedroR
Fri Oct 16, 2009 5:03 pm

Hi l3v3rz

Before we jump into coding I would like to first produce all the documents for the interface (what we have now and we want to do in the future):
- Description of all objects and what they do
- The description of properties and methods

Is that OK with you?

I can start by documenting the DLL I made to encapsulate the functions of the wCK protocol.
If you could also document your functions for your objects it would be great.

From there we can build what's missing (which is most likely the classes to read the sensors and play sounds)

If the Express Editions compile to COM compatible objects then Express Editions it is :)

Pedro.
Hi l3v3rz

Before we jump into coding I would like to first produce all the documents for the interface (what we have now and we want to do in the future):
- Description of all objects and what they do
- The description of properties and methods

Is that OK with you?

I can start by documenting the DLL I made to encapsulate the functions of the wCK protocol.
If you could also document your functions for your objects it would be great.

From there we can build what's missing (which is most likely the classes to read the sensors and play sounds)

If the Express Editions compile to COM compatible objects then Express Editions it is :)

Pedro.
PedroR
Savvy Roboteer
Savvy Roboteer
Posts: 1199
Joined: Mon Jun 16, 2008 11:07 pm

Post by l3v3rz » Fri Oct 16, 2009 5:31 pm

Post by l3v3rz
Fri Oct 16, 2009 5:31 pm

Lets go for it ! 8)

How do you want to share codes etc ? Set up a google project or do you have an alternative
Lets go for it ! 8)

How do you want to share codes etc ? Set up a google project or do you have an alternative
l3v3rz
Savvy Roboteer
Savvy Roboteer
Posts: 473
Joined: Fri Jul 18, 2008 2:34 pm

Post by l3v3rz » Sat Oct 17, 2009 12:35 pm

Post by l3v3rz
Sat Oct 17, 2009 12:35 pm

I've done a bit of experimenting to see if this works and created two files. A C# class wrapper for PCremote.cs and then a VB6 script to call it and display the result.

First the wrapper - this just make it easier for VB6 to call and pass info.

This is it entirely.
Code: Select all
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.IO.Ports;

namespace RobobuilderLib
{
    public class RBC
    {
        public string serialNumber = "";

        public RBC()
        {
        }

        public int connect(string pn)
        {
            try
            {
                SerialPort p = new SerialPort(pn, 115200, Parity.None, 8, StopBits.One);

                PCremote pcr = new PCremote(p);

                p.Open();

                serialNumber = pcr.readSN();

                p.Close();

                return 1;
            }
            catch (Exception e1)
            {
                return 0;
            }
        }
    }
}


You need to also include PCremote.cs as a file in the solution, make sure its in the namespace etc. You need to go into build option for the project and set "register COMP interrupt" and under Assembly info on App setting "make COM visible".

It should then create the files in the bin/release folder when you build. check it creates a DLL and TLB files. Then in VB6 you add the TLB file as a project reference. Incidentally VS2008 will auto register the DLL for you - but you need to run as administrator.

Now heres the VB6 code. The GUI is a single label "Label1" and a single button "Command1" . The code is attached to the button press.

Code: Select all
Private Sub Command1_Click()

    Dim rm As New RBC
   
    Dim i As Integer
   
    i = rm.Connect("COM3")
   
    If (i = 1) Then
        Label1.Caption = "Sn=" + rm.serialNumber
    Else
        Label1.Caption = "failed"
    End If

End Sub


This will connect to the robot, and retrieve you serial number - and then display that on the screen.

Really quite simple and neat. I'm still experimenting though - note I can get the function to return an integer, but not a string. But VB6 can read the string if its class property. I'm sure it can, just not quite sure how.

regards
I've done a bit of experimenting to see if this works and created two files. A C# class wrapper for PCremote.cs and then a VB6 script to call it and display the result.

First the wrapper - this just make it easier for VB6 to call and pass info.

This is it entirely.
Code: Select all
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.IO.Ports;

namespace RobobuilderLib
{
    public class RBC
    {
        public string serialNumber = "";

        public RBC()
        {
        }

        public int connect(string pn)
        {
            try
            {
                SerialPort p = new SerialPort(pn, 115200, Parity.None, 8, StopBits.One);

                PCremote pcr = new PCremote(p);

                p.Open();

                serialNumber = pcr.readSN();

                p.Close();

                return 1;
            }
            catch (Exception e1)
            {
                return 0;
            }
        }
    }
}


You need to also include PCremote.cs as a file in the solution, make sure its in the namespace etc. You need to go into build option for the project and set "register COMP interrupt" and under Assembly info on App setting "make COM visible".

It should then create the files in the bin/release folder when you build. check it creates a DLL and TLB files. Then in VB6 you add the TLB file as a project reference. Incidentally VS2008 will auto register the DLL for you - but you need to run as administrator.

Now heres the VB6 code. The GUI is a single label "Label1" and a single button "Command1" . The code is attached to the button press.

Code: Select all
Private Sub Command1_Click()

    Dim rm As New RBC
   
    Dim i As Integer
   
    i = rm.Connect("COM3")
   
    If (i = 1) Then
        Label1.Caption = "Sn=" + rm.serialNumber
    Else
        Label1.Caption = "failed"
    End If

End Sub


This will connect to the robot, and retrieve you serial number - and then display that on the screen.

Really quite simple and neat. I'm still experimenting though - note I can get the function to return an integer, but not a string. But VB6 can read the string if its class property. I'm sure it can, just not quite sure how.

regards
l3v3rz
Savvy Roboteer
Savvy Roboteer
Posts: 473
Joined: Fri Jul 18, 2008 2:34 pm

Post by aOpenBot » Sat Oct 17, 2009 2:58 pm

Post by aOpenBot
Sat Oct 17, 2009 2:58 pm

Hi Pedro,

Last wednesday I did send you an e-mail, for the order of the upgraded RBC (the one on the 5720T with Voice output).

Can you confirm you received it and if my order is accepted?

Thanks in advance.
Hi Pedro,

Last wednesday I did send you an e-mail, for the order of the upgraded RBC (the one on the 5720T with Voice output).

Can you confirm you received it and if my order is accepted?

Thanks in advance.
aOpenBot
Newbie
Newbie
Posts: 2
Joined: Sat Oct 17, 2009 2:50 pm

Post by PedroR » Mon Oct 19, 2009 10:41 am

Post by PedroR
Mon Oct 19, 2009 10:41 am

Hi aOpenBot

Yes I did receive it and we accepted the order.
I was waiting for the stock to arrive before contacting you regarding payment and shipping.

Regards
Pedro
Hi aOpenBot

Yes I did receive it and we accepted the order.
I was waiting for the stock to arrive before contacting you regarding payment and shipping.

Regards
Pedro
PedroR
Savvy Roboteer
Savvy Roboteer
Posts: 1199
Joined: Mon Jun 16, 2008 11:07 pm

Post by PedroR » Mon Oct 19, 2009 11:03 am

Post by PedroR
Mon Oct 19, 2009 11:03 am

Hi l3v3rz

Great news that your testing works :) :)

With regards to returning a string, sorry for asking the obvious but have you tested the class, by declaring the return value of "connect" as a string?

If so, what were the issues you faced, so I can be prepared in advance ;) ?


I'd also - From my work with the Remocon DLL and the wCK protocol DLL I came to the following conclusions so far:

.. Once you open the COMM port, the thread who opened it, "owns" it and therefore no other thread can access it.
.. For me, this meant I could not mix and match code from the Remocon and the wCK dll in the same sequence of code without closing and reopening the comm port

.. To overcome this issue what I thought about doing was create a separate DLL that encapsulates the communication with the COM port.
Let's call RobobuilderCOM.
This DLL is quite simple and only implements 4 methods:
.... OpenCOMM
.... CloseCOMM
.... FlushBuffer
.... SendData
(or maybe SendDataNoReturn and SendDataReturn if we want to separate between the calls that need to wait for data to be returned and the calls that don't return any data)

On its turn, the RemoconDLL and the wCK DLL would not open the comm directly but instead would use the above interface.

This way we can share access to the comm port across different classes. We may need to implement some very basic synchronization scheme to accommodate multi threaded scenarios but I haven't gone that far (maybe using a Singleton object pattern and a semaphore).
Multi threaded scenarios are not a priority at this time.

I will try to sketch up a graph for an interface so I can better explain my findings so far.
Hi l3v3rz

Great news that your testing works :) :)

With regards to returning a string, sorry for asking the obvious but have you tested the class, by declaring the return value of "connect" as a string?

If so, what were the issues you faced, so I can be prepared in advance ;) ?


I'd also - From my work with the Remocon DLL and the wCK protocol DLL I came to the following conclusions so far:

.. Once you open the COMM port, the thread who opened it, "owns" it and therefore no other thread can access it.
.. For me, this meant I could not mix and match code from the Remocon and the wCK dll in the same sequence of code without closing and reopening the comm port

.. To overcome this issue what I thought about doing was create a separate DLL that encapsulates the communication with the COM port.
Let's call RobobuilderCOM.
This DLL is quite simple and only implements 4 methods:
.... OpenCOMM
.... CloseCOMM
.... FlushBuffer
.... SendData
(or maybe SendDataNoReturn and SendDataReturn if we want to separate between the calls that need to wait for data to be returned and the calls that don't return any data)

On its turn, the RemoconDLL and the wCK DLL would not open the comm directly but instead would use the above interface.

This way we can share access to the comm port across different classes. We may need to implement some very basic synchronization scheme to accommodate multi threaded scenarios but I haven't gone that far (maybe using a Singleton object pattern and a semaphore).
Multi threaded scenarios are not a priority at this time.

I will try to sketch up a graph for an interface so I can better explain my findings so far.
PedroR
Savvy Roboteer
Savvy Roboteer
Posts: 1199
Joined: Mon Jun 16, 2008 11:07 pm

Post by aOpenBot » Mon Oct 19, 2009 11:35 am

Post by aOpenBot
Mon Oct 19, 2009 11:35 am

PedroR wrote:Hi aOpenBot

Yes I did receive it and we accepted the order.
I was waiting for the stock to arrive before contacting you regarding payment and shipping.

Regards
Pedro


Allright! Thank you for the reply Pedro.
PedroR wrote:Hi aOpenBot

Yes I did receive it and we accepted the order.
I was waiting for the stock to arrive before contacting you regarding payment and shipping.

Regards
Pedro


Allright! Thank you for the reply Pedro.
aOpenBot
Newbie
Newbie
Posts: 2
Joined: Sat Oct 17, 2009 2:50 pm

Post by PedroR » Mon Oct 19, 2009 12:21 pm

Post by PedroR
Mon Oct 19, 2009 12:21 pm

Here is the draft of what I was explaining.

It also details the proposed class interfaces:
Image

This only details the PUBLIC interface of the classes.

I just realized there is a mistake in the description of "PlayMotion". The parameter that is passed, should not be an INT but an enumeration that let's you select the name of the Button on the Remote (like ArrowLeft, ArrowUp, ButtonA, Button1).
Anyway it's just a cosmetic change.

There is also a wCK DLL with similar structure, implementing all of the packets on the DLL, relying on the RobobuilderCOM class to talk to the robot as well.

The third variant would be the RBC DLL which is missing and would implement the commands of the RBC (some of which l3v3rz has already shown like the one to read the S/N).

What is your opinion about this approach?

Regards
Pedro.
Here is the draft of what I was explaining.

It also details the proposed class interfaces:
Image

This only details the PUBLIC interface of the classes.

I just realized there is a mistake in the description of "PlayMotion". The parameter that is passed, should not be an INT but an enumeration that let's you select the name of the Button on the Remote (like ArrowLeft, ArrowUp, ButtonA, Button1).
Anyway it's just a cosmetic change.

There is also a wCK DLL with similar structure, implementing all of the packets on the DLL, relying on the RobobuilderCOM class to talk to the robot as well.

The third variant would be the RBC DLL which is missing and would implement the commands of the RBC (some of which l3v3rz has already shown like the one to read the S/N).

What is your opinion about this approach?

Regards
Pedro.
PedroR
Savvy Roboteer
Savvy Roboteer
Posts: 1199
Joined: Mon Jun 16, 2008 11:07 pm

Next
57 postsPage 1 of 41, 2, 3, 4
57 postsPage 1 of 41, 2, 3, 4