【2022】Ubuntu18.04下利用Gazebo搭建赛道完成ROS机器人定位导航仿真【智能车】

2024-07-30 08:17:21 浏览数 (2)

一、安装配置运行的环境

参考前文:

【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软件包:提供了一些驱动程序接口和功能,用于与硬件设备的通信。
代码语言:javascript复制
sudo apt-get install ros-melodic-driver-base
  • 安装gazebo-ros-control软件包:提供了与Gazebo仿真环境的接口和控制器,以便在仿真中控制机器人或机器人模型。
代码语言:javascript复制
sudo apt-get install ros-melodic-gazebo-ros-control
  • 安装effort-controllers软件包:提供了一些控制器,用于控制机器人关节的力或扭矩。
代码语言:javascript复制
sudo apt-get install ros-melodic-effort-controllers
  • 安装joint-state-controller软件包:提供了一个控制器,用于发布机器人关节状态的消息。
代码语言:javascript复制
sudo apt-get install ros-melodic-joint-state-controller
  • 安装ackermann-msgs软件包:定义了用于Ackermann车模型的ROS消息类型。
代码语言:javascript复制
sudo apt-get install ros-melodic-ackermann-msgs
  • 安装global-planner软件包:提供了全局路径规划算法。
代码语言:javascript复制
sudo apt-get install ros-melodic-global-planner
  • 安装teb-local-planner软件包:提供了使用Teb局部路径规划器的局部路径规划功能。
代码语言:javascript复制
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
  1. 将ROS软件包的APT存储库地址添加到/etc/apt/sources.list.d/ros-latest.list文件中。具体来说,这个命令会在文件中写入一行,指定了ROS软件包的APT存储库地址。
  2. 从指定的keyserver导入ROS软件包的秘钥。这个命令会向系统导入ROS软件包的秘钥,以确保软件包是由ROS官方发布的。
  3. 更新系统的软件包索引。

报错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
  1. source ~/racecar_ws/devel/setup.bash这一行命令追加到~/.bashrc文件中。setup.bash文件是ROS工作空间的配置文件,这个命令会确保每次启动终端时都会加载ROS工作空间。
  2. 重新加载~/.bashrc文件,以便终端会话可以访问ROS工作空间的配置。

启动gazebo,运行打开小车模型

代码语言:javascript复制
roslaunch racecar_gazebo racecar.launch

0 人点赞