Using VRBot Voice Recognition with Robobuilder

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

Using VRBot Voice Recognition with Robobuilder

Post by PedroR » Thu Dec 10, 2009 6:54 pm

Post by PedroR
Thu Dec 10, 2009 6:54 pm

Hi

I believe you may have already seen VRbot which is a complete Voice Recognition Solution. If not, it is here http://robosavvy.com/store/product_info ... cts_id/571

The module wraps all the Voice Recognition, Command Recording, etc and just exposes a clean serial protocol (over TTL UART). I find amazing what it packs in such a low form factor and low price.

One cool thing about the module is that it caches the responses and will only send the response byte by byte upon request from the host.
This means you can actually use it with a Bit Banging approach without requiring a real UART with a buffer.


This got me thinking if it would be possible to connect VRbot to the DIO pins on the Servos and use the wCK protocol commands to do some bit banging on those DIO pins to read/write to the module.
This would be scenario 1.

Scenario 2 would be sitting it on the actual bus of Robobuilder. You need to change the baud rate from the default 9600 up to 115kbps to match Robobuilder but once you nail that, you can talk to the bus and interact with the module.

The module can work with UARTs at 3.3V and 5V (I think Robobuilder is 5V, right?).
However it has limited onboard power regulation and thus you would need 5V. Is there any place on the robot where you can get that voltage? (ie the head maybe??)

Otherwise one needs an external regulator.

With all such nice options out there like the Homebrew OS, the native firmware and the PC library I am surprised no one has gotten into this yet ;)

Here are some resources to complement my thoughts:
Protocol http://robosavvy.com/RoboSavvyPages/VRb ... ol_1.3.zip
Datasheet http://www.veear.eu/LinkClick.aspx?file ... 38&mid=620

I'd be happy to hear about your thoughts.

Pedro
Hi

I believe you may have already seen VRbot which is a complete Voice Recognition Solution. If not, it is here http://robosavvy.com/store/product_info ... cts_id/571

The module wraps all the Voice Recognition, Command Recording, etc and just exposes a clean serial protocol (over TTL UART). I find amazing what it packs in such a low form factor and low price.

One cool thing about the module is that it caches the responses and will only send the response byte by byte upon request from the host.
This means you can actually use it with a Bit Banging approach without requiring a real UART with a buffer.


This got me thinking if it would be possible to connect VRbot to the DIO pins on the Servos and use the wCK protocol commands to do some bit banging on those DIO pins to read/write to the module.
This would be scenario 1.

Scenario 2 would be sitting it on the actual bus of Robobuilder. You need to change the baud rate from the default 9600 up to 115kbps to match Robobuilder but once you nail that, you can talk to the bus and interact with the module.

The module can work with UARTs at 3.3V and 5V (I think Robobuilder is 5V, right?).
However it has limited onboard power regulation and thus you would need 5V. Is there any place on the robot where you can get that voltage? (ie the head maybe??)

Otherwise one needs an external regulator.

With all such nice options out there like the Homebrew OS, the native firmware and the PC library I am surprised no one has gotten into this yet ;)

Here are some resources to complement my thoughts:
Protocol http://robosavvy.com/RoboSavvyPages/VRb ... ol_1.3.zip
Datasheet http://www.veear.eu/LinkClick.aspx?file ... 38&mid=620

I'd be happy to hear about your thoughts.

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

Post by PedroR » Fri Dec 11, 2009 6:00 pm

Post by PedroR
Fri Dec 11, 2009 6:00 pm

Actually after some thought I think none of the above solutions are really good.

Because the VRbot protocol does not use checksums it could interpret some bus command passing by inadvertently which is something we don't want.

This morning I woke up with a much better idea!!

Because Robobuilder was kind enough to keep RX and TX separate, you can connect an Arduino Pro Mini directly to the bus. (dependent on having a 5V pin).
(I am surprised how someone never used an Arduino on this forum to add A/D sensors to the robot)

Once you have the Arduino, you connect the VRbot to the DIO pins and use the Serial Library to talk to it. (essentially two UARTs: the real one listens on the bus and virtual one connects to VRbot).
Because VRbot caches the responses it is ideal for scenarios of Bit Banging where you don't have a buffer, which the case here. (it only responds after the host requests, and responds byte by byte)


