依赖安装
sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python3-pip gawk
pip3 install pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml
pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse
ROS安装
参考这个:cn/noetic/Installation/Ubuntu - ROS Wiki
1.1配置ubuntu软件仓库
配置你的Ubuntu软件仓库(repositories)以允许使用“restricted”“universe”和“multiverse”存储库
1.2设置source.list
设置电脑以安装来自packages.ros.org的软件
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
若下载速度缓慢,推荐就近选择一个镜像源替换上面的命令。例如,Tsinghua University为:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
1.3设置密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
1.4开始安装
首先,确保你的Debian软件包索引是最新的:
sudo apt update
完整桌面版安装(Desktop-Full,推荐):除了桌面版的全部组件外,还包括2D/3D模拟器(simulator)和2D/3D 感知包(perception package)
sudo apt install ros-noetic-desktop-full
1.5设置环境
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
至此,ROS安装完毕。
如果之前没有catkin_ws,则需要新建工作空间,之后除去PX4仿真环境启动外,其余ROS相关工程在此工作空间下管理。
mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts
cd catkin_ws && catkin init #使用catkin_make话,则为cd catkin_ws/src && catkin_init_workspace
catkin build #使用catkin_make话,则为 cd .. && catkin_make
使用catkin build前,先需要先装catkin-tools,命令为
sudo apt install python3-catkin-tools
Gazebo安装
Gazebo包括Gazebo本身和ROS的插件,需要分别安装。首先卸载之前的Gazebo
sudo apt-get remove gazebo*
sudo apt-get remove libgazebo*
sudo apt-get remove ros-noetic-gazebo* #kinetic melodic对应修改
然后就是安装
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
你可以通过输入以下命令来检验是否成功
cat /etc/apt/sources.list.d/gazebo-stable.list
如果显示以下内容,则表明成功
deb http://packages.osrfoundation.org/gazebo/ubuntu-stable bionic main
#bionic为ubuntu的版本号
setup keys
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
更新软件库
sudo apt-get update
安装
sudo apt-get install gazebo11
sudo apt-get install libgazebo11-dev
按步骤安装完Gazebo后,升级所有的包,以保证gazebo所有依赖版本一致
sudo apt upgrade
对Gazebo的ROS插件做了修改,因此需要源码编译。首先装依赖
sudo apt-get install ros-noetic-moveit-msgs ros-noetic-object-recognition-msgs ros-noetic-octomap-msgs ros-noetic-camera-info-manager ros-noetic-control-toolbox ros-noetic-polled-camera ros-noetic-controller-manager ros-noetic-transmission-interface ros-noetic-joint-limits-interface
#不同ROS版本请对应修改
然后克隆并编译Gazebo的插件gazebo_ros_pkgs,放在~/catkin_ws/src
下(如果编译时还缺其他的依赖,同上方法安装)
cd ~/catkin_ws/src
git clone -b noetic-devel https://github.com/ros-simulation/gazebo_ros_pkgs.git
cd ~/catkin_ws
catkin build
编译成功后执行如下两条指令,判断gazebo_ros是否安装成功
roscore
Ctrl+Alt+T新建一个终端,执行如下命令
source ~/catkin_ws/devel/setup.bash
rosrun gazebo_ros gazebo
MAVROS安装
sudo apt install ros-noetic-mavros ros-noetic-mavros-extras #for ros-noetic
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步需要装一段时间
PX4配置
git clone https://github.com/PX4/PX4-Autopilot.git
mv PX4-Autopilot PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.13.2
git submodule update --init --recursive
make px4_sitl_default gazebo
修改 ~/.bashrc,加入以下代码,注意路径匹配,前两个source顺序不能颠倒。
vim ~/.bashrc
source ~/catkin_ws/devel/setup.bash
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo
source ~/.bashrc
然后运行如下命令,此时会启动Gazebo
cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch
并运行
rostopic echo /mavros/state
若connected: True,则说明MAVROS与SITL通信成功。如果是false,一般是因为.bashrc里的路径写的不对,请仔细检查。
然后需要安装地面站QGroundControl,点此安装链接
XTDrone源码下载
git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
git checkout 1_13_2
git submodule update --init --recursive
# 修改启动脚本文件
cp sitl_config/init.d-posix/* ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
# 添加launch文件
cp -r sitl_config/launch/* ~/PX4_Firmware/launch/
# 添加世界文件
cp sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
# 修改部分插件
cp sitl_config/gazebo_plugin/gimbal_controller/gazebo_gimbal_controller_plugin.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src
cp sitl_config/gazebo_plugin/gimbal_controller/gazebo_gimbal_controller_plugin.hh ~/PX4_Firmware/Tools/sitl_gazebo/include
cp sitl_config/gazebo_plugin/wind_plugin/gazebo_ros_wind_plugin_xtdrone.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src
cp sitl_config/gazebo_plugin/wind_plugin/gazebo_ros_wind_plugin_xtdrone.h ~/PX4_Firmware/Tools/sitl_gazebo/include
# 修改CMakeLists.txt
cp sitl_config/CMakeLists.txt ~/PX4_Firmware/Tools/sitl_gazebo
# 修改部分模型文件
cp -r sitl_config/models/* ~/PX4_Firmware/Tools/sitl_gazebo/models/
# 替换同名文件
cd ~/.gazebo/models/
rm -r stereo_camera/ 3d_lidar/ 3d_gpu_lidar/ hokuyo_lidar/
重新编译PX4固件
cd ~/PX4_Firmware
make px4_sitl_default gazebo
用键盘控制无人机飞行
cd ~/PX4_Firmware
roslaunch px4 indoor1.launch
cd ~/XTDrone/communication/
python3 multirotor_communication.py iris 0
cd ~/XTDrone/control/keyboard
python3 multirotor_keyboard_control.py iris 1 vel