vmware下ubuntu18.04 安装ROS Melodic+gazebo9+PX4并roslaunch运行+QGroundConrtol控制

2023-05-16

官方推荐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就可以连接无人机,并进行控制
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vmware下ubuntu18.04 安装ROS Melodic+gazebo9+PX4并roslaunch运行+QGroundConrtol控制 的相关文章

随机推荐