安装ros 1.1设置软件源: 清华源或者阿里都可 sudo sh -c '. /etc/lsb-release && echo "deb Index of /ros/ubuntu/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list' 1.2设置密钥: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654 1.3安装Ros-melodic: sudo apt-get update sudo apt-get install ros-melodic-desktop-full sudo apt-get install ros-melodic-rqt*
1.4 配置环境变量: echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc 1.5 安装rosdepc(一个外部软件接口) sudo apt-get install python3-pip sudo pip3 install rosdepc 1.6 初始化rosdep: sudo rosdep init rosdep update
1.7 打开bashrc sudo nano gedit ~/.bashrc
1.8 加上两行内容 export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://localhost:11311
1.9 运行source ~/.bashrc 更新 .bashrc
到此,安装结束,ros安装参考 Ubuntu18版本安装ROS_每日亿学的博客-CSDN博客_ubuntu18安装ros^v10^pc_search_result_control_group,157^v5^new_style2&utm_term=ubuntu18%E7%89%88%E6%9C%AC%E5%AE%89%E8%A3%85ros&spm=1018.2226.3001.4187
安装gazebo 2.1先卸载原来的: sudo apt-get remove gazebo* sudo apt-get remove libgazebo* sudo apt-get remove ros-melodic-gazebo* 2.2安装gazebo9.1 2.2.1.设置源packages.osrfoundation.org. sudo sh -c 'echo "deb Index of /gazebo/ubuntu-stable/ lsb_release -cs
main" > /etc/apt/sources.list.d/gazebo-stable.list'
2.2.2 cat /etc/apt/sources.list.d/gazebo-stable.list
2.2.3设置Key wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
2.2.4.安装 sudo apt-get update sudo apt-get install gazebo9=9.1* 2.2.5 更新 sudo apt upgrade 2.2.6启动测试 gazebo
MAVROS安装 3.1 安装 sudo apt install ros-kinetic-mavros sudo apt install ros-melodic-mavros ros-melodic-mavros-extras 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配置
安装px4 4.1 git clone https://github.com.cnpmjs.org/PX4/PX4-Autopilot.git(或者https://github.com/PX4/PX4-Autopilot.git)
4.2 cd PX4-Autopilot/ git submodule update --init --recursive bash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools #安装python依赖
这部分按照教程给出的更新即可 最后 make px4_sitl_default gazebo 4.3 安装一部分依赖(可以避免后面的一些错误) sudo apt-get install libgstreamer-plugins-base1.0-dev sudo pip3 install pyquaternion sudo pip install pyquaternion
下载XTDrone 5.1 下载安装 git clone XTDrone: 基于PX4、ROS和Gazebo的无人机通用仿真平台 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/ cd ~/.gazebo/models/ rm -r stereo_camera/ 3d_lidar/ 3d_gpu_lidar/ hokuyo_lidar/
提示没有model,这个是需要自己下载的,下载链接在上面,将其放置在指定位置即可
更新: make px4_sitl_default gazebo
5.2 后面就可以使用键盘控制无人机了: cd ~/PX4_Firmware roslaunch px4 indoor1.launch
cd ~/XTDrone/communication/ python multirotor_communication.py iris 0
cd ~/XTDrone/control/keyboard python multirotor_keyboard_control.py iris 1 vel 推荐起飞流程,按i把向上速度加到0.3以上,再按b切offboard模式,最后按t解锁。
解析: 首先看launch文件: "$(find mavlink_sitl_gazebo)/worlds/indoor1.world" 使用了这个gazebo模型,还使用到了MAVROS和"$(find px4)/launch/single_vehicle_spawn_xtd.launch" 后面中国launch为一架飞行器飞行的launch文件 注意,现在mavros话题与服务前带有了无人机名字,如:/iris_0/mavros/state
5.3 PX4飞控EKF配置 PX4默认使用的EKF配置为融合GPS的水平位置与气压计高度。如果我们想使用视觉定位,就需要把修改配置文件。 gedit ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/rcS 将部分内容替换: # GPS used #param set EKF2_AID_MASK 1 # Vision used and GPS denied param set EKF2_AID_MASK 24
# Barometer used for hight measurement #param set EKF2_HGT_MODE 0 # Barometer denied and vision used for hight measurement param set EKF2_HGT_MODE 3
替换后输入: rm ~/.ros/eeprom/parameters* rm -rf ~/.ros/sitl*
5.5 上面说了控制单一飞行器的方法,现在修改机型,修改方式是修改launch文件: 5.5.1打开lacunch文件 cd ~/PX4_Firmware/launch/ gedit outdoor3.launch 若不改,打开后是车的模型,我们将其更改为无人机: 将rover改成solo 同时打开/home/a/PX4_Firmware/Tools/sitl_gazebo/models文件夹,查看对应车型使用的传感器型号文件,将其对应的名称修改在
我们将机型选为solo,注意由于地面高度较高,需要把launch文件中初始z位置设为1,不然飞机就在地面以下了。
5.5.3 启动通信 cd ~/XTDrone/communication python multirotor_communication.py solo 0 5.5.4 启动键盘控制: cd ~/XTDrone/control/keyboard python multirotor_keyboard_control.py solo 1 vel
对于多旋翼飞行器,Offboard控制起飞很容易,给一个大于0.3m/s的期望z向速度即可,因此可以不使用Takeoff模式(按键中的v),Takeoff模式的相关参数(起飞高度,起飞速度)需要在rcS设置,比较麻烦。 不断按i把期望z向速度加到0.3m/s以上,然后按b切到offboard模式,再按t解锁即可起飞,飞到合适的高度后,按s即可实现悬停。
其他机型类似,具体看原文
因此大概思路就是,找到你想使用的世界,打开对应的世界的launch文件,修改里面的机型即可
5.6 多机编队 5.6.1 在上面的基础上,想要在一个世界里面加入多种不同的机型,并且控制的话,需要先生成多机launch文件: cd ~/XTDrone/coordination/launch_generator python3 generator.py
输入0-7选择机型,enter确认后输入该机型的数量,之后输入该机型占据的行数(这样可以构成矩形阵列)。添加结束后输入f进行launch文件的生成。
假如我想1x6,则先输入6,再输入1,以此类推 5.6.2 将生成出来的launch文件复制到PX4固件的launch文件夹 cp ~/XTDrone/coordination/launch_generator/multi_vehicle.launch ~/PX4_Firmware/launch/
5.6.3启动: cd ~/PX4_Firmware/ roslaunch px4 multi_vehicle.launch
5.6.3修改传感器(可选) 实际上,generator.py生成的launch文件中的无人机自带了特定的传感器,如果不需要此传感器,或者需要别的传感器,需要修改launch文件中的模型SDF部分,也就是5.5讲的
5.6.4 多机器通信(重点),首先启动脚本 gedit ~/XTDrone/communication/multi_vehicle_communication.sh
修改对应机型的数量: #!/bin/bash iris_num=6 typhoon_h480_num=3 solo_num=6 plane_num=3 rover_num=3 standard_vtol_num=3 tiltrotor_num=3 tailsitter_num=6 这些就是机型,你自己创建了多少个对应的机型就修改上 运行脚本: bash multi_vehicle_communication.sh 5.6.5 关闭通信: bash stop_communication.sh 建立通信后,可以在control目录下分别启动对应机型的键盘控制脚本,即可实现利用键盘同时控制多机型。当然多机型的控制,实际肯定是要编写脚本,不依赖手动控制的无人驾驶,这些就有待后续的开发了。 键盘控制脚本(solo部分,其他一样): cd ~/XTDrone/control/keyboard python multirotor_keyboard_control.py solo 1 vel
5.7多无人机编队: 5.7.1 先生成对应的机型环境 cd ~/XTDrone/coordination/launch_generator python3 generator.py 选择6架iris,2行,生成文件,将该文件复制到~/PX4_Firmware/launch/ cp ~/XTDrone/coordination/launch_generator/multi_vehicle.launch ~/PX4_Firmware/launch/ 5.7.2 因为用不到传感器,就先把这传感器文件删除 cd ~/PX4_Firmware/launch 找到对应的multi_vehicle.launch文件 将iris_stereo_camera替换为iris即可
5.7.6给9个iris提供位姿信息,注意这里使用的是Gazebo位姿真值,因为只有这样,它们的局部位置(local_position)才是在统一的坐标系下。注意这里不能使用GPS定位(仿真里的GPS的局部坐标系以无人机起飞点为原点,使得不同的无人机的坐标系不统一),需要修改EKF的输入,也就是5.3 cd ~/XTDrone/sensing/pose_ground_truth python get_local_pose.py iris 6
使用键盘控制所有无人机起飞(注意要飞的高一些,防止编队过程中有的无人机触地) cd ~/XTDrone/control/keyboard python multirotor_keyboard_control.py iris 6 vel
无人机悬停后,键盘按g键,进入leader-follower模式,然后启动多机协同脚本。 cd ~/XTDrone/coordination/formation_demo bash run_formation.sh iris 6
然后再返回刚刚的键盘控制终端,按1or2or3即可切换队形
5.7.7(*拓展:以上编队控制为速度控制,且每个follower直接和leader通信,协同策略简单且有效。更复杂的通信拓扑和一致性控制算法,则需要运行 bash run_formation_consensus.sh iris 9 vel #一阶系统假设,速度控制 bash run_formation_consensus.sh iris 9 accel #二阶系统假设,加速度控制)
来自
点此处直达下载地址,进入以上下载地址之后,按照需求下载相应版本即可。这里下载的版本为0.2.3