VEX + Arduino + Linux + wifi + webcam = ?

Traditional mobile robotics is all about wheeled robots.
2 postsPage 1 of 1
2 postsPage 1 of 1

VEX + Arduino + Linux + wifi + webcam = ?

Post by limor » Sat Aug 13, 2011 3:01 am

Post by limor
Sat Aug 13, 2011 3:01 am

Image
We have started selling the basic VEX kit. VEX is the most popular kit for school robot competitions in USA. It has been around for years but only recently have they completed adapting the kit to comply with EU safety regulations and InovationFirst formally launched European VEX.

Typically VEX components are used to create wheeled robots that can move and pick up objects and put them or throw them them. An example of a VEX competition will involve 2 remote controlled robots from each group that have to throw the blue balls from one side of the arena to the other while preventing the competition to throw over the red balls.

We want to provide an add-on kit that will make the VEX platform autonomous. Maybe even let these games be performed without users remote control.

ImageAnd what would be a great way to give VEX autonomy if not with the help of our new entry-level embedded linux platform - the MiniEMBWiFi ?
Answer: the MiniEMBWiFi + Webcam + Arduino

In order to give the VEX robot some autonomy we have been playing around with the following configuration:

  • VEX Protobot (comes with 4 motors and speed controllers)
  • Arduino (sends PWM signal to the speed controllers and digests sensors)
  • MiniEMBWiFi (comes with on-board wifi)
  • Webcam (nothing fancy, will work at 320p)
  • LiPo Battery (7.4V, 5000Mah, couple of hours worth of continuous play)
  • Voltage regulator (MiniEMBWiFi likes 5V)


Image

Image

Image

To process the video signal from the webcam and then do some autonomous work, we installed RoboRealm.com on a remote (powerful) laptop. RoboRealm has a very comprehensive set of video processing functions. The idea is to stream the video signal to the RoboRealm running on a powerful PC and it will then send commands back to the Linux over wifi, which will stream these commands to the Arduino, which will command the motors to do intelligent stuff.

RoboRealm@PC <--> MiniEMBWiFi + wifi + webcam <--> Arduino <--> VEX speed controllers <--> VEX motors

The first step is to link the video signal from the MiniEMBWiFi to the PC
phpBB [media]


