官方推荐ubuntu18.04的对应ROS和gazebo版本为ROS Melodic 和 gazebo9
官方指导:
ROS安装:http://wiki.ros.org/Installation/Ubuntu
gazebo安装:http://gazebosim.org/tutorials?tut=ros_installing&cat=connect_ros#InstallGazebo
PX4安装:https://docs.px4.io/master/en/dev_setup/dev_env_linux_ubuntu.html
主要根据官方推荐和流程走,根据国内环境和安装环境进行微调.
PS:建议一开始直接用PX4安装指导里的ubuntu_sim_ros_melodic.sh一条龙自动安装,由于我先装了ros和gazebo所以没用这个。
————————————
更新:在双系统而非虚拟机用bash ubuntu_sim_ros_melodic.sh
安装ros+gazebo成功,需要提前换源
再安装其他全套仿真器:
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
过程没有什么问题,除了国内-国外网络问题
——————————————
逐步手动安装:
ROS Melodic
添加源
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-get update
设置密钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
安装
sudo apt-get install ros-melodic-desktop-full
设置环境
source /opt/ros/melodic/setup.bash
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
安装依赖
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
初始化ros系统
sudo rosdep init
rosdep update
因为网络下载不了文件报错则按https://zhuanlan.zhihu.com/p/397966333在本地手动操作
创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
echo $ROS_PACKAGE_PATH
测试
在三个终端分别运行
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
如果出现小乌龟并且能控制就ok了。注意前面装的是full才有小乌龟,basic没有
gazebo
注意安装ROS Melodic已经自带了gazebo9,所以不需要手动安一遍再安装连接的pkgs那么费劲了,可以测试一下是否已经有gazebo以及版本
gazebo
gazebo --version
运行gazebo肯定会报错,如果报一个关于ignitionrobotics.org链接的错则
gedit ~/.ignition/fuel/config.yaml
把网址替换为fuel.ignitionrobotics.org。
再报vmw_ioctl_command error Invalid argument无效参数的错误,则是因为在vmware里面运行的原因,则
export SVGA_VGPU10=0
echo "export SVGA_VGPU10=0" >> ~/.profile
(此方法也为官方推荐设置,在安装PX4时在bash里发现的,放心用)
测试
在两个终端分别运行
roscore
rosrun gazebo_ros gazebo
PX4
官方安装script有两个,因为已经安装了ROS所以用第一种,但该sh会安装gazebo9,由于之前已经安装了所以使用命令时添加不安装simtool选项。第二个脚本好像可以自动安装PX4, ROS, the Gazebo simulator, and MAVROS,但我一步步安装下来了所以没用这个。
安装包
下载包时会出现子模块未注册到路径,就是下载不下来,解决国内国外网络问题即可,参考
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --no-sim-tools
装完重启
mavros
官方指导https://docs.px4.io/master/en/ros/mavros_installation.html
官方建议用源码安装,但二进制方便
二进制:
sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras
安装GeographicLib datasets
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo bash ./install_geographiclib_datasets.sh
测试
所有都装好后测试px4和gazebo模拟器,最终测试才是火葬场
cd /path/to/PX4-Autopilot
make px4_sitl gazebo
一开始失败了,没报什么错,但是说等待模拟器连接端口,界面出不来,于是直接重新
./PX4-Autopilot/Tools/setup/ubuntu.sh
期间还发现gazebo突然跑不起来(之前刚装完是可以的),报错
gazebo: symbol lookup error: /usr/lib/x86_64-linux-gnu/libgazebo_common.so.9: undefined symbol: _ZN8ignition10fuel_tools12ClientConfig12SetUserAgentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
网上说给装上这个缺的包然后就可以了:
sudo apt upgrade libignition-math2
之后又报错
Performing build step for ‘sitl_gazebo’ ninja: error: ‘/usr/lib/x86_64-linux-gnu/libignition-common1.so.1.0.1’, needed by ‘libmav_msgs.so’, missing and no known rule to make it
所以重新make了
cd PX4-Autopilot
make clean
make px4_sitl gazebo
make完就出来了,可以按官方教程输入,让飞机飞起来
commander takeoff
运行自定义launch
把自定义的模型放到/pathtoPX4/Tools.sitl_gazebo/models下,把自定义world文件放到/pathtoPX4/Tools.sitl_gazebo/worlds下,测试world是否配置正确,
gaze xxx.world
可以在gazebo里看到地图。ps:配置里路径使用绝对路径
自定义的launch放到/pathtoPX4/launch下,按官方流程https://docs.px4.io/v1.12/en/simulation/ros_interface.html运行:
cd <PX4-Autopilot_path>
DONT_RUN=1 make px4_sitl_default gazebo
source ~/catkin_ws/devel/setup.bash # (optional)
source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/sitl_gazebo
roslaunch px4 posix_sitl.launch # 改成自定义launch
pwd可以替换为绝对路径(但好像不行)
source Tools/setup_gazebo.bash /home/cy/PX4-Autopilot /home/cy/PX4-Autopilot/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/cy/PX4-Autopilot
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/cy/PX4-Autopilot/Tools/sitl_gazebo
QGroundControl
安装
sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
sudo apt install libqt5gui5 -y
chmod +x ./QGroundControl.AppImage
./QGroundControl.AppImage#或者双击
联动
roslaunch后打开QGC就可以连接无人机,并进行控制