最近使用ROS的时候,有个大佬给我推荐了ClearPath公司的Husky机器人的GPS路径跟踪包,具体内容我还没开始看,现在只是光想运行一下demo。
https://www.clearpathrobotics.com/assets/guides/husky/HuskyGPSWaypointNav
()
安装demo
首先我们按照官网的教程安装好demo,我的ubuntu是16.04的,不确定melodic的ROS能否使用,但是能够确定的是indigo到kinetic版本的ROS可以安装使用。
1.我们需要先安装好需要的依赖
(把indigo
替换为你对应的ROS版本)
sudo apt-get install ros-indigo-gazebo-*
sudo apt-get install ros-indigo-husky-*
sudo apt-get install ros-indigo-robot-localization
sudo apt-get install ros-indigo-move-base
2.下载husky的程序包
cd ~/catkin_ws/src
git clone https://github.com/nickcharron/waypoint_nav.git
3.编译
cd ..
catkin_make
以上三步我没有出现任何问题,很开心,这个公司的开源代码是能够直接编译通过的
4.运行demo
官网上的tutorial告诉我们要先跑一次simulation,仿真用了gazebo和rviz相结合,这里提醒,最好不要
使用虚拟机
运行gazebo。
但是我在这里就是用了虚拟机,我就来讲一讲遇到的问题。
首先,运行
roslaunch outdoor_waypoint_nav outdoor_waypoint_nav_sim.launch
然后我们就会看到这样的错误:
(虽然我第一次遇到的错误不是这个,但是后来由于莫名其妙的原因解决了,也无法还原了,我第一次遇到了一个参数为空’'的问题)
关键信息是这一条Undefined substitution argument urdf_extras None
,这是由于husky.urdf.xacro
这个文件缺少参数导致的
我们发现启动所有robot_description
相关的内容都写在spawn_husky.launch
里,所以去修改这个文件,查了很多资料发现只需要在如图位置中加入--inorder
即可解决问题(我不知道原因)
完事之后再次运行,你可能会看到如下报错:
关键问题是这一条:unknown macro name: xacro:husky_robot None None
无意义的宏定义
经过我的排查,发现在custom_description.urdf.xacro
文件中,有一句莫名其妙的对于husky_robot
的定义,我无法理解这一句的作用,于是把他删除了
<xacro:husky_robot />
这一条残缺的定义导致demo无法运行,删除这一句。
再次运行,我们发现已经可以跑通了,虽然还是有一点问题
我们可以看到关于gazebo的运动插件的问题GazeboRosControlPlugin missing <legacyModeNS> while using DefaultRobotHWSim, defaults to true.
当然它已经直接给出了解决方法
具体方法,我们也可以参考这一片博文https://blog.csdn.net/reset_ost/article/details/94994202
接下来,我又找到了custom_description.gazebo.xacro
文件,发现其中也有一个运动插件以及一个无意义的宏定义,于是决定删除它
5.针对虚拟机的优化
虚拟机出现的问题主要还是内存和CPU顶不住
Segmentation Fault
就是虚拟机导致的问题的专属标志,具体的解决方法可以参考这两片博文:
Segmentation Fault错误原因总结
虚拟机运行Gazebo问题修复
以上问题 可能 一定并非全部问题,我还有一个没有PID参数的问题没有解决,如果大家还遇到什么问题可以一起交流讨论