In the video you can see that the video signal reached from the robot to the PC (RoboRealm) at 320p decent frame rate. Now that we have a video signal streamed from the robot to the RoboRealm brain, we need it to stream back commands to the motors.
For that we make use of a Linux utility called socat and something similar running on Windows. The idea is to emulate a serial port on the windows that will be virtually linked to the arduino (serial over net). This will allow RoboRealm to think that the Arduino is connected locally to the PC (hopefully no buffering and delays) and will allow the Arduino java development environment to think that the Arduino is connected locally. The MiniEMBWiFi essentially serves here as a combination of a remote wifi-camera + zigbee-shield for arduino.
If all goes well then maybe eventually we can do some number crunching on the linux board and the Arduino possibly..
(to be cont'd)
Image
We have started selling the basic VEX kit. VEX is the most popular kit for school robot competitions in USA. It has been around for years but only recently have they completed adapting the kit to comply with EU safety regulations and InovationFirst formally launched European VEX.

Typically VEX components are used to create wheeled robots that can move and pick up objects and put them or throw them them. An example of a VEX competition will involve 2 remote controlled robots from each group that have to throw the blue balls from one side of the arena to the other while preventing the competition to throw over the red balls.

We want to provide an add-on kit that will make the VEX platform autonomous. Maybe even let these games be performed without users remote control.

ImageAnd what would be a great way to give VEX autonomy if not with the help of our new entry-level embedded linux platform - the MiniEMBWiFi ?
Answer: the MiniEMBWiFi + Webcam + Arduino

In order to give the VEX robot some autonomy we have been playing around with the following configuration:

  • VEX Protobot (comes with 4 motors and speed controllers)
  • Arduino (sends PWM signal to the speed controllers and digests sensors)
  • MiniEMBWiFi (comes with on-board wifi)
  • Webcam (nothing fancy, will work at 320p)
  • LiPo Battery (7.4V, 5000Mah, couple of hours worth of continuous play)
  • Voltage regulator (MiniEMBWiFi likes 5V)


Image

Image

Image

To process the video signal from the webcam and then do some autonomous work, we installed RoboRealm.com on a remote (powerful) laptop. RoboRealm has a very comprehensive set of video processing functions. The idea is to stream the video signal to the RoboRealm running on a powerful PC and it will then send commands back to the Linux over wifi, which will stream these commands to the Arduino, which will command the motors to do intelligent stuff.

RoboRealm@PC <--> MiniEMBWiFi + wifi + webcam <--> Arduino <--> VEX speed controllers <--> VEX motors

The first step is to link the video signal from the MiniEMBWiFi to the PC
phpBB [media]


In the video you can see that the video signal reached from the robot to the PC (RoboRealm) at 320p decent frame rate. Now that we have a video signal streamed from the robot to the RoboRealm brain, we need it to stream back commands to the motors.
For that we make use of a Linux utility called socat and something similar running on Windows. The idea is to emulate a serial port on the windows that will be virtually linked to the arduino (serial over net). This will allow RoboRealm to think that the Arduino is connected locally to the PC (hopefully no buffering and delays) and will allow the Arduino java development environment to think that the Arduino is connected locally. The MiniEMBWiFi essentially serves here as a combination of a remote wifi-camera + zigbee-shield for arduino.
If all goes well then maybe eventually we can do some number crunching on the linux board and the Arduino possibly..
(to be cont'd)
limor offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 1845
Joined: Mon Oct 11, 2004 1:00 am
Location: London, UK

Post by nunogato » Thu Aug 25, 2011 12:07 pm

Post by nunogato
Thu Aug 25, 2011 12:07 pm

Already made some changes on the kit.

I't now fully assembled so it is built from:

1 x VEX Protobot Robot Kit
1 x Arduino Uno
1 x Omnima - MiniEMBWiFi 320MHz Embedded Linux Board
1 x ZIPPY Flightmax LiPo 2S 7.2V 5000mAh 20C (maybe this is too big but it the one we had in the office)
1 x USB Cable A to B - 6 Foot To connect the Arduino to the Linux (didn't had a smaller one)
1 x UBEC Voltage Regulator 5V 3A (to power the Linux board and the USB hub)
1 x UVC USB Camera
1 x 4 Port USB Hub

Then we made on the MakerBot the supports for the Arduino and the Linux Board and with some pin headers a small board where the motors are connected, so they are powered directly from the LiPo but the signal comes from the PWM ports of the Arduino.

Next task: Make it work :)

Check some pictures
<object width="600" height="450"> <param name="flashvars" value="offsite=true&lang=en-us&page_show_url=%2Fphotos%2Frobosavvy%2Fsets%2F72157627514749800%2Fshow%2F&page_show_back_url=%2Fphotos%2Frobosavvy%2Fsets%2F72157627514749800%2F&set_id=72157627514749800&jump_to="></param> <param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=104087"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=104087" allowFullScreen="true" flashvars="offsite=true&lang=en-us&page_show_url=%2Fphotos%2Frobosavvy%2Fsets%2F72157627514749800%2Fshow%2F&page_show_back_url=%2Fphotos%2Frobosavvy%2Fsets%2F72157627514749800%2F&set_id=72157627514749800&jump_to=" width="600" height="450"></embed></object>
Already made some changes on the kit.

I't now fully assembled so it is built from:

1 x VEX Protobot Robot Kit
1 x Arduino Uno
1 x Omnima - MiniEMBWiFi 320MHz Embedded Linux Board
1 x ZIPPY Flightmax LiPo 2S 7.2V 5000mAh 20C (maybe this is too big but it the one we had in the office)
1 x USB Cable A to B - 6 Foot To connect the Arduino to the Linux (didn't had a smaller one)
1 x UBEC Voltage Regulator 5V 3A (to power the Linux board and the USB hub)
1 x UVC USB Camera
1 x 4 Port USB Hub

Then we made on the MakerBot the supports for the Arduino and the Linux Board and with some pin headers a small board where the motors are connected, so they are powered directly from the LiPo but the signal comes from the PWM ports of the Arduino.

Next task: Make it work :)

Check some pictures
<object width="600" height="450"> <param name="flashvars" value="offsite=true&lang=en-us&page_show_url=%2Fphotos%2Frobosavvy%2Fsets%2F72157627514749800%2Fshow%2F&page_show_back_url=%2Fphotos%2Frobosavvy%2Fsets%2F72157627514749800%2F&set_id=72157627514749800&jump_to="></param> <param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=104087"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=104087" allowFullScreen="true" flashvars="offsite=true&lang=en-us&page_show_url=%2Fphotos%2Frobosavvy%2Fsets%2F72157627514749800%2Fshow%2F&page_show_back_url=%2Fphotos%2Frobosavvy%2Fsets%2F72157627514749800%2F&set_id=72157627514749800&jump_to=" width="600" height="450"></embed></object>
nunogato offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 86
Joined: Mon Mar 15, 2010 3:48 pm


2 postsPage 1 of 1
2 postsPage 1 of 1
cron