robosense16 多线雷达进行amcl与movebase定位与导航

建图完成后,就可以根据自己建立的地图进行2d的slam啦~

废话不多说,下面放教程:

  • 新建激光雷达的launch启动文件
roscd rslidar_pointcloud/
cd launch
gedit my_slidar_16_2dlaser.launch

 然后把下面的内容放到这个launch中去。

<?xml version="1.0"?>
<launch>
  <arg name="model" default="RS16" />
  <arg name="device_ip" default="192.168.1.200" />
  <arg name="msop_port" default="6699" />
  <arg name="difop_port" default="7788" />
  <arg name="cut_angle" default="0" doc="If set at [0, 360), cut at specific angle feature activated, otherwise use the fixed packets number mode."/>
  <arg name="lidar_param_path" default="$(find rslidar_pointcloud)/data/rs_lidar_16/"/>
 

  <node  name="rslidar_node" pkg="rslidar_driver" type="rslidar_node" output="screen" >
    <param name="model" value="$(arg model)"/>
    <param name="device_ip" value="$(arg device_ip)" />
    <param name="msop_port" value="$(arg msop_port)" />
    <param name="difop_port" value="$(arg difop_port)"/>
    <param name="cut_angle" value="$(arg cut_angle)"/>
    <!--param name="pcap" value="path_to_pcap"/-->
  </node>

  <node  name="cloud_node" pkg="rslidar_pointcloud" type="cloud_node" output="screen" >
    <param name="model" value="$(arg model)"/>
    <param name="curves_path" value="$(arg lidar_param_path)/curves.csv" />
    <param name="angle_path" value="$(arg lidar_param_path)/angle.csv" />
    <param name="channel_path" value="$(arg lidar_param_path)/ChannelNum.csv" />
    <param name="max_distance" value="200"/>
    <param name="min_distance" value="0.4"/>
    <param name="resolution_type" value="0.5cm"/>
    <param name="intensity_mode" value="1"/>
  </node>

   <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.0 0.0 0.45 0 0.0 0.0 base_link laser 100"/>

</launch>

调到这里,其实路上遇到了很多坑,比如turtlebot_navigation包自带一个rslidar的2d启动文件,我尝试对比后发现,缺少了很多配置,导致那个文件无法使用,为了保证官方的源文件正确,这里就直接复制黏贴出来重新创了一个launch文件。

  • 新建一个包罗万象的launch文件打开之前建立的所有有用的节点

roscd turbot_slam/launch/amcl
gedit rslidar_amcl_test.launch

这里的launch文件的建立具有非常大的随意性,我只是在参考各类博文和资料的时候,顺手建立在这个地方而已,如果大家没有turbot的这个包,应该也无所谓。只是我在使用amcl和movebase的时候参考了这个文件夹内的其他demo文件,所以为了对比方便,就建在这个地方。理论上这个launch文件可以放在任何地方,包括自己的工作空间内。

下面放launch文件的内容:

<?xml version="1.0"?>
<!-- Create by chenchen -->
<!-- Time : 2020-08-06 -->
<launch>
  <!-- Define laser type-->
  <arg name="laser_type" default="rslidar_16" />
  	
  <!-- laser driver -->
  <!-- start robosense -->

  <!--include file="$(find turtlebot_navigation)/laser/driver/$(arg laser_type)_laser.launch" /-->
  <include file="$(find turtlebot_bringup)/launch/minimal.launch"/>
  <include file="$(find rslidar_pointcloud)/launch/my_slidar_16_2dlaser.launch" />
  <include file="$(find pointcloud_to_laserscan)/launch/point_to_scan.launch" />
 
  <!-- Map server -->
  <arg name="map_file" default="/home/turtlebot/my_guiji.yaml"/>
  <node name="map_server" pkg="map_server" type="map_server" args="$(arg map_file)" />

  <!-- AMCL -->
  <arg name="custom_amcl_launch_file" default="$(find turtlebot_navigation)/launch/includes/amcl/rplidar_amcl.launch.xml"/>
  <arg name="initial_pose_x" default="0.0"/> <!-- Use 17.0 for willow's map in simulation -->
  <arg name="initial_pose_y" default="0.0"/> <!-- Use 17.0 for willow's map in simulation -->
  <arg name="initial_pose_a" default="0.0"/>
  <include file="$(arg custom_amcl_launch_file)">
    <arg name="initial_pose_x" value="$(arg initial_pose_x)"/>
    <arg name="initial_pose_y" value="$(arg initial_pose_y)"/>
    <arg name="initial_pose_a" value="$(arg initial_pose_a)"/>
  </include>
<!--two tf publisher info can't be add-->
<!--node pkg="tf" type="static_transform_publisher" name="baselink_to_laser" args="0 0 0 0 0 0 /base_link /laser 100" /-->
<!--node pkg="tf" type="static_transform_publisher" name="map_to_odom" args="0 0 0 0 0 0 map odom 100" /--> 
 
