Ubuntu20.04+PX4v1.13+ROS2 foxy+FAST-DDS+Matlab 2022b

前言:本篇文章介绍了如何使用虚拟机下的PX4仿真环境联合Windows下的Matlab进行仿真,目前实现了使用Simulink解锁Gazebo下的无人机。后续会陆续更新:Gazebo仿真模型使用自定义模型、实现姿态控制和位置控制。
!!在安装过程中会出现文件夹上锁的情况,参考第一章的(十二)!!

准备工作:

  • 一定要科学上网!!!
  • 干净的Ubuntu20.04虚拟机。
  • Matlab 2022b及以上版本(不建议低于这个版本,否则后面matlab会出现一些问题,我自己没有解决,所以换到了2022b)。

参考资料:

Ubuntu设置

换源

  • 去“软件和更新”换源,选择最佳服务器
  • image.png
  • 选择最佳服务器
  • image.png
  • 点击“选择服务器”,输入管理员密码
  • 点击关闭,再点重新载入。
  • image.png
  • 之后可以执行以下两行命令,验证一下是否更新软件列表和软件包。
sudo apt-get update//更新软件列表
sudo apt-get upgrade//更新软件

上网配置

vmnet8配置(参考知乎

  • image.png

Ubuntu设置

  • ubuntu里连接,只用输入socks地址。(将视频里的127.0.0.1换成下面的192.168.32.1)
  • image.png
  • image.png
  • 此时只能实现浏览器代理。
  • 下载工具proxychains4参考链接二
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

image.png
检查最下面的ip地址。

查看网速插件安装(参考CSDN

//添加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

克隆固件

  • 一定要上网
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

image.png

解决办法:

sudo apt update
sudo apt install python3-pip
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.

image.png

解决办法:

//新建终端
gedit ~/.bashrc
//在最下面加上
export PATH=/root/.local/bin:$PATH
source ~/.bashrc

image.png

成功安装

image.png

  • 重启

编译固件检验一下

cd PX4-Autopilot/
make px4_sitl
  • image.png
unset all_proxy    
unset ALL_PROXY
pip3 install kconfiglib
source ~/.bashrc
//再重新编译
make px4_sitl
  • image.png
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --user empy
//再重新编译
make px4_sitl
  • image.png
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --user jinja2
//再重新编译
make px4_sitl
  • image.png
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --user pyros-genmsg
//再重新编译
make px4_sitl
  • image.png
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --user jsonschema
//再重新编译
make px4_sitl

ERROR: Could not install packages due to an EnvironmentError: Missing dependencies for SOCKS support.

# Unset socks proxy
unset all_proxy    
unset ALL_PROXY
//再安装

安装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

  • 新建一个终端,输入以下代码,输入安装ros2的数字即可完成安装。
wget http://fishros.com/install -O fishros && bash fishros
  • 安装完成后输入ros2如果看到下面的界面则安装成功

image.png

  • 再执行这个,安装一些python依赖。
sudo apt install python3-colcon-common-extensions
sudo apt install ros-foxy-eigen3-cmake-module
pip install --user -U empy pyros-genmsg setuptools

image.png

  • 报错:ERROR: Could not install packages due to an EnvironmentError: Missing dependencies for SOCKS support.
unset all_proxy    
unset ALL_PROXY
python3 -m pip install launchpadlib
  • 再试一下
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --user -U empy pyros-genmsg setuptools

创建ROS2工作空间

  • 开启一个终端
mkdir -p ~/ws_sensor_combined/src/
cd ~/ws_sensor_combined/src/
  • 克隆px4_msgs和px4_ros_com
//px4 v1.13版本用下面的
sudo proxychains4 git clone -b release/1.13 https://github.com/PX4/px4_ros_com.git ~/px4_ros_com_ros2/src/px4_ros_com
sudo proxychains4 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
  • 将“source ~/px4_ros_com_ros2/install/setup.bash”添加到“.bashrc”
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

image.png
出现这个画面就代表成功了。

安装Edge

  • 官网下载安装包。
  • 点击安装包进行安装。(打不开,就重启一下虚拟机再安装)
  • 打开,点继续,不设置密钥环

安装搜狗输入法

安装VScode

VScode安装

同样参考小甲鱼《动手学ROS2》。执行以下命令,输入安装vscode的数字即可。

wget http://fishros.com/install -O fishros && bash fishros

设置界面大小

CTRL++/-放大/缩小界面

设置字体大小

在设置中搜索Font Size,修改数字大小即可代码的字体大小。
image.png

解锁文件夹

sudo chown -R <用户名> <文件夹名>

Windows设置

下载px4_msgs

  • 新建一个目录“custom”。
//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")
  • 出现这个代表成功

image.png

  • 此时custom目录下会出现matlab_msg_gen文件夹。

image.png

PX4+Gazebo+Matlab联合仿真

解锁无人机

这一节采用了B站up主: 传说中的羊咩咩提供的例程(可以去这个视频链接简历里的Github工程地址获取)。

启动Gazebo

//在Ubuntu下面
//新建终端
cd PX4-Autopilot/
make px4_sitl_rtps gazebo

image.pngimage.png

启动micrortps_agent

cd px4_ros_com_ros2/
source ~/px4_ros_com_ros2/install/setup.bash(如果这句命令已经添加到了.bashrc里,就不需要了)
micrortps_agent -t UDP

image.png

启动Simulink例程(NO1_ArmQuadcopter.slx)

image.png

  • 点击“Monitor & Tune”,Simulink开始编译

image.png

  • 出现下面这个画面,代表编译成功,并且看Gazebo,发现确实解锁了,旋翼开始转动。

image.png
image.png

未完待续…

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值