首页 > 其他分享 >5、开发环境-转移到自己的机器人上

5、开发环境-转移到自己的机器人上

时间:2023-07-27 12:33:23浏览次数:43  
标签:真实 控制器 机器人 robot 远程 开发 Webots 转移

一、转移到自己的机器人上

在移动机器人模拟中,将结果传递到真实的移动机器人上通常是有用的。Webots在设计时就考虑到了这种传输能力。仿真尽可能逼真,编程接口可以移植或连接到现有的真实机器人。Webots已经包括许多现有机器人的传输系统,包括e-puckTM、DARwIn OPTM、KheperaTM和HemisonTM。本节介绍如何开发自己的传输系统到自己的移动机器人。
由于模拟只是真实机器人物理的近似,因此在为真实机器人开发传递机构时,总是需要进行一些调整。这种调整将影响模拟模型,使其更好地匹配真实机器人的行为。

远程控制

概览

通常,将控制程序转移到真实机器人上的最简单方法是开发远程控制系统。在这种情况下,控制程序在计算机上运行,但它不是向模拟机器人发送命令和读取传感器数据,而是向真实机器人发送命令并读取传感器数据。通过将Webots API函数的自己实现作为一个小库编写,可以以非常简单的方式开发这样的远程控制系统。例如,您可能需要实现wb_motor_set_evelocity函数,以将车轮速度作为参数向实际机器人发送特定命令。该命令可以通过PC的串行端口或您拥有的任何其他PC机器人接口发送到真实的机器人。你可能需要进行一些单位转换,因为你的机器人可能使用的测量单位与Webots中使用的不同。这同样适用于从真实机器人读取传感器值。

开发远程控制插件

Webots已经提供了一些实现远程控制库的工具,特别是可以将其开发为控制器插件。一旦在Robot节点的相应字段中设置,该远程控制插件将在运行控制器时自动执行。本节介绍了实现细节。https://www.cyberbotics.com/doc/guide/controller-plugin?tab-os=linux&tab-language=c#remote-control-plugin

具体的函数

wb_robot_init函数必须是第一个被调用的函数。它执行控制器库的初始化。
wb_robot_step函数应该被重复调用(通常在无限循环中)。它请求模拟器执行ms毫秒的模拟步骤;即将模拟提前该时间量。
wb_robot_cleanup函数应该在程序结束时调用,以便使控制器保持干净。

运行真实的机器人

一旦与您自己的远程控制插件链接,您就可以通过在Webots中运行模拟来控制您的真实机器人。还可以添加一个机器人窗口(请参阅本节),以图形方式显示特定的传感器值、电机命令或停止按钮。
如本节所述,这样的远程控制系统被设计为在C/C++中实现;然而,它也可以通过创建包装器在其他编程语言中实现。

交叉编译

概览

开发一个交叉编译系统将允许您为自己的真实机器人的嵌入式处理器重新编译Webots控制器。因此,您为Webots模拟编写的源代码将在真实的机器人上执行,不需要像远程控制系统那样与机器人建立永久的PC连接。只有当机器人上的处理器可以分别用C、C++、Java或Python编程时,这才有可能实现。对于一个只能用汇编程序或其他特定语言编程的处理器来说,这是不可能的。Webots包含了e-puck和Hemisson机器人的交叉编译系统的源代码。示例位于“WEBOTS_HOME/projects/robots”目录中。

开发自定义库

与远程控制系统不同,交叉编译系统需要使用您自己的机器人特有的交叉编译工具重新编译Webots控制器的源代码。您还需要重写Webot-include文件,使其特定于您自己的机器人。在简单的情况下,您只需重写Webot-include文件即可,如“hemisson”示例中所示。在更复杂的情况下,您还需要编写一些C源文件,作为Webots“Controller”库的替代品,但要在真正的robot上运行。然后,您应该使用robot交叉编译系统重新编译Webots控制器,并将其与robot库链接。生成的文件应该上传到真正的机器人上进行本地执行

例子

Webots支持几种现有商业机器人的交叉编译。对于e-puckTM机器人,该系统完全集成在Webots中,无需修改代码。对于HemissonTM机器人,此系统需要几个包含文件来替换Webots API包含文件。对于KheperaTM机器人,除了特定的包含文件外,还使用了特定的C库。

解释语言