<!--  movebase-->
<arg name="custom_param_file" default="$(find turtlebot_navigation)/param/rplidar_costmap_params.yaml"/>
  <include file="$(find turtlebot_navigation)/launch/includes/move_base/laser_move_base.launch.xml">
    <arg name="custom_param_file" value="$(arg custom_param_file)"/>
  </include>
	<node pkg = "rviz" type = "rviz" name = "rviz"
	args = "-d $(find guijigenzong)/rviz/rslidar_slam.rviz"/>
  
</launch>

先简单介绍一下这个launch文件的内容,前三个include分别是turtlebot的底盘启动文件,激光雷达启动文件,3d转2d启动文件的路径,然后是mapsever,也就是地图服务器的打开,这里的地图指定需要改成自己建好的图,当然如果你想做的更官方一点,可以使用arg去定义一些量。接下去是amcl节点的打开,下面是一些配置,比如机器人的初始位姿信息。接着是movebase节点的启动。这里的amcl和movebase的各类配置文件,都采用的是rplidar turtlebot的配置,因为只是修改了激光雷达的使用,所以我感觉应该是通用的,如果在自己的机器上跑感觉效果较一般,想要改进,可以考虑修改一些配置来获得较好的结果(这里可以参考一些别人的调参经验)。

注意:最后的node rviz调用了一个rviz的配置文件,这里的guijigenzong是本人的工作空间内的一个包名,大家的工控机里一定没有,所以大家可以自行指定这里的路径。由于csdn没有办法发附件,在ubuntu系统内又登录不上百度网盘,所以这里我把.rviz文件的内容直接复制黏贴了上来,大家可以自己配置,也可以直接使用我的rviz文件。

Panels:
  - Class: rviz/Displays
    Help Height: 78
    Name: Displays
    Property Tree Widget:
      Expanded:
        - /Global Options1
        - /Status1
        - /LaserScan1
        - /Map1
        - /PointCloud21
        - /Map2
        - /Map3
      Splitter Ratio: 0.5
    Tree Height: 565
  - Class: rviz/Selection
    Name: Selection
  - Class: rviz/Tool Properties
    Expanded:
      - /2D Pose Estimate1
      - /2D Nav Goal1
      - /Publish Point1
    Name: Tool Properties
    Splitter Ratio: 0.588679016
  - Class: rviz/Views
    Expanded:
      - /Current View1
    Name: Views
    Splitter Ratio: 0.5
  - Class: rviz/Time
    Experimental: false
    Name: Time
    SyncMode: 0
    SyncSource: LaserScan
Toolbars:
  toolButtonStyle: 2
