ROS编译流程及其错误排查

首先建立一个新的工作空间(文件夹) eg:  ros_ws  该文件夹中有

在 ros_ws 文件夹中打开终端,输入 catkin_make 可以对 src 文件夹进行编译,并不是在src文件夹下,而是在 ros_ws 文件夹下

例如下面在turtlebot3_test_ws:

image

图1:编译示例

如果出现gazebo没有安装成功的情况,如图2,可以通过以下命令重新安装gazebo

image

图2:错误类型

1
2
sudo apt-get install ros-melodic-gazebo-      ##在Linux终端中输入此命令,能够看到有什么附带的指令,下面这句是直接进行相应的安装
sudo apt-get install ros-melodic-gazebo-ros
1
sudo apt-get install ros-melodic-gazebo*   #

以turtlebot3_test_ws文件为例,进行相关的学习:

1、首先在turtlebot3_test_ws文件夹中打开终端,运行catkin_make进行编译,再输入如下代码:

1
source devel/setup.bash

2、启动gazebo和相关地图

1
2
roslaunch turtlebot3_gazebo turtlebot3_  #该命令能够看到turtlebot3对应的有哪些相应的launch文件
roslaunch turtlebot3_gazebo turtlebot3_world.launch # 启动对应的launch文件

在~/.bashrc文件最后加入如下:

1
export TURTLEBOT3_MODEL=burger   #对TURTLEBOT3_MODEL进行设置

然后重新开启终端,在终端中输入以下命令:

1
2
source ~/turtlebot3_test_ws/devel/setup.bash   #
roslaunch turtlebot3_gazebo turtlebot3_world.launch # 启动对应的launch文件

如果出现错误,检查相应的安装包是否完整,通过以下命令重新安装一下。

1
2
sudo apt-get update
sudo apt-get install ros-melodic-gmapping

运行以下代码可以看到 tf 相关的框架图

1
rosrun tf view_frames

运行以下launch文件运行gazebo

1
2
source ~/turtlebot3_test_ws/devel/setup.bash   #
roslaunch turtlebot3_gazebo turtlebot3_world.launch #运行gazebo

新建一个终端,运行以下代码

1
2
source ~/turtlebot3_test_ws/devel/setup.bash
roslaunch turtlebot3_slam turtlebot3_slam.launch map_file:=gmapping #启动slam建图扫描节点

新建一个终端,运行以下代码,可以对机器人进行移动,完成地图扫描

1
2
source ~/turtlebot3_test_ws/devel/setup.bash
roslaunch turtlebot3_teleop turtlebot_teleop_key.launch

运行以下命令,进行地图保存

1
rosrun map_server map_saver -f ~/world

通过以下命令启动路径规划算法

1
rosluanch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/world.yaml

image

第一:设置环境变量

1)在主目录下

2)使用  ctrl+h  打开隐藏文件  .bashrc文件

3)打开  .bashrc文件,并且在里面文件的最下面写入环境变量

实际写入变量:source ~/turtlebot3_test_ws(实际的工程文件名字)/devel/setup.bash

第二:编译src文件

1)注意应在src的目录下编译

第二:启动gazebo仿真环境

1)编译成功后,启动仿真环境

2)仿真环境启动成果如图

第三:启动gmapping

1)输入启动gmapping命令

2)启动gmapping成功

3)在建图完成后,加载map_sever,保存地图 map_gmapping为保存的地图名

第四:加载第三步地图进行导航

加载的地图名字为第3步的 map_gmapping.yaml  这是一个yaml格式的地图描述文件