by limor » Sat Aug 13, 2011 3:01 am
by limor
Sat Aug 13, 2011 3:01 am
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.
And 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)
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
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)
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.
And 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)
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
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)