前言
一:硬件准备
两种界面化显示的方式
无线连接
有线连接
二:软件准备
1:远程登录软件 NoMachine
2:安装ros
3:源码安装mavros(示例的ros版本为noetic)
PX4和NX通信
硬件连接
软件配置
连接验证
基于机载电脑利用==optitrack==为PX4提供定位
ubuntu机载电脑环境配置
这里的IP地址是运行Motive主机的地址,==这里运行程序的机载电脑需要和运行Motive主机在一个网段==
欢迎关注:
csdn:会变身的火娃(4000+粉丝)
个人博客:www.huowa.xyz
微信公众号:会变身的火娃
前言
- 基于NVIDIA Xavier NX(ubuntu20.04)的Optitrack视觉定位 PX4+ros noetic(实 物运行记录)
- 这里的NVIDIA Xavier Nx使用的瑞泰新时代(北京的)
- 使用的源码安装mavros
- NX不支持QGC地面站 因此飞控的调参需要用主机调整
一:硬件准备
一台主电脑 Nx 网线 (我是没有wifi模块 需要网线联网) 无线网卡(远程连接安有movelt的pc机时需要)
在这里插入图片描述
两种界面化显示的方式
无线连接
不需要显示屏和网线,用主机电脑 通过nomachine 软件,后面会讲解怎么用
有线连接
需要显示屏和网线 nx是HDMI接口,根据显示屏的不同,需要HDMI转DVI或者HDMI转VGA
二:软件准备
1:远程登录软件 NoMachine
(1)Linux系统Nomachine的下载
主机 Linux版的下载地址: https://downloads.nomachine.com/linux/?id=1
在这里插入图片描述
英伟达 NX Linux版的下载地址:https://downloads.nomachine.com/linux/?id=30&distro=Arm
在这里插入图片描述
(2)解压安装包 在所在路径终端输入 解压命令
参考命令(版本号不同,可以用Tab补全):
sudo tar zxvf nomachine_8.1.2_1_x86_64.tar.gz
(3)添加权限
sudo chmod -R 777 NX
(4)下载安装包
转到NX目录 运行nxserver自动完成下载
cd NX
sudo ./nxserver --install
在这里插入图片描述
(5)在linux主机下控制NVIDIA Xavier NX(ubuntu)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里第一次使用,可能会弹出一些窗口,不过不影响,全部next,或对就可以用了。
==注意:对于windows控制linux同理==
2:安装ros
小鱼一键安装ros代码
wget http://fishros.com/install -O fishros && bash fishros
3:源码安装mavros(示例的ros版本为noetic)
参考: https://blog.csdn.net/jppdss/article/details/128392484
(1)依赖安装
sudo apt-get install python3-catkin-tools python3-rosinstall-generator -y
pip3 install importlib-metadata
在这里插入图片描述
(2)创建mavros的工作空间并初始化,终端运行以下命令:
mkdir -p ~/my_mavros_ws/src
cd ~/my_mavros_ws
catkin init
wstool init src
在这里插入图片描述
在这里插入图片描述
(3)更新获取最新的mavlink和mavros:
在my_mavros_ws目录下获取Mavlink:
rosinstall_generator --rosdistro noetic mavlink | tee /tmp/mavros.rosinstall
解决raw.githubusercontent.com无法访问的问题
在这里插入图片描述
在my_mavros_ws目录下获取mavros:
rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall
在这里插入图片描述
(4)归并链接,开始准备安装: 第一步
wstool merge -t src /tmp/mavros.rosinstall
在这里插入图片描述
第二步
wstool update -t src -j8
==若报错==
在这里插入图片描述
解决方法: 手动下载源码包,将其放到 my_mavros_ws/src,源码包下载链接源码包==https://download.csdn.net/download/jppdss/87326158==
第三步
rosdep install --from-paths src --ignore-src -y
(5)安装GeographicLib数据集: 在my_mavros_ws目录下终端运行:
sudo ./src/mavros/mavros/scripts/install_geographiclib_datasets.sh
(6)编译源码 在my_mavros_ws目录下终端运行:
catkin build
(7)添加环境变量
sudo gedit ~/.bashrc
在.bashrc最后加上:
source ~/my_mavros_ws/devel/setup.bash
保存,退出,运行
source ~/.bashrc
PX4和NX通信
硬件连接
==Nx硬件接口==
在这里插入图片描述
==px4硬件接口==
在这里插入图片描述
软件配置
(1)飞控参数设置 ==由于Jetson Xavier NX采用arm架构,QGC官方未推出该版本软件,所以使用Windows或Mac对飞控调参==
参数配置如下
MAV_1_CONFIG= TELEM 2
MAV_1_MODE = Onboard ==可能一开始只有 MAV_1_CONFIG 这一个参数,将其设置为 TELEM2 后重启飞控即可。==
SER_TEL2_BAUD = 921600
EKF2_AID_MASK =24 (即选择选择vision position fusion和vision yaw fusion)
EKF2_HGT_MODE 设置为 Vision,有激光定高的可设为Range sensor MAV_ODOM_LP设置为1(这个设置之后可以在QGC中Analyse Tools 中的Mavlink控制台查看相应的数据)
详细说明看官方文件: https://docs.px4.io/main/en/advanced_config/tuning_the_ecl_ekf.html
==特殊的==如果没有下拉菜单,只让你填数字,可以参考
在这里插入图片描述
(2)网卡驱动安装 ==此处是绿联AC650M,根据商家的教程,显示我ubuntu内核太高。因此不能用他们提供的驱动== 【1】
首先无线网卡插上系统应该是识别到了,只不过没有驱动用不了而已。命令行输入ls usb应该可以看到Realtek Semiconductor 802.11ac啥的,就是无线网卡设备
【2】 下载8821驱动(注意下面都是需要网络的,使用网线连接提供网络)
git clone https://github.com/KwanWaiPang/8821cu.git
【3】 下载完驱动以后,进入文件夹编译
cd 8821cu
make
如果报错,应该是没有安装make和gcc,输入下面的命令
sudo apt-get install make
sudo apt-get install gcc
【4】 编译完成后安装
make install
【5】==重启==
如果没报错,就可以重启台式机了,然后就能看到无线网络
连接验证
Mavros测试 首先更改连接方式,本人采用Nx的串口2与飞控连接
sudo vim /opt/ros/melodic/share/mavros/launch/px4.launch
修改串口位置以及波特率 ==串口位置要看你机载电脑说明文档(串口说明部分)==
在这里插入图片描述
运行以下指令,若能显示飞控状态信息并能打印mavros信息,则证明Mavros与px4通讯成功。 ==注意:下面第一条,赋予串口权限,注销或关机后需再次赋予权限==
sudo chmod 666 /dev/ttyTHS0
roslaunch mavros px4.launch
如果此时正常启动,最后会显示mavros的ID号
然后另起终端,打印topic echo mavros消息,验证是否通讯 ==注意!!! 此时要给你的飞控(pxhawk)插上电池,不然通讯不了。如果只让nx的串口供电为他通讯不了==
(1)输入
rostopic list
如果可以显示很多mavros topic名称就k
(2)根据上面命令显示的topic话题名称,随便找几个echo下 比如
rostopic echo mavros/state
显示connection true 就ok
rostopic echo mavros/imu/date
显示当前imu实时数据就ok
基于机载电脑利用==optitrack==为PX4提供定位
==在前面通信成功的基础上,在机载电脑利用optitrack为PX4提供定位==
ubuntu机载电脑环境配置
(1)在合适的路径下安装vrpn ,这里演示是在home文件下 使用vrpn将机载电脑与主机(安装Motive的)进行通信
cd ~
mkdir testws
cd testws
mkdir src
cd src
catkin_init_workspace
cd ..
catkin_make
git clone git clone https://github.com/clearpathrobotics/vrpn_client_ros.git
sudo apt-get install ros-melodic-vrpn #这里需要根据对应的ROS版本填写 我是18.04
catkin_make
source devel/setup.bash
roslaunch vrpn_client_ros sample.launch server:=192.168.1.2 #这里的IP地址是运行Motive主机的地址
#然后另外开启一个终端
rostopic list #此时正常的话应该可以查看到目标位置信息了
验证
如果你rostopic list可以看见年所见的刚体的名字,然后rostopic echo 一下这个topic,如果可以显示位置信息,就没问题
(2)Mocap->Pixhawk
将optitrack的位置数据通过mavros传送给飞控
【1】运行vrpn_client_node
这里的IP地址是运行Motive主机的地址,==这里运行程序的机载电脑需要和运行Motive主机在一个网段==
比如,主机三192.168.100.5,那么机载电脑也需要在192.168.100网段下。
roslaunch vrpn_client_ros sample.launch server:=192.168.100.2
【2】运行PX4和mavros
roslaunch mavros px4.launch fcu_url:=/dev/ttyUSB0:921600 gcs_url:=udp://@192.168.0.105:14550
【3】运行ros节点,通过mavros,将位置信息传给px4
rosrun topic_tools relay /vrpn_client_node/<rigid_body_name>/pose /mavros/vision_pose/pose
- fcu_url 连接树莓派和飞控的串口号
- 用ls /dev/ttyUSB* 指令查看串口号是否连接
- 参数 gcs_url:=udp://@192.168.0.119:14550 用来接收 QGroundControl 数据(同一WIFI路由)
- MAVROS 直接通过 /mavros/vision_pose/pose 给 PX4发布消息
- remap从Mocap获取的位置主题 /vrpn_client_node//pose 成 /mavros/vision_pose/pose
或者【3】也可以通过阿木实验室坐标转换代码代替 地址:https://github.com/amov-lab/Prometheus 代码在上面代码中的Modules/control/src/px4_pos_estimator.cpp路径下,有详细注释
==验证== 【1】rostopic echo /mavros/vision_pose/pose 查看是否有数据 【2】打开QGC,查看是否可以把飞控设置为position模式,如果可以就ok