Visualization Manager:
  Class: ""
  Displays:
    - Alpha: 0.5
      Cell Size: 1
      Class: rviz/Grid
      Color: 160; 160; 164
      Enabled: true
      Line Style:
        Line Width: 0.0299999993
        Value: Lines
      Name: Grid
      Normal Cell Count: 0
      Offset:
        X: 0
        Y: 0
        Z: 0
      Plane: XY
      Plane Cell Count: 10
      Reference Frame: <Fixed Frame>
      Value: true
    - Alpha: 1
      Autocompute Intensity Bounds: true
      Autocompute Value Bounds:
        Max Value: 0.460200012
        Min Value: 0.460200012
        Value: true
      Axis: Z
      Channel Name: intensity
      Class: rviz/LaserScan
      Color: 255; 255; 255
      Color Transformer: AxisColor
      Decay Time: 0
      Enabled: true
      Invert Rainbow: false
      Max Color: 255; 255; 255
      Max Intensity: 47
      Min Color: 0; 0; 0
      Min Intensity: 47
      Name: LaserScan
      Position Transformer: XYZ
      Queue Size: 10
      Selectable: true
      Size (Pixels): 3
      Size (m): 0.00999999978
      Style: Points
      Topic: /scan
      Unreliable: false
      Use Fixed Frame: true
      Use rainbow: true
      Value: true
    - Alpha: 0.699999988
      Class: rviz/Map
      Color Scheme: map
      Draw Behind: false
      Enabled: true
      Name: Map
      Topic: /map
      Unreliable: false
      Use Timestamp: false
      Value: true
    - Alpha: 1
      Class: rviz/RobotModel
      Collision Enabled: false
      Enabled: true
      Links:
        All Links Enabled: true
        Expand Joint Details: false
        Expand Link Details: false
        Expand Tree: false
        Link Tree Style: Links in Alphabetic Order
        base_footprint:
          Alpha: 1
          Show Axes: false
          Show Trail: false
        base_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        camera_depth_frame:
          Alpha: 1
          Show Axes: false
          Show Trail: false
        camera_depth_optical_frame:
          Alpha: 1
          Show Axes: false
          Show Trail: false
        camera_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        camera_rgb_frame:
          Alpha: 1
          Show Axes: false
          Show Trail: false
        camera_rgb_optical_frame:
          Alpha: 1
          Show Axes: false
          Show Trail: false
        caster_back_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        caster_front_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        cliff_sensor_front_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
        cliff_sensor_left_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
        cliff_sensor_right_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
        gyro_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
        mount_asus_xtion_pro_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        plate_bottom_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        plate_middle_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        plate_top_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_bottom_0_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_bottom_1_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_bottom_2_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_bottom_3_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_bottom_4_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_bottom_5_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_kinect_0_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_kinect_1_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_middle_0_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_middle_1_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_middle_2_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_middle_3_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_top_0_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_top_1_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_top_2_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        pole_top_3_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        wheel_left_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        wheel_right_link:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
      Name: RobotModel
      Robot Description: robot_description
      TF Prefix: ""
      Update Interval: 0
      Value: true
      Visual Enabled: true
    - Alpha: 1
      Autocompute Intensity Bounds: true
      Autocompute Value Bounds:
        Max Value: 2.69588876
        Min Value: -0.0626194477
        Value: true
      Axis: Z
      Channel Name: intensity
      Class: rviz/PointCloud2
      Color: 255; 255; 255
      Color Transformer: AxisColor
      Decay Time: 0
      Enabled: true
      Invert Rainbow: false
      Max Color: 255; 255; 255
      Max Intensity: 255
      Min Color: 0; 0; 0
      Min Intensity: 1.61684775
      Name: PointCloud2
      Position Transformer: XYZ
      Queue Size: 10
      Selectable: true
      Size (Pixels): 3
      Size (m): 0.00999999978
      Style: Spheres
      Topic: /rslidar_points
      Unreliable: false
      Use Fixed Frame: true
      Use rainbow: true
      Value: true
    - Alpha: 0.699999988
      Class: rviz/Map
      Color Scheme: map
      Draw Behind: false
      Enabled: false
      Name: Map
      Topic: /move_base/global_costmap/costmap
      Unreliable: false
      Use Timestamp: false
      Value: false
    - Alpha: 0.699999988
      Class: rviz/Map
      Color Scheme: costmap
      Draw Behind: false
      Enabled: true
      Name: Map
      Topic: /move_base/local_costmap/costmap
      Unreliable: false
      Use Timestamp: false
      Value: true
  Enabled: true
  Global Options:
    Background Color: 48; 48; 48
    Default Light: true
    Fixed Frame: map
    Frame Rate: 30
  Name: root
  Tools:
    - Class: rviz/Interact
      Hide Inactive Objects: true
    - Class: rviz/MoveCamera
    - Class: rviz/Select
    - Class: rviz/FocusCamera
    - Class: rviz/Measure
    - Class: rviz/SetInitialPose
      Topic: /initialpose
    - Class: rviz/SetGoal
      Topic: /move_base_simple/goal
    - Class: rviz/PublishPoint
      Single click: true
      Topic: /clicked_point
  Value: true
  Views:
    Current:
      Class: rviz/Orbit
      Distance: 8.50367165
      Enable Stereo Rendering:
        Stereo Eye Separation: 0.0599999987
        Stereo Focal Distance: 1
        Swap Stereo Eyes: false
        Value: false
      Focal Point:
        X: -0.498540431
        Y: -0.287057936
        Z: 0.382327557
      Focal Shape Fixed Size: true
      Focal Shape Size: 0.0500000007
      Invert Z Axis: false
      Name: Current View
      Near Clip Distance: 0.00999999978
      Pitch: 1.33979702
      Target Frame: <Fixed Frame>
      Value: Orbit (rviz)
      Yaw: 6.23359585
    Saved: ~
Window Geometry:
  Displays:
    collapsed: false
  Height: 846
  Hide Left Dock: false
  Hide Right Dock: false
  QMainWindow State: 000000ff00000000fd00000004000000000000016a000002c4fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006100fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c0061007900730100000028000002c4000000d700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f000002c4fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a005600690065007700730100000028000002c4000000ad00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004b00000003efc0100000002fb0000000800540069006d00650100000000000004b00000030000fffffffb0000000800540069006d006501000000000000045000000000000000000000022b000002c400000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
  Selection:
    collapsed: false
  Time:
    collapsed: false
  Tool Properties:
    collapsed: false
  Views:
    collapsed: false
  Width: 1200
  X: 101
  Y: 26

直接新建一个然后复制黏贴就好了,当然自己配置也可以,这个是很方便的。

下面贴一个终极结果图:11111

为了展示所有的效果,我把除了global_costmap之外的效果都打开了,然后也微调了一下颜色线条之类的,可以看到机器人根据amcl可以较准确估计位姿信息,也可以直接通过rviz进行导航。

完结撒花~

如果在整个调试的过程中遇到任何问题,欢迎与本人交流,在csdn的私信我可能不会看。大家可以通过加我的QQ与我联系:649660368 注明来意哦~

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值