Xaxxon OculusThe Oculus module provides a way to interface RoboRealm with the Xaxxon Oculus robot. Specifically this module provides access to the Arduino based motor controller that is embedded within the robot. The commands are sent over USB from RoboRealm to the Arduino which then regulates the motor power.
The Oculus platform instantly converts a small laptop into a telerobotic, remotely operated vehicle. The platform allows the robot to also be converted into an Autonomous System by running applications on the netbook. Using the onboard camera provided in most netbooks today, you can use the Oculus robot as an inexpensive vision based robot that provides a familiar keyboard, touchpad, and monitor (i.e. the netbook) to work with.
The robot is powered by the netbook through USB. While this low power causes the motors not to be sufficient for very thick carpet they do allow very controlled movement of the robot over a hard surface.
Note that you cannot run more than one system at a time as the serial port and camera will NOT be shared amoungst different applications. If you want to modify/enhance the camera output before sending it via the web you can install the RoboRealm Virtual Camera that will allow both RoboRealm and other systems to share the same camera.
You can order the Oculus robot by browsing to the Oculus Store.
1. COM Port - Specify the COM port that the Oculus is connected to. Note that the Oculus comes with a USB cable that simulates a serial port on your PC. The port number for these kinds of virtual ports are normally above the standard 1-4 physical ports.
2. Baud Rate - Specify the baud rate of 115200 to communicate with the Oculus. Note that this is much higher than the standard 9600 normally used. The higher rate provides much better responsiveness than the lower rates.
3. Remember As Default - Select the "Remember as Default" checkbox if you would like the current COM setting to be remembered by RoboRealm such that whenever the Oculus module is loaded the COM port and buad rate will be auto-populated to the current setting. This ability allows you to not have to constantly change the COM port setting when loading in successive RoboRealm robofile configurations.
4. Motors/Servo - Once communications is specified you should be able to move the appropriate slider in order to see the motor move. If the motor does not move, check your USB connection and motor wiring.
5. Variables - Select the appropriate variables that contain or will contain the position value that will be sent to the motors. This is used to automatically change the motor values based on your VBScript (using the SetVariable function) or Plugin based program.
6. Current Value - To manually set the motor position type in the appropriate number (-1000 to 1000, 0 is the default neutral) into the text area or use the slider to adjust the value. The motor speed will be updated as appropriate.
7. Sliders - You should be able to move your motors by dragging the sliders to the right or left or by specifying a number within the current value text box. If the motors do not move check your USB cable and/or board power connections.
9. Min/Max Limits - You can also use the min/max limits to ensure that even if the variables specify large or low values (due to programming errors) that the board does not actually attempt to move the motors above or below the specified limits. This can be used as an additional precaution in case your motors cannot physically move beyond certain limits.
Click Here to load a robofile that will allow you to drive your Oculus using a joystick. When you load this configuration you will need to edit the Joystick module to select which joystick to use to control the robot.
This robofile is configured for a playstation type of joystick with the first knob providing motion control. Moving the one knob will move one wheel forward/backward, while the other will do the same for the other wheel. This is a tank like drive.
If you do not like the configuration we have chosen simply edit the Joystick module and change the variables around to different buttons.
Once that is done have a safe and happy drive!
Green Ball Tracking
Click Here to load a robofile that will move the Oculus based on a green ball. When you load this configuration you might need to tweak the RGB filter to correctly detect the green ball. Also check the COM port in the Oculus module to be sure the correct port number is set. When ready press the Run button to start. When you hold a green ball in the center of the camera image it will not move. Moving the ball slowly to the right will cause the robot to turn to keep the ball in the middle. When you move the ball down the robot will move backwards and vice versa.
Click Here to load a robofile that will move the robot towards movement. Detecting movement is also a useful behavior for a robot to have. Click the run button to start. The robot will move in short segments towards the last movement done. When it stops moving it will again look for movement and start in that direction again. Note that while the robot is moving it ignores any movement since most of the image is changing due to camera movement and not an object moving in the scene. See if you can steer the robot by wiggling just your hand in the direction you want it to move.
Docking Station Recognition
Click Here to load a robofile that will detect the docking station graphic. The pipeline includes two blob filter modules to eliminate false positives. The idea is to first threshold the image in a way to have the white triangular shape isolated from the rest of the scene. This involves removing smaller unwanted blobs, removing those blobs that do not share the same center and those that are not triangular in shape. Once this triangular shape is isolated we negate the image and isolate the inner circle. If the circle is not detected then we conclude that we isolated the wrong triangular shape. Given this dual requirement the detection all of the docking station shape should be quite stable.
For more information
Xaxxon Oculus Website
|Xaxxon_Oculus Related Forum Posts||Last post||Posts||Views|