AWS RoboMaker
Hello World 运行分为两部分,先是通过实例应用程序运行 Hello World 模拟作业,再就是进入实际开发环境,通过代码运行,启动模拟作业。
实例应用程序 Hello World
选择实例应用程序-Hello world-启动模拟作业,开始创建,页面上面会出现进度条,如下图。
等待过后,页面跳转到 模拟作业 ,如下图
可以看到状态是 正在准备 ,可以通过点击右边红框 查看各种配置,比如机器人应用程序、模拟应用程序。 就绪后如下图,可以通过点击查看模拟工具,比如Gazebo、Rviz、Rqt、对应的Terminal。
点击 GZClient 可以看到仿真世界 ,小车在旋转,如下图。
点击Rviz,选好相对的坐标系(Fixed Frame),添加机器人模型,即可看到旋转的机器人,如下图。
到此,我们的Hello World实例程序已经运行成功了,可以在各个工具中都进行探索尝试了。到此,我们也初步接触了模拟作业(simulation job),对它有了个初步的认识,模拟作业其实就是真实程序跑在仿真环境中形成的整个任务。那么如何编写代码并且生成模拟作业呢,下面就进入实际开发环境。
开发环境运行 Hello World
首先,创建 开发环境,然后 选择 并 打开开发环境
打开后的开发环境一片空白,我们点击 Resources – Download Samples – 1.Hello World(下图右红框),下载实例代码,当下方控制台 提示 下载成功时 ,左边目录会多出 Hello World全部源代码(下图左红框)
可以看到HelloWorld目录下有两个主要的子目录,robot_ws、simulation_ws,一个robot workspace即存放机器人应用程序的目录,另外一个simulation workspace存放模拟程序的目录(包括机器人模型、模拟世界模型等等) 打开robot_ws目录,找到其中一个子目录nodes,打开源文件 rotate ,这是Hello World中机器人旋转的代码,可以更改参数获得想要的动作。
当我们修改代码后,需要对代码进行编译(build)和打包(bundle),可以选择 Run – Build – HelloWorld Robot,Run – Build – HelloWorld Simulation,对robot_ws的内容和simulation_ws的内容分别进行编译,再点击Bundle进行分别打包,当控制台提示工作结束,并且robot_ws、simulation_ws,分别多出了一个文件夹bundle,分别有output.tar 才算成功(这里指展示了robot_wst的bundle的output.tar,对应simulation_ws应该也有),若未出现,重新进行打包工作。
其中提供工作流 Workflow,可以把build、bundle任务创建成一个工作流,通过点击 Run – Workflow – HelloWorld-Build and Bundle All,来一步build、bundle全部。
当bundle任务结束,我们有了两个output.tar文件,也就是我们的机器人源码和模拟环境源码进行编译后再打包的文件,通过这两个输出文件,我们就能启动模拟作业了,点击 Run – Launch Simulation – HelloWorld,就会启动模拟作业,就是我们最开始通过实例HelloWorld文件启动模拟作业的状态。
那么到这里,提供的源码HelloWorld在开发环境下就真正跑起来了,对我们来说,真实可见的就是模拟作业的,通过其中打开gazebo、rviz等工具,我们获得机器人各种信息。经过这一遍整体流程,对机器人应用程序、模拟应用程序、模拟作业有了更进一步的认识。通过build、bundle,生成output.tar文件,把两个output.tar文件提供给simulation job,也就是我们的模拟作业,它就可以运行起来了。 那么问题来了,假如重新修改了代码要怎么运行,当然是重新build、bundle,然后点击 Simulation – Restart With New Bundles,其中会分别选择 output.tar文件,然后就会重启模拟作业啦。
使用感受
- bundle太慢,打包过程需要下载很多配置文件,然后一起打包,导致速度很慢,第一次差不多25分钟,修改代码后重新bundle速度会加快,但是总体还是很慢。
- launch simulation job也比比较慢,首先需要下载很多东西,这个环节的速度挺快能到30mb/s(假如bundle的时候下载速度能提速就好了),启动simulation job后,还要等待状态 变成 运行中,这个过程也需要很长时间。
- 仿真效果上,gazebo和rviz拖动带有延时,由于AWS服务器在境外导致,希望能有些加速来实现比较好的效果。
- 整体云端环境集成开发和仿真确实带来了很多便利,再进一步优化一定能带来更好的体验。