Tag Archive: MSRDS


经过CTP April, CTP July之后,微软终于赶在年末发布了Robotics Developer Studio 2008的正式版。相比于CTP July,新增特性不多。主要修正了些bug。

同时,MSRDS更改了许可方式,Express Edition可以免费下载,但是不可以分发部署应用,最主要的是仿真器有最多64个Entity的限制。而Standard Edition是需要收费的。不过微软对于学术研究还提供了一个Academic Edition,功能跟Standard Edition是一样的。Academic Edition可以从MSDNAA下载,不过到目前为止,好像没有见到有下载,不知道微软的学生计划DreamSpark里会不会提供Academic Edition的下载。

Advertisements

MSRDS 2008 July CTP发布

Microsoft于近日发布了MSRDS 2008 July CTP,又丰富了一些功能:
1、增加了不少例子和教程,特别是,新增了4×4驱动小车的仿真。
2、通过WOW64(Windows-32 on Windows-64)子系统,仿真引擎可以通过执行dsshost32.exe运行在64位操作系统之上。
3、改进了DSSProxy工具,使编译更快。
4、新增了DSS Log分析工具,能清晰地看到DSS节点之间的消息交换等调试信息。
5、可视仿真环境可以嵌入到其他应用程序中运行,不必要单独运行。这样,就可以在自己的应用程序中加入仿真画面。

关掉LRF的渲染

在MSRDS的仿真环境中,仿真的激光测距仪Simulated LRF在渲染的时候会有红色的小点点投射在物体上。其实,我们在仿真任务中,是不会关心这些红点点的,而且在开启LRF的渲染的时候会耗费比较多的计算性能,特别是在添加有多个LRF的时候。所以关掉LRF的渲染可能更好一点。

LaserRangeFinderEntity laser = new LaserRangeFinderEntity(new Pose(new Vector3(0, 0.3f, 0)));
laser.Flags |= VisualEntityProperties.DisableRendering;

MSRDS开发的参考资料

