SLAM从入门到精通(基于传感器的闭环控制仿真)

2023-12-13 11:50

本文主要是介绍SLAM从入门到精通(基于传感器的闭环控制仿真),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        前面我们对底盘做了控制,对传感器数据也进行了读取,但是目前为止还没有做过一个完整的ros仿真程序。在这仿真中,有必要既涉及传感器,也涉及底盘控制。所以,这里做一个简单的robot绕障系统。它的基本原理很简单,就是如果没有发现障碍物,那么小车就继续向前走。一旦发现障碍物,小车开始旋转。等到旋转一定的时间之后,继续向前行走。整个处理流程虽然比较简单,但是也符合基本的嵌入式开发思路。

        把它和slam、navigation联想在一起,何尝不是这样。我们通过传感器数据,可以计算出robot的位姿。这样我们接收到任务之后,就可以让robot从A点走到B点。至于在B点做什么动作,这个完全由具体的业务场景来决定。

1、准备测试代码lidar_behavior.cpp

#include <ros/ros.h>
#include <std_msgs/String.h>
#include <sensor_msgs/LaserScan.h>
#include <geometry_msgs/Twist.h>ros::Publisher vel_pub;
static int nCount = 0;void lidarCallback(const sensor_msgs::LaserScan::ConstPtr& scan)
{int nNum = scan->ranges.size();int nMid = nNum/2;float fMidDist = scan->ranges[nMid];ROS_INFO("Point[%d] = %f", nMid, fMidDist);if(nCount > 0){nCount --;return;}geometry_msgs::Twist vel_cmd;if(fMidDist > 1.5f){vel_cmd.linear.x = 0.05;}else{vel_cmd.angular.z = 0.3;nCount = 50;}vel_pub.publish(vel_cmd);
}int main(int argc, char* argv[])
{ros::init(argc, argv, "lidar_behavior");ROS_INFO("lidar_behavior start!");ros::NodeHandle nh;ros::Subscriber lidar_sub = nh.subscribe("/scan", 10, & lidarCallback);vel_pub = nh.advertise<geometry_msgs::Twist>("/cmd_vel", 10);ros::spin();
}

2、更新CMakeLists.txt

add_executable(lidar_behavior src/lidar_behavior.cpp)
target_link_libraries(lidar_behavior ${catkin_LIBRARIES})
add_dependencies(lidar_behavior beginner_tutorials_generate_messages_cpp)

3、编译方法

        编译也不复杂,主要就是在work space顶层输入catkin_make即可。

4、准备测试

        测试的话有两个基本条件。第一个基本条件就是构建虚拟场景,这个借助于之前的wpb_simple.launch构建的场景即可。需要启动的话,直接输入roslaunch wpr_simulation wpb_simple.launch。第二个条件,就是启动lidar_behavior。当然启动之后需要source ./devel/setup.sh一下,接着输入rosrun beginner_tutorials lidar_behavior即可。

        整个过程,我们需要先观察一下。是不是机器人一开始的时候是向书柜走去,等距离达到1.5m的时候,机器人开始旋转。等转到一定程度的时候,机器人继续向前行走。如果是这种情况,那说明我们编写的代码是正确的,反之就要回去检查一下了。

        另外还有一种办法,就是检查lidar_behavior的日志。按道理来说,lidar的检测距离应该是从远到近,再到远处,最后变成无穷大才对。因为这个时候机器人的前面,已经没有阻挡物了。

