ROS机器人029-机器人实现gmapping室内slam建图

一、启动机器人base.launch节点

nvidia@tegra-ubuntu:~/roborts_ws/src/roborts_bringup/launch$
nvidia@tegra-ubuntu:~$roslaunch roborts_bringup base.launch
base.launch文件

<launch>
  <master auto="start"/>
  <rosparam command="load" file="$(find roborts_base)/config/roborts_base_parameter.yaml" />

  <!-- Run the Base Node -->
  <node pkg="roborts_base" type="roborts_base_node" name="roborts_base_node" output="screen" respawn="true" />

</launch>

roborts_base_parameter.yaml文件内容

serial_port : "/dev/serial_sdk"

机器人base.launch节点图
在这里插入图片描述
机器人话题消息:
在这里插入图片描述base.launch节点输入:
/cmd_vel机器人地盘速度控制量
base.launch结点输出:
/odom(nav_msgs/Odometry)
地盘里程计信息
/tf(tf/tfMessage)
从base_link->odom的变换

二、启动机器人激光雷达节点rplidar.launch

nvidia@tegra-ubuntu:~catkin_ws/src/rplidar_ros/launch$
nvidia@tegra-ubuntu:~$roslaunch rplidar_ros rplidar.launch

<launch>
  <node name="rplidarNode"          pkg="rplidar_ros"  type="rplidarNode" output="screen">
  <param name="serial_port"         type="string" value="/dev/ttyUSB4"/>
  <param name="serial_baudrate"     type="int"    value="115200"/><!--A1/A2 -->
  <!--param name="serial_baudrate"     type="int"    value="256000"--><!--A3 -->
  <param name="frame_id"            type="string" value="base_link"/>
  <param name="inverted"            type="bool"   value="false"/>
  <param name="angle_compensate"    type="bool"   value="true"/>
  </node>
</launch>

思岚的激光雷达A2,需要改两个地方:
/dev/ttyUSB4
“base_link”

第一个需要在命令行用lsusb查看USB口或者查看ls /dev,插拔激光雷达然后就可以看到激光雷达的端口了。’'base_link"是基坐标系刚性连接到机器人底座,默认激光雷达位置和机器人位置相同,所以激光雷达坐标系改为base_link,要不然后续gmapping机器人slam建图包无法编译。
机器人rqt_graph节点网络图
在这里插入图片描述
机器人话题类型:
在这里插入图片描述

三、启动机器人2static_tf.launch节点

nvidia@tegra-ubuntu:~/roborts_ws/src/roborts_bringup/launch$
nvidia@tegra-ubuntu:~$roslaunch roborts_bringup 2static_tf.launch

<launch>

    <!--static_transform_publisher x y z yaw pitch roll frame_id child_frame_id-->
    <node pkg="tf2_ros" type="static_transform_publisher" name="base_link_base_laser_link_broadcaster"
          args="0.0 0.0 0.00 0.0 0.0 0.0 base_link base_laser_link" />
</launch>

注意:

默认基坐标系和激光雷达坐标系全为0.0 0.0 0.0方便计算
且激光雷达的坐标系设置为base_link ,但是这里的base_laser_link最好还是有的刚才测试了可以将激光雷达rplidar.launch中的 base_link和base_laser_link都可以.

机器人rqt_graph节点网络图
在这里插入图片描述
机器人话题类型:
在这里插入图片描述

四、启动机器人gmapping.launch节点

nvidia@tegra-ubuntu:~/roborts_ws/src/roborts_bringup/launch$
nvidia@tegra-ubuntu:~$roslaunch roborts_bringup gmapping.launch

