GithubHelp home page GithubHelp logo

localization_in_auto_driving's People

Contributors

little-potato-1990 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

localization_in_auto_driving's Issues

gps信号为nan

在data_pretreat_flow.cpp中的168行
我在断点设在这之后:current_gnss_data_.UpdateXYZ();
其中current_gnss_data_.local_E输出的数据为nan。
请问下这是什么原因。

以下是我一帧的gps信号
header:
seq: 9
stamp:
secs: 1599204405
nsecs: 861517906
frame_id: "gps"
status:
status: 0
service: 1
latitude: 24.6181951667
longitude: 118.036970833
altitude: 33.6
position_covariance: [11.559999999999999, 0.0, 0.0, 0.0, 11.559999999999999, 0.0, 0.0, 0.0, 184.95999999999998]
position_covariance_type: 1

前端里程计扩展失败

乾哥你好,在使用您的前端里程计扩展成lego_loam的过程中,我更改了launch中的点云和里程计话题,关闭了lego_loam中rviz的启动,但是运行的时候rviz不会显示点云,扩展不成功,请问扩展时候需要注意些什么

Tag14.0无法编译

[ 2%] Built target geometry_msgs_generate_messages_cpp
make[2]: *** No rule to make target '/usr/lib/libf77blas.so', needed by '/home/hurricanezj/catkin_ws/devel/lib/aloam_velodyne/alaserMapping'. Stop.
CMakeFiles/Makefile2:2164: recipe for target 'localization_in_auto_driving/A-LOAM-devel/CMakeFiles/alaserMapping.dir/all' failed
make[1]: *** [localization_in_auto_driving/A-LOAM-devel/CMakeFiles/alaserMapping.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 2%] Built target pcl_msgs_generate_messages_eus
[ 3%] Built target kittiHelper
[ 3%] Built target rosgraph_msgs_generate_messages_cpp
[ 3%] Built target pcl_msgs_generate_messages_lisp
[ 3%] Built target pcl_msgs_generate_messages_nodejs
make[2]: *** No rule to make target '/usr/lib/libf77blas.so', needed by '/home/hurricanezj/catkin_ws/devel/lib/aloam_velodyne/alaserOdometry'. Stop.
CMakeFiles/Makefile2:2238: recipe for target 'localization_in_auto_driving/A-LOAM-devel/CMakeFiles/alaserOdometry.dir/all' failed
make[1]: *** [localization_in_auto_driving/A-LOAM-devel/CMakeFiles/alaserOdometry.dir/all] Error 2
[ 3%] Built target ascanRegistration
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

catkin_make的报错信息如上,应该是A-LOAM部分的依赖问题,我用sudo apt-get install libblas-dev安装了libblas了,但还是报错。而其实我也不需要A-LOAM的前端,我只是想看看定位的效果。请问,有什么建议吗?

tap5.0 rosluanch错误

我尝试着一个一个Tag运行,看看每一次的优化。
在git clone 5.0版本,并catkin_make后,roslaunch front_end.launch后,报告process has died。我不太清楚是哪里的问题,因为我并没有对代码做任何的修改。完整的信息如下:

hurricanezj@ZhaoJie-Alienware-17-R4:~/catkin_ws$ roslaunch lidar_localization front_end.launch
... logging to /home/hurricanezj/.ros/log/99c924c4-88fd-11ea-91e7-9cb6d0effb2d/roslaunch-ZhaoJie-Alienware-17-R4-25122.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://ZhaoJie-Alienware-17-R4:34547/

SUMMARY

PARAMETERS

  • /rosdistro: kinetic

  • /rosversion: 1.12.14

    NODES
    /
    front_end_node (lidar_localization/front_end_node)
    rviz (rviz/rviz)

    ROS_MASTER_URI=http://localhost:11311

process[rviz-1]: started with pid [25139]
process[front_end_node-2]: started with pid [25140]
[front_end_node-2] process has died [pid 25140, exit code -11, cmd /home/hurricanezj/catkin_ws/devel/lib/lidar_localization/front_end_node __name:=front_end_node __log:=/home/hurricanezj/.ros/log/99c924c4-88fd-11ea-91e7-9cb6d0effb2d/front_end_node-2.log].
log file: /home/hurricanezj/.ros/log/99c924c4-88fd-11ea-91e7-9cb6d0effb2d/front_end_node-2*.log

希望您可以抽空帮我看看。运行环境为Ubuntu16.04,ros-kinetic ,前面的tag3.0与tag4.0均正常。

编译问题

