配置环境

安装PX4

一. 下载源码

git clone https://gitee.com/wan-junyao/PX4-Autopilot
git checkout  v1.14

修改.gitmodules文件,改成gitee源,这样下载速度会变快

[submodule "src/modules/mavlink/mavlink"]
	path = src/modules/mavlink/mavlink
	url = https://gitee.com/wan-junyao/mavlink
	branch = master
[submodule "src/drivers/uavcan/libuavcan"]
	path = src/drivers/uavcan/libuavcan
	url = https://gitee.com/wan-junyao/libuavcan
	branch = main
[submodule "Tools/simulation/jmavsim/jMAVSim"]
	path = Tools/simulation/jmavsim/jMAVSim
	url = https://gitee.com/wan-junyao/jMAVSim
	branch = main
[submodule "Tools/simulation/gazebo-classic/sitl_gazebo-classic"]
	path = Tools/simulation/gazebo-classic/sitl_gazebo-classic
	url = https://gitee.com/wan-junyao/PX4-SITL_gazebo-classic
	branch = main
[submodule "src/drivers/gps/devices"]
	path = src/drivers/gps/devices
	url = https://gitee.com/wan-junyao/PX4-GPSDrivers
	branch = main
[submodule "platforms/nuttx/NuttX/nuttx"]
	path = platforms/nuttx/NuttX/nuttx
	url = https://gitee.com/wan-junyao/NuttX
	branch = px4_firmware_nuttx-10.3.0+
[submodule "platforms/nuttx/NuttX/apps"]
	path = platforms/nuttx/NuttX/apps
	url = https://gitee.com/wan-junyao/NuttX-apps
	branch = px4_firmware_nuttx-10.3.0+
[submodule "Tools/flightgear_bridge"]
	path = Tools/simulation/flightgear/flightgear_bridge
	url = https://gitee.com/wan-junyao/PX4-FlightGear-Bridge
[submodule "Tools/simulation/jsbsim/jsbsim_bridge"]
	path = Tools/simulation/jsbsim/jsbsim_bridge
	url = https://gitee.com/wan-junyao/px4-jsbsim-bridge
[submodule "src/drivers/cyphal/libcanard"]
	path = src/drivers/cyphal/libcanard
	url = https://gitee.com/wan-junyao/libcanard
[submodule "src/drivers/cyphal/public_regulated_data_types"]
	path = src/drivers/cyphal/public_regulated_data_types
	url = https://gitee.com/wan-junyao/public_regulated_data_types
[submodule "src/drivers/cyphal/legacy_data_types"]
	path = src/drivers/cyphal/legacy_data_types
	url = https://gitee.com/wan-junyao/public_regulated_data_types_2
	branch = legacy
[submodule "src/lib/crypto/monocypher"]
	path = src/lib/crypto/monocypher
	url = https://gitee.com/wan-junyao/Monocypher
	branch = px4
[submodule "src/lib/events/libevents"]
	path = src/lib/events/libevents
	url = https://gitee.com/wan-junyao/libevents
	branch = main
[submodule "src/lib/crypto/libtomcrypt"]
	path = src/lib/crypto/libtomcrypt
	url = https://gitee.com/wan-junyao/libtomcrypt
	branch = px4
[submodule "src/lib/crypto/libtommath"]
	path = src/lib/crypto/libtommath
	url = https://gitee.com/wan-junyao/libtommath
	branch = px4
[submodule "src/modules/uxrce_dds_client/Micro-XRCE-DDS-Client"]
	path = src/modules/uxrce_dds_client/Micro-XRCE-DDS-Client
	url = https://gitee.com/wan-junyao/Micro-XRCE-DDS-Client
	branch = px4

同步子模块

git submodule update --init --recursive

子模块的子模块也会下载出错,发现哪个模块下载失败同样修改哪个模块的.gitmodules,改为gitee源,然后执行刷新url

git submodule sync

由于网络原因我修改了下面的几个位置才成功下载

  1. 修改/src/lib/events/libevents/.gitmodules
[submodule "libs/cpp/parse/nlohmann_json"]
        path = libs/cpp/parse/nlohmann_json
        url = https://gitee.com/soxueren/json

  1. 修改/Tools/simulation/flightgear/flightgear_bridge/.gitmodules
[submodule "models/FlightGear-Rascal"]
        path = models/Rascal
        url = https://gitee.com/wan-junyao/FlightGear-Rascal
[submodule "models/FlightGear-TF-G1"]
        path = models/TF-G1
        url = https://gitee.com/IndustFiction/FlightGear-TF-G1
[submodule "models/FlightGear-TF-R1"]
        path = models/TF-R1
        url = https://gitee.com/wan-junyao/FlightGear-TF-R1
