ROS学习1

准备开始
欢迎使用HandsFree机器人,本小节我们一步步来完成一个最基础的遥控测试的实验。

我们将介绍如何使用机器人端的工控机(或PC)对机器人进行遥控。通过这个测试,来验证工控机的Ubuntu ROS和HandsFree的开发环境是否配置正确、机器人嵌入式系统是否工作正常、机器人嵌入式系统层和PC端ROS层的通讯是否正常。

工控机环境配置和检查
安装ROS和HandsFree

如果购买了带工控机的HandsFree机器人套件,则系统环境都已经由官方配置完成了,请略过"安装ROS和HandsFree"这一步骤 !!!

官方安装环境:

  • 系统版本: ubuntu16.04.6
  • 用户名和密码都是: handsfree
  • ROS版本: ROS kinetic
    如果购买的是不带工控机的机器人套餐,用户需要使用自己的工控机或者笔记本,并且配置好Ubuntu ROS和HandsFre的开发环境。可以参考HandsFre提供的相关教程:

在笔记本或工控机上安装ubuntu操作系统
在windows上通过虚拟机安装ubuntu操作系统
配置ROS和HandsFree开发环境
HandsFree软件包子目录简单介绍:
handsfree_ros_ws 保存ROS相关应用程序,包括避障,导航、建图等上位机程序。是机器人、ROS开发学习的主要目录。
OpenRE 是机器人下位机固件程序,目前HandsFree教育系列的机器人使用的是STM32F1和F4单片机。一般研究者不需要改动机器人固件,基本上用不到这个目录的代码。
remote_assistance 是HandsFree的远程协助程序,运行该程序,HandsFree官方团队就可以远程支援你解决问题。
使用准备:
请确保用户目录下的”.bashrc”文件参数HANDSFREE_ROBOT_MODEL参数是你正在使用的机器人型号
请确保 “/home/handsfree/handsfree/handsfree_ros_ws/src/handsfree/rplidar_ros/launch/rplidar.launch”参数的雷达型号是你正在使用的雷达型号。

  <arg name="rplidar_type" default="A2" doc="model type [A1, A2, A3]"/>

HandsFree Mini系列机器人标配rplidar “A1”,Stone系列机器人标配rplidar “A2”, 也可以根据用户需求配置。

启动机器人
准备开始
确保机器人线路都连接正确,比如底盘的USB通讯接口连接到主机,激光雷达、摄像头等传感器已经接好。
连接无误后,我们将显示器和鼠标键盘等设备接入工控机上。
我们打开电源开关,会听到一声蜂鸣器鸣叫声。
打开工控机的电源开关,然后显示器就会出现官方配置好的系统系统。
启动机器人驱动节点
在工控机上打开一个终端,并运行:

roslaunch handsfree_hw handsfree_hw.launch  

正常情况下,会显示:
在这里插入图片描述

该条命令打开了机器人驱动节点,该节点的作用是完成PC与机器人底层的通讯和相关指令与数据传输。当这一步没有问题时,说明硬件方面正常,可以进行下一步了。

打开控制节点
打开一个新的终端 Shift+Ctrl+T:,并运行:

roslaunch handsfree_hw keyboard_teleop.launch
正常情况下,会显示:
在这里插入图片描述

该条命令打开键盘控制节点,按照终端中的提示,我们就可以利用键盘控制机器人运动。

把鼠标的光标点在控制节点的终端里
按下键盘”i”键,机器人前进,”j”键旋转等等。详细参考终端的操作提示。
如果一切正常的话,就可以用键盘控制移动底盘运动了,说明移动底盘的软硬件没有问题。

二、驱动测试
本节将介绍机器人驱动的测试,为了确保您手中机器人各个驱动在运送的过程中没有受到损坏。如果有问题,请及时联系我们。

注意:要关掉有进程正在运行的终端,请在该窗口使用 Ctrl+C 来中断程序,然后在关掉该窗口。即关掉进程关掉窗口

硬件介绍
IMU
IMU(英文Inertial measurement unit,简称 IMU)即惯性测量单元,是测量物体三轴姿态角及加速度的装置。一般的,一个IMU包含了三个单轴的加速度计和三个单轴的陀螺,加速度计检测物体在载体坐标系统独立三轴的加速度信号,而陀螺检测载体相对于导航坐标系的角速度信号,测量物体在三维空间中的角速度和加速度。