编译出现错误:
front_end.cpp:(.text._ZN4YAML18TypedBadConversionIfED2Ev[_ZN4YAML18TypedBadConversionIfED5Ev]+0xf): undefined reference to `YAML::BadConversion::~BadConversion()'
请问你装的yaml-cpp是什么版本的?@Little-Potato-1990

编译出现问题

我在Ubuntu2004环境下使用catkin_make编译出现如下错误:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
G2O_CORE_LIBRARY
linked by target "matching_node" in directory /home/joy/WS/localization_in_auto_driving/src/lidar_localization
linked by target "back_end_node" in directory /home/joy/WS/localization_in_auto_driving/src/lidar_localization
linked by target "front_end_node" in directory /home/joy/WS/localization_in_auto_driving/src/lidar_localization
linked by target "data_pretreat_node" in directory /home/joy/WS/localization_in_auto_driving/src/lidar_localization
当然几乎所有发节点都包含这个错误,想请教一下这个是什么问题,

LoopClosing::DetectNearestKeyFrame 函数的最后部分不理解

    if (min_distance > detect_area_) {
        skip_num = std::max((int)(min_distance / 2.0), loop_step_);
        return false;
    } else {
        skip_num = loop_step_;
        return true;
    }

闭环修正那一篇提出:假如本次检测,当前帧和满足条件1 的历史帧中的最短距离是100米,而我们需要的是两米范围内的关键帧,那么我们认为在接下来的至少98米路程内,是不会有满足条件的历史帧的,那么这段距离内就没必要检测了。
为什么接下来的路程内不会有满足条件的历史帧? min_distance是距离值,赋给skip_num做跳过的帧数,物理意义不一致

缺少头文件

/home/***/localization_in_autodriving_ws/src/lidar_localization/src/apps/back_end_node.cpp:9:10: fatal error: lidar_localization/optimizeMap.h: 没有那个文件或目录 #include "lidar_localization/optimizeMap.h"

tag14下编译提示缺少头文件,我去检查了一下好像确实没有哎?请问是我哪里出问题了吗?

运动畸变的小问题

在models/scan_adjust/distortion_adjust.cpp中有下面的代码片段:

    float start_orientation = atan2(origin_cloud_ptr->points[0].y, origin_cloud_ptr->points[0].x);
    Eigen::AngleAxisf t_V(start_orientation, Eigen::Vector3f::UnitZ());
    Eigen::Matrix3f rotate_matrix = t_V.matrix();
    Eigen::Matrix4f transform_matrix = Eigen::Matrix4f::Identity();
    transform_matrix.block<3,3>(0,0) = rotate_matrix.inverse();
    pcl::transformPointCloud(*origin_cloud_ptr, *origin_cloud_ptr, transform_matrix);
    velocity_ = rotate_matrix * velocity_;
    angular_rate_ = rotate_matrix * angular_rate_;

这里对原始点云绕Z轴旋转start_orientation的角度不是很理解,而且角速度和线速度都有这样的操作。知乎上面也没有给出相应的解释,谢谢分享。

偶尔会出现Eigen对齐报错

front_end_node: /usr/local/include/eigen3/Eigen/src/Core/DenseStorage.h:128: Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 32>::plain_array() [with T = float; int Size = 16; int MatrixOrArrayOptions = 0]: Assertion `(internal::UIntPtr(eigen_unaligned_array_assert_workaround_gcc47(array)) & (31)) == 0 && "this assertion is explained here: " "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE !!! ****"' failed.
不定时出现,使用了上面eigen网页的办法能够解决,但运行时偶尔会出现,重新编译又不会出现,不知道有没有什么好的解决办法。

some doubts and bugs

一些疑惑和bug,如有错误,请您谅解。
1.void VelocityData::TransformCoordinate(Eigen::Matrix4f transform_matrix)
{
....

    Eigen::Vector3d r(matrix(0,3), matrix(1,3), matrix(2,3));
    Eigen::Vector3d delta_v;
    delta_v(0) = w(1) * r(2) - w(2) * r(1);
    delta_v(1) = w(2) * r(0) - w(0) * r(2);
    **delta_v(2) = w(1) * r(1) - w(1) * r(0);** //这里叉乘感觉 应该是w(0) * r(1) - w(1) * r(0)
    v = v + delta_v;

....
}

  1. data_pretreat_flow.cpp 中