在某些情况下,实现解释语言系统可能会更好。如果你的真实机器人已经使用了解释语言,比如Basic或基于图形的控制语言,这很有用。在这种情况下,传输非常容易,因为你可以直接将程序的代码传输给真正的机器人。最困难的部分可能是用C或Java开发一个语言解释器,供Webots控制器用于控制模拟机器人。这种解释语言系统是为HemisonTM机器人与BotStudioTM系统开发的。

 

标签:真实,控制器,机器人,robot,远程,开发,Webots,转移
From: https://www.cnblogs.com/gary-guo/p/17584647.html

相关文章

  • 5、开发环境-使用IDE
    一、使用IDE使用集成开发环境(IDE)很方便,因为它通常具有高级源代码编辑工具、内置调试器等功能。幸运的是,您可以使用自己喜欢的IDE来开发Webots控制器。Webots可以与任何IDE一起创建、构建和调试机器人控制器。这只是正确设置IDE以使用Webots控制器的构建规则的问题。为每个操作系......
  • 5、开发环境-调试C/C++控制器
    控制器处理在Webots环境中,Webots应用程序和每个机器人C/C++控制器在不同的操作系统进程中执行。例如,当执行“soccer.wbt”世界时,内存中总共有八个进程;一个用于Webots,六个用于六个玩家机器人,一个用于监督机器人。若要使用MicrosoftVisualStudio调试C/C++控制器,请参阅此处。当控......
  • 浅谈Excel开发:十 Excel 开发中与线程相关的若干问题
    采用VSTO或者SharedAdd-in等技术开发Excel插件,其实是在与Excel提供的API在打交道,Excel本身的组件大多数都是COM组件,也就是说通过ExcelPIA来与COM进行交互。这其中会存在一些问题,这些问题如果处理不好,通常会导致在运行的时候会抛出难以调试的COM异常,从而导致我们开发出的Excel插......
  • 浅谈Excel开发:三 Excel 对象模型
    前一篇文章介绍了Excel中的菜单系统,在创建完菜单和工具栏之后,就要着手进行功能的开发了。不论您采用何种方式来开发Excel应用程序,了解Excel对象模型尤其重要,这些对象是您与Excel进行交互的基石。据不完全统计,Excel的对象模型中有270多个对象及超过5000多个属性和方法。通过这些对......
  • 浅谈Excel开发:六 Excel 异步自定义函数
    上文介绍了Excel中的自定义函数(UDF),它极大地扩展了Excel插件的功能,使得我们可以将业务逻辑以Excel函数的形式表示,并可以根据这些细粒度的自定义函数,构建各种复杂的分析报表。普通的UDF自定义函数的基本执行逻辑是,Excel接受用户输入的函数表达式,然后通过UDF函数的处理逻辑进行处......
  • 浅谈Excel开发:七 Excel 自定义任务窗体
    前面花了三篇文章讲解了Excel中的UDF函数,RTD函数和异步UDF函数,这些都是Excel开发中的重中之重。本文现在开始接着第二篇文章的菜单系统开始讲解Excel中可供开发的界面元素,本文要讲解的是Excel中的自定义任务面板(CustomeTaskPanel,CTP)。自定义任务面板在Office2003中就引入了......
  • 浅谈Excel开发:八 Excel 项目的安装部署
    前面几篇文章讲解了Excel开发的几个比较主要的也是比较重要的方面,比如菜单系统,Excel对象模型,自定义函数,RTD函数,异步自定义函数,用户自定义任务面板等,在实际开发中我们还会遇到各种“千奇百怪”的问题,以及开发中的一些注意事项和技巧等,后面有空我会写文介绍。当我们的Excel外接应用......
  • 在windows平台使用Visual Studio 2017配置opencv开发环境
    opencv介绍OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方......
  • Xcode12 开发12.5.7版本IOS的问题解决
    1.xcode12默认是创建的工程是14.2,所以需要修改一下工程版本。点击项目最上面的蓝色文件就可以打开下面的界面了。2.安装app之后,界面黑屏。解决方法如下:在AppDelegate.h中:#import<UIKit/UIKit.h>@interfaceAppDelegate:UIResponder<UIApplicationDelegate>//增......
  • Docker学习路线12:开发者体验
    到目前为止,我们只讨论了使用Docker来部署应用程序。然而,Docker也是一个极好的用于开发应用程序的工具。可以采用一些不同的建议来改善开发体验。在应用程序中使用docker-compose以方便开发。使用绑定挂载将本地代码挂载到容器文件系统中,以避免每次更改都需要重新构建容器映像。......