摘要
在阿里无影云电脑Ubuntu20.04上搭建ROS1-Noetic环境及Gazebo环境;搭建XTDrone仿真环境.
关键信息
- 系统:Ubuntu20.04
- ROS1版本:Noetic
- Gazebo版本:9
原理简介
阿里无影云电脑
[https://www.aliyun.com/product/ecs]
[https://wuying.aliyun.com/]
无影云电脑(WUYING Workspace)是一种易用、安全、高效的云上桌面服务,支持快速便捷的创建、部署和统一运维管控。自带多重安全管控能力,支持随时随地访问,资源灵活弹性。广泛应用于安全办公、协同研发、教育实训、私域运营、分支门店、客服办公等领域。
使用云电脑可以替代本地虚拟机中安装Ubuntu系统方式,不用下载系统镜像和虚拟机软件.
开通信息 | 开通成功 |
---|---|
ROS1简介
[https://wiki.ros.org]
[https://www.ros.org/]
ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。ROS遵循BSD开源许可协议。
ROS Noetic Ninjemys is primarily targeted at the Ubuntu 20.04 (Focal) release, though other systems are supported to varying degrees.
Gazebo简介
[http://www.lxshaw.com/tech/drone/2021/04/13/无人机编程入门(九):gazebo简介、安装与测试/]
[https://gitee.com/wentao02/gazebo/tree/master]
[http://gazebosim.org]
Gazebo是一个很有效的仿真工具,可以用来测试算法、设计机器人、进行测试,提供一个三维视窗来让你观察机器人的表现。
Gazebo - A dynamic multi-robot simulator
This is the Gazebo simulator. Gazebo simulates multiple robots in a 3D environment, with extensive dynamic interaction between objects.
鱼香ROS简介
[https://fishros.org.cn/forum/]
[https://blog.csdn.net/yitiaoxiaolu/article/details/137265190]
鱼香ROS是由机器人爱好者共同组成的社区.
目前支持工具(Ubuntu系统):适用于国内网络环境
- 一键安装:ROS(支持ROS和ROS2,树莓派Jetson) 贡献@小鱼
- 一键安装:VsCode(支持amd64和arm64) 贡献@小鱼
- 一键安装:github桌面版(小鱼常用的github客户端) 贡献@小鱼
- 一键安装:nodejs开发环境(通过nodejs可以预览小鱼官网噢) 贡献@小鱼
- 一键配置:rosdep(小鱼的rosdepc,又快又好用) 贡献@小鱼
- 一键配置:ROS环境(快速更新ROS环境设置,自动生成环境选择) 贡献@小鱼
- 一键配置:系统源(更换系统源,支持全版本Ubuntu系统) 贡献@小鱼
- 一键安装:Docker(支持amd64和arm64) 贡献@alyssa
- 一键安装:cartographer 贡献@小鱼&Catalpa
- 一键安装:微信客户端 贡献@小鱼
XTDrone简介
[https://www.gitlink.org.cn/studying/XTDrone]
[https://gitee.com/robin_shaun/XTDrone]
[https://www.yuque.com/xtdrone/manual_cn]
XTDrone是基于PX4、ROS与Gazebo的无人机通用仿真平台。支持多旋翼飞行器(包含四轴和六轴)、固定翼飞行器、复合翼飞行器(包含quadplane,tailsitter和tiltrotor)与其他无人系统(如无人车、无人船与机械臂)。在XTDrone上验证过的算法,可以方便地部署到真实无人机上。
实现
- 开通云电脑并登录桌面
- 打开终端
wget http://fishros.com/install -O fishros && bash fishros
# 然后根据提示输入对应数字安装ROS1
# 测试ROS1 Noetic的安装
roscore
# 配置工作空间
mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts
cd catkin_ws && catkin init
catkin build
# 卸载Gazebo11,安装Gazebo9
sudo apt-get remove gazebo*
sudo apt-get remove libgazebo*
sudo apt-get remove ros-noetic-gazebo*
sudo apt-get install -y 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
sudo apt-get install -y gazebo9
sudo apt-get install -y libgazebo9-dev
sudo apt upgrade
# 下载gazebo模型资源:[https://www.yuque.com/xtdrone/manual_cn/basic_config#6BsYA] models.zip(663.6 MB)
unzip models
mkdir ~/.gazebo
mv ~/models ~/.gazebo
ls ~/.gazebo/models
# 下载PX4源码完整包:[https://www.yuque.com/xtdrone/manual_cn/basic_config#gIkoB] Firmware.zip(918.1 MB)
cd ~
unzip PX4_Firmware.zip
# 下载XTDrone源码
sudo apt install -y git
git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
git submodule update --init --recursive
cp sensing/gimbal/gazebo_gimbal_controller_plugin.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src/
cp sitl_config/init.d-posix/rcS ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
cp sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
cp -r sitl_config/models/* ~/PX4_Firmware/Tools/sitl_gazebo/models/
cp -r sitl_config/launch/* ~/PX4_Firmware/launch/
# 配置MAVROS
sudo apt install -y ros-noetic-mavros ros-noetic-mavros-extras
# 配置PX4
cd ~/PX4_Firmware
pip3 install --user toml
sudo apt-get install -y libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
make px4_sitl_default gazebo
# 编译XTDrone
cd ~/catkin_ws
cp -r ~/XTDrone/sitl_config/gazebo_ros_pkgs src/
catkin build
# 启动gazebo
source ~/catkin_ws/devel/setup.bash
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware ~/PX4_Firmware/build/px4_sitl_default
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/home/WUYING_2557877116_196072867/PX4_Firmware/Tools/sitl_gazebo/models
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo
source ~/.bashrc
cd ~/PX4_Firmware
sudo /opt/ros/noetic/lib/mavros/install_geographiclib_datasets.sh
roscore
roslaunch px4 mavros_posix_sitl.launch
# 配置QGroundControl 4:下载[https://github.com/mavlink/qgroundcontrol/releases]
cd ~
sudo chmod +x ~/*.AppImage
sudo usermod -a -G dialout $USER
sudo apt remove modemmanager
~/QGroundControl.AppImage
# 用键盘控制无人机:重启gazebo
killall -9 gzclient
killall -9 gzserver
cd ~/PX4_Firmware
sudo apt install -y xmlstarlet
roslaunch px4 indoor1.launch
cd ~/XTDrone/communication/
pip3 install pyquaternion
python3 multirotor_communication.py iris 0
cd ~/XTDrone/control/keyboard
python3 multirotor_keyboard_control.py iris 1 vel
如果之前没有catkin_ws,则需要新建工作空间,之后除去PX4仿真环境启动外,其余ROS相关工程在此工作空间下管理。
Gazebo有很多开源的模型文件,将该附件解压缩后放在~/.gazebo
中,此时在~/.gazebo/models/
路径下可以看到很多模型。如果不做这一步,之后运行Gazebo仿真,可能会缺模型,这时会自动下载,Gazebo模型服务器在国外,自动下载会比较久。
便可以通过键盘控制1架iris的解锁/上锁(arm/disarm),修改飞行模式,飞机速度等。使用v起飞利用的是takeoff飞行模式,相关参数(起飞速度、高度)要在rcS中设置。一般可以使用offboard模式起飞,这时起飞速度要大于0.3m/s才能起飞(即:upward velocity 需要大于0.3)。注意,飞机要先解锁才能起飞!飞到一定高度后可以切换为‘hover’模式悬停,再运行自己的飞行脚本,或利用键盘控制飞机。
推荐起飞流程,按i把向上速度加到0.3以上,再按b切offboard模式,最后按t解锁。
所有以indoor开头的场景,都有一个不可见的天花板,它具有碰撞属性,因此无人机不能飞出室内.
效果
使用键盘控制无人机运行 | QGroundControl运行 |
---|---|