一、运行环境
Ubuntu 20.04 Ros noetic
二、下载源码包
-
先创建ros的工作区域catkin_racecar
mkdir -p ~/catkin_racecar/src
-
并转换到工作区域目录,
-
cd ~/catkin_racecar/src
-
把当前目录初始化为一个ROS工作空间
-
catkin_init_workspace
-
开始下载Gazebo搭建赛道功能包racecar(这里使用的别人github上开源出来的代码)
1 | git clone https://github.com/xmy0916/racecar.git |
三、安装本次运行需要的控件
1 | sudo apt-get install ros-noetic-driver-base |
四、racecar功能包编译
1 | cd ~/catkin_racecar |
遇见的问题及解决办法
-
问题一
CMake Error at /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by “driver_base” with
any of the following names:driver_baseConfig.cmake
driver_base-config.cmake
Add the installation prefix of “driver_base” to CMAKE_PREFIX_PATH or set
“driver_base_DIR” to a directory containing one of the above files. If
“driver_base” provides a separate development package or SDK, be sure it
has been installed.
Call Stack (most recent call first):
racecar/system/hokuyo_node/CMakeLists.txt:13 (find_package)
– Configuring incomplete, errors occurred!
See also “/home/bcsf/catkin_racecar/build/CMakeFiles/CMakeOutput.log”.
See also “/home/bcsf/catkin_racecar/build/CMakeFiles/CMakeError.log”.
Invoking “cmake” failed
解决办法:
原因是确少driver_base功能包,安上它就好了
sudo apt-get install ros-noetic-driver-base
-
问题二
CMake Error at /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by “OpenCV” with any
of the following names:OpenCVConfig.cmake
opencv-config.cmake
Add the installation prefix of “OpenCV” to CMAKE_PREFIX_PATH or set
“OpenCV_DIR” to a directory containing one of the above files. If “OpenCV”
provides a separate development package or SDK, be sure it has been
installed.
Call Stack (most recent call first):
racecar/racecar_gazebo/CMakeLists.txt:8 (find_package)
– Configuring incomplete, errors occurred!
See also “/home/bcsf/catkin_racecar/build/CMakeFiles/CMakeOutput.log”.
See also “/home/bcsf/catkin_racecar/build/CMakeFiles/CMakeError.log”.
Invoking “cmake” failed
解决办法:
首先使用指令搜索OpenCVConfig.cmake文件的路径:
locate OpenCVConfig.cmake
得到
/usr/lib/x86_64-linux-gnu/cmake/opencv4/OpenCVConfig.cmake
在racecar中把racecar/racecar_gazebo/CMakeLists.txt:中的
set(OpenCV_DIR /opt/ros/kinetic/share/OpenCV-3.3.1-dev/)改成
set(OpenCV_DIR /usr/lib/x86_64-linux-gnu/cmake/opencv4/)
-
问题三
/home/bcsf/catkin_racecar/src/racecar/racecar_gazebo/src/findLine.cpp:7:10: fatal e
rror: ackermann_msgs/AckermannDrive.h: 没有那个文件或目录
#include “ackermann_msgs/AckermannDrive.h”
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
racecar/racecar_gazebo/CMakeFiles/findLine.dir/build.make:62: recipe for target
‘racecar/racecar_gazebo/CMakeFiles/findLine.dir/src/findLine.cpp.o’ failed
make[2]: *** [racecar/racecar_gazebo/CMakeFiles/findLine.dir/src/findLine.cpp.o]
Error 1
CMakeFiles/Makefile2:4559: recipe for target ‘racecar/racecar_gazebo/CMakeFiles/
findLine.dir/all’ failed
make[1]: *** [racecar/racecar_gazebo/CMakeFiles/findLine.dir/all] Error 2
Makefile:140: recipe for target ‘all’ failed
make: *** [all] Error 2
Invoking “make -j1 -l1” failed
解决办法:
这主要是缺少相关的包导致的,安装就可以了
1 | sudo apt-get install ros-noetic-ackermann-msgs |
问题四:
findLine.cpp:10:10: fatal error: opencv/highgui.h: No such file or directory
解决办法:
在根目录下搜索 highgui.h,发现OpenCV4中没有 highgui.h。将OpenCV3中 的opencv/highgui.h文件拷贝到/usr/include/opencv4/opencv2下。
所以将源程序中 #include <opencv/highgui.h>修改为:#include <opencv2/highgui.h>
问题五:
运行python文件时出现
/usr/bin/env: ‘python’: No such file or directory
解决办法:
将python 改为 python3
ubuntu20.04的环境与低版本的环境有一些区别,所以在配置时注意一下就好啦。
运行时的问题:
仿真模型加载不出来:
解决办法:
将模型和世界文件分别拷入/usr/share/gazebo-11/models和/usr/share/gazebo-11/worlds文件夹。