[submodule "models/FlightGear-TF-G2"]
        path = models/TF-G2
        url = https://gitee.com/wan-junyao/FlightGear-TF-G2

  1. 修改/Tools/simulation/gazebo-classic/sitl_gazebo-classic
[submodule "pymavlink"]
        path = pymavlink
        url = https://gitee.com/wan-junyao/pymavlink

  1. 修改/src/modules/mavlink/mavlink/.gitmodules
[submodule "external/OpticalFlow"]
        path = external/OpticalFlow
        url = https://gitee.com/wan-junyao/OpticalFlow

二. 网盘下载
https://www.bilibili.com/read/cv26223049/

下载好源码后执行下脚本自动安装需要的依赖

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh

提示无法安装OpenJDK,添加ppa源

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo bash ./PX4-Autopilot/Tools/setup/ubuntu.sh

安装gz-garden

安装 gazebo

sudo apt-get install ros-humble-ros-gz
apt-get install ros-humble-ros-gzgarden

安装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
sudo apt install libfuse2 -y

在https://docs.qgroundcontrol.com/master/en/getting_started/download_and_install.html下载QGD

chmod +x ./QGroundControl.AppImage
./QGroundControl.AppImage  (or double click)

ROS安装

  1. 官网上的安装方式
locale  # check for UTF-8

sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

locale  # verify settings

sudo apt install software-properties-common
sudo add-apt-repository universe

sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

sudo apt update
sudo apt install ros-foxy-desktop
#sudo apt install ros-humble-ros-base #基础安装没有gui
sudo apt install ros-dev-tools

设置环境变量 vim .bashrc增加下面内容

source /opt/ros/foxy/setup.bash

source .bashrc生效

  1. 小鱼一键安装
    按照提示安装即可
wget http://fishros.com/install -O fishros && . fishros

安装ign接口

sudo apt-get install ros-foxy-ros*
  1. 卸载ros
sudo apt-get purge ros-foxy-*
sudo rm -rf /opt/ros/foxy
sudo apt-get autoremove

安装python依赖关系

pip install --user -U empy pyros-genmsg setuptools

安装Micro XRCE-DDS 代理(Agent)& 客户端(Client)

  1. 在ros2工作空间中编译构建代理
mkdir -p ~/px4_ros_uxrce_dds_ws/src
cd ~/px4_ros_uxrce_dds_ws/src
git clone https://gitee.com/chehan/Micro-XRCE-DDS-Agent
colcon build --parallel-workers 8

启动一个代理

. install/setup.bash
MicroXRCEAgent udp4 -p 8888

下载源代码并构建代理

git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
cd Micro-XRCE-DDS-Agent
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig /usr/local/lib/

构建工作区域

px4使用的所有.msg文件

mkdir -p ~/px4_msgs/src/
cd ~/px4_msgs/src/
git clone https://github.com/PX4/px4_msgs.git
git checkout  release/1.14
cd ..
colcon build   --parallel-workers 8
. install/setup.bash

offboard使用例程

mkdir -p ~/offboard/src/
cd ~/offboard/src/
git clone https://github.com/ARK-Electronics/ROS2_PX4_Offboard_Example
colcon build  
. install/setup.bash

构建自己的interfaces接口

mkdir -p px4_interfaces/src
cd px4_interfaces/src
ros2 pkg create --build-type ament_cmake px4_interfaces
cd px4_interfaces
mkdir srv msg

在CMakeLists.txt中添加下面内容

find_package(rosidl_default_generators REQUIRED)

rosidl_generate_interfaces(${PROJECT_NAME}
  "msg/***.msg"
  "srv/***.srv"
)

在package.xml中添加下面内容

 <build_depend>rosidl_default_generators</build_depend>
 <exec_depend>rosidl_default_runtime</exec_depend>
 <member_of_group>rosidl_interface_packages</member_of_group>

仿真

启动代理

MicroXRCEAgent udp4 -p 8888

进入到PX4-Autopilot文件夹启动模拟器和客户端

make px4_sitl gz_x500

如果报错

make distclean 
make px4_sitl gz_x500

gazebo模拟器启动,显示一架四旋翼
在这里插入图片描述

进入到刚构建的工作区文件夹/ws_sensor_combined,运行下面指令四旋翼将起飞5m并旋停

. install/setup.bash
ros2 run px4_ros_com offboard_control

在这里插入图片描述

飞控测试

在qgroundcontrol中修改飞控参数
UXRCE_DDS_CFG TELEM 2
SER_TEL2_BAUD 921600
MAV_1_CONFIG TELEM1

通过串口连接

MicroXRCEAgent serial -D /dev/ttyS1 -b 921600

开发自己需要的程序…

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