As for the Arduino Sketch the I was thinking about implementing it in two parts:
1) Assign a bus ID to it and use the Position Set command to pass commands to VRbot.
Because the POsition Set command takes an 8 bit argument for the target position, we could use that to send CHARs (also 8 bit) to VRbot.

To read back responses, I was thinking about using the Position Read command to read the response byte by byte (which is actually the way VRbot works).
In practice, you send a position read command, the Arduino receives it, sends a " " (space) to VRbot indicating we want to read a byte form the response and return it in the form of "current" position.

This way we "hide" VRbot from the bus and make sure it does not interpret Bus commands inadvertently.

2) The second part of the sketch would be having the Arduino send commands to the bus whenever VRbot recognizes some command.
What I wanted to do is use the Remocon protocol (which is simple enough and quite straightforward).

This part is a bit tricky because I don't know if the RBC box understands Remocon commands if they are sent to the bus.

I know it understands Recmocon commands sent to the PC port and Bluetooth but because the servos are on a separate UART I don't know if it will react.


So back to my thinking again.

Regards
Pedro.
Actually after some thought I think none of the above solutions are really good.

Because the VRbot protocol does not use checksums it could interpret some bus command passing by inadvertently which is something we don't want.

This morning I woke up with a much better idea!!

Because Robobuilder was kind enough to keep RX and TX separate, you can connect an Arduino Pro Mini directly to the bus. (dependent on having a 5V pin).
(I am surprised how someone never used an Arduino on this forum to add A/D sensors to the robot)

Once you have the Arduino, you connect the VRbot to the DIO pins and use the Serial Library to talk to it. (essentially two UARTs: the real one listens on the bus and virtual one connects to VRbot).
Because VRbot caches the responses it is ideal for scenarios of Bit Banging where you don't have a buffer, which the case here. (it only responds after the host requests, and responds byte by byte)


As for the Arduino Sketch the I was thinking about implementing it in two parts:
1) Assign a bus ID to it and use the Position Set command to pass commands to VRbot.
Because the POsition Set command takes an 8 bit argument for the target position, we could use that to send CHARs (also 8 bit) to VRbot.

To read back responses, I was thinking about using the Position Read command to read the response byte by byte (which is actually the way VRbot works).
In practice, you send a position read command, the Arduino receives it, sends a " " (space) to VRbot indicating we want to read a byte form the response and return it in the form of "current" position.

This way we "hide" VRbot from the bus and make sure it does not interpret Bus commands inadvertently.

2) The second part of the sketch would be having the Arduino send commands to the bus whenever VRbot recognizes some command.
What I wanted to do is use the Remocon protocol (which is simple enough and quite straightforward).

This part is a bit tricky because I don't know if the RBC box understands Remocon commands if they are sent to the bus.

I know it understands Recmocon commands sent to the PC port and Bluetooth but because the servos are on a separate UART I don't know if it will react.


So back to my thinking again.

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

Post by PedroR » Mon Dec 14, 2009 2:15 pm

Post by PedroR
Mon Dec 14, 2009 2:15 pm

additional info:

Robobuilder will NOT understand Remocon commands sent to the bus.
Only commands sent to the PC port/Bluetooth.

So I may have to work out some alternative (maybe connecting it to the head connector) and emulate the IR sensor.

However I do not know how to emulate the IR sensor/IR remote.

Pedro.
additional info:

Robobuilder will NOT understand Remocon commands sent to the bus.
Only commands sent to the PC port/Bluetooth.

So I may have to work out some alternative (maybe connecting it to the head connector) and emulate the IR sensor.

However I do not know how to emulate the IR sensor/IR remote.

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

Post by watson.shane » Tue Mar 30, 2010 6:19 am

Post by watson.shane
Tue Mar 30, 2010 6:19 am

ie if they can output a command in the REMOCON format it can emulate the pressing of buttons to walk, play motions and play actions.
ie if they can output a command in the REMOCON format it can emulate the pressing of buttons to walk, play motions and play actions.
watson.shane offline
Newbie
Newbie
Posts: 1
Joined: Tue Mar 30, 2010 6:18 am


4 postsPage 1 of 1
4 postsPage 1 of 1
cron