PX4 ros2环境配置
·
配置环境
安装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
由于网络原因我修改了下面的几个位置才成功下载
- 修改/src/lib/events/libevents/.gitmodules
[submodule "libs/cpp/parse/nlohmann_json"]
path = libs/cpp/parse/nlohmann_json
url = https://gitee.com/soxueren/json
- 修改/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
- 修改/Tools/simulation/gazebo-classic/sitl_gazebo-classic
[submodule "pymavlink"]
path = pymavlink
url = https://gitee.com/wan-junyao/pymavlink
- 修改/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安装
- 官网上的安装方式
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生效
- 小鱼一键安装
按照提示安装即可
wget http://fishros.com/install -O fishros && . fishros
安装ign接口
sudo apt-get install ros-foxy-ros*
- 卸载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)
- 在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
开发自己需要的程序…
更多推荐
所有评论(0)