IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Webots:VSCode作为控制器IDE并调用Eigen库 -> 正文阅读

[开发工具]Webots:VSCode作为控制器IDE并调用Eigen库

Webots:VSCode作为控制器IDE并调用Eigen库

0.目的与最终效果

在设计机器人的控制器时无法避免的会用到很多的矩阵相关的运算,为了提高效率,采用开源矩阵运算库是比较合适的。
本文选用Eigen库作为控制器矩阵和矢量运算,数值分析及其相关的算法的运算库。
使用VSCode作为Webots控制器IDE的配置过程参看上一篇博客。
本文介绍如何在上述VSCode作为Webots控制器IDE的基础上添加Eigen库作为控制器的矩阵运算库,配置完成后的效果如下图所示。
在这里插入图片描述
在这里插入图片描述

1.下载Eigen库

直接去Eigen官方网站下载最新的稳定版本
在这里插入图片描述
由于是在Windows上使用所以直接下载ZIP格式,下载完成后解压到即可。

2.在Webots控制器的Makefile中添加链接库

打开Webots生成的C++控制器的Makefile文件,在其中添加如下内容,D:/eigen-3.4.0/Eigen为解压后Eigen的目录

### ---- Linked libraries ----
### if your program needs additional libraries:
INCLUDE = -I D:/eigen-3.4.0/Eigen
### LIBRARIES = -L D:/eigen-3.4.0/Eigen/src/Core -lMatrix
###
### ---- Linking options ----
### if special linking flags are needed:
### LFLAGS = -s
###
### ---- Webots included libraries ----
### if you want to use the Webots C API in your C++ controller program:
### USE_C_API = true
###

3.在VSCode的c_cpp_properties.json文件中链接库

经过在Makefile文件中添加Eigen库,即可通过编译正常使用Eigen库,但此时在VSCode中对代码进行修改时并不具备自动补全功能,因此需要在c_cpp_properties.json文件中配置Eigen库路径

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "D:\\Program Files\\Webots\\include\\controller\\cpp",
                "D:\\eigen-3.4.0\\Eigen"  //Eigen库目录
               // "D:\\eigen-3.4.0\\Eigen\\src\\Core"
            ],
            "defines": [
                "${default}"
            ],
            "macFrameworkPath": [
                "${default}"
            ],
            "forcedInclude": [
                "${default}"
            ],
            "compileCommands": "${default}",
            "browse": {
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": "${default}",
                "path": [
                    "${default}",
                    "D:\\Program Files\\Webots\\lib\\controller",
                    "D:\\eigen-3.4.0\\Eigen"  //Eigen库目录
                    //"D:\\eigen-3.4.0\\Eigen\\src\\Core"
                ]
            },
            "intelliSenseMode": "gcc-x64",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "compilerPath": "C:\\mingw64\\bin\\g++.exe"
        }
    ],
    "version": 4
}

4.头文件中包含并声明namespace

#ifndef __MAIN_H
#define __MAIN_H

#include "driver.h"
#include <Eigen>
using namespace Eigen;
#endif

5.调用

#include "main.h"
int main(int argc, char **argv) 
{
  Matrix<float,2,2> matrix_A;
  Matrix<float,2,2> matrix_B;
  Matrix<float,2,2> matrix_C;
  matrix_A << 1, 2,
              3, 4;
  matrix_B(0, 0) = 0.5;
  matrix_B(0, 1) = 0;
  matrix_B(1, 0) = 0;
  matrix_B(1, 1) = 0.5;
  matrix_C = matrix_A * matrix_B;
  cout << matrix_C;
  cout << endl;
  cout << "Hello" << endl;
  Supervisor *robot = new Supervisor();
  Driver *MyDriver = new Driver(robot,500,1000,0.8,6,0.2);
  while (robot->step(MyDriver->timeStep) != -1)
  {
  };
  delete robot;
  pthread_exit(NULL);
  return 0;
}

经过上述配置后即可调用Eigen库解决矩阵运算问题,如上述测试代码输出结果为

0.5   1
1.5   2
Hello
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-16 11:25:52  更:2022-05-16 11:25:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 4:36:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码