RoboRealm Vision Software FAQ
- How can I add computer vision to my Robot?
- What cameras does RoboRealm support?
- Do you provide source code or a linkable library?
- What vision resources are available?
- How would I write RoboRealm variables to a file?
- Can I use RoboRealm in embedded environments?
- Can RoboRealm run in Linux?
- I am starting to build a robot. Where can I get started?
- How can I load a JPEG image into RoboRealm?
- Do you have a feature roadmap?
- Is RoboRealm affiliated with any Universities?
- What are the minimum requirements to run RoboRealm?
- How do I make the Dlink DCS900 Internet camera work with RoboRealm software?
- RoboRealm complains about a missing script component?
- RoboRealm complains about a missing dll component?
- RoboRealm will not start!
- How do I programmatically extend or interface with RoboRealm?
- I forgot my Kiosk password!
- What platforms does RoboRealm support?
- My camera fps (frames per second) is SLOW!
- 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
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:
- Startup RoboRealm in default mode (hold CTRL key down while clicking on RoboRealm.exe)
- Click on Options->Other tab. Select the "debugging" checkbox.
- Click on the Video tab and attempt to select your camera that causes RoboRealm to crash.
- Once RoboRealm crashes look for the file c:\roborealm.log on the root of your harddrive.
- 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!
|