小强ROS机器人教程(10)_使用kinect进行自主移动避障
本教程适用于2016年9月20号之后购买且带kinect版的用户,对于其它用户,请联系、咨询技术支持
先看最后效果图, 演示视频
原理
freenct_stack
包提供kinect驱动,其发布的点云通过image_pipeline
转换成障碍物栅格分布图。nav_test
软件包启动底盘导航程序后会自动处理分析障碍物分布图,之后根据rivz发布的目标导航点自主移动。
操作步骤
注意在插入kinect的时候先插入在小强主机上插入kinect usb接口。等待kinect灯亮再插入kinect供电口。否则可能会烧毁主机和kinect
1.配置小车主机和本地虚拟机的hosts文件,使两者能互相访问对应的ros数据
1.a 配置本地虚拟机
sudo gedit /etc/hosts
将下图中的ip地址换成小车实际数值
1.b 配置小车主机
# 局域网ssh登入小车主机
ssh xiaoqiang@192.168.0.101 -X
sudo gedit /etc/hosts
将下图中的ip地址换成本地虚拟机实际数值,主机名称改为虚拟机名称
2.在本地虚拟机中新开3个窗口,分别ssh登入小车,启动原理部分提及的相关软件包
2.a ssh登入
2.b 在第一个窗口启动kinect驱动
对于kinect一代
roslaunch freenect_launch kinect-xyz.launch
对于kinect二代
roslaunch kinect2_bridge kinect2-xyz.launch
对于奥比中光astrapro
roslaunch astra_launch astrapro.launch
对于intel RealDense D400系列
roslaunch realsense2_camera rs_camera_xiaoqiang.launch
2.c 在第二个窗口设置kinect俯仰角,这个角度不是任意的
对于kinect一代
rostopic pub /set_tilt_degree std_msgs/Int16 '{data: -19}' -1
对于kinect二代
因为kinect二代没有俯仰角电机,因此请手动把kinect掰到最大俯角位置
对于奥比中光astrapro
因为astrapro没有俯仰角电机,因此请手动把astrapro掰到最大俯角位置
对于intel RealDense D400系列
因为RealDense D400系列没有俯仰角电机,配带的支架已经预设好角度,因此不用任何操作。
2.d 编辑底盘导航程序配置文件/home/xiaoqiang/Documents/ros/src/nav_test/config/fake/base_local_planner_params2.yaml ,使能kinect
2.e 在第三个窗口启动底盘导航程序
roslaunch nav_test fake_move_base_blank_map.launch
2.f 全部正常,会出现类似下图的界面,到此小车端配置启动完成
3.在本地虚拟机中新开1个窗口,用来启动rviz
3.a 加入ros局域网后,打开rviz
export ROS_MASTER_URI=http://xiaoqiang-desktop:11311
rviz
注意如果小强的模型无法显示,要在本地安装小强的模型包 xiaoqiang_udrf
3.b 点击rviz界面左上角的open config,选择小车主机上的/home/xiaoqiang/Documents/ros/src/nav_test/config/nav_addwa_kinect.rviz配置文件
3.c 正常的话,现在rviz中将出现类似下图的画面,现在所有配置都已经完成,开始发布导航目标点
3.d 任意发布一个目标点,小车会开始自主移动
3.e 小车到达目标点,请继续尝试其它位置,本教程结束
请将kinect数据线插入小车主机蓝色usb3.0端口,才能保证驱动的正常工作。型号为1473的kinect用户请先看教程(9)中的准备办法,在成功发布角度之后(kinect低头)需要关闭这个角度发布命令,不关闭会导致kinect深度点云数据没有输出。
如果小强一直后退,rviz中可以看到小车前面有一块黑色区域,黑色区域一直跟随小车移动。这种情况说明kinect安装或者kienct低头角度没有到位,请检查kinect安装支架、去除kienct贴膜后重新执行教程中的指令
注意此处避障时的建图由于没有使用map_server,所以并不能保存出来。如果想要建立地图需要用其他的算法。
常见问题
Q: 地图能够显示,小车也能够遥控,但是通过rviz向小车发布目标点,小车并不移动
A: 一般这个问题是网络设置问题。这个教程需要小强和本地机器相互设置hosts记录,并且能够相互访问。在设置好ip记录之后可以分别在小强和本地电脑上ping对方看看是否能ping通。
如在本地电脑上执行
ping xiaoqiang-desktop
在小强上执行
ping ubuntu # 这里假设本地计算机名为ubuntu
如果无法ping通就要检查网络设置是否正确。