前言:本篇文章介绍了如何使用虚拟机下的PX4仿真环境联合Windows下的Matlab进行仿真,目前实现了使用Simulink解锁Gazebo下的无人机。后续会陆续更新:Gazebo仿真模型使用自定义模型、实现姿态控制和位置控制。(暂时先发专栏,后面会录视频发到B站)
!!在安装过程中会出现文件夹上锁的情况,参考第一章的(十二)!!
已同步至语雀:https://www.yuque.com/g/dishangdeganjuehuanbucuo/wi37pz/pare1npxfdaihwkq/collaborator/join?token=Ph0JKbFuCcGi43UV&source=doc_collaborator# 《Ubuntu20.04+PX4v1.13+ROS2 foxy+FAST-DDS+Matlab 2022b》
一、Ubuntu设置
(一) 换源
sudo apt-get update//更新软件列表
sudo apt-get upgrade//更新软件
(二) 上网配置
1. VMware配置(参考知乎)
https://www.zhihu.com/question/495148700/answer/2496921147
2. Ubuntu设置
//参考https://installati.one/install-proxychains-ubuntu-20-04/?expand_article=1
sudo apt-get install proxychains4
sudo apt-get install curl
sudo nano /etc/proxychains4.conf
//释放掉dynamic_chain的注释
//将最下面的“stock4 127.0.0.1 1080”替换为“stock5 192.168.32.1 7890”
//检验
sudo proxychains4 curl -i icanhazip.com
(三) 查看网速插件安装(参考CSDN)
//参考https://blog.csdn.net/qq_44866828/article/details/122618387
//添加indicator-sysmonitor的下载源
sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor -y
//更新apt-get
sudo apt-get update
//安装indicator-sysmonito
sudo apt-get install indicator-sysmonitor
(四) PX4 v1.13
1. 克隆固件
sudo apt install git
//sudo proxychains4 git clone https://github.com/PX4/PX4-Autopilot.git --recursive
//px4 v1.13版本用下面的
sudo proxychains4 git clone -b v1.13.0-beta1 https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot/
sudo proxychains4 git submodule update --init --recursive
cd ..
sudo proxychains4 bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
ERROR: pandas 2.0.3 has requirement python-dateutil>=2.8.2, but you'll have python-dateutil 2.7.3 which is incompatible
//解决办法
sudo pip install --upgrade python-dateutil
WARNING: The scripts coverage, coverage-3.8 and coverage3 are installed in '/root/.local/bin' which is not on PATH.
//解决办法
//新建终端
gedit ~/.bashrc
//在最下面加上
export PATH=/root/.local/bin:$PATH
source ~/.bashrc
3. 安装成功
然后重启。
4. 编译固件检验一下
cd PX4-Autopilot/
make px4_sitl
下面是编译过程中的报错信息以及相应的解决办法。一般都是少东西,少什么装什么就行了,直至不报错能正常编译为止。
pip3 install kconfiglib
//若出现:ERROR: Could not install packages due to an EnvironmentError: Missing dependencies for SOCKS support.
unset all_proxy
unset ALL_PROXY
pip3 install kconfiglib
source ~/.bashrc
//再重新编译
make px4_sitl
pip3 install --user empy
//再重新编译
make px4_sitl
pip3 install --user jinja2
//再重新编译
make px4_sitl
pip3 install --user pyros-genmsg
//再重新编译
make px4_sitl
pip3 install --user jsonschema
//再重新编译
make px4_sitl
(五) 安装FAST
//第一步Foonathan memory
sudo proxychains4 git clone https://github.com/eProsima/foonathan_memory_vendor.git
cd foonathan_memory_vendor
mkdir build && cd build
cmake ..
sudo cmake --build . --target install
//第二步Fast DDS
sudo proxychains4 git clone --recursive https://github.com/eProsima/Fast-DDS.git -b v2.0.2 ~/FastDDS-2.0.2
cd ~/FastDDS-2.0.2
mkdir build && cd build
cmake -DTHIRDPARTY=ON -DSECURITY=ON ..
make -j$(nproc --all)
sudo make install
//第三步Fast-RTPS-Gen
sudo proxychains4 git clone --recursive https://github.com/eProsima/Fast-DDS-Gen.git -b v1.0.4 ~/Fast-RTPS-Gen
cd ~/Fast-RTPS-Gen/gradle/wrapper
//修改gradle-wrapper.properties文件里的distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
gedit gradle-wrapper.properties
cd ~/Fast-RTPS-Gen
./gradlew assemble && sudo env "PATH=$PATH" ./gradlew install
(六) ROS2
参考小甲鱼《动手学ROS2》https://fishros.com/d2lros2foxy/#/chapt2/2.3ROS2%E7%9A%84%E5%AE%89%E8%A3%85
wget http://fishros.com/install -O fishros && bash fishros
sudo apt install python3-colcon-common-extensions
sudo apt install ros-foxy-eigen3-cmake-module
pip install --user -U empy pyros-genmsg setuptools
unset all_proxy
unset ALL_PROXY
python3 -m pip install launchpadlib
再试一下
pip install --user -U empy pyros-genmsg setuptools
(七) 创建ROS2工作空间
mkdir -p ~/ws_sensor_combined/src/
cd ~/ws_sensor_combined/src/
//px4 v1.13版本用下面的
git clone -b release/1.13 https://github.com/PX4/px4_ros_com.git ~/px4_ros_com_ros2/src/px4_ros_com
git clone -b release/1.13 https://github.com/PX4/px4_msgs.git ~/px4_ros_com_ros2/src/px4_msgs
cd ~/px4_ros_com_ros2/src/px4_ros_com/scripts
source build_ros2_workspace.bash
gedit ~/.bashrc
//在最下面添加上
source ~/px4_ros_com_ros2/install/setup.bash
//保存并退出。
(八) 检验是否安装成功
cd PX4-Autopilot/
make px4_sitl_rtps gazebo
source ~/px4_ros_com_ros2/install/setup.bash
micrortps_agent -t UDP
source ~/px4_ros_com_ros2/install/setup.bash
ros2 launch px4_ros_com sensor_combined_listener.launch.py
出现这个画面就代表成功了。
(九) 安装Edge
https://www.microsoft.com/zh-cn/edge?form=MA13FJ
(十) 安装搜狗输入法
https://shurufa.sogou.com/linux
(十一) 安装VScode
1. VScode安装
同样参考小甲鱼《动手学ROS2》。执行以下命令,输入安装vscode的数字即可。
wget http://fishros.com/install -O fishros && bash fishros
2. 设置界面大小
+ 放大/缩小界面。
3. 设置字体大小
在设置中搜索,修改数字大小即可代码的字体大小。
(十二) 解锁文件夹
sudo chown -R <用户名> <文件夹名>
二、Windows设置
(一) 下载px4_msgs
//px4版本是1.13,所以就下1.13版的px4_msgs
git clone -b release/1.13 https://github.com/PX4/px4_msgs.git
(二) 加载px4_msgs到Matlab里
确保matlab工作目录在“custom”的同级目录。
ros2genmsg("custom")
出现这个代表成功
此时custom目录下会出现matlab_msg_gen文件夹。
三、PX4+Gazebo+Matlab联合仿真
(一) 解锁无人机
这一节采用了 网页链接提供的例程(可以去这个视频链接简历里的Github工程地址获取)。
1. 启动Gazebo
//在Ubuntu下面
//新建终端
cd PX4-Autopilot/
make px4_sitl_rtps gazebo
2. 启动micrortps_agent
cd px4_ros_com_ros2/
source ~/px4_ros_com_ros2/install/setup.bash(如果这句命令已经添加到了.bashrc里,就不需要了)
micrortps_agent -t UDP
3. 启动Simulink例程(NO1_ArmQuadcopter.slx)
未完待续.........