目标

    在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.yamlz_voxels: 2publish_voxel_map: falseobservation_sources:  scan bump  hokuyo   #增加了一个障碍扫描源hokuyoscan:data_type: LaserScantopic: scanmarking: trueclearing: truemin_obstacle_height: 0.25max_obstacle_height: 0.35bump:data_type: PointCloud2topic: mobile_base/sensors/bumper_pointcloudmarking: trueclearing: falsemin_obstacle_height: 0.0max_obstacle_height: 0.15hokuyo:                        #增加的hokuyo的参数data_type:LaserScantopic:scanmarking:trueclearing:truemin_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)相关推荐

  1. 学习使用turtlebot2——调试Hokuyo激光雷达(型号UST-10LX)

    目标 在ROS上调试使用Hokuyo激光雷达传感器 配置情况     电脑使用Ubuntu 14.04版本,ROS为 Indigo,激光雷达为Hokuyo(型号UST-10LX,网口型接口)   如果 ...

  2. 深度学习框架(Pytorch)+ 机器人(ROS):ROS melodic 上安装 Turtlebot2 —> 安装 hokuyo 激光雷达 —> Python 3 的虚拟环境中调用 ROS 填坑记录

    复现论文需要ubuntu+ros+turtlebot2+hokuyo的配置,这里有一个关于turtlebot的教程: Learn TurtleBot and ROS 关于 turtlebot 的各种软 ...

  3. 设备连接:Ubuntu16.04 ROS中连接Hokuyo激光雷达UTM-30LX-EW

    这次连接的设备如下:(以下是一步步的设备连接到采集数据的介绍,没法再详细了吧)      -----第一步:连接硬件---- 首先雷达需要的供电电压是12V,PC需要的供电电压是24V.所以本次连接是 ...

  4. 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

    <繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...

  5. Git学习系列之Windows上安装Git之后的一些配置(图文详解)

    不多说,直接上干货! 前面博客 Git学习系列之Windows上安装Git详细步骤(图文详解) 第一次使用Git时,需要对Git进行一些配置,以方便使用Git. 不过,这种配置工作只需要进行一次便可, ...

  6. 想知道深度学习卷积在GPU上如何优化吗?“大神”赵开勇带你深入浅出

    想知道深度学习卷积在GPU上如何优化吗?"大神"赵开勇带你深入浅出 2016-08-19 11:54 转载 陈杨英杰 0条评论 雷锋网(搜索"雷锋网"公众号关注 ...

  7. MVC 学习日志1(上)

    MVC 学习日志1(上) 2012.7.5 开始学习MVC,本以为这个框架多难学,学下来的感受是其实也就是编写格式而已,和普通的webform有质的区别.顿时理解那句老话,世上无难事,只怕有心人.只要 ...

  8. 深度学习在处理视频上几种主要技术方法

    深度学习在视频内容表达上主要的几种技术方法. 参考:https://yq.aliyun.com/articles/39134 这里只做简要总结,具体请参考原文章 1. 基于单帧的识别方法 一种最直接的 ...

  9. 深度学习:在图像上找到手势_使用深度学习的人类情绪和手势检测器:第2部分

    深度学习:在图像上找到手势 情感手势检测 (Emotion Gesture Detection) Hello everyone! Welcome back to the part-2 of human ...

最新文章

  1. 手画:mvc三层框架生图
  2. 以前,第二周周考总结
  3. MOSS点滴(1):如何开发和部署feature
  4. 一周学会Mootools 1.4中文教程:(7)汇总收尾
  5. Educational Codeforces Round 108 (Rated for Div. 2) D. Maximum Sum of Products 思维 + dp
  6. pdh光端机的优点介绍
  7. python提速qq邮箱邮件_python3通过qq邮箱发送邮件
  8. 红橙Darren视频笔记 贝塞尔曲线实现消息拖拽粘性效果 画笔练习
  9. 面试题 04.08. 首个共同祖先
  10. 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三2-转
  11. java-环境变量的配置
  12. windows下bat批处理实现守护进程
  13. 发布文章自动上传图片并生成水印
  14. OSG 实现跟随节点的相机(转)
  15. 手把手教你MacOS如何安装SVN
  16. Unity WebView 插件 | 浏览器插件3D WebView 专栏介绍
  17. 用拉普拉斯变换求零状态响应_【解析几何】椭圆的仿射变换(伸缩变换)
  18. iOS中根据网络环境显示不同图片
  19. Python系列01|可视化生成200个优惠券呀~
  20. 浅谈一下个人基于IRIS后端业务开发框架的理解

热门文章

  1. 【Python】ItChat 微信控制包
  2. SQL增删改查,循环,触发器,存储过程,以及sql语法
  3. 启动阿里低代码平台报错 error in ./node_modules/@alifd/next/es/grid/main.scss
  4. 大学期末搜题公众号推荐
  5. js实现div转图片并保存
  6. java pppoe_Linux下pppoe设置
  7. 获取Bitmap的几种方式总结
  8. docker命令之 docker commit
  9. Python机器学习实战与kaggle实战
  10. Struts2的配置 struts.xml Action详解