Screenshots     Download     Documentation     Tutorials     Partners     Resources     Contact     Forum     Search  

 

RoboRealm Vision Software FAQ

  1. How can I add computer vision to my Robot?
  2. What cameras does RoboRealm support?
  3. Do you provide source code or a linkable library?
  4. What vision resources are available?
  5. How would I write RoboRealm variables to a file?
  6. Can I use RoboRealm in embedded environments?
  7. Can RoboRealm run in Linux?
  8. I am starting to build a robot. Where can I get started?
  9. How can I load a JPEG image into RoboRealm?
  10. Do you have a feature roadmap?
  11. Is RoboRealm affiliated with any Universities?
  12. What are the minimum requirements to run RoboRealm?
  13. How do I make the Dlink DCS900 Internet camera work with RoboRealm software?
  14. RoboRealm complains about a missing script component?
  15. RoboRealm complains about a missing dll component?
  16. RoboRealm will not start!
  17. How do I programmatically extend or interface with RoboRealm?
  18. I forgot my Kiosk password!
  19. What platforms does RoboRealm support?
  20. My camera fps (frames per second) is SLOW!
  21. RoboRealm crashes when accessing my camera!

1. How can I add computer vision to my Robot?

Depending on what your budget size is you have three possible options:

1. NTSC Transmission - Attach an NTSC camera to your robot. They come in very small sizes and usually only require a 9 volt battery (see SuperCircuits). You will also need to buy an NTSC transmitter to transmit the video signal to your main host computer. Your host computer will need a a TV Tuner card or an external USB TV Tuner like WinTV from Hauppauge. This would allow you main computer to process the video and send signals back to the robot. This technique also reduces power requirements since you don't need much on your robot.

2. Internet Camera - You can buy something like the DLink DCS900 Camera which is a 'network camera' that sends video to a remote machine over 802.11 wireless. It is a self standing camera+computer. Again, a remote computer is needed to process the video stream (note that RoboRealm supports the DCS900 camera) so it will need an 802.11 wireless adaptor.

3. Onboard - Buy a biscuit board or PC104 board to digitize the video from the usb webcam onboard the robot. This is the most reliable and stable technique but requires a lot of custom building for power management and is the most expensive option since you'll need an Intel based board to run RoboRealm onboard the computer.

If you're a programmer we recommend option #2. We have tried option #1 with the Desktop Rover by Plantraco but that reception was not very good and the image was very jittery and unusable for use. Perhaps a more powerful transmitter would have been better suited to the task.

Following are a couple of scenarios on how you would get images into RoboRealm for processing.

Scenario #1
-- Onboard Robot Internet Camera
-> Wireless 802.11 transmitter (built into Internet Camera)
-> Wireless 802.11 receiver (usually your router already has this)
-> PC via wired network
-> RoboRealm grabs and processes images, sends commands via serial port
-> Serial port is attached to Bluetooth/RS232 wireless transmitter
-> Bluetooth message received into onboard robot PC
-> Onboard PC sends commands to motors/servos
-> Motor/servo moves robot
-> Internet camera picks up change ... and so on.

Above solution requires two way wireless communication and onboard robot microcontroller.

Scenario #2 (BucketBot)
-- Onboard Robot USB Webcam
-> USB into Onboard PC (PC104 or ITX)
-> RoboRealm running on robot processes images and sends commands via RS232
-> Mini-SSC Servo controller receives serial signals
-> SSC sends PWM to electronic speed controller
-> Speed controller moves DC motors accordingly
-> USB camera picks up change ... and so on.

but this will limit onboard processing power. To eliminate that issue you can instead use

Scenario #3
-- Onboard Robot USB Webcam
-> USB into Onboard PC (PC104 or ITX)
-> Roborealm running on robot sends image to PC using 802.11 wireless card (imitating the Internet camera)
-> 802.11 router picks up image
-> Desktop PC running RoboRealm grabs and processes image and sends results back to PC onboard robot
-> OnRobot RoboRealm receives information and sends commands to servo controller via RS232
-> Camera picks up change ... and so on.

Scenario #3 adds the 802.11 wireless card to the onboard PC which allows you to distribute processing onto desktop PCs.

The basic system will revolve around the onrobot PC. Since you have that PC you can use it to do more of the work that would otherwise be done by the DLink camera and Bluetooth devices.

If you have any questions about the above let us know ... we've tried them all!

2. What cameras does RoboRealm support?

RoboRealm supports any USB webcam and TV tuner that has Windows DirectX or VFW drivers. In addition, RoboRealm support various Internet cameras such as the DLink (see below), Axis, etc. Using the Media Reader module you can also view streaming ASF files or play avi, mpg or wmv files. And, of course, you can also open or drag and drop many static image file formats such as jpg, gif, png, ppm, etc. into RoboRealm to be processed.

