基于NVIDIA Xavier NX(ubuntu20.04)的Optitrack视觉定位 PX4+ros noetic(实 物运行记录)

基于NVIDIA Xavier NX(ubuntu20.04)的Optitrack视觉定位 PX4+ros noetic(实 物运行记录)

前言

一:硬件准备

两种界面化显示的方式

无线连接

有线连接

二:软件准备

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

猜你喜欢

转载自blog.csdn.net/baidu_41617231/article/details/135373063
今日推荐