Troubleshooting Robotics Studio
Problems when running the sample tutorial (Networking-related)
When trying to run a diagram (e.g. the first sample solution from the courseware), you might get a networking related error (e.g. "Unhandled Exception...Could not create TCP Listener..."). Alternatively, you might be getting a lot of red messages with networking related errors. There are at least the following three common causes for these kinds of error:
- Spy Sweeper
If you have "Spy Sweeper" installed (which is the case on most CMU facilitized versions of Windows), this will most definitely contribute to your error. Please read the paragraph on how to disable it in the setup instructions.
- Windows Firewall
If "Spy Sweeper" wasn't causing the problem then it is most likely a firewall issue. This is especially the case if you get a windows-firewall notification, or if you accidentally hit "block" instead of "unblock". Fortunately, there is an easy way to ensure that your Windows Firewall will allow Robotics Studio to pass through:
- Go to "Settings"->"Control Panel"->"Security Center"->"Windows Firewall"
- Click on the "Exceptions" tab
- Click "Add Program..."
- Click "Browse..."
- Select
c:\Microsoft Robotics Studio (1.5)\bin\vpl.exe
- Hit "Ok" and again "Ok"
- Repeat the above by also adding:
c:\Microsoft Robotics Studio (1.5)\bin\vplhost.exe
c:\Microsoft Robotics Studio (1.5)\bin\dsshost.exe
- Click "Ok"
- Non-Administrator httpreserve.exe
If you get an error message that mentions something about a port not being reserved to your user or to run a tool called "httpreserve.exe" then keep reading. This error should only occur if you are trying to run robotics studio as a non-admin user and it basically means that your user doesn't have the right to allocate a listen-port using the .NET framework. To allow your user to allocate a port, do the following:
- Login as administrator
- Run "cmd"
- change to the robotics studio bin directory by typing:
cd c:\Microsoft Robotics Studio (1.5)\bin\
- run httpreserve for all ports that you require (typically 50000-50003):
httpreserve -Force /User:YOURUSERNAME /Port:50000
httpreserve -Force /User:YOURUSERNAME /Port:50001
httpreserve -Force /User:YOURUSERNAME /Port:50002
httpreserve -Force /User:YOURUSERNAME /Port:50003
Obviously, replace "YOURUSERNAME" with the non-administrator account name that you want to grant the access to.
- Now you can login as your non-admin user again, and the error message should not appear again.
Simulator Issues
- The Simulator Window stays blank (usually in a purplish-blue color) or it gives me a graphics-related error when starting
The simulator requires fairly modern graphics hardware to run (a video card supporting DirectX 9 / Shaders 2.0). If you don't have adequate graphics hardware, there is unfortunately no way to run the simulator.
For more information about the precise graphics requirements, please read this thread.
Also note that due to these reasons, only one of the lab-machines can actually run the simulator (hostname: steamroller).
Safe Mode Error
- When you try running a program, the Robot beeps, but nothing happens. The running window will give you an error related to some Safe Mode error.
The problem occurs when the robot is not totally ready to operate, but VPL goes ahead and does stuff anyway. The solution to this to create a
small piece of code to ensure that the robot is ready.
Notice the timer at the end of that code. When the code finishes and the robot is ready, that timer will be set. You will need to copy/paste that timer and then
connect the copy to where your program begins. This way, your code won't begin executing until the timer is finished, which means the robot is ready.
I have shown an example of this with the first part of the second courseware tutorial. Notice that I removed the two value declarations and the join.
Rather, I connected the timer straight to the TurningRadiusToWheelPowers service. This is just a shorter way of doing the join, and you can edit the values that are
given to TurningRadiusToWheelPowers directly when you connect the timer (picture).
!!!!! Note: You should also make sure that the manifest in the "iRobotCreate" service is set to the same manifest that you used for the "GenericDifferentialDrive" service.
Other resources
For more info and troubleshooting guides, see the
Robotics Studio Wiki at Microsoft.