思岚A2+cartographer
因为毕设相关内容,在学习cartographer,这一次是试用思岚A2跑cartographer。
记录一下过程
首先确保自己cartographer运行是成功的。
安装教程网上有很多(很多都是没用的),我安装了一整天才正确运行,就离谱。
Cartographer安装后,安装思岚A2的驱动程序
学自文章思岚科技A1,A2雷达驱动安装
cd ~/catkin_ws/src
git clone https://github.com/Slamtec/rplidar_ros.git
cd ..
catkin_make_isolated --install --use-ninja
添加环境变量
sudo gedit ~/.bashrc
#在最后面添加 source ~/catkin_ws/devel_isolated/setup.bash (注意一下devel_isolated这个文件夹的名称可能不一样)
#保存退出
source ~/.bashrc
查看雷达运行情况
roslaunch rplidar_ros view_rplidar.launch
基本上这一步都是报错的,因为插雷达的usb端口号和文件中的端口号不一致。
默认雷达是接在/dev/ttyUSB0上的。
对挂载设备进行固定名称映射(还有其他方式请上网查询,我是一个有效就没必要再折腾了)
cd catkin_ws/src/rplidar_ros/scripts
./create_udev_rules.sh
重新插一次雷达使其生效
cd catkin_ws/src/rplidar_ros/launch
sudo gedit rplidar.launch
将设备参数/dev/ttyUSB0修改为/dev/rplidar
重新尝试雷达
cd
roslaunch rplidar_ros view_rplidar.launch
这里雷达应该就正常运行了。
思岚A2+cartographer
修改revo_lds.lua
sudo gedit ~/catkin_ws/src/cartographer_ros/cartographer_ros/configuration_files/revo_lds.lua
文件内容:
include "map_builder.lua"
include "trajectory_builder.lua"
options = {
map_builder = MAP_BUILDER,
trajectory_builder = TRAJECTORY_BUILDER,
map_frame = "map",
tracking_frame = "laser",
published_frame = "laser",
odom_frame = "odom",
provide_odom_frame = true,
publish_frame_projected_to_2d = false,
use_pose_extrapolator = true,
use_odometry = false,
use_nav_sat = false,
use_landmarks = false,
num_laser_scans = 1,
num_multi_echo_laser_scans = 0,
num_subdivisions_per_laser_scan = 1,
num_point_clouds = 0,
lookup_transform_timeout_sec = 0.2,
submap_publish_period_sec = 0.3,
pose_publish_period_sec = 5e-3,
trajectory_publish_period_sec = 30e-3,
rangefinder_sampling_ratio = 1.,
odometry_sampling_ratio = 1.,
fixed_frame_pose_sampling_ratio = 1.,
imu_sampling_ratio = 1.,
landmarks_sampling_ratio = 1.,
}
MAP_BUILDER.use_trajectory_builder_2d = true
TRAJECTORY_BUILDER_2D.submaps.num_range_data = 35
TRAJECTORY_BUILDER_2D.min_range = 0.3
TRAJECTORY_BUILDER_2D.max_range = 8.
TRAJECTORY_BUILDER_2D.missing_data_ray_length = 1.
TRAJECTORY_BUILDER_2D.use_imu_data = false
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.linear_search_window = 0.1
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.translation_delta_cost_weight = 10.
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.rotation_delta_cost_weight = 1e-1
POSE_GRAPH.optimization_problem.huber_scale = 1e2
POSE_GRAPH.optimize_every_n_nodes = 35
POSE_GRAPH.constraint_builder.min_score = 0.65
return options
修改内容:
horizontal_laser_link
修改为laser
修改demo_revo_lds.launch
sudo gedit ~/catkin_ws/src/cartographer_ros/cartographer_ros/launch/demo_revo_lds.launch
文件内容:
<launch>
<param name="/use_sim_time" value="true" />
<node name="cartographer_node" pkg="cartographer_ros"
type="cartographer_node" args="
-configuration_directory $(find cartographer_ros)/configuration_files
-configuration_basename revo_lds.lua"
output="screen">
<remap from="scan" to="horizontal_laser_2d" />
</node>
<node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
type="cartographer_occupancy_grid_node" args="-resolution 0.05" />
<node name="rviz" pkg="rviz" type="rviz" required="true"
args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz" />
<node name="playbag" pkg="rosbag" type="play"
args="--clock $(arg bag_filename)" />
</launch>
修改为:
<launch>
<param name="/use_sim_time" value="true" />
<node name="cartographer_node" pkg="cartographer_ros"
type="cartographer_node" args="
-configuration_directory $(find cartographer_ros)/configuration_files
-configuration_basename revo_lds.lua"
output="screen">
<remap from="scan" to="scan" />
</node>
<node name="rviz" pkg="rviz" type="rviz" required="true"
args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz" />
</launch>
重新编译
catkin_make_isolated --install --use-ninja
测试
运行激光雷达
roslaunch rplidar_ros rplidar.launch
运行cartographer框架
roslaunch cartographer_ros demo_revo_lds.launch
大致就是这样,这只是宿舍里手举着动了两下。具体的后面再继续搞。