学习使用turtlebot2——turtlebot2上使用Hokuyo激光雷达(型号UST-10LX)
目标
在turtlebot2上添加Hokuyo激光雷达传感器,使用激光雷达调用gmapping进行建图。
配置情况
电脑使用Ubuntu 14.04版本,ROS为 Indigo,激光雷达为Hokuyo(型号UST-10LX,网口型接口)
PS:
如果ROS上没配置好Hokuyo,参照我上一篇博客进行配置
https://blog.csdn.net/weixin_42670641/article/details/81009693
思路:
怎么将激光雷达安装在turtlebot上使用?
第一步:首先通过上一篇博客知道,在ROS上使用UST-10LX,要使用urg_node节点通过输入相应的IP地址进行调用,那就要在电脑连接turtlebot时同时启动节点urg_node,并且连上激光雷达的IP。那第一步要修改的便是turtlebot的启动文件minimal.launch,默认的文件位于/opt/ros/indigo/share/turtlebot_bringup/launch/minimal.launch。做法是增加一个控制激光雷达的节点,里面包括激光雷达的ip地址,连接端口,坐标系的转换关系,检测角度范围等信息。
第二步:通过在启动文件增加节点,已经启动了激光雷达,那就要想着怎么将激光雷达的模型连接在turtlebot上。那就要在turtlebot_description功能包上增添上激光雷达的模型。查看路径/opt/ros/indigo/share/turtlebot_description/urdf/sensors里面可以看到其他已经有的传感器模型,仿照编写自己的hokuyo.urdf.xarcro(激光雷达的模型)。
编写模型后,怎么让turtlebot找到传感器模型?
打开/opt/ros/indigo/share/turtlebot_description/urdf/turtlebot_library.urdf.xacro,可以看到其他传感器通过这里,通过链接命令使得turtlebot找到相应模型所在的位置。
找到传感器模型后,怎么连接上turtlebot?
打开/opt/ros/indigo/share/turtlebot_description/robots/kobuki_hexagons_kinect.urdf.xacro,可以看到传感器连接到了base_link坐标上,仿照着设置。
第三步,配置完模型后,想使用turtlebot的turtlebot_navigation包进行导航,在避障时move_base的节点的costmap中要增加障碍来源。因为costmap 默认扫描数据来自/scan,增加一个sensor需要在障碍配置过程中增加一个来源。新增加一个 scan_kinect,然后costmap在扫描障碍时就可以同时接收两个scan sensor的障碍数据了。见文件turtlebot_navigation/param/costmap_common_params.yaml
下面介绍具体操作:
1、在minimal.launch中添加hokuyo的节点信息
#找到自己minimal.launch的位置,我的安装在默认路径。一般情况下opt下文件不可更改,有访问权限,使用sudo chmod -R /opt更改其访问权限,使所有人可以更改
sudo gedit /opt/ros/indigo/share/turtlebot_bringup/launch/minimal.launch
#在打开的minimal.launch文件中,加入以下内容
<node name="hokuyo_urg_node" pkg="urg_node" type="urg_node">
<param name="ip_address" value="192.168.1.181" />
<param name="ip_port" value="10940" />
<param name="frame_id" value="base_link"/>
<param name="calibrate_time" type="bool" value="true"/>
<param name="intensity" type="bool" value="false"/>
<param name="min_ang" value="-2.356194437"/>
<param name="max_ang" value="2.35619443"/>
<param name="cluster" value="1"/>
</node>
2、编写hokuyo激光雷达的模型文件
#创建一个模型文件
cd /opt/ros/indigo/share/turtlebot_description/urdf/sensors
mkdir hokuyo.urdf.xacro
gedit hokuyo.urdf.xacro
#写入下面内容
<?xml version="1.0"?>
<robot name="sensor_hokuyo" xmlns:xacro="http://ros.org/wiki/xacro">
<xacro:include filename="$(find turtlebot_description)/urdf/turtlebot_gazebo.urdf.xacro"/>
<xacro:include filename="$(find turtlebot_description)/urdf/turtlebot_properties.urdf.xacro"/>
<!-- Set location of lidar as parameters. distance from center of bottom of kobuki base in meters -->
<xacro:macro name="sensor_hokuyo" params="parent">
<joint name="laser" type="fixed">
<origin yz="0.08 0.46 0.0" rpy="0 0 0" />
<parent link="${parent}"/>
<child link="base_laser_link" />
</joint>
<link name="base_laser_link">
<visual>
<geometry>
<box size="0.00 0.05 0.06" />
</geometry>
<material name="Green" />
</visual>
<inertial>
<mass value="0.000001" />
<origin xyz="0 0 0" />
<inertia ixx="0.0001" ixy="0.0" ixz="0.0" iyy="0.0001" iyz="0.0" izz="0.0001" />
</inertial>
</link>
</xacro:macro>
</robot
3、让turtlebot找到传感器模型
gedit /opt/ros/indigo/share/turtlebot_description/urdf/turtlebot_library.urdf.xacro
#添加下面语句
<xacro:include filename="$(find turtlebot_description)/urdf/sensors/hokuyo.urdf.xacro"/>
4、连接上turtlebot
gedit /opt/ros/indigo/share/turtlebot_description/robots/kobuki_hexagons_kinect.urdf.xacro
#添加雷达的连接
<?xml version="1.0"?>
<!--
- Base : kobuki
- Stacks : hexagons
- 3d Sensor : kinect
- lidar : hokuyo
-->
<robot name="turtlebot" xmlns:xacro="http://ros.org/wiki/xacro">
<xacro:include filename="$(find turtlebot_description)/urdf/turtlebot_common_library.urdf.xacro" />
<xacro:include filename="$(find kobuki_description)/urdf/kobuki.urdf.xacro" />
<xacro:include filename="$(find turtlebot_description)/urdf/stacks/hexagons.urdf.xacro"/>
<xacro:include filename="$(find turtlebot_description)/urdf/sensors/kinect.urdf.xacro"/>
<xacro:include filename="$(find turtlebot_description)/urdf/turtlebot_library.urdf.xacro" />
<kobuki/>
<stack_hexagons parent="base_link"/>
<sensor_kinect parent="base_link"/>
<sensor_hokuyo parent="base_link"/>
5、在避障时move_base node的costmap中增加障碍来源
gedit /opt/ros/indigo/share/turtlebot_navigation/param/costmap_common_params.yaml
z_voxels: 2
publish_voxel_map: false
observation_sources: scan bump hokuyo #增加了一个障碍扫描源hokuyo
scan:
data_type: LaserScan
topic: scan
marking: true
clearing: true
min_obstacle_height: 0.25
max_obstacle_height: 0.35
bump:
data_type: PointCloud2
topic: mobile_base/sensors/bumper_pointcloud
marking: true
clearing: false
min_obstacle_height: 0.0
max_obstacle_height: 0.15
hokuyo: #增加的hokuyo的参数
data_type:LaserScan
topic:scan
marking:true
clearing:true
min_obstacle_height:0.0 #需修改,取决于sensor的实际高度
max_obstacle_height:0.5 #需修改,取决于sensor的实际高度
# for debugging only, let's you see the entire voxel grid
文件修改完后,使用下面命令开始建图。
roslaunch turtlebot_bringup minimal.launch #启动turtlebot
roslaunch turtlebot_navigation gmapping_demo.launch #启动建图
roslaunch turtlebot_rviz_launchers view_navigation.launch #启动可视化
roslaunch turtlebot_teleop keyboard_teleop.launch #启动控制小车运动
保存地图
rosrun map_server map_saver -f /tmp/my_map
运用保存的地图进行导航:
roslaunch turtlebot_bringup minimal.launch #启动turtlebot
roslaunch turtlebot_navigation amcl_demo.launch map_file:=/tmp/my_map.yaml #载入地图
roslaunch turtlebot_rviz_launchers view_navigation.launch #可视化
学习使用turtlebot2——turtlebot2上使用Hokuyo激光雷达(型号UST-10LX)的更多相关文章
- 学习使用turtlebot2——调试Hokuyo激光雷达(型号UST-10LX)
目标 在ROS上调试使用Hokuyo激光雷达传感器 配置情况 电脑使用Ubuntu 14.04版本,ROS为 Indigo,激光雷达为Hokuyo(型号UST-10LX,网口型接口) 如果 ...
- SpringMVC:学习笔记(8)——文件上传
SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...
- Git学习系列之Windows上安装Git详细步骤(图文详解)
前言 最初,Git是用于Linux下的内核代码管理.因为其非常好用,目前,已经被成功移植到Mac和Windows操作系统下. 鉴于大部分使用者使用的是Windows操作系统,故,这里详细讲解Windo ...
- Git学习系列之Windows上安装Git之后的一些配置(图文详解)
不多说,直接上干货! 前面博客 Git学习系列之Windows上安装Git详细步骤(图文详解) 第一次使用Git时,需要对Git进行一些配置,以方便使用Git. 不过,这种配置工作只需要进行一次便可, ...
- Django:学习笔记(8)——文件上传
Django:学习笔记(8)——文件上传 文件上传前端处理 本模块使用到的前端Ajax库为Axio,其地址为GitHub官网. 关于文件上传 上传文件就是把客户端的文件发送给服务器端. 在常见情况(不 ...
- TortoiseGit学习系列之Windows上本地代码如何通过TortoiserGit提交到GitHub详解(图文)
不多说,直接上干货! 前面博客 TortoiseGit学习系列之Windows上TortoiseGit的安装详解(图文) 上面博文给大家讲解了一下如何本地安装TortoiseGit. 这篇为大家讲一下 ...
- 2017-2018-1 20155232 《信息安全系统设计基础》第四周学习总结以及课上myod练习补充博客
2017-2018-1 20155232 <信息安全系统设计基础>第四周学习总结以及课上myod练习补充博客 课上myod练习 1 参考教材第十章内容 2 用Linux IO相关系统调用编 ...
- Java进阶学习:将文件上传到七牛云中
Java进阶学习:将文件上传到七牛云中 通过本文,我们将讲述如何利用七牛云官方SDK,将我们的本地文件传输到其存储空间中去. JavaSDK:https://developer.qiniu.com/k ...
- 《从0到1学习Flink》—— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门
准备工作 1.安装查看 Java 的版本号,推荐使用 Java 8. 安装 Flink 2.在 Mac OS X 上安装 Flink 是非常方便的.推荐通过 homebrew 来安装. brew in ...
随机推荐
- 转: RabbitMQ实现中AMQP与MQTT消息收发异同
转自:http://www.cnblogs.com/lucifer1997/p/9438186.html 实现了AMQP与MQTT(至多一次)后,用多个队列以topic exchange的方式用相同交 ...
- mongodb - 集合重命名
#创建新的集合yb > for(i=0;i<10;i++){db.yb.insert({'i':i})} WriteResult({ "nInserted" : 1 } ...
- Springboot读取配置文件的两种方法
第一种: application.yml配置中的参数: zip: Hello Springboot 方法读取: @RestController public class ControllerTest ...
- Atitit php序列化 php的serialize序列化和json序列化
Atitit php序列化 php的serialize序列化和json序列化 PHP 对不同类型的数据用不同的字母进行标示,Yahoo 开发网站提供的Using Serialized PHP with ...
- POJ 2409 Let it Bead(Polya简单应用)
Let it Bead 大意:给你m种颜色,n个珠子串起来.旋转跟反转同样算同样,问有多少种不同的涂色组合方式. 思路:Polya的简单应用. /*************************** ...
- 简述 Python 类中的 __init__、__new__、__call__ 方法
任何事物都有一个从创建,被使用,再到消亡的过程,在程序语言面向对象编程模型中,对象也有相似的命运:创建.初始化.使用.垃圾回收,不同的阶段由不同的方法(角色)负责执行. 定义一个类时,大家用得最多的就 ...
- hdu 1022 Train Problem
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- try...except...后中断程序继续运行
今天遇到一个问题,本来是以前已经了解过的,但是忘了,现在又想起来了,还是记一下 try...except...当except抓到异常后程序会继续运行 但是个人感觉抓到异常后都是终止程序的吧...可能也 ...
- JackJson的一些方法
package cn.edu.hbcf.common.jackjson; import java.io.IOException; import java.text.SimpleDateFormat; ...
- find命令应用exec及xargs
find最普通的用法是查找文件,然后要对文件进行处理就需要用到参数-exec. 先看下manpage中介绍: -exec command ; Execute command; status is re ...