Error MSRS and lynxmotion MSRS files

Hello all,

For a few weeks now, I’m trying to use my Lynx6 with Microsoft Robotics studio. However, when I start the service for the Lynx6 arm I get a couple of red lines in de command prompt:

This is my command in command prompt:

C:\Microsoft Robotics Studio (1.5)>dsshost /p:50000 /m:"Apps/SoftTech/Config/Lynxmotion.Lynx6Arm.manifest.xml"

The first error I get is this one:

Creating service with contract (when i place the contract URI here I can't post this message :? ) failed. Please make sure the contract element in the manifest is identical to the field Contract.Identifier in the type definition source.

I’ve checked if the contracts are the same in both files multiple times and they are equal!

The second error is this one:

Manifest Loader: Creating service failed:  (when i place the contract URI here I can't post this message :? ). Reason: System.Reflection.TargetInvocationException: Het doel van een aanroep heeft een uitzondering veroorzaakt. ---> System.IO.FileLoadException: Kan bestand of assembly SSC32.Y2007.M01.Proxy, Version=0.0.0.0, Culture=neutral, PublicKeyToken=f0a48c9f6e020610 of een van de afhankelijkheden hiervan niet laden. De manifestdefinitie van de gevonden assembly komt niet overeen met de assembly-verwijzing. (Uitzondering van HRESULT: 0x80131040) Bestandsnaam: SSC32.Y2007.M01.Proxy, Version=0.0.0.0, Culture=neutral, PublicKeyToken=f0a48c9f6e020610 bij CoroWare.Robotics.Services.Lynx6Arm.Lynx6ArmService..ctor(DsspServiceCreationPort creationPort) WRSCH: registratie van assembly-bindingen is uitgeschakeld. Als u assembly-bindingsfouten wilt registreren, stelt u de registerwaarde [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) in op 1. Opmerking: er is een prestatiestraf gekoppeld aan de registratie van assembly-bindingsfouten. Als u deze functie wilt uitschakelen, verwijdert u de registerwaarde [HKLM\Software\Microsoft\Fusion!EnableLog]. --- Einde van intern uitzonderingsstackpad --- bij System.RuntimeMethodHandle._InvokeConstructor(Object] args, SignatureStruct& signature, IntPtr declaringType) bij System.RuntimeMethodHandle.InvokeConstructor(Object] args, SignatureStruct signature, RuntimeTypeHandle declaringType) bij System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object] parameters, CultureInfo culture) bij Microsoft.Dss.Services.Constructor.ConstructService.InvokeServiceClassConstructor() bij Microsoft.Dss.Services.Constructor.ConstructService.ReflectAndConstructService(ServiceCache Cache)

I don’t know what this means.

Some things are in dutch (just let me know if you want an english version, i’ll translate the text).

I’ve changed nothing in the files provided by Lynxmotion on the Microsoft Robotics Studio Support page, except my serial port (from COM1 to COM3).

Specs:
Lynx6 robotic arm
USB to serial converter (COM3)
MS Robotics studio 1.5
MS Visual Studio 2005
Lynx6ArmPackage.zip

An english translation of the errors would be very handy.

I would recommend you start up the Robotics Studio system with the command

C:\Microsoft Robotics Studio (1.5)>dsshost /p:50000

and then open internet explorer on the machine and point it to localhost:50000

You should see the Robotics Studio control panel. At that point you can click on “Control Panel” in the left frame and you should get a list of all the services available. Scroll down to the SSC-32 service and click the “Create” button next to it. Then you can select “Debug and Trace messages” in the left frame to see the results of starting off that service. Quite often there are more messages stored there than in the command window output.

Quite often when I get odd start-up errors I remove the directory cache so that it is forced to be rebuilt. I don’t know why the cache gets messed up, but that’s the advice from the Microsoft group and it seems to solve many problems. Just remove the file C:\Microsoft Robotics Studio (1.5)\store\contractDirectoryCache.xml and then try to rerun the system. The cache will be rebuilt so the first start-up will take a bit longer.

Sorry for my late response.

The deletion of C:\Microsoft Robotics Studio (1.5)\store\contractDirectoryCache.xml worked quite well. Thanks a LOT jmandrell!!!
Now I get a bunch of other errors:

** Joint 0 ** SSC32 Command: #0 P1500 S500 T1000 *** Servo Move command failed.: http://www.w3.org/2003/05/soap-envelope:Receiver -> http://schemas.microsoft.com/xw/2004/10/dssp.html:UnknownEntry *** Servos cannot be initialized
I get these errors for every joint (0 to 5).
Anyone an idea how te get rid of these errors?

I just extracted the lynx 6 project again and the errors I discribed above were gone!
But… now I’ve got some new errors:

Manifest Loader: Creating service failed: http://schemas.coroware.com/2007/11/lynx6arm.html. Reason: System.IO.FileNotFoundException: Implementation assembly not found for: http://schemas.coroware.com/2007/11/lynx6arm.html in Microsoft.Dss.Services.Constructor.ConstructService.Process()

and this one again (I got it before)

Creating service with contract(http://schemas.coroware.com/2007/11/lynx6arm.html) failed. Please make sure the contract element in the manifest is identical to the field Contract.Identifier in the type definition source.

Anyone an idea?
(somewhere I’ve got the idea that when I solve the last error, the first one will also be solved)

I just grabbed the .zip file off the site, and unpacked it into the default folder for MSRS. At that point I opened a command shell, and entered the commands

cd "\Microsoft Robotics Studio (1.5)" bin\dsshost /p:50000 /m:"Apps/SoftTech/Config/Lynxmotion.Lynx6Arm.manifest.xml"
and everything came up correctly. I don’t have an SSC-32 connected to COM1, but the program did try to send commands out that port.
I would try to remove the cache again (since you just reinstalled the Lynx arm stuff), and then I would also go into the code and make sure the COM port is correct and can be opened.
You might also try unpacking the deploy file somewhere else (it should be stand-alone and not require the MSRS code to be able to run).

Thanks for your answer. I tried those things you said but the errors still showed up.

May I ask which software you are using? (i.e. which version of ms visual studio and with which servicepacks)

I think I found the problem… On the PC I was testing the software was visual studio 2005 AND visual studio 6 installed! Now I uninstalled VS6 and the service runs as it should be… I think…
When I start the service, in the controlpanel, the Lynx6 arm gets the initialisation positions and the arm goes into a position of 90 degrees.
When I visit the service URI (i.e. prmwxp91:50000/lynx6arm/329bea79 … 58cf65ae44) I get a XML document.

Is that ok?

Looks like that is the answer then. The services will provide an XML page when examined in Internet Explorer unless a .xslt file has been provided in some way to make a nicer page.

Well in that case… Thank you very much for your help!
I hope that others with the same problem can find this page and solve their problem as I did.

BTW what is the best way to make my robotic arm do certain movements?
Do I have to make another service that uses the lynx6arm service?

Yes, you will need to create another service.
With MSRS the services provided here are really low-level drivers of the arm and it’s joints. Deciding what to do with the arm is a higher-level service of some sort.

Thanks for your great support!
I’ve created a new service and added the lynx6arm as a partner.
But I don’t have a clue how to drive the lynx6arm from another service because there are no public classes I can use like you did with the ssc32 service.
See this topic