带有 TooN 和 ROS 的线性代数

Linear algebra with TooN and ROS

本文关键字:线性代数 ROS TooN 带有      更新时间:2023-10-16

我正在尝试创建一些执行线性代数命令的示例节点。我想尝试TooN库(http://www.edwardrosten.com/cvd/toon.html)。我试图遵循tum_ardrone在这方面所做的一揽子计划。

1)我下载了包含TooN库文件的文件夹,并将其移动到目录/thirdparty/TooN/include/

2)我将以下内容添加到我的CMakeLists.txt文件中:

# set required libs and headers
include_directories( ${PROJECT_SOURCE_DIR}/thirdparty/TooN/include )  

基于位于/tum_ardrone/src的 HelperFunctions.h 文件,我创建了一个简单的程序来执行基本的矩阵运算。我稍后将使用这些函数,由于我不熟悉任何像这样的库,我需要从基础开始。当我执行rosmake时,出现以下错误:

 /home/pedro/fuerte_workspace/sandbox/controlador_ardrone/src/ejemploalgebralineal.cpp: In member function ‘void LinearAlgebra::InverseMatrix()’:
  /home/pedro/fuerte_workspace/sandbox/controlador_ardrone/src/ejemploalgebralineal.cpp:31:31: error: ‘struct TooN::Matrix<3>’ has no member named ‘inverse’

这是我尝试编译的代码:

#include <ros/ros.h>
#include <std_msgs/Empty.h>
#include <geometry_msgs/Twist.h>
#include <math.h>
#include <TooN/TooN.h>
#include <TooN/so3.h>
  using namespace std;
  using namespace TooN;
  struct LinearAlgebra
  {
    ros::NodeHandle n;
    void InverseMatrix(){
        TooN::Matrix<3,3> mat;
        mat = Data(1,2,3,4,5,6,7,8,9);
        TooN::SO3<> res = mat.inverse();
        std::cout << "m3_4n" << mat << "nm3_5n"<<res  << std::endl;
    }
    void Commands(){
        InverseMatrix();
    }
  };
////////////
int main(int argc, char **argv)
{
  ros::init(argc,argv,"Linear_Algebra_ROS");
  LinearAlgebra linearalgebra;
  ros::Duration wait_time = ros::Duration(3,0);
  while(linearalgebra.n.ok()) {
      wait_time.sleep();
      linearalgebra.Commands();
      ros::spinOnce();
  }
  return 0;

是否有人有使用此库和/或我可以使用的其他库的经验?任何帮助,不胜感激。我在 Ubuntu 12.04 上使用 ROS Fuerte。

我建议 http://eigen.tuxfamily.org 处理变换和线性代数。它也被 ROS 相关项目(如 PCL)使用。

问候