Ubuntu16.04+hokuyo(URG)实现amcl导航

turtlebot2基于hokuyo激光的amcl+move_bace导航

1、文件配置

1)打开一个新终端,配置ROS环境变量(每开新的终端都最好配置一次)

$ source ~/catkin_ws/devel/setup.bash

2)修改激光串口权限,注意:每次USB重新插入都需要修改该权限

$ sudo chmod a+rw /dev/ttyACM0

3)手动打开hokuyo_laser.launch(路径:/home/yourname/catkin_ws/src/turtlebot_apps/turtlebot_navigation/laser/driver)并添加tf变换(这里会有两个tf变换才能运行,具体原因不明)

<node pkg="tf" type="static_transform_publisher" name="map_to_odom" args="0.0 0.0 0.17 0 0 0.0 /map /odom 1000"/>

这个launch的完整文件为:

<!-- 

This launch file shows how to start a hokuyo node. 

You may have to change the port parameter if your laser is not at
/dev/ttyACM0.

If you have rviz built, you can uncomment the rviz node to visualize the
laser data.

Otherwise, you can use rostopic to see the data:
rostopic echo /scan

-->

<launch>
  <node name="hokuyo" pkg="hokuyo_node" type="hokuyo_node" respawn="false" output="screen">
  
    <!-- Starts up faster, but timestamps will be inaccurate. --> 
    <param name="calibrate_time" type="bool" value="false"/> 
    
    <!-- Set the port to connect to here -->
    <param name="port" type="string" value="/dev/hokuyo"/> 
    <param name="frame_id" type="string" value="laser"/>
    <param name="intensity" type="bool" value="false"/>
  </node>
  
  <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.0 0.0 0.17 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.17 0 0 0.0 /map /odom 1000"/>
  <node name="rviz" pkg="rviz" type="rviz" respawn="false" output="screen" args="-d $(find hokuyo_node)/hokuyo_test.vcg"/>
  
  
</launch>

4)创建hokuyo_amcl_demo.launch

$ roscd  turtlebot_navigation
$ touch  launch/hokuyo_amcl_demo.launch

打开,并添加以下内容:

<launch>

<!-- Define laser type-->
  <arg name="laser_type" default="hokuyo" />

  <!-- laser driver -->
  <include file="$(find turtlebot_navigation)/laser/driver/$(arg laser_type)_laser.launch"/>

  <!-- Map server -->
  <arg name="map_file" default="$(env TURTLEBOT_MAP_FILE)"/>
  <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/$(arg laser_type)_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>

  <!-- Move base -->
  <arg name="custom_param_file" default="$(find turtlebot_navigation)/param/$(arg laser_type)_costmap_params.yaml"/>
  <include file="$(find turtlebot_navigation)/launch/includes/move_base.launch.xml">
  </include>

</launch>

此处<arg name="custom_param_file" default="$(find turtlebot_navigation)/param/$(arg laser_type)_costmap_params.yaml"/> 经测试有无均可,原因不明。

2、导航实现

1)上网本新开端口,打开roscore

$ roscore

2)上网本新开端口,启动turtlebot

$ roslaunch turtlebot_bringup minimal.launch

3)主机,新终端执行,启动amcl

$ roslaunch turtlebot_navigation hokuyo_amcl_demo.launch map_file:=/home/yourname/map/hokuyo_map.yaml

这里/home/yourname/map/hokuyo_map.yaml是所建地图的.yaml文件所在的位置,需按个人情况改变

如果你看到 odom received! 说明已经正常运行。
过程中可能出现报错,原因不明,但是不影响正常运行。
在这里插入图片描述

4)新终端,启动rviz

$ roslaunch turtlebot_rviz_launchers view_navigation.launch --screen

效果如下图:
在这里插入图片描述rviz应该公开展示你的地图。turtlebot不能够估计在启动姿态,尽管它可以在你初始化它的姿态。

选择“2D Pose Estimate”在地图上的turtlebot位置点击并按住。当你握着鼠标的时候,一个箭头会出现在鼠标指针的下方,用这个来估计它的方向。
在这里插入图片描述

设置后估计的姿态,选择“2D Nav Goal”,点击你想让turtlebot去的地方。您还可以指定一个目标方向,使用相同的技术如“2D Pose Estimate”。
在这里插入图片描述
urtlebot现在应该朝着你的目录自主前进。尝试指定一个目标,并走在前面,看看它如何反应的动态障碍。
当turtlebot到达指定地点之后,会显示,Goal reached.
在这里插入图片描述
rviz中会有一些错误出现,原因不明。

3、仍存在的问题

1)turtlebot目前在遇到动态障碍时,无法提前避障,需要撞上去,并需要较长的时间来寻找可以走的方向
2)目前turtlebot在导航过程中,rviz界面会出现机器人不断跳出再返回的情况
3)导航过程中出现的报错尚未解决,并不知道其对导航规程的影响
4)hokuyo_laser.launch中<arg name="custom_param_file" default="$(find turtlebot_navigation)/param/$(arg laser_type)_costmap_params.yaml"/> 作用尚不明晰

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值