一、安装配置运行的环境
参考前文:
【2022】Ubuntu18.04安装Gazebo9并与ROS连接(包括各种报错及解决方案)_QomolangmaH的博客-CSDN博客
https://blog.csdn.net/m0_63834988/article/details/132020603?spm=1001.2014.3001.5502
二、创建工作区域,下载源码包
1. 创建工作空间
先创建ros的工作区域racecar_ws
代码语言:javascript复制mkdir -p ~/racecar_ws/src
转换到工作区域目录
代码语言:javascript复制cd ~/racecar_ws/src
把当前目录初始化为一个ROS工作空间
代码语言:javascript复制catkin_init_workspace
它将在当前目录下创建一个名为src
的目录,并在其中创建一个CMakeLists.txt文件以及一个空的package.xml文件:
src
目录用于存放各个ROS软件包,- CMakeLists.txt文件用于配置工作空间的构建系统
- package.xml文件用于描述ROS软件包的元数据信息。
执行catkin_init_workspace
命令后,你可以在src
目录下开始创建ROS软件包,然后使用Catkin构建工具来构建和管理这些软件包。
2. 下载Gazebo搭建赛道功能包racecar
(这里使用的别人github上开源出来的代码)
代码语言:javascript复制git clone https://github.com/xmy0916/racecar.git
git访问不稳定,效果如下,需要多试几次
代码语言:javascript复制Cloning into 'racecar'...
fatal: unable to access 'https://github.com/xmy0916/racecar.git/': Failed to connect to github.com port 443: Connection refused
成功下载:
代码语言:javascript复制remote: Enumerating objects: 701, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (426/426), done.
remote: Total 701 (delta 252), reused 638 (delta 193), pack-reused 0
Receiving objects: 100% (701/701), 28.23 MiB | 962.00 KiB/s, done.
Resolving deltas: 100% (252/252), done.
下载完成后racecar功能包是这样的
三、安装本次运行需要的软件包
代码语言:javascript复制sudo apt-get install ros-melodic-driver-base
sudo apt-get install ros--melodic-gazebo-ros-control
sudo apt-get install ros--melodic-effort-controllers
sudo apt-get install ros--melodic-joint-state-controller
sudo apt-get install ros-melodic-ackermann-msgs
sudo apt-get install ros-melodic-global-planner
sudo apt-get install ros-melodic-teb-local-planner
(建议依次安装,不要一次性复制全部)
- 安装ROS Melodic中的driver-base软件包:提供了一些驱动程序接口和功能,用于与硬件设备的通信。
sudo apt-get install ros-melodic-driver-base
- 安装gazebo-ros-control软件包:提供了与Gazebo仿真环境的接口和控制器,以便在仿真中控制机器人或机器人模型。
sudo apt-get install ros-melodic-gazebo-ros-control
- 安装effort-controllers软件包:提供了一些控制器,用于控制机器人关节的力或扭矩。
sudo apt-get install ros-melodic-effort-controllers
- 安装joint-state-controller软件包:提供了一个控制器,用于发布机器人关节状态的消息。
sudo apt-get install ros-melodic-joint-state-controller
- 安装ackermann-msgs软件包:定义了用于Ackermann车模型的ROS消息类型。
sudo apt-get install ros-melodic-ackermann-msgs
- 安装global-planner软件包:提供了全局路径规划算法。
sudo apt-get install ros-melodic-global-planner
- 安装teb-local-planner软件包:提供了使用Teb局部路径规划器的局部路径规划功能。
sudo apt-get install ros-melodic-teb-local-planner
报错1
运行
代码语言:javascript复制sudo apt-get install ros--melodic-gazebo-ros-control
代码语言:javascript复制Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package ros—melodic-gazebo-ros-control
改错
代码语言:javascript复制sudo apt update
代码语言:javascript复制sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
- 将ROS软件包的APT存储库地址添加到
/etc/apt/sources.list.d/ros-latest.list
文件中。具体来说,这个命令会在文件中写入一行,指定了ROS软件包的APT存储库地址。 - 从指定的keyserver导入ROS软件包的秘钥。这个命令会向系统导入ROS软件包的秘钥,以确保软件包是由ROS官方发布的。
- 更新系统的软件包索引。
报错2
代码语言:javascript复制E: The repository 'http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu bionic Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
改错
这个错误的意思就是说这个仓库不维护了。所以我们删掉它即可。
代码语言:javascript复制sudo apt-add-repository -r ppa:jonathonf/vim
即从系统中删除名为"jonathonf/vim"的PPA存储库。
四、racecar功能包编译
代码语言:javascript复制cd ~/racecar_ws
catkin_make
报错
解决
搜索OpenCVConfig.cmake文件的路径
代码语言:javascript复制locate OpenCVConfig.cmake
进入相关目录编辑catkinConfig.cmake文件
代码语言:javascript复制sudo dedit catkinConfig.cmake
在find _package前面添加如下内容
代码语言:javascript复制set(OpenCV_DIR /usr/share/OpenCV)
更改后
代码语言:javascript复制mango@mango-virtual-machine:~/racecar_ws$ catkin_make
Base path: /home/hjx/racecar_ws
Source space: /home/hjx/racecar_ws/src
Build space: /home/hjx/racecar_ws/build
Devel space: /home/hjx/racecar_ws/devel
Install space: /home/hjx/racecar_ws/install
####
#### Running command: "make cmake_check_build_system" in "/home/hjx/racecar_ws/build"
####
####
#### Running command: "make -j1 -l1" in "/home/hjx/racecar_ws/build"
####
[ 5%] Built target serial
[ 8%] Built target serial_example
[ 8%] Built target _ackermann_msgs_generate_messages_check_deps_AckermannDriveStamped
[ 8%] Built target std_msgs_generate_messages_py
[ 8%] Built target _ackermann_msgs_generate_messages_check_deps_AckermannDrive
[ 12%] Built target ackermann_msgs_generate_messages_py
[ 12%] Built target std_msgs_generate_messages_lisp
五、启动仿真编译
代码语言:javascript复制echo "source ~/racecar_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
- 将
source ~/racecar_ws/devel/setup.bash
这一行命令追加到~/.bashrc
文件中。setup.bash
文件是ROS工作空间的配置文件,这个命令会确保每次启动终端时都会加载ROS工作空间。 - 重新加载
~/.bashrc
文件,以便终端会话可以访问ROS工作空间的配置。
启动gazebo,运行打开小车模型
代码语言:javascript复制roslaunch racecar_gazebo racecar.launch