feixiaoxing@feixiaoxing-VirtualBox:~/Desktop/catkin_ws$ rosrun beginner_tutorials lidar_behavior
[ INFO] [1696816726.903113260]: lidar_behavior start!
[ INFO] [1696816727.182993704, 83.761000000]: Point[180] = 2.573640
[ INFO] [1696816727.280754611, 83.861000000]: Point[180] = 2.585071
[ INFO] [1696816727.379188366, 83.961000000]: Point[180] = 2.576552
[ INFO] [1696816727.477383638, 84.061000000]: Point[180] = 2.594407
[ INFO] [1696816727.579859218, 84.161000000]: Point[180] = 2.585764
[ INFO] [1696816727.682750403, 84.261000000]: Point[180] = 2.578020
[ INFO] [1696816727.787418472, 84.361000000]: Point[180] = 2.582530
[ INFO] [1696816727.886031806, 84.461000000]: Point[180] = 2.562255
[ INFO] [1696816727.989130467, 84.561000000]: Point[180] = 2.569616
[ INFO] [1696816728.090815269, 84.661000000]: Point[180] = 2.553229
[ INFO] [1696816728.207984911, 84.761000000]: Point[180] = 2.542479
[ INFO] [1696816728.306242736, 84.861000000]: Point[180] = 2.536914
[ INFO] [1696816728.404302843, 84.961000000]: Point[180] = 2.550110
[ INFO] [1696816728.502698532, 85.061000000]: Point[180] = 2.519513
[ INFO] [1696816728.600159545, 85.161000000]: Point[180] = 2.537406
[ INFO] [1696816728.704489881, 85.261000000]: Point[180] = 2.513440
[ INFO] [1696816728.809801959, 85.361000000]: Point[180] = 2.515844
[ INFO] [1696816728.917382676, 85.461000000]: Point[180] = 2.520285
[ INFO] [1696816729.011624046, 85.561000000]: Point[180] = 2.511839
[ INFO] [1696816729.111634677, 85.661000000]: Point[180] = 2.520977
[ INFO] [1696816729.209602803, 85.761000000]: Point[180] = 2.499562
[ INFO] [1696816729.312457604, 85.861000000]: Point[180] = 2.483938
[ INFO] [1696816729.411519560, 85.961000000]: Point[180] = 2.513076
[ INFO] [1696816729.524079182, 86.061000000]: Point[180] = 2.482399
[ INFO] [1696816729.629205151, 86.161000000]: Point[180] = 2.478612
[ INFO] [1696816729.734565361, 86.261000000]: Point[180] = 2.465503
[ INFO] [1696816729.910873683, 86.361000000]: Point[180] = 2.480873
[ INFO] [1696816730.067548204, 86.462000000]: Point[180] = 2.457230
[ INFO] [1696816730.200090031, 86.561000000]: Point[180] = 2.464769
[ INFO] [1696816730.346317191, 86.661000000]: Point[180] = 2.432058
[ INFO] [1696816730.504793616, 86.761000000]: Point[180] = 2.467290
[ INFO] [1696816730.672986914, 86.861000000]: Point[180] = 2.451017
[ INFO] [1696816730.835341055, 86.962000000]: Point[180] = 2.442416
[ INFO] [1696816730.953274575, 87.061000000]: Point[180] = 2.440673
[ INFO] [1696816731.112882708, 87.161000000]: Point[180] = 2.434601
[ INFO] [1696816731.264137913, 87.261000000]: Point[180] = 2.425772
[ INFO] [1696816731.412483482, 87.361000000]: Point[180] = 2.422552
[ INFO] [1696816731.596755285, 87.461000000]: Point[180] = 2.423323
[ INFO] [1696816731.713578300, 87.561000000]: Point[180] = 2.403169
[ INFO] [1696816731.870466087, 87.661000000]: Point[180] = 2.405771
[ INFO] [1696816732.030570009, 87.763000000]: Point[180] = 2.406122
[ INFO] [1696816732.151472994, 87.861000000]: Point[180] = 2.393601
[ INFO] [1696816732.308020718, 87.962000000]: Point[180] = 2.392353
[ INFO] [1696816732.452030465, 88.061000000]: Point[180] = 2.403673
[ INFO] [1696816732.590843090, 88.161000000]: Point[180] = 2.383644
[ INFO] [1696816732.679201532, 88.261000000]: Point[180] = 2.387333
[ INFO] [1696816732.776869706, 88.361000000]: Point[180] = 2.367726
[ INFO] [1696816732.878220938, 88.461000000]: Point[180] = 2.368917
[ INFO] [1696816732.999939285, 88.561000000]: Point[180] = 2.371457
[ INFO] [1696816733.147530792, 88.664000000]: Point[180] = 2.338822
[ INFO] [1696816733.309752791, 88.761000000]: Point[180] = 2.356613
[ INFO] [1696816733.469641250, 88.861000000]: Point[180] = 2.354508
[ INFO] [1696816733.603688103, 88.961000000]: Point[180] = 2.332110
[ INFO] [1696816733.773549232, 89.063000000]: Point[180] = 2.330097
[ INFO] [1696816733.898846321, 89.161000000]: Point[180] = 2.336072
[ INFO] [1696816734.020715847, 89.261000000]: Point[180] = 2.313377
[ INFO] [1696816734.163510149, 89.361000000]: Point[180] = 2.319346
[ INFO] [1696816734.306283083, 89.461000000]: Point[180] = 2.304871
[ INFO] [1696816734.462450700, 89.561000000]: Point[180] = 2.315882
[ INFO] [1696816734.625562329, 89.661000000]: Point[180] = 2.300980
[ INFO] [1696816734.776958244, 89.761000000]: Point[180] = 2.306709
[ INFO] [1696816734.912882181, 89.861000000]: Point[180] = 2.286816
[ INFO] [1696816735.039755961, 89.961000000]: Point[180] = 2.287082
[ INFO] [1696816735.178930250, 90.061000000]: Point[180] = 2.286587
[ INFO] [1696816735.310787990, 90.161000000]: Point[180] = 2.284266
[ INFO] [1696816735.466569657, 90.262000000]: Point[180] = 2.282662
[ INFO] [1696816735.579326837, 90.361000000]: Point[180] = 2.262884
[ INFO] [1696816735.767388258, 90.461000000]: Point[180] = 2.269635
[ INFO] [1696816735.907187809, 90.561000000]: Point[180] = 2.272025
[ INFO] [1696816736.008384010, 90.661000000]: Point[180] = 2.257314
[ INFO] [1696816736.109795917, 90.761000000]: Point[180] = 2.236295
[ INFO] [1696816736.206782349, 90.861000000]: Point[180] = 2.235103
[ INFO] [1696816736.307109434, 90.961000000]: Point[180] = 2.242762
[ INFO] [1696816736.405555031, 91.061000000]: Point[180] = 2.250776
[ INFO] [1696816736.505431653, 91.161000000]: Point[180] = 2.233090
[ INFO] [1696816736.611217671, 91.261000000]: Point[180] = 2.220112
[ INFO] [1696816736.705480624, 91.361000000]: Point[180] = 2.235959
[ INFO] [1696816736.808818903, 91.461000000]: Point[180] = 2.220807
[ INFO] [1696816736.910817032, 91.561000000]: Point[180] = 2.206572
[ INFO] [1696816737.008211850, 91.661000000]: Point[180] = 2.209068
[ INFO] [1696816737.109390195, 91.761000000]: Point[180] = 2.191437
[ INFO] [1696816737.210247643, 91.861000000]: Point[180] = 2.187127
[ INFO] [1696816737.307583287, 91.961000000]: Point[180] = 2.185368
[ INFO] [1696816737.408701448, 92.061000000]: Point[180] = 2.203917
[ INFO] [1696816737.511001886, 92.161000000]: Point[180] = 2.167451
[ INFO] [1696816737.616144998, 92.261000000]: Point[180] = 2.178712
[ INFO] [1696816737.715762380, 92.361000000]: Point[180] = 2.164538
[ INFO] [1696816737.841236997, 92.461000000]: Point[180] = 2.176616
[ INFO] [1696816737.984095885, 92.561000000]: Point[180] = 2.169066
[ INFO] [1696816738.136114770, 92.661000000]: Point[180] = 2.146573
[ INFO] [1696816738.258415561, 92.761000000]: Point[180] = 2.142345
[ INFO] [1696816738.415395499, 92.861000000]: Point[180] = 2.144625
[ INFO] [1696816738.559342567, 92.961000000]: Point[180] = 2.148843
[ INFO] [1696816738.701980608, 93.061000000]: Point[180] = 2.137224
[ INFO] [1696816738.839892727, 93.161000000]: Point[180] = 2.140889
[ INFO] [1696816738.990674525, 93.261000000]: Point[180] = 2.128131
[ INFO] [1696816739.120884366, 93.361000000]: Point[180] = 2.118686
[ INFO] [1696816739.296067902, 93.461000000]: Point[180] = 2.110579
[ INFO] [1696816739.447404419, 93.561000000]: Point[180] = 2.101502
[ INFO] [1696816739.568765421, 93.661000000]: Point[180] = 2.099094
[ INFO] [1696816739.729262475, 93.761000000]: Point[180] = 2.090523
[ INFO] [1696816739.857031431, 93.861000000]: Point[180] = 2.084269
[ INFO] [1696816740.001194425, 93.961000000]: Point[180] = 2.097546
[ INFO] [1696816740.161992573, 94.061000000]: Point[180] = 2.088501
[ INFO] [1696816740.276062702, 94.161000000]: Point[180] = 2.069694
[ INFO] [1696816740.448279723, 94.261000000]: Point[180] = 2.066679
[ INFO] [1696816740.594429725, 94.361000000]: Point[180] = 2.076833
[ INFO] [1696816740.752563145, 94.461000000]: Point[180] = 2.053731
[ INFO] [1696816740.868637598, 94.561000000]: Point[180] = 2.060352
[ INFO] [1696816741.015621428, 94.661000000]: Point[180] = 2.063361
[ INFO] [1696816741.115378539, 94.761000000]: Point[180] = 2.061415
[ INFO] [1696816741.217799703, 94.861000000]: Point[180] = 2.043106
[ INFO] [1696816741.314727535, 94.961000000]: Point[180] = 2.066584
[ INFO] [1696816741.416833917, 95.061000000]: Point[180] = 2.023629
[ INFO] [1696816741.519732528, 95.161000000]: Point[180] = 2.031629
[ INFO] [1696816741.623440157, 95.261000000]: Point[180] = 2.026880
[ INFO] [1696816741.719222169, 95.361000000]: Point[180] = 2.011686
[ INFO] [1696816741.818149094, 95.461000000]: Point[180] = 2.006945
[ INFO] [1696816741.917293280, 95.561000000]: Point[180] = 2.015850
[ INFO] [1696816742.018623489, 95.661000000]: Point[180] = 1.998773
[ INFO] [1696816742.118659713, 95.761000000]: Point[180] = 2.026691
[ INFO] [1696816742.220759058, 95.861000000]: Point[180] = 1.994694
[ INFO] [1696816742.320768815, 95.961000000]: Point[180] = 1.994109
[ INFO] [1696816742.419060709, 96.061000000]: Point[180] = 1.983442
[ INFO] [1696816742.588430750, 96.161000000]: Point[180] = 1.971886
[ INFO] [1696816742.754725736, 96.261000000]: Point[180] = 1.974227
[ INFO] [1696816742.924872500, 96.361000000]: Point[180] = 1.986183
[ INFO] [1696816743.076917541, 96.461000000]: Point[180] = 1.965084
[ INFO] [1696816743.243212788, 96.561000000]: Point[180] = 1.948777
[ INFO] [1696816743.363472120, 96.661000000]: Point[180] = 1.953237
[ INFO] [1696816743.499470974, 96.763000000]: Point[180] = 1.953645
[ INFO] [1696816743.635592828, 96.864000000]: Point[180] = 1.938526
[ INFO] [1696816743.789793891, 96.961000000]: Point[180] = 1.938066
[ INFO] [1696816743.940917740, 97.061000000]: Point[180] = 1.936968
[ INFO] [1696816744.086257921, 97.161000000]: Point[180] = 1.930954
[ INFO] [1696816744.260229303, 97.264000000]: Point[180] = 1.917298
[ INFO] [1696816744.368913687, 97.361000000]: Point[180] = 1.910521
[ INFO] [1696816744.547702610, 97.461000000]: Point[180] = 1.922231
[ INFO] [1696816744.677049037, 97.561000000]: Point[180] = 1.901825
[ INFO] [1696816744.805518356, 97.661000000]: Point[180] = 1.897422
[ INFO] [1696816744.966116236, 97.761000000]: Point[180] = 1.914745
[ INFO] [1696816745.096881297, 97.861000000]: Point[180] = 1.886602
[ INFO] [1696816745.253523378, 97.961000000]: Point[180] = 1.876024
[ INFO] [1696816745.402215456, 98.063000000]: Point[180] = 1.867131
[ INFO] [1696816745.600962038, 98.161000000]: Point[180] = 1.880019
[ INFO] [1696816745.742167884, 98.261000000]: Point[180] = 1.899655
[ INFO] [1696816745.940190726, 98.363000000]: Point[180] = 1.888396
[ INFO] [1696816746.095101892, 98.461000000]: Point[180] = 1.879366
[ INFO] [1696816746.188271942, 98.561000000]: Point[180] = 1.859706
[ INFO] [1696816746.290382846, 98.661000000]: Point[180] = 1.865900
[ INFO] [1696816746.388163752, 98.761000000]: Point[180] = 1.848966
[ INFO] [1696816746.488443333, 98.861000000]: Point[180] = 1.851874
[ INFO] [1696816746.588244956, 98.961000000]: Point[180] = 1.842949
[ INFO] [1696816746.693952974, 99.061000000]: Point[180] = 1.838118
[ INFO] [1696816746.793184556, 99.161000000]: Point[180] = 1.835067
[ INFO] [1696816746.896752906, 99.261000000]: Point[180] = 1.816390
[ INFO] [1696816746.997949547, 99.361000000]: Point[180] = 1.825496
[ INFO] [1696816747.100021184, 99.461000000]: Point[180] = 1.831270
[ INFO] [1696816747.198368189, 99.561000000]: Point[180] = 1.818070
[ INFO] [1696816747.299761555, 99.661000000]: Point[180] = 1.817388
[ INFO] [1696816747.396824824, 99.761000000]: Point[180] = 1.807472
[ INFO] [1696816747.497983679, 99.861000000]: Point[180] = 1.794298
[ INFO] [1696816747.602164227, 99.961000000]: Point[180] = 1.804012
[ INFO] [1696816747.703074613, 100.061000000]: Point[180] = 1.791343
[ INFO] [1696816747.801590436, 100.161000000]: Point[180] = 1.784100
[ INFO] [1696816747.900724104, 100.261000000]: Point[180] = 1.784167
[ INFO] [1696816747.998792318, 100.361000000]: Point[180] = 1.775073
[ INFO] [1696816748.155313905, 100.462000000]: Point[180] = 1.764897
[ INFO] [1696816748.275608046, 100.561000000]: Point[180] = 1.743415
[ INFO] [1696816748.373968388, 100.661000000]: Point[180] = 1.762570
[ INFO] [1696816748.472221573, 100.761000000]: Point[180] = 1.757688
[ INFO] [1696816748.571015994, 100.861000000]: Point[180] = 1.748724
[ INFO] [1696816748.671269469, 100.961000000]: Point[180] = 1.732632
[ INFO] [1696816748.770589321, 101.061000000]: Point[180] = 1.741690
[ INFO] [1696816748.869857584, 101.161000000]: Point[180] = 1.724987
[ INFO] [1696816749.046272500, 101.261000000]: Point[180] = 1.744862
[ INFO] [1696816749.160115627, 101.361000000]: Point[180] = 1.735669
[ INFO] [1696816749.297271548, 101.463000000]: Point[180] = 1.734003
[ INFO] [1696816749.465914629, 101.561000000]: Point[180] = 1.725775
[ INFO] [1696816749.605743966, 101.661000000]: Point[180] = 1.718665
[ INFO] [1696816749.767575228, 101.761000000]: Point[180] = 1.702985
[ INFO] [1696816749.947587240, 101.861000000]: Point[180] = 1.688286
[ INFO] [1696816750.087821229, 101.961000000]: Point[180] = 1.690745
[ INFO] [1696816750.238536792, 102.064000000]: Point[180] = 1.700119
[ INFO] [1696816750.410426130, 102.161000000]: Point[180] = 1.674568
[ INFO] [1696816750.544062267, 102.261000000]: Point[180] = 1.675075
[ INFO] [1696816750.704090532, 102.361000000]: Point[180] = 1.671422
[ INFO] [1696816750.847501488, 102.461000000]: Point[180] = 1.668615
[ INFO] [1696816750.991980147, 102.563000000]: Point[180] = 1.663742
[ INFO] [1696816751.153689966, 102.661000000]: Point[180] = 1.663465
[ INFO] [1696816751.278968813, 102.761000000]: Point[180] = 1.643463
[ INFO] [1696816751.418642449, 102.861000000]: Point[180] = 1.634699
[ INFO] [1696816751.554973008, 102.961000000]: Point[180] = 1.634678
[ INFO] [1696816751.727055020, 103.061000000]: Point[180] = 1.635740
[ INFO] [1696816751.837790534, 103.161000000]: Point[180] = 1.629225
[ INFO] [1696816751.970319783, 103.261000000]: Point[180] = 1.599407
[ INFO] [1696816752.103141863, 103.361000000]: Point[180] = 1.607585
[ INFO] [1696816752.259834096, 103.461000000]: Point[180] = 1.622082
[ INFO] [1696816752.432215191, 103.561000000]: Point[180] = 1.617877
[ INFO] [1696816752.576298704, 103.662000000]: Point[180] = 1.608389
[ INFO] [1696816752.736075508, 103.761000000]: Point[180] = 1.591510
[ INFO] [1696816752.872170064, 103.861000000]: Point[180] = 1.594971
[ INFO] [1696816753.031012057, 103.961000000]: Point[180] = 1.599140
[ INFO] [1696816753.175545391, 104.061000000]: Point[180] = 1.590417
[ INFO] [1696816753.298740595, 104.161000000]: Point[180] = 1.567274
[ INFO] [1696816753.449450345, 104.261000000]: Point[180] = 1.584779
[ INFO] [1696816753.599128668, 104.362000000]: Point[180] = 1.571251
[ INFO] [1696816753.711468828, 104.461000000]: Point[180] = 1.573669
[ INFO] [1696816753.807789204, 104.561000000]: Point[180] = 1.563093
[ INFO] [1696816753.962622858, 104.661000000]: Point[180] = 1.569090
[ INFO] [1696816754.142227118, 104.761000000]: Point[180] = 1.539954
[ INFO] [1696816754.265561432, 104.861000000]: Point[180] = 1.552320
[ INFO] [1696816754.431453701, 104.961000000]: Point[180] = 1.559471
[ INFO] [1696816754.620559049, 105.061000000]: Point[180] = 1.541831
[ INFO] [1696816754.762372574, 105.161000000]: Point[180] = 1.525354
[ INFO] [1696816754.900623927, 105.261000000]: Point[180] = 1.539003
[ INFO] [1696816755.030815911, 105.361000000]: Point[180] = 1.511797
[ INFO] [1696816755.189209879, 105.461000000]: Point[180] = 1.515260
[ INFO] [1696816755.312533712, 105.561000000]: Point[180] = 1.515683
[ INFO] [1696816755.432571427, 105.661000000]: Point[180] = 1.497276
[ INFO] [1696816755.594867571, 105.763000000]: Point[180] = 1.508677
[ INFO] [1696816755.752541776, 105.861000000]: Point[180] = 1.523399
[ INFO] [1696816755.919502210, 105.961000000]: Point[180] = 1.501714
[ INFO] [1696816756.083679430, 106.061000000]: Point[180] = 1.497925
[ INFO] [1696816756.226868371, 106.161000000]: Point[180] = 1.506066
[ INFO] [1696816756.363544419, 106.261000000]: Point[180] = 1.526914
[ INFO] [1696816756.498138390, 106.361000000]: Point[180] = 1.522058
[ INFO] [1696816756.659573388, 106.461000000]: Point[180] = 1.549745
[ INFO] [1696816756.813607385, 106.561000000]: Point[180] = 1.552335
[ INFO] [1696816756.993001279, 106.661000000]: Point[180] = 1.540951
[ INFO] [1696816757.110218165, 106.763000000]: Point[180] = 1.542427
[ INFO] [1696816757.262723959, 106.861000000]: Point[180] = 1.552618
[ INFO] [1696816757.446615927, 106.961000000]: Point[180] = 1.571736
[ INFO] [1696816757.591006528, 107.062000000]: Point[180] = 1.573519
[ INFO] [1696816757.719588262, 107.161000000]: Point[180] = 1.597353
[ INFO] [1696816757.860525472, 107.261000000]: Point[180] = 1.606684
[ INFO] [1696816757.989101005, 107.361000000]: Point[180] = 1.612594
[ INFO] [1696816758.125608060, 107.461000000]: Point[180] = 1.637130
[ INFO] [1696816758.309584617, 107.561000000]: Point[180] = 1.647989
[ INFO] [1696816758.423437836, 107.661000000]: Point[180] = 1.643026
[ INFO] [1696816758.584565007, 107.761000000]: Point[180] = 1.682646
[ INFO] [1696816758.718601656, 107.861000000]: Point[180] = 1.699250
[ INFO] [1696816758.878416154, 107.961000000]: Point[180] = inf
[ INFO] [1696816759.014445750, 108.061000000]: Point[180] = inf
[ INFO] [1696816759.156002062, 108.161000000]: Point[180] = inf

这篇关于SLAM从入门到精通(基于传感器的闭环控制仿真)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/488360

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非