您可以理解为IMU可以物体的姿态和位置。它在我们机器人的导航中有着很重要作用。

Lidar
Lidar(指激光雷达)激光雷达,是以发射激光束探测目标的位置、速度等特征量的雷达系统。其工作原理是向目标发射探测信号(激光束),然后将接收到的从目标反射回来的信号(目标回波)与发射信号进行比较,作适当处理后,就可获得目标的有关信息,如目标距离、方位、高度、速度、姿态、甚至形状等参数,从而对一些物体目标进行探测、跟踪和识别。

它在我们机器人建图和导航中有着很重要作用。

rgbd_camera
rgbd_camera(RGB-D相机,也叫做深度相机) = 普通的RGB三通道彩色图像 + 深度图像

在3D计算机图形中,Depth Map(深度图)是包含与视点的场景对象的表面的距离有关的信息的图像或图像通道。其中,Depth Map 类似于灰度图像,只是它的每个像素值是传感器距离物体的实际距离。通常RGB图像和Depth图像是配准的,因而像素点之间具有一对一的对应关系。

云台
云台是安装、固定摄像机的支撑设备,它分为固定和电动云台两种。giraffe和stone是电动的云台,所以我们需要对其进行测试。

机器人硬件连接测试
在正式进行测试之前,我们先检测一下各种设备的连接,这里以HandsFree Stone机器人为例,打开终端依次运行:

lsusb
ls /dev/HFRobot
ls /dev/rplidar

终端显示如下:
在这里插入图片描述

发现两个CP210x UART BridgeUSB设备,其中一个是思岚激光雷达,并在操作系统层映射成/dev/rplidar ,另外一个是底盘运动控制板,并在操作系统层映射成/dev/HFRobot。底盘运动控制板上已经包含了IMU传感器。

另外还可以发现一个华硕的Xtion Pro深度摄像头设备ID 1d27:0601 ASUS。

如果以上测试出现问题,请检查机器人和各设备的连接是否正常,以及主机的HandsFree软件环境是否配置完整。然后再进行后面的测试。

IMU测试
Tips:上电之前请不要晃动机器人,否则在进行IMU测试时,可视化界面会出现模型不水平,或在不断旋转。

打开终端(Ctrl+Alt+T),输入下面的指令,启动我们的机器人

 roslaunch handsfree_hw handsfree_hw.launch

正常情况下,会显示:
在这里插入图片描述

打开第二个终端(Ctrl+Alt+T或Ctrl+Shift+T),输入下面的指令,打开rviz可视化界面

roslaunch handsfree_hw view_rviz.launch
正常情况下,会显示:

现在您晃动您的机器人,可以看到可视化界面的模型也会跟着晃动。

测试机器人的IMU 转动机器人,先尝试旋转180度,通过可视化界面查看模型是否跟着旋转了180度,然后再转动180度,让机器人旋转一圈,回到原来的位置。此时查看可视化界面中的模型是否回到了原来的位置,同样旋转了一圈。如果您实际旋转了180度,而可视化界面的模型旋转了360度,那么这个IMU就是有问题的。

tips1: 鼠标左键按下拖拽可以旋转视图,鼠标左键按下+Shift拖拽可以上下左右移动视图。

tips2: 如果画面显示陀螺仪不水平或在不断旋转,有可能是刚开始上电的时候晃动了机器人,请关闭所有程序,将机器人断电,然后重新上电,上电过程不要晃动机器人。

Lidar测试
HandsFree支持多种激光雷达,比如思岚的rplidar A1/A2/A3 , Hokuyo系列的雷达等。

打开新终端,输入下面的指令,打开激光节点

 roslaunch rplidar_ros rplidar.launch

正常情况下,会显示
在这里插入图片描述

打开新终端,通过可视化界面检查雷达是否正常

 roslaunch handsfree_hw view_rviz.launch

在这里插入图片描述

您可以通过可视化界面和机器人当前所处的真实环境进行对比,红线对应真实环境下的障碍物。

您可以在机器人周围摆放障碍物,来观察可视化界面信息改变的快慢,以检查雷达的实时性。

如果10秒后可视化界面才出现才变化,那么这台机器人雷达是有问题的。

rgbd_camera测试
HandsFree支持多种深度摄像头,包括Xtion Pro,奥比中光,Kinect等。

我们套餐中带有的是Xtion Pro, 将其连接到USB 2.0,打开终端,运行下面的指令

 roslaunch handsfree_camera view_xtion.launch