3. Do you provide source code or a linkable library?

We do NOT provide a library or source code since there are other alternatives to interfacing with an application like RoboRealm.

We have chosen to integrate VBScript within the application itself to allow for beginning users to easily add code specific to their purpose without needing a VC++ compiler or any understanding of C/C++.

For those more inclined to program we have included extensions where you can interface with the RoboRealm application using sockets or pipes. (i.e. RoboRealm will send the processed image to your own standalone program). This has the nice effect that you can write your own software using any language you like (Perl, C#, Java, Visual Basic, etc).

Any finally we provide an interface that allows you to write your own RoboRealm module and include it within the program as a plugin (similar to the ImageJ plugins). This is more involved DLL C++ programming but does offer the best interface to RoboRealm and is the most powerful.

See RoboRealm Extensions for more information.

So, even though we don't include the source code or a callable library we do offer many alternatives (some much easier than dealing directly with code) while still allowing extensions to the system.

This reasoning was reached after watching the OpenCV (an Intel sponsored open source vision toolkit) forum and how many issues are raised in that forum that are simply due to failures in compiling and running the system. At RoboRealm, we wanted to focus on helping users work with the algorithms and creating solutions rather than working through compiling issues due to incompatible systems.

4. What vision resources are available?

There are a bunch of resources out there concerning vision. Have a look at Open Source/Freeware Vision Software for a list of open source vision based software that could be used for robotic applications. Probably the main two that we've seen used are OpenCV (Open Source Computer Vision library) which has the most active online forum that we've seen with 16 thousand members (check Google) and CMVision (Color Object Recognition) by CMU which was used in an embedded robotic system ... they don't appear to be active anymore but the code is still available.

You can subscribe to several newsgroups like:
comp.robotics.misc
sci.image.processing
comp.graphics.algorithms
OpenCV
YOV408 Programming Resources

You can attend a robot club local to your area. Have a look at Robot Clubs to see if one is in your area ... these are really useful to help you get started in robotics.

5. How would I write RoboRealm variables to a file?

You can use the Loading/Saving->Write Variables module or you can use the Extensions->VBScript_Program module with the following code. First create a file with the code and then add the VBScript module to your RoboRealm processing pipeline and reference the file you just created. The file should contain the following code:

  Dim fi
  Dim fso
  set fso = CreateObject("Scripting.FileSystemObject")
  set fi = fso.OpenTextFile("c:\temp\test.txt", 8, true)
  if err.number = 0 then
    ' Append the cog coordinates to the file.
    ' You can specify other variables here
    fi.writeLine GetVariable("cog_x") & ":" & GetVariable("cog_y")
    fi.close
  end if
  set fi = nothing
  set fso = nothing
This example assumes that the folder c:\temp\ exists!

6. Can I use RoboRealm in embedded environments?

For embedded systems that are not using PC based onboard computers then NTSC transmission from the robot to a desktop computer running Windows is a good alternative. You can find many such camera/transmission systems at SuperCircuits.

If you have a CMOS based camera with an embedded FPGA or other internal processor then we're probably not the right application to use. However, if you're developing your own vision routines you can certainly use RoboRealm to experiment to see which routines are correct. Searching for most of the module names will reveal much source code in many languages that can help you out. We even promote open source products at Open Source/Freeware Vision Software to help you out in finding the needed source code.

7. Can RoboRealm run in Linux?

Alas no, we do not have a linux version. As we depend on VFW (Video for Windows) and the Win GUI a port is a little more involved than we are currently prepared (or have the cash) to do. However, it is possible to write a video server that would run on a linux box and send the image to RoboRealm running a Windows based machine or use an NTSC transmitter from your Robot to a Windows desktop machine.

8. I am starting to build a robot. Where can I get started?

There are many websites to chose from but to get starting building a robot we recommend purchasing one of the commercially available kits. This will help you understand the basics of robot building and introduce you to the many different aspects of robot creation.

Other sites allow you to repurpose other robots such as the Roomba

and still others are about collecting bits and pieces to construct your own with provided software.

There are also many hardware manufacturers that have good websites that can help you out. Have a look at

for starters or check out our more complete list.

9. How can I load a JPEG image into RoboRealm?

If you have trouble loading JPEG or other images into RoboRealm be sure to have downloaded FreeImage and place the freeimage.dll next to your RoboRealm program or in your system32 folder (sometimes c:\winnt\system32 or c:\windows\system32 etc.).

Run RoboRealm and then click on the top Load button. Note that there are two load buttons; the one on top is for images while the one below is for loading RoboRealm configuration files. You will need to switch off the camera preview (just click on the preview button if it is depressed) to get the Load button to be enabled. That should do it!

10. Do you have a feature roadmap?

We have a long list of features to add. We have 2 main development paths, (1)the application and (2)the website.

1. The website development is mainly around documentation and community building tools (most of which we have yet to launch).

2. The product development breaks into two parts. There are then more known features that exist in other products like OpenCV which includes things like filters such as Kuwahara, Mode, Color Movement, etc. The second development path is more research oriented such as Image Matching which work from variable degrees in other products. This development path has no current existing equivalent in other applications or is only partial supported due to technical or algorithmic restrictions.

Typically new features are driven by real world case scenarios. I.e. we want the robot to do X and then set about to accomplish this task. The brainstorming of how to accomplish this task creates many MANY new features that need to be added before the combination of them can be used to accomplish the task at hand. The interesting thing is that many of those sub task features can be used for many other different tasks. The accumulation of these building blocks is the main interest and usefulness within RoboRealm.

11. Is RoboRealm affiliated with any Universities?

No, we are currently not associated with any Universities. However, the application is frequently used for various class activities. If you are planning on using RoboRealm for your classes and need help in creating an appropriate lecture please contact us and we'll help out in any way we can.

12. What are the minimum requirements to run RoboRealm?

Most of the requirements are quite low. The following should be sufficient:

  • Memory - 64Meg
  • Disk - 100Meg
  • Video Card - True color - 1024x768
  • Keyboard, Mouse
  • VFW or DirectX WebCam - 320x240 resolution, 30 fps, USB1.0
  • CPU - As fast as possible - 2GigHz plus

While RoboRealm currently does not take complete advantage of dual core technology it is recommended as it is very easy to quickly add a couple filters to reduce the frame rate to slower than usable.

It is worth pointing out that you can run RoboRealm on even a slow 386 machine (our BucketBot robot is a 386) but you have to reduce the resolution to 80x60 and accept about 10fps...it will largely depend on what you're trying to do.

Keep in mind that XP or Win2000 needs more memory than the above requirements. We recommend at least 512 to give other applications a little wiggle room. (but again we have win2000 on our BucketBot with only 64Meg and it runs fine ... but that's the only program running!)

13. How do I make the Dlink DCS900 Internet camera work with RoboRealm software?

Insert the Loading/Saving-> Read Http module into the processing pipeline.

Then type in

http://192.168.1.20/VIDEO.CGI

with the appropriate IP address (your's will most likely be different than above)

and press the START button.

The video should appear in the RoboRealm image area.

14. RoboRealm complains about a missing script component?

Most Windows installs already come with the Microsoft Scripting Control installed and should not need the component downloaded. But if RoboRealm complains about the missing component you can download the Microsoft Script Control.

A special note for Vista users: this component needs to be registered as an Admin. RoboRealm can do this for you if you right click on RoboRealm.exe and select "Run As Administrator". This will run RoboRealm in administrator mode and allow it to register this component for you. Once this is done you can then run RoboRealm in normal user mode. (I.e. select "Run As Administrator" only once).

15. RoboRealm complains about a missing dll component?

Try copying all the .dll files in the RoboRealm folder into your c:\windows\system32\ folder. Sometimes you will not have the current path as part of the system dll search path. The system32 folder will be in that search path and thus putting those files in that folder should make them available.

If that still does not work then type regsvr32 dll_name (usually ScriptSite.dll) in the command console after changing to the RoboRealm folder. The dll_name above is the name of the missing DLL (e.g. ScriptSite.dll)

If running Vista also try right clicking on RoboRealm.exe and select "run as administrator". This is a known permission issue with Microsoft Vista.

16. RoboRealm will not start!

Try holding down the CTRL key when starting RoboRealm. This will cause the application to not remember all previous configuration and not attempt to acquire a camera image on startup.

If this works then you can try deleting the registry information that RoboRealm uses on startup as there is most likely something in that configuration causing an issue.

1. Go to START button, select run, type "regedit" without the quotes
2. Navigate to HKEY_CURRENT_USER\Software\RoboRealm
3. delete the RoboRealm key entry (and all its subtree children).
4. exit regedit

If this does not work then try finding the working.robo file which is the file that stores the last used program. This file is loaded again each time RoboRealm starts and can also include mis-configuration information that causes problems. The working.robo file should be in the current RoboRealm folder but sometimes gets directed to other folders. Use the START->Search->For Files and Folders to look for that file. Once found delete it and try starting RoboRealm again.

17. How do I programmatically extend or interface with RoboRealm?

There are many ways to interface with RoboRealm. If you are using hardware components then the Serial or the Parallel Port modules are more generic possibilities.

From a programming point of view there are two ways; Extensions or using the API.

Extensions are modules controlled by RoboRealm whereas the API is meant to control RoboRealm.

Extensions allow you to create new modules that will be called on each iteration of the processing loop. They are meant to be incorporated into RoboRealm in order to "extend" the application's modules. They ARE guaranteed to get each image that is processed by RoboRealm and will receive all variables that are current with the application. They can also stop the processing loop (DLL only). RoboRealm will NOT run without a required extension and thus you need to make sure your extension is always available (or it is automatically loaded if a DLL).

The API allows you to control RoboRealm from another application. You can do similar things as an extension such as getting the current image or placing a new image in the processing pipeline but you are NOT guaranteed to get every frame of the processing loop. RoboRealm will continue to run regardless of if your control program is running (unlike extensions).

Which one you use will depend on what you're trying to develop.

18. I forgot my Kiosk password!

You will have to delete the RoboRealm registry entry to reset the password to null. You do this by

1. Go to START button, select run, type "regedit" without the quotes
2. Navigate to HKEY_CURRENT_USER\Software\RoboRealm
3. delete the RoboRealm key entry (and all its subtree children).
4. exit regedit
5. restart RoboRealm

Once this is done you will be in program mode of RoboRealm and will have to configure all settings once again.

19. What platforms does RoboRealm support?

We support Windows 98, 2000, XP and Vista.

20. My camera fps (frames per second) is SLOW!

Ensure that the RoboRealm RUN button in the main RoboRealm interface is untoggled (up). This disables all processing of the image and should show the camera preview at close to the maximum speed of the camera (normally 30fps). Does your fps now increase to the maximum rate?

  • Yes
    • Check what modules you have added to the processing pipeline. Some modules are much more complex than others and will reduce the overall fps considerably. See the average time spent in the module on the right side in gray alongside each module. See if you can reduce/eliminate those modules that require significant time to process. Note that some modules that connect to robots will cause a delay if that machine is not accessible while the connection times out. If you have one of these modules in your pipeline disable it using the Disable button (after selecting that module) which will cause the module to be ignored in the next processing loop (however, you may have to still wait for the current timeout before things speed up).
  • No
    • Check that you have DirectX installed. If you are using just VFW (Video For Windows) you will want to update to the most recent version of DirectX which is much faster than VFW.
    • You should also check that your camera can actually support a higher fps rate that what you are viewing.
    • Check that enough light is getting to the camera. Many cameras have automatic lighting adjustment (exposure) which will cause the camera to slow down its frame rate while it waits for the CCD's to collect enough photons to produce an image. Turning off the automatic lighting adjustment will increase the speed of the camera but really darken the image. You can use the Color_Balance module to compensate for this decrease in lighting.

      Some of the Logitech cameras require you to turn off "Right-Light" before you can turn off "Automatic Settings" and manually change the exposure. Note that the "Right-Light" check box is on a different tab/screen than the "Automatic Settings" check box.

    • Decrease the camera image size to something really small like 80x60 or the smallest setting possible. If your fps then increases your USB bus many not support a high enough bandwidth to transmit a larger image. You might need to purchase a more modern computer with a USB 2.0 bus in order to transfer images faster.
    • Try covering the RoboRealm camera preview image but still have the fps rate visible in the status bar. Once covered does the fps increase? If so then your video card may not be able to support the bandwidth needed for live preview. You can reduce this issue by going into the Options button->Other->Preview Rate and change the number to something slow like 5. This will cause the preview of the image to slow but still keep the actual processing of images fast in the background. This is also needed when viewing the RoboRealm interface over a slow network connection using a remove desktop tool like Terminal Server, Remote Desktop, VNC, GotoMyPc, etc.

21. RoboRealm crashes when accessing my camera!

Try using AMCap (a free program distributed by Microsoft Driver Kit) to see if the problem is with RoboRealm or with an OS setting. If AMCap also crashes then you have a driver or OS related issue. We will not be able to help you in this situation. If AMCap works, then:

  1. Startup RoboRealm in default mode (hold CTRL key down while clicking on RoboRealm.exe)
  2. Click on Options->Other tab. Select the "debugging" checkbox.
  3. Click on the Video tab and attempt to select your camera that causes RoboRealm to crash.
  4. Once RoboRealm crashes look for the file c:\roborealm.log on the root of your harddrive.
  5. Send that file to us using our Contact page and we'll get back to you with any possible fixes.



Have a question? Then please contact us and let us know!


© 2008 RoboRealm. All Rights Reserved. | Contact | Glossary | Privacy | Disclaimer | Link to Us | Resources | Site Map