<launch>
    <arg name="scan_topic" default="scan" />

    <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen" clear_params="true">
        <param name="odom_frame" value="odom"/>
        <param name="mapp_update_interval" value="5.0"/>
        <!-- Set maxUrange < actual maximum range of the Laser -->
        <param name="maxRange" value="5.0"/>
        <param name="maxUrange" value="4.5"/>
        <param name="sigma" value="0.05"/>
        <param name="kernelSize" value="1"/>
        <param name="lstep" value="0.05"/>
        <param name="astep" value="0.05"/>
        <param name="iterations" value="5"/>
        <param name="lsigma" value="0.075"/>
        <param name="ogain" value="3.0"/>
        <param name="lskip" value="0"/>
        <param name="srr" value="0.01"/>
        <param name="srt" value="0.02"/>
        <param name="str" value="0.01"/>
        <param name="stt" value="0.02"/>
        <param name="linearUpdate" value="0.5"/>
        <param name="angularUpdate" value="0.436"/>
        <param name="temporalUpdate" value="-1.0"/>
        <param name="resampleThreshold" value="0.5"/>
        <param name="particles" value="80"/>
        <param name="xmin" value="-1.0"/>
        <param name="ymin" value="-1.0"/>
        <param name="xmax" value="1.0"/>
        <param name="ymax" value="1.0"/>
        <param name="delta" value="0.05"/>
        <param name="llsamplerange" value="0.01"/>
        <param name="llsamplestep" value="0.01"/>
        <param name="lasamplerange" value="0.005"/>
        <param name="lasamplestep" value="0.005"/>
        <remap from="scan" to="$(arg scan_topic)"/>
    </node>
</launch>

机器人rqt_graph节点图
在这里插入图片描述

四、启动机器人rviz仿真器

nvidia@tegra-ubuntu:~$rosrun rviz rviz
启动后加载.rviz地图配置文件 File ~ Open config ~选择/src/roborts_bringup/rviz/mapping.rviz 然后添加LaserScan模块并调节激光点的大小
在这里插入图片描述

四、启动机器人rostopic echo /tf

查看机器人里程计信息
nvidia@tegra-ubuntu:~$rostopic echo /tf
这个查看的是里程计转换过的/tf信息,可以查看机器人行驶出的距离
在这里插入图片描述

五、汇总后的launch文件

建立.launch启动文件
nvidia@tegra-ubuntu:~/roborts_ws/src/roborts_bringup/launch$
nvidia@tegra-ubuntu:~$roslaunch roborts_bringup Rgmapping.launch

<launch>
  <master auto="start"/>
  <rosparam command="load" file="$(find roborts_base)/config/roborts_base_parameter.yaml" />

  <!-- Run the Base Node -->
  <node pkg="roborts_base" type="roborts_base_node" name="roborts_base_node" output="screen" respawn="true" />
  
  <!-- Run the rplidar Node -->
  <node name="rplidarNode"          pkg="rplidar_ros"  type="rplidarNode" output="screen">
  <param name="serial_port"         type="string" value="/dev/ttyUSB4"/>
  <param name="serial_baudrate"     type="int"    value="115200"/><!--A1/A2 -->
  <!--param name="serial_baudrate"     type="int"    value="256000"--><!--A3 -->
  <param name="frame_id"            type="string" value="base_link"/>
  <param name="inverted"            type="bool"   value="false"/>
  <param name="angle_compensate"    type="bool"   value="true"/>
  </node>
  
  <!--static_transform_publisher x y z yaw pitch roll frame_id child_frame_id-->
  <node pkg="tf2_ros" type="static_transform_publisher" name="base_link_base_laser_link_broadcaster"
       args="0.0 0.0 0.00 0.0 0.0 0.0 base_link base_laser_link" />

  <!-- Run the slam gmapping -->
  <include file="$(find roborts_bringup)/launch/slam_gmapping.xml"/>

  <!-- 运行rviz -->
  <node pkg="rviz" type="rviz" name="rviz" args="-d $(find roborts_bringup)/rviz/Rmapping.rviz"/>

</launch>

启动文件中有启动base.launch节点、rplidar.launch节点、static_tf.launch节点、Rgmapping.launch/slam_gmapping.xml节点、和rviz启动节点。
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值