最近在开始学习机械人相关的知识,首当其冲就是ros的学习以及相关软件的安装。

在ros上,用的最广泛的仿真平台Gazebo是不直接支持ARM64架构的,由此,是没办法通过sudo apt-get install 的方式进行安装。只能退而求其次,选择自己手动编译的方式进行安装。

安装编译依赖项

首先安装编译所必须的依赖项:

sudo apt-add-repository ppa:dartsim
sudo apt update
sudo apt install libdart-dev libdart-utils-dev libdart-external-ikfast-dev libsdformat9-dev libfreeimage-dev libprotoc-dev libprotobuf-dev protobuf-compiler freeglut3-dev libcurl4-openssl-dev libtinyxml-dev libtinyxml2-dev libtar-dev libtbb-dev libogre-1.9-dev libxml2-dev pkg-config qtbase5-dev libqwt-qt5-dev libltdl-dev libgts-dev libboost-thread-dev libboost-system-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev libboost-iostreams-dev libsimbody-dev libignition-common3-dev libignition-fuel-tools4-dev libignition-transport8-dev libignition-math6-dev libignition-msgs5-dev

安装Gazebo

进入个人文件夹下,然后从GitHub上拉取Gazebo源代码:

cd ~
git clone https://github.com/osrf/gazebo

进入gazebocmake 文件夹,找到SearchForStuff.cmake 文件,找到647行的set(SDF_MIN_REQUIRED_VERSION 9.8) ,将9.8修改为9.7然后保存。

修改完成以后,在gazebo文件夹下创建build文件夹,开始进行编译,编译完成后安装Gazebo:

cd ~/gazebo
mkdir build && cd build 
cmake ../ 
make -j3
sudo make install

最后通过修改.bashrc文件,使用以下代码,将Gazebo添加到环境路径中:

echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
echo 'export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH' >> ~/.bashrc

添加到环境路径中以后source一下,然后就可以通过gazebo命令运行了。

source ~/.bashrc
gazebo

安装gazebo_ros_pkgs

和安装Gazebo一样,先从Github上把gazebo_ros_pkgs的源码拉下来,然后进入gazebo_ros_pkgs文件夹后,将git的分支切换到ROS2上。

git clone https://github.com/ros-simulation/gazebo_ros_pkgs 
cd gazebo_ros_pkgs 
git checkout ros2

安装gazebo_ros_pkgs,等到ROS2编译安装完成。

export MAKEFLAGS="-j 3"
colcon build

安装完成后,使用以下代码,将gazebo_ros_pkgs路径添加到环境文件中,并引用一下,确保环境已更新。

echo 'source ~/gazebo_ros_pkgs/install/setup.bash' >> ~/.bashrc
source ~/.bashrc

到此为止,Gazebo和gazebo_ros_pkgs都已经成功安装。

使用ROS2命令测试Gazebo

输入以下命令,使用ROS2的launch命令测试一下,是否能正常调用Gazebo。

ros2 launch gazebo_ros gazebo.launch.py

如成功运行,则至此,就可以在Ubuntu22.04中使用ROS2和Gazebo进行测试了。