![]() |
![]() |
Professional
Microsoft Robotics Developer Studio
The latest version of the ProMRDS Samples was built for the official release of Microsoft RDS 2008 R2 (Build 2.1.61.2). It has some restrictions which are explained below.
These notes are for the 2008 R2 version. You should also read the notes for the 2008 version (at the end of this page) which are still applicable.
For this release, the samples are provided as a ZIP file rather than a DssDeploy package. This allows the code to be moved between versions of RDS, but it also makes installation more complicated. Please follow the installation instructions below carefully:
There are new batch scripts called clean.cmd that can be used to clean out all of the binaries to reduce the size before zipping.
The binaries are not included in the ZIP file. Each of the folders contains a script called buildall.cmd that can be used to recompile the samples.
When building, you might have to build twice for some projects due to dependencies. Do NOT issue a Rebuild (which is what buildall.cmd does) because this deletes the binary files. Just open the solution in Visual Studio and Build twice.
DssProxy issus a warning about schemas.tempuri.org which can be ignored. (These errors can easily be fixed, but the relevant code was generated by the Wizard and so it is "correct").
Some CF (Compact Framework) projects do not compile. The Express Edition does not support CF anyway. If you have no need for CF versions then just delete the projects from the Solution files and the errors will disappear.
Sometimes there will be errors similar to (especially for CF projects):
Could not load file or assembly 'file:xxx.dll' or one of its dependencies.
The process cannot access the file because it is being used by another process.
These errors are caused by Visual Studio holding a file open. If you run
the build again they will disappear.
For the simulated webcam, the contract identifier has changed to:
schemas.tempuri.org => schemas.microsoft.com
The Corobot has not been updated to the new Generic Differential Drive contract (from RDS 2008). The DriveDistance and RotateDegrees operations do not send a response until the operation has completed. They should send an immediate response and then send a notification when the operation completes.
The Soccer samples will not build because they require code that is not included in the RDS pacakge.
Some of the VPL samples, e.g. the Laser Range Finder in Chapter 11, display error messages in VPL. However they still run as expected. The problem is in how VPL checks for errors, not in the sample code.
All of the samples have been compiled using Visual Studio 2008 with Service Pack 1 installed. They are no longer supplied as VS2005 solutions.
If you do not currently have Visual Studio 2008, you should upgrade. There are free Express Editions of VS2008. However, the Express Editions cannot be used to develop Compact Framework services.
The first time that you open a VS2005 solution in VS2008 it will migrate the solution. This is a one-way process and you cannot (easily) go back to VS2005.
The kit contains all of the binary files (services) which are copied into the RDS bin folder. However, you can completely rebuild from the sources using the command script called buildall.cmd in the ProMRDS folder. Note that due to some inter-dependencies it is necessary to run buildall twice. Also, there will be errors reported because of the CF services. (See below).
When you first open a VPL diagram from a previous version of RDS in the RDS 2008, a dialog is displayed asking if you want to upgrade. All of the VPL diagrams in this package have already been opened and saved so you will not see this message.
Due to changes to DssProxy and the way that CF projects are compiled under RDS 2008, they are not supported in this interim release. We are working to resolve this problem.
Also, you should be aware that CF projects are not supported if you are using:
RDS 2008 Express Edition; OR VS2008 Express Edition; OR VS2008 Standard Edition.
If you have a requirement to create CF services, you must have RDS Academic or Standard Edition and VS2008 Professional Edition or higher.
In previous versions of RDS, simulation was not supported on 64-bit operating systems. (The problem is actually in XNA). In RDS 2008 Microsoft shipped a new version of DssHost.exe called DssHost32.exe. This allows the Simulator to be run in a 32-bit environment so it is now possible to use the Simulator on 64-bit operating systems.
This has two consequences:
If you have trouble running any of the services that involve simulation and you are on a 64-bit operating system, please confirm that you are running DssHost32.
Another scenario that might require DssHost32 is if you use a Game Controller in your service. In particular, this applies to the Dashboard, DriveByWire and TeleOperation in Chapter 4.
It has been discovered that the iRobot Create expects both a negative distance and a negative wheel power in order to move backwards in response to a DriveDistance request. Logically this is not correct. Therefore the Backwards arrow in the Dashboard, DriveByWire and TeleOperation is not functional for a Create. This does not affect other robots.
Due to the way that the simulator handles "gripping" an object, you might encounter some strange behavior with the L6 Arm simulation. If you grip an object too hard, the arm can be thrown back explosively and the object might fly away. This occurs because the simulator exerts a force to push objects apart if they try to occupy the same space.
In RDS 2008 the wheels were removed from the mesh for the Pioneer 3DX (and created separately) which meant that they were not visible in the Pioneer robots created using SimulatedDifferentialDriveTT. This has been corrected in the Maze Simulator, but has been left as a novelty in some of the other samples.
The Soccer simulation is not yet supported by Microsoft. The referee has to be migrated to the released version of RDS 2008. When it becomes available you will be able to download it from the Microsoft web site.
The Sumo simulation is supported. The referee is supplied in RDS 2008. Note that the Sumo Challenge from the RoboChamps competition is no longer available.
There are services for the Boe-Bot included in this package. They will work with the original firmware from Parallax, but in order to use the additional features in the book you will have to download updated firmware to your Boe-Bot.
If you have a Stinger or Traxster robot then you will need updated services. These are supplied "as is" with the permission of Robotics Connection. You should check the Robotics Connection web site for a later version.
TThe kit has a folder called Package that contains a command script and a text file. These are used to build the DssDeploy package for anyone who is interested in how it works.
TThe kit has a folder called Media that contains all of the image and mesh files required by the simulations. These should be copied into the store\media folder on your RDS installation automatically.
TThe kit has a folder called bin that contains all the command scripts used to run the services. These scripts can be copied into the bin folder under your RDS installation point. This will make it easier for you to run the various samples.
TheThe samples were first migrated using the DssProjectMigration tool. Then a variety of different changes had to be applied to the code to make it conform with RDS 2008. Several of these changes are listed below because you might find them useful in your own projects.
Because some of the MRDS DLLs are now in the GAC (Global Assembly Cache),
their names have changed. Also, you will notice that the references are set up
with Specific Version set to true. Please ignore
the advice in the book that says to set this to
false for the following DLLs:
Microsoft.Ccr.Adapters.WinForms
Microsoft.Ccr.Core
Microsoft.Dss.Base
Microsoft.Dss.Runtime
These will be correctly updated if you run DssProjectMigration.
The functionality of DssCmdArgs.DLL is now incorporated into Microsoft.Dss.Tools.DLL. Most people did not use this DLL.
DssProxy (which is responsible for Proxy Generation) has been completely rewritten. If you see an error that DssProxy exited with error code 10, please look in the Output window (not the Errors window) to see if you can locate the relevant error message(s). The following paragraphs show some of the errors that were encountered during the upgrade.
DssProxy Error message:
The contract of the '_brickPort' partner of service
ProMRDS.Robotics.Integrator.Drive.IntegratorDriveService does not contain a definition for
ProMRDS.Robotics.GenericBrick.Proxy.GenericBrickOperations.
This problem occurred because the contract was specified as a string, not using a reference:
//[Partner("Integrator", Contract = "http://www.promrds.com/contracts/2008/01/integrator.html", CreationPolicy =
PartnerCreationPolicy.UseExisting, Optional = false)]
[Partner("Integrator", Contract = brick.Contract.Identifier, CreationPolicy = PartnerCreationPolicy.UseExisting, Optional = false)]
private brick.GenericBrickOperations _brickPort = new brick.GenericBrickOperations();
DssProxy Error message:
Invalid URI: The format of the URI could not be determined.
This problem occurred because the format of a DssCategory must now
be a URI. So for example, "SumoPlayer" is not acceptable:
// A category must be in the format of a URI
[DssCategory("http://www.promrds.com/contacts/SumoPlayer.htm")]
DssProxy Error message:
The type ProMRDS.Simulation.QuadDifferentialDrive.DriveDifferentialFourWheelState is used as a data contract, or message type, or as a part or base type of a data contract or message type but has no DataContract attribute.
This problem occurred because the [DataContract] attribute was missing from a State class. DssProxy makes much more stringent checks now.
DssProxy Error message:
The property 'CommandType' on type SSC32Command is read-only. Properties must support read and write.
This problem occurred because properties can no longer be read-only. To create a
property that is effectively read-only, you need to add a Set method to
the class that does nothing:
Set { }
The ServiceInfoType method HttpUri() is now obsolete. Because it was mostly used in Log messages, it can be replaced by the ServiceInfo.HttpServiceAlias property which is the name of the service. This is only cosmetic, but if you have set "Warnings as Errors" then your code will not compile.
When sending notifications to a specific client, such as during the initial
subscription, the syntax has changed:
base.SendNotification<Replace>(_subMgr, request.Subscriber, _state);
should be replaced with:
base.SendNotificationToTarget<Replace>(request.Subscriber, _subMgr, _state);
Camera entities in simulation need to be Attached Children in order for them
to work properly, e.g.
_entity.CameraModel = simengine.CameraEntity.CameraModelType.AttachedChild;
When extracting form data from a Http Post request, the syntax has changed:
ReadFormData readForm = new ReadFormData(httpPost.Body.Context);
must be changed to:
ReadFormData readForm = new ReadFormData(httpPost);
DssProxy now checks Contract Identifiers to see if they contain mixed case or spaces. Therefore all Contract Identifiers were converted to lowercase and the manifests modified to match.
The software has been designed so that it should not conflict with any existing RDS services. Please see the Licence Agreement for details of the terms of use.
The RoboticsConnection services are required to use a Stinger robot and must be installed separately. They are provided with the permission of RoboticsConnection.
The Boe-Bot services are based on code from Parallax. This code is used with permission.
The Lynxmotion L6 Arm services are based on code from Lynxmotion. This code is used with permission.