bool DataPretreatFlow::TransformData() {
    gnss_pose_ = Eigen::Matrix4f::Identity();

    current_gnss_data_.UpdateXYZ();
    gnss_pose_(0,3) = current_gnss_data_.local_E;
    gnss_pose_(1,3) = current_gnss_data_.local_N;
    gnss_pose_(2,3) = current_gnss_data_.local_U;
    gnss_pose_.block<3,3>(0,0) = current_imu_data_.GetOrientationMatrix();
    gnss_pose_ *= lidar_to_imu_;

    **current_velocity_data_.TransformCoordinate(lidar_to_imu_);**//该变换感觉是反了,是否应该改为lidar_to_imu_.reverse().
    distortion_adjust_ptr_->SetMotionInfo(0.1, current_velocity_data_);
    distortion_adjust_ptr_->AdjustCloud(current_cloud_data_.cloud_ptr, current_cloud_data_.cloud_ptr);

    return true;
}


3.distortion_adjust.cpp

bool DistortionAdjust::AdjustCloud(...)
{
    float orientation_space = 2.0 * M_PI;
    float delete_space = 5.0 * M_PI / 180.0;
    float start_orientation = atan2(origin_cloud_ptr->points[0].y, origin_cloud_ptr->points[0].x);

    Eigen::AngleAxisf t_V(start_orientation, Eigen::Vector3f::UnitZ());
    Eigen::Matrix3f rotate_matrix = t_V.matrix();
    Eigen::Matrix4f transform_matrix = Eigen::Matrix4f::Identity();
    transform_matrix.block<3,3>(0,0) = rotate_matrix.inverse();
   pcl::transformPointCloud(*origin_cloud_ptr, *origin_cloud_ptr, transform_matrix);// 这边为什么要将 首个激光点 旋转到 雷达的X轴上去呢?
    velocity_ = rotate_matrix * velocity_;// 没能明白您这里的线速度和角速度为什么还需要坐标变换,您能解释下吗,麻烦了。
    angular_rate_ = rotate_matrix * angular_rate_;

    for (size_t point_index = 1; point_index < origin_cloud_ptr->points.size(); ++point_index) {
        float orientation = atan2(origin_cloud_ptr->points[point_index].y, origin_cloud_ptr->points[point_index].x);
        if (orientation < 0.0)
            orientation += 2.0 * M_PI;
        
        if (orientation < delete_space || 2.0 * M_PI - orientation < delete_space)
            continue;

        float real_time = fabs(orientation) / orientation_space * scan_period_ - scan_period_ / 2.0;

        Eigen::Vector3f origin_point(origin_cloud_ptr->points[point_index].x,
                                     origin_cloud_ptr->points[point_index].y,
                                     origin_cloud_ptr->points[point_index].z);

        Eigen::Matrix3f current_matrix = UpdateMatrix(real_time);
        Eigen::Vector3f rotated_point = current_matrix * origin_point;
        Eigen::Vector3f adjusted_point = rotated_point + velocity_ * real_time;
        CloudData::POINT point;
        point.x = adjusted_point(0);
        point.y = adjusted_point(1);
        point.z = adjusted_point(2);
        output_cloud_ptr->points.push_back(point);
    }

    pcl::transformPointCloud(*output_cloud_ptr, *output_cloud_ptr, transform_matrix.inverse());
    return true;
}

map export

Hi,
Is it possible to export the map showed in Rviz?
Thank you very much!

重定位匹配

我用保存下来的pcd地图去做ndt匹配重定位的时候,误差极大,看轨迹是输出错误的轨迹,这是正常的吗?

bag files

bag 数据可以从别的地方下载吗?baidu 网盘从北美无法访问

