ROS trajectories are saved in tum format and drawn with evo trajectories

Install evo

evo共有两种安装方式

快捷安装 ,直接安装最新的稳定发行版;

pip install evo --upgrade --no-binary evo

源码安装 ,下载源码进行安装;
首先在任意文件夹下下载evo,也可以在home中直接下载

git clone https://github.com/MichaelGrupp/evo.git

然后进入evo文件夹

pip install --editable . --upgrade --no-binary evo

After the installation is complete, when running the evo command, there may be a problem that the command cannot be found. You only need to restart the computer.

Save the trajectory in tum format

tum dataset format

Insert image description here

Read saved data demo

#include<iostream>
#include<fstream>
#include<eigen3/Eigen/Eigen>
#include<ros/ros.h>
#include<tf/transform_listener.h>
 
using namespace std;
 
ofstream foutC;
 
 
int main(int argc, char **argv){
    
    
    //string file_name;
    //ros::param::get("file_name",file_name);
    ros::init(argc, argv, "save_traj_as_tum");
    ros::NodeHandle nh;
    
    foutC.open("./test.txt");
    tf::TransformListener listener;
    ros::Rate rate(20);
    while(ros::ok()){
    
    
        tf::StampedTransform transform;
        try
        {
    
    
            listener.waitForTransform("/odom", "/base_link", ros::Time(0), ros::Duration(1));
            listener.lookupTransform("/odom", "/base_link", ros::Time(0), transform);
            foutC << transform.stamp_ << " ";
            float x = transform.getOrigin().getX();
            float y = transform.getOrigin().getY();
            float z = transform.getOrigin().getZ();
            float qx = transform.getRotation().getX();
            float qy = transform.getRotation().getY();
            float qz = transform.getRotation().getZ();
            float qw = transform.getRotation().getW();
            ROS_INFO("%f %f %f %f %f %f %f",x,y,z,qx,qy,qz,qw);
            foutC << x <<" " << y << " " << z << " " << qx << " " << qy << " " << qz << " " << qw << std::endl;
        }
        catch(const std::exception& e)
        {
    
    
            std::cerr << e.what() << '\n';
        }
        rate.sleep();
    }
    foutC.close();
    return 0;
}

After saving, run the following command:

evo_traj tum test.txt -p

result

Insert image description here

Original link: https://blog.csdn.net/just_do_it567/article/details/114672305

Guess you like

Origin blog.csdn.net/cherish1211/article/details/131840084