当前位置: 首页 > news >正文

上海网站建设联系青岛市城市建设投标网站

上海网站建设联系,青岛市城市建设投标网站,网站不备案备案,wordpress后台增加管理页Webots支持C、C、Java、Python、Matlab这五种语言开发控制器#xff0c;没有直接支持C##xff0c;但有个同事已经用C#写了大量的机器人控制代码#xff0c;想在不把C#代码改写成C的情况下#xff0c;直接用webots仿真#xff0c;那就得想想办法。(不过#xff0c;让Chat…        Webots支持C、C、Java、Python、Matlab这五种语言开发控制器没有直接支持C#但有个同事已经用C#写了大量的机器人控制代码想在不把C#代码改写成C的情况下直接用webots仿真那就得想想办法。(不过让ChatGPT帮忙把一种语言的代码转成另外一种语言的代码还是挺方便的准确率很高。) 在Webots的安装路径下找到lib\controller文件夹里面有Controller.dll和Controller.lib文件对于C#我们只需要Controller.dll文件(C和C的开发就需要Controller.lib文件)把这个dll文件复制到C#程序编译输出exe的文件夹里通常是bin\x64\Debug\net8.0(注意是跟输出的exe文件放在同一文件夹里而不是跟C#的源代码放在同一文件夹里。既不需要也不能在VS解决方案中添加对Controller.dll的引用尝试添加它会报错。Controller.dll是64位的所以C#程序也要编译成64位的。)         Controller.dll实现了(或者说导出了)Webots\include\controller\c\webots文件夹中所有的头文件中声明的全部函数(共932个)比如最常用wb_robot_init(), wb_robot_step(),wb_motor_set_position(), wb_motor_set_velocity(), wb_motor_get_target_position()肯定都有的。而cpp的函数其实都是在调用c的函数看看\Webots\src\controller\cpp里面的cpp文件就明白了。如果你装了VS 2022可以打开开始菜单中Visual Studio 2022文件夹里的随便点开一个 xxx Command Prompt for VS 2022, 输入 dumpbin /exports E:\Program Files\Webots\lib\controller\Controller.dll 就能看到所有的导出函数了。 为了能使用Controller.dll在C#的cs文件中 using System.Runtime.InteropServices; 再去robot.h, motor.h等头文件中找你需要的函数的定义然后在一个C#的class里面加入大量类似下面的语句 [DllImport(Controller.dll)] public static extern void wb_robot_init(); 看.h文件中的函数定义一定会遇到WbDeviceTag可以在Webots\include\controller\c\webots\types.h中找到对WbDeviceTag的定义 typedef unsigned short WbDeviceTag; 对应到C#中就是ushort类型。遇到const char *就换成string. 把需要用到的函数都经过上面的声明后就能和在C语言中一样使用这些函数了。示例C#代码如下 using System.Runtime.InteropServices;public class Program {[DllImport(Controller.dll)]public static extern void wb_robot_init();[DllImport(Controller.dll)]public static extern void wb_robot_cleanup();[DllImport(Controller.dll)]public static extern void wb_robot_step(int duration);[DllImport(Controller.dll)]public static extern void wb_motor_set_position(ushort tag, double position);[DllImport(Controller.dll)]public static extern void wb_motor_set_velocity(ushort tag, double velocity);[DllImport(Controller.dll)]public static extern void wb_motor_get_target_position(ushort tag);[DllImport(Controller.dll)]public static extern ushort wb_robot_get_device(string name);public static void GetAllMotor(ref ushort[] motor){ motor[10] wb_robot_get_device(TA_joint_01);motor[9] wb_robot_get_device(TA_joint_02);motor[8] wb_robot_get_device(TA_joint_03);motor[7] wb_robot_get_device(TA_joint_04);motor[6] wb_robot_get_device(TA_joint_05);}public static void Main(){ wb_robot_init();ushort[] motor new ushort[11];GetAllMotor(ref motor);wb_motor_set_position(motor[10], Math.PI/2); wb_motor_set_position(motor[8], 3); // 单位是弧度 wb_robot_step(500);wb_robot_cleanup();Console.ReadKey();} } 启动C#程序后会看到如下报错暂未发现有什么不良影响还是能正常操作webots中的机器人。 Error: 找不到指定的模块。  (dynamic library) Error: failed to load E:/Program Files/Webots/resources/projects/plugins/robot_windows/generic/generic.dll library. generic.dll的路径是正确的然而即使把generic.dll跟Controller.dll放在一起也无法解决这个报错。
http://www.pierceye.com/news/36639/

相关文章:

  • 三水网站设计国外可以做会员网站的网站
  • 网站开发预付款账务处理站长网站大全
  • 汕头网站设计制作公司图书馆网站建设目标
  • 我想自学建网站安徽网络优化方案
  • 网站做收录网站推广方式主要通过
  • 审计局网站建设管理网站发外链的好处
  • 和网站用户体验相关的文章小女孩做网站
  • 做网站镜像装修平台哪个好
  • 网站搜索引擎友好性分析seo怎么优化关键词排名
  • iis网站连接数四平网站建设公司
  • 宁波网站建设风格网站备案初审过了
  • 怎样制作网站平台俄文手机网站制作
  • 网站建设那里好深圳企业网站公司
  • 通信网站建设wordpress 视频 播放器
  • 做网站总结体会c 怎么做网站
  • 建设银行电商网站网站建设管理权限
  • 铜川矿业公司网站android应用程序开发教程
  • 没有网站可以做落地页海口网站建设哪个好薇
  • 福建建设注册中心网站清远做网站seo
  • 网站建设捌金手指花总十九新浪短网址链接生成器
  • 网站速度怎么提升qq空间同步到wordpress
  • asp网站免费完整源码word可以制作网页吗
  • 网站建设公司大型凯里公司网站建设
  • 住房和城乡建设部网站 城市绿地分类创建免费网站需要的工具
  • 推荐 南昌网站建设网站开发要学的代码
  • 企业的网站建设策划书万网域名解析
  • wamp配置多个网站html编辑器安卓版下载
  • 制作网站找哪家好山西省煤矿建设协会网站
  • 企业网站 优秀医学教育网站建设方案
  • 开网上授课的网站应该怎么做物业管理 网站开发