会打开rviz可视化界面,出现两个Camera框,上面的窗口将显示RGB图像,下面的窗口将显示深度图像。

您可以在镜头前晃动手掌,查看Camera框中图像的变化,来检测摄像头是否正常。

在这里插入图片描述
///以下为问题解决和其他款式机器人使用//
如果您的rviz可视化界面没有那两个摄像头的窗口,那么需要您手动添加,点击左下角的 Add按钮进行添加,会弹出一个小窗口,选中里面的Camera,然后点击ok就会添加成功.

添加成功后,需要进行设置,才能让Camera框显示图像,找到侧边栏的Camera点击使其展开,将Visiblity选框中的勾去掉,设置Image Topic的图像话题,一般我们选择的是/camera/rgb/image_raw或/camera/depth/image_raw

云台测试
打开终端(Ctrl+Alt+T),输入下面的指令,启动我们的机器人(若之前已打开,请忽略此步骤)

roslaunch handsfree_hw handsfree_hw.launch
打开第二个终端,依次输入以下指令来让云台来完成一些动作

云台仰视45度:

rostopic pub -1 /mobile_base/pitch_position_controller/command std_msgs/Float64 – 0.79
云台俯视45度:

rostopic pub -1 /mobile_base/pitch_position_controller/command std_msgs/Float64 – -0.79
云台pitch居中:

rostopic pub -1 /mobile_base/pitch_position_controller/command std_msgs/Float64 – 0
云台左转45度:

rostopic pub -1 /mobile_base/yaw_position_controller/command std_msgs/Float64 – 0.79
云台右转45度:

rostopic pub -1 /mobile_base/yaw_position_controller/command std_msgs/Float64 – -0.79
云台yaw居中:

rostopic pub -1 /mobile_base/yaw_position_controller/command std_msgs/Float64 – 0
正常情况下,云台会完成各个角度的旋转。

在这里插入图片描述

底盘驱动测试
运行程序,通过键盘遥控测试机器人的运动的能力,这部分可以参考教程遥控机器人

HandsFree机器人遥控,建图,自主导航综合视频教程。视频地址
五、雷达建图
本小节介绍使用激光雷达构建二维地图并保存地图到指定目录。构建的地图会用于后面的自主导航实验。

准备开始
确保机器人已经上电,急停开关打开
确保机器人主机安装连接好了激光雷达USB接口和底盘的USB通讯接口。
确保前几节教程的实验正常测试通过
确保正常关闭前面的教程运行的程序和终端。
详细步骤
1、打开终端,运行机器人驱动节点:

roslaunch handsfree_hw handsfree_hw.launch

2、打开新终端,运行对应型号的激光雷达驱动节点(HandsFree 默认使用思岚rplidar的雷达):

 roslaunch rplidar_ros rplidar.launch

3、打开新终端,运行gmapping建图算法

 roslaunch handsfree_2dnav gmapping.launch

正常终端会输出以下信息:

打开新终端,开启RVIZ可视化工具

 rosrun rviz rviz -d `rospack find handsfree_bringup`/rviz/gmapping.rviz

运行可视化节点,加载对应的rviz配置文件,显示地图:
配置地图
add–map,
topic中选择map

rviz文件也可以手动配置,选择rviz软件界面的file -> open config,手动选择handsfree/handsfre e_bringup/rviz/gmapping.rviz文件作为其配置文件。如果正常的话,可以在RVIZ中看到机器人模型及激光雷达扫描到的可视化数据,然后进行下一步打开键盘遥控节点建图。

打开新终端,运行遥控节点

roslaunch handsfree_hw keyboard_teleop.launch
利用键盘遥控机器人缓慢移动,RVIZ中显示的地图会逐渐补全,当你构建的地图范围满足需求时,就可以运行相关指令保存地图了。建议初学者建图的面积不要太大,两三百平米以内,先测试一下效果。

打开新终端,运行保存地图指令

先切换到想要保存地图的文件夹(建议保存在handsfree_2dnav/map中)

roscd handsfree_2dnav/map/
然后运行保存地图的节点:

rosrun map_server map_saver -f my_map
-f 后面跟的是地图保存的名字,my_map名字可以按照自己的需求更改

此命令将在handsfree_2dnav/map目录生成.pgm图片文件和.yaml配置文件。到此,建图过程完成。最终生成的地图:

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

位沁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值