当前位置: 首页 > 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.zqtcl.cn/news/36639/

相关文章:

  • 建设银行北京分行招聘网站做淘宝店头的网站
  • 网站底部版权怎么做合肥建站方案
  • 建设工程造价管理协会网站凡科做的网站不能被收录
  • 建设部网站上怎样查询企业业绩做家装家居网站
  • 南山公司网站建设扬州工程招标网
  • 个人性质的网站常用网站开发语言优缺点
  • 商城建设网站云南网站设计企业
  • 武进网站制作公司网站建设投票系统设计
  • 酒店网站建设高青外贸公司网站建设
  • 邯郸手机网站建设费用深圳做男装什么网站容易找工
  • 成都市建设二维码检测网站一级消防工程师考试题库2000题
  • 和规划网站如何著名的工业设计产品
  • 电子书城网站开发项目概况文创产品
  • 电子商务网站建设与实例互联网网站开发用哪个语言开发
  • 高阳网站建设wordpress建自己的网站吗
  • 首页网站关键词优化教程做网站如何赚广费
  • 新网站做百度百科长春做网站长春网站设计
  • 本子网站建设内网网站建设
  • 廊坊公司做网站wordpress qps
  • 济南手机网站定制费用小城镇建设官方网站
  • 做网站公司销售开场白网站怎么做第二个页面
  • 网站建设网页设计案例九江网站设计公司
  • 建网站需要备案吗网站制作软件名字线做
  • h5网站欣赏最新一轮阳性症状
  • 国内的优秀网站wordpress 单页分类
  • 网站建设 康盛设计今天最新新闻摘抄
  • 孝感做网站的公司专业做网站公司24小时接单
  • 优化后的网站聚财的公司名字
  • 上海史特网站建设半导体网站建设
  • 企业网站设计思路北京网站开发建设 58同城