程序编译出错 multiple definition of `main'

您好,在编译(每一个tag)的时候会报错,报错如下:
[ 93%] Building CXX object lidar_localization/CMakeFiles/front_end_node.dir/src/sensor_data/gnss_data.cpp.o
[100%] Linking CXX executable /home/s/ros_ws/devel/lib/lidar_localization/front_end_node
CMakeFiles/front_end_node.dir/build/CMakeFiles/3.5.1/CompilerIdCXX/CMakeCXXCompilerId.cpp.o: In function main:
CMakeCXXCompilerId.cpp:(.text.startup+0x0): multiple definition of main'

CMakeFiles/front_end_node.dir/src/front_end_node.cpp.o:front_end_node.cpp:(.text.startup+0x0): first defined here

collect2: error: ld returned 1 exit status

lidar_localization/CMakeFiles/front_end_node.dir/build.make:974: recipe for target '/home/s/ros_ws/devel/lib/lidar_localization/front_end_node' failed

make[2]: *** [/home/s/ros_ws/devel/lib/lidar_localization/front_end_node] Error 1
CMakeFiles/Makefile2:492: recipe for target 'lidar_localization/CMakeFiles/front_end_node.dir/all' failed
make[1]: *** [lidar_localization/CMakeFiles/front_end_node.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j12 -l12" failed
请问这可能是什么原因?

When I roslaunch tag 12.0 mapping.launch, it shows that on my end and I am not sure is that my cpu problem

terminate called after throwing an instance of 'YAML::BadFile'
what(): bad file
terminate called after throwing an instance of 'YAML::BadFile'
what(): bad file
terminate called after throwing an instance of 'YAML::BadFile'
what(): bad file
[loop_closing_node-6] process has died [pid 9155, exit code -6, cmd /home/xc/lab_ws/devel/lib/lidar_localization/loop_closing_node __name:=loop_closing_node __log:=/home/xc/.ros/log/796c8116-6417-11ec-8d7c-dda1d1a189dd/loop_closing_node-6.log].
log file: /home/xc/.ros/log/796c8116-6417-11ec-8d7c-dda1d1a189dd/loop_closing_node-6*.log
[viewer_node-7] process has died [pid 9156, exit code -6, cmd /home/xc/lab_ws/devel/lib/lidar_localization/viewer_node __name:=viewer_node __log:=/home/xc/.ros/log/796c8116-6417-11ec-8d7c-dda1d1a189dd/viewer_node-7.log].
log file: /home/xc/.ros/log/796c8116-6417-11ec-8d7c-dda1d1a189dd/viewer_node-7*.log
[back_end_node-5] process has died [pid 9154, exit code -6, cmd /home/xc/lab_ws/devel/lib/lidar_localization/back_end_node __name:=back_end_node __log:=/home/xc/.ros/log/796c8116-6417-11ec-8d7c-dda1d1a189dd/back_end_node-5.log].
log file: /home/xc/.ros/log/796c8116-6417-11ec-8d7c-dda1d1a189dd/back_end_node-5*.log

程序运行报错

distortion_adjust_ptr_->AdjustCloud(current_cloud_data_.cloud_ptr, current_cloud_data_.cloud_ptr);

bool DistortionAdjust::AdjustCloud(CloudData::CLOUD_PTR& input_cloud_ptr, CloudData::CLOUD_PTR& output_cloud_ptr) {
CloudData::CLOUD_PTR origin_cloud_ptr(new CloudData::CLOUD(*input_cloud_ptr));
output_cloud_ptr.reset(new CloudData::CLOUD());
...
}
这里的输入和输出不能是同一个指针,在里边的函数首先reset了。

catkin_make lidar_localization error

ubuntu16.04,对lidar_localization执行catkin_make
G2O 出现软链接问题
/usr/bin/ld: cannot find -lG2O_TYPES_DATA-NOTFOUND
/usr/bin/ld: cannot find -lG2O_CORE_LIBRARY-NOTFOUND
/usr/bin/ld: cannot find -lG2O_STUFF_LIBRARY-NOTFOUND
/usr/bin/ld: cannot find -lG2O_SOLVER_PCG-NOTFOUND
/usr/bin/ld: cannot find -lG2O_SOLVER_CSPARSE-NOTFOUND
/usr/bin/ld: cannot find -lG2O_SOLVER_CHOLMOD-NOTFOUND
/usr/bin/ld: cannot find -lG2O_TYPES_SLAM3D-NOTFOUND
/usr/bin/ld: cannot find -lG2O_TYPES_SLAM3D_ADDONS-NOTFOUND

是不是我的环境有问题?
修改了部分软链接,编译安装了setup_file里的g2o,问题还是存在
有什么出坑的经验吗?

一些问题

你好,我在运行roslaunch lidar_localization mapping出现eigen的错误,如下:
back_end_node: /home/zhangshun/catkin_ws/src/localization_in_auto_driving/lidar_localization/third_party/eigen3/Eigen/src/Core/DenseStorage.h:128: Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 32>::plain_array() [with T = float; int Size = 16; int MatrixOrArrayOptions = 0]: Assertion `(reinterpret_cast<size_t>(eigen_unaligned_array_assert_workaround_gcc47(array)) & (31)) == 0 && "this assertion is explained here: " "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE !!! ****"' failed.

请问这个怎么解决呢?谢谢

velocity_data.cpp第66行

哥,这个速度顺序写错了吧,而且就算是w X r, 这个66行里也写错了吧
64 delta_v(0) = w(1) * r(2) - w(2) * r(1);
65 delta_v(1) = w(2) * r(0) - w(0) * r(2);
66 delta_v(2) = w(1) * r(1) - w(1) * r(0);
这个速度叉乘,66行应该是 delta_v(2) = w(0) * r(1) - w(1) * r(0); 吧

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.