安裝其使用參考大神:https://github.com/koide3/hdl_graph_slam
室外建圖實踐
第一步:開啓底盤,包括odom,lslidar, imu
roslaunch follower_robot follower_robot_start.launch
第二步: 開啓建圖節點
roslaunch hdl_graph_slam new_hdl.launch
第三步:記錄包
rosbag record /lslidar_point_cloud /imu/data
仿真播放記錄的包,然後生成pcd 文件
1.啓動仿真節點,修改500那個launch文件,將話題修改爲自己的話題
rosparam set use_sim_time true roslaunch hdl_graph_slam hdl_graph_bagtopbs.launch
2.開啓rviz
roscd hdl_graph_slam/rviz rviz -d hdl_graph_slam.rviz
3.播放包
rosbag play --clock hdl_corri.bag
效果如下所示:
4.生成PCD文件,指定生成的目錄
rosservice call /hdl_graph_slam/save_map "resolution: 0.05 destination: '/home/utryjc/map.pcd'"
觀察生成的點雲(有點歪)
pcl_viewer map.pcd
底盤launch文件如下
<launch>
<!--
<node pkg="tf" type="static_transform_publisher" name="base_to_link" args="0 0 0 0 0 0 base_footprint base_link 100" />
<node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0.22 0 0 0 base_link gyro_link 100" />
<node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.12 0 0.4 0.0 0.0 0.0 base_link laser_link 100" />
-->
<node pkg="follower_robot" type="follower_robot_node" name="publish_odom" output="screen">
<param name="usart_port" type="string" value="/dev/xiaoyuan_base"/>
<param name="baud_data" type="int" value="115200"/>
<param name="robot_frame_id" type="string" value="base_link"/>
<param name="smooth_cmd_vel" type="string" value="smooth_cmd_vel"/>
<param name="filter_vx_match" type="double" value="1.0"/>
<param name="filter_vth_match" type="double" value="1.0"/>
</node>
<!-- leishen leidar -->
<node pkg="lslidar_c16_driver" type="lslidar_c16_driver_node" name="lslidar_c16_driver_node" output="screen">
<param name="lidar_ip" value="192.168.1.200"/>
<param name="device_port" value="2368"/>
<param name="add_multicast" value="false"/>
<param name="group_ip" value="224.1.1.2"/>
</node>
<node pkg="lslidar_c16_decoder" type="lslidar_c16_decoder_node" name="lslidar_c16_decoder_node" output="screen">
<param name="frame_id" value="laser_link"/>
<param name="point_num" value="2000"/>
<param name="channel_num" value="0"/>
<param name="angle_disable_min" value="0"/>
<param name="angle_disable_max" value="0"/>
<param name="angle3_disable_min" value="0"/>
<param name="angle3_disable_max" value="0"/>
<param name="min_range" value="0.15"/>
<param name="max_range" value="150.0"/>
<param name="frequency" value="10.0"/>
<param name="publish_point_cloud" value="true"/>
<param name="publish_scan" value="true"/>
<param name="use_gps_ts" value="false"/>
<!--remap from= "lslidar_point_cloud" to="cloud" /-->
</node>
<!--IMU-->
<node pkg="robot_pose" type="robot_imu_node" name="publish_imu" output="screen">
<param name="Serial_port" type="string" value="/dev/xiaoyuan_imu"/>
<param name="Serial_bound" type="int" value="9600"/>
<param name="gyro_frame_id" type="string" value="gyro_link"/>
<remap from="imu_data_raw" to="imu/data" />
</node>
rosservice call /hdl_graph_slam/save_map "resolution: 0.05 destination: '/full_path_directory/map.pcd'"