笔者第一次接触Turtlebot的kobuki底盘,想进行键盘操作,在过程中也遇到了不少坑,在此记录一下,给大家借鉴借鉴。
直接进行连接,安装相应驱动,这步很简单,就不多说。
直接使用apt-get安装,不多说,ROS安装有很多教程,值得注意的就是ubuntu和ros版本需要对应匹配。
首先打开kobuki底盘电源,USB线连接cp机,确认绿灯亮起后输入命令。
> roscore
> roslaunch turtlebot_bringup minimal.launch
再打开另一个终端,输入
> roslaunch turtlebot_teleop keyboard_teleop.launch
如果你能一切顺利,那么恭喜你,你运气很好。但是如果你看到了这篇博客,那你可能就不是那么顺利的。
运行roslaunch turtlebot_bringup minimal.launch报错:
no file or directory:/opt/ros/kinetic/share/turtlebot_description/robotsroomba_hexagons_asus_xtion_pro.urdf.xacro
第一次运行这个,就报了这个错误,一开始愣是没想通问题所在。后面在/opt/ros/kinetic/share/turtlebot_bringup/launch/includes的description.launch.xml文件发现 $(find turtlebot_description)/robots/等等 一句出现问题,/robots后面的内容笔者忘记了,总之将这一句改为
'$(find turtlebot_description)/robots/kobuki_hexagons_asus_xtion_pro.urdf.xacro'
因为我用的是kobuki底盘,而kobuki_hexagons_asus_xtion_pro.urdf.xacro文件是针对kobuki底盘和asus-xtion-pro模型定义的,于是在这里强制改成了这个文件。
这个问题是因为要根据设置的环境变量初始化一些参数。在这里输入命令:
export TURTLEBOT_BASE=create
这个是因为找不到设备,驱动不对问题。解决方法是:
> roscd turtlebot_bringup
进入“turtlebot_bringup”,然后
> cd launch
找到minimal.launch文件复制一份,并将其命名为“my_minimal.launch”。使用编辑将其打开
> gedit my_minimal.launch
可以看到代码的第二行就是设置TurtleBot移动底座的类型,在代码中提供了“create,roomba”两种类型。但是我的是“kobuki”,我只在这里修改运行后报错(改为)。然后我就找这个参数最后传给了谁,发现只有两个文件用到这个参数:robot.launch.xml和mobile_base.launch.xml。直接将包含有mobile_base.launch.xml的代码修改为:
具体怎么改,继续往下看:
关闭当前文件,执行命令:
> cd includes
你就会发现mobile_base.launch.xml就在这里,打开mobile_base.launch.xml:
> cat mobile_base.launch.xml
查看源码,发现在第四行,我们传进来的base参数原来别加入到了路径当中。路径指的就是当前的路径,你执行“ls”命令后就会发现有create和roomba文件夹,同时你也会看见有kobuki文件夹,进入kobuki文件夹,你会发现有“mobile_base.launch.xml”文件,将这个文件复制一份,并命名为“my_mobile_base.launch.xml”,然后将
的注释去掉。要不然你用他的驱动底座后收不到“cmd_vel”话题下的消息。然后回退到上层目录,将mobile_base.launch.xml复制一份,并且命名为:“my_mobile_base.launch.xml”。然后打开它,直接将
修改为:
然后打开底座电源,链接好线,执行(注意使用的是my_minimal.launch):
> roscore
> roslaunch turtlebot_bringup my_minimal.launch
> roslaunch turtlebot_teleop keyboard_teleop.launch
好了,现在你应该可以根据keyboard_teleop.launch的提示控制你的kobuki底盘了。