使用HDL_SLAM構建場景地圖

安裝其使用參考大神: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'"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章