Microsoft Robotics Developer Studio已经被越来越多的人所使用,慢慢地相关参考资料也开始多起来了。当然首先要参考的还是微软的知识库MSDN(http://msdn.microsoft.com/en-us/library/bb881626.aspx),不过由于MSRDS刚刚推出不久,MSDN的参考内容仍旧比较单薄,类库也仅仅是简单的说明,没有太多相关的例子。其实随安装包发布的CHM帮助文件也有不少内容可以参考。另外一个地方就是MSDN Forum(http://forums.microsoft.com/msdn/default.aspx?forumgroupid=383&siteid=1)关于MSRDS的讨论区,MSRDS的开发者,以及一些精通用户经常在那里出现。

最近要出版的两本关于MSRDS的书应该也有一定的参考价值:
1、Kyle Johns, Trevor Taylor.  Professional Microsoft Robotics Studio. Wiley, 2008
2、Sara Morgan. Programming Microsoft® Robotics Studio. MS Press, 2008

MSRDS的视觉开发工具包

Braintech公司开发了基于MSRDS服务框架的视觉处理开发工具包,使用户能够方便地在MSRDS上开发基于视觉的机器人应用程序。包括人脸识别、运动识别、物体识别、多视图物体识别、跟踪、摄像机操作等服务。

详细信息可以到Braintech的网站上查询:http://www.volts-iq.com/

获取仿真机器人的具体位置

在MSRDS2008的机器人仿真中,有时候希望能够记录仿真机器人的运动轨迹,这就要求能够随时获得仿真机器人的位置。

方法一、创建Pioneer 3DX实体的时候,不要在仿真服务类的函数中定义Pioneer 3DX实体局部变量,然后用return的方法返回,譬如在AddPionner3DX、CreateMotorBase函数中定义robotEntity。这样的话,直接用RobotEntity.State.Pose.Position返回的位置信息全部为零。需要在仿真服务类中直接定义一个成员变量,如:Pioneer3DX robotEntity,然后可以在AddPionner3DX和CreateMotorBase函数中直接使用robotEntity这个成员变量创建Pioneer 3DX实体。这样的话,用robotEntity.State.Pose.Position可以获得机器人的位置了。

方法二:这个方法可以从MSRDS的仿真例子5“Environment with Terrain”中看到,也就是直接query仿真引擎,要求返回某个仿真实体的位置信息。
                VisualEntity tmp = new VisualEntity();
                tmp.State.Name = “MotorBase”;

                yield return Arbiter.Choice(SimulationEngine.GlobalInstancePort.Query(tmp),
                    delegate(QuerySimulationEntityResponseType response)
                    {
                        Console.WriteLine(string.Format(”Position: {0} {1} {2}”,
                            response.Entity.State.Pose.Position.X,
                            response.Entity.State.Pose.Position.Y,
                            response.Entity.State.Pose.Position.Z));
                    },
                    delegate(Fault f) { Console.WriteLine(”Query failed.”); }
                );

                yield return Arbiter.Receive(false, TimeoutPort(1000), delegate { });

在MSRDS2008的Pioneer 3DX仿真例子中,发现robocam不能随着机器人的移动而改变视角。需要做如下调整:

一、可在创建摄像头的时候,增加一句AttachedChild。
// Create Camera Entity and start SimulatedWebcam service
CameraEntity camera = CreateCamera();
camera.CameraModel = CameraEntity.CameraModelType.AttachedChild;
// insert as child of motor base
robotBaseEntity.InsertEntity(camera);

二、也可以直接在仿真环境中修改:
1、运行Pioneer 3DX仿真
2、在菜单中悬着 ”Mode -> Edit”
3、展开 P3DXMotorBase
4、选择 robocam
5、点击0 ”Edit Entity” 按钮
6、在 ”Misc” 中,把 CameraModel 改为 “AttachedChild”
7、点击 ”Ok”
8、然后在菜单中选择 ”Mode -> Run”

从MSRS1.5升级到MSRDS2008

微软已经发布Robotics Studio 2008预览版,并改名为Microsoft Robotics Developer Studio 2008(简称MSRDS)。由于安装目录的变化,原来在MSRS1.5上编的程序升级到MSRDS2008需要作一些修改。打开项目文件后,在项目属性里,修改下列内容:
(1)“生成”项中,输出路径改为新的安装目录下的bin目录,如:“D:\Microsoft Robotics Dev Studio 2008\bin\”
(2)“生成事件”项中,生成后事件命令行中也有点变化,可以打开MSRDS2008的例子文件复制一个过来。
(3)“调试”项中,启动外部程序改为新的目录,如“D:\Microsoft Robotics Dev Studio 2008\bin\DssHost.exe”,命令行参数中manifest的位置根据项目所在目录位置确认一下。工作目录也要改为MSRDS2008的安装目录,如“D:\Microsoft Robotics Dev Studio 2008\”
(4)“引用路径”项中,删除原来的引用路径,更改为新的引用路径,如“D:\Microsoft Robotics Dev Studio 2008\bin\”
(5)“签名”项中,强名称密钥文件的位置也要重新选择一下,在安装目录samples目录下。
改完后,检查一下项目的引用中,是否有感叹号,如果有的话,需要先移除,然后重新添加一下。

另外,仿真环境中发现Pioneer3DX的轮子不见了,原来轮子的Mesh独立开来了,需要在创建Pioneer3DX的时候,重新指定一下:
robotBaseEntity.WheelMesh = “PioneerWheel.bos”;

MSRDS CTP1安装

微软刚刚发布了Microsoft Robotics Developer Studio 2008四月预览版(MSRDS CTP1),在其主页上已经可以下载了。

正好今天下完Visual Studio 2008装好了,也顺便把MSRDS CTP1装上,体积一下子大了十倍,有400+M。装完后,发现仿真不能运行,出现错误。查了下,原来MSRDS CTP1存在小小bug,需要另外单独安装一下DirectX的新版:http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=740ac79a-5b72-447d-84f9-ee6407ed1a91。又是一通下载,装完后运行仿真就一切正常了。

远程访问DSS节点

MSRS的DSS节点默认的远程访问方式是认证方式,需要远程访问时,可以关掉认证方式。譬如计算机A运行仿真程序,计算机B运行控制程序,B通过网络来控制A仿真坏境中的机器人。

关掉认证的方法:

在本机浏览器上输入http://A:50000/security/manager,将security settings中的authentication选项disable掉。

在本机输入上述网址时需要登录的话,也可以直接编辑安全配置文件来更改安全设置选项。

打开bin\dsshost.exe.config 文件,在appSetting元素中添加如下关键字,有些情况下已经有该关键字,则不用管它了。

<appSettings>
     .
     <add key=”Security” value=”..\store\SecuritySettings.xml”/>
     .
</appSettings>

然后在store目录下新建或者修改安全配置文件store/SecuritySettings.xml, 其内容如下

< ?xml version=”1.0″? >
< SecuritySettings xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
                   xmlns:xsd=”http://www.w3.org/2001/XMLSchema”
                   xmlns=”http://schemas.microsoft.com/robotics/2006/10/security.html”>

   <AuthenticationRequired>false</AuthenticationRequired>
   <OnlySignedAssemblies>false</OnlySignedAssemblies>
   <Users />
 </SecuritySettings>  

此时,可以通过远程计算机(如计算机B)的浏览器访问http://A:50000/。

通过浏览器访问节点时,如果开了防火墙的话,则添加一个例外端口为50000。

如果两台电脑的DSS节点需要互相通讯的话,如B机的控制程序来控制A机仿真环境中的机器人,则A和B两机都需要关掉认证。

在某些网络环境中,不能直接通过机器名访问远程计算机,如Internet或部分LAN的设置,可以在计算机的hosts文件中添加IP解析记录。在windows/system32/drivers/etc目录下的hosts文件中增加一条记录”192.168.1.6  RemotePC”。