nanshi00 发表于 2022-10-24 06:35:56

通过MAVROS连接机载电脑(NANO/TX2/NX) …

一、MAVROS

MAVROS常用话题和服务可以看CK1201:常用MAVROS话题和服务 。
1.1介绍

MAVROS相当于PX4飞控中的MAVLINK模块。MAVROS将话题转为MAVLINK格式消息发送给飞控,飞控中的MAVLINK模块将MAVLINK格式消息转化为uORB消息给PX4各模块间传递消息使用,也可以反过来从uORB消息一直到ROS话题。
代码示例看MAVROS Offboard control example就好了,讲得很清楚。
1.2特别注意


[*]不要用程序切offboard模式!!!
[*]不要用程序切offboard模式!!!
[*]不要用程序切offboard模式!!!
[*]示例程序在循环里反复切offboard模式,要是访问不到机载电脑,关闭不了控制节点,那就一直会处于offboard模式。如果发送的指令还是速度控制指令就完了。所以设立电子围栏也很重要,至少砸到人的几率小了。
[*]建议用遥控器切换模式,如果程序出现问题立即用遥控器切换到自稳等其他模式。
[*]消息需要以大于2Hz的频率发送,否则PX4会切换回offboard之前的模式。
[*]切换到offboard需要位置信息,比如GPS提供的位置信息,在使用前要确保无人机在定点模式!
[*]ROS中的坐标是ENU(东北天),而PX4中是NED(北东地)。MAVROS已经对坐标进行了转换。
ROSPX4XYYXZ-Z<hr/>二、MAVROS与PX4的连接

2.1 Gazebo仿真

2.1.1启动Mavros

roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
2.1.2启动Gazebo仿真环境

roslaunch px4 posix_sitl.launch
2.1.2启动外部控制节点

rosrun offb_ctrl offb_ctrl_node2.2真机

参考Companion Computer for Pixhawk Series,MAVLink Peripherals (GCS/OSD/Companion)
2.2.1配置Pixhawk上的Telem2作为MAVLINK端口


[*]MAV_1_CONFIG= TELEM 2
[*]MAV_1_MODE = Onboard
[*]SER_TEL2_BAUD = 921600 8N1
一开始参数里可能只有MAV_1_CONFIG,搜不到其他的参数,只需要先把MAV_1_CONFIG设置为TELEM 2,然后把飞控重启后就有了。
2.2.2在机载电脑上启动MAVROS

我这里用的是jetson nano的串口2,也就是dev/ttyTHS1,这个按照自己实际情况写就好了。最后的921600是波特率,就是2.2.1中设置的SER_TEL2_BAUD,改成设置的值就行了。
roslaunch mavros px4.launch fcu_url:=serial:///dev/ttyTHS1:921600 gcs_url:=udp://@192.168.0.0
gcs_url为运行QGC的主机的IP
设置为以下参数表示自动寻址,直到连上QGC
roslaunch mavros px4.launch fcu_url:=serial:///dev/ttyTHS1:921600 gcs_url:=udp-b://@
可能会报错
FCU: DeviceError:serial:open: Permission denied
解决方法是给对应的串口权限
sudo chmod 777 /dev/ttyTHS1
虽然这样子mavros就正常运行了,但是节点信息会卡在xxxxxx startxxxxxxx,然后/mavros/state中的connected是false。这个问题卡了我一天,后来我把波特率往下降到460800以下就能正常使用了。如果知道这是什么原因欢迎私信或评论,谢谢。(评论区有大佬指出是因为数据线太长,导致传输过程中到达不了那么高的波特率,所以不能成功连接)
可能会报timesync的异常,解决方法是:
sudo gedit /opt/ros/melodic/share/mavros/launch/px4_config.yaml
把第12行改为
timesync_rate: 0.0
2.2.3一劳永逸

每次要在后面加一堆参数很烦,所以直接修改launch文件,使用sudo权限打开/opt/ros/melodic/share/mavros/launch/px4.launch,将
<arg name="fcu_url" default="/dev/ttyACM0:57600" />修改为自己的端口和波特率
<arg name="fcu_url" default="/dev/ttyTHS1:921600" />2.2.4运行外部控制节点

rosrun offb_ctrl offb_ctrl_node
三、其他

3.1提高mavros中IMU话题的发布频率

rosrun mavros mavcmd long 511 105 10000 0 0 0 0 0//提高mavros/imu/data_raw频率
rosrun mavros mavcmd long 511 31 10000 0 0 0 0 0//提高mavros/imu/data频率
10000表示话题的发布时间间隔为10000us,可以自由调节

吹毛成仙 发表于 2022-10-24 06:45:33

作者您好,我最近也在学习板载计算机通过MAVROS及offboard模式控制PX4飞控,可以有空的时候交流一下吗?

NEONNY 发表于 2022-10-24 06:59:54

欢迎交流。可以私聊加我微信或者评论交流都可以

荒野冷风 发表于 2022-10-24 07:12:45

请问你在实验过程中有没有在tx2安装QGC地面站?因为我想在仿真里先试试offboard模式,但是目前无法在TX2安装qgc地面站

ftdyz 发表于 2022-10-24 07:25:01

仿真的话是在笔记本或者台式机上做的,tx2主要用来计算和通信

lihuaxun88 发表于 2022-10-24 07:36:37

我昨天TX2也装了好久,不成功,请问你成功了吗?

lm12041204 发表于 2022-10-24 07:46:48

没有,不准备浪费时间在上面了,换个思路

fantansticma 发表于 2022-10-24 08:01:01

可以安装MissionPlanner,参照这个链接:Running Mission Planner on Linux

loveav 发表于 2022-10-24 08:08:42

我后来直接不仿真了,直接用Linux串口给PX4发指令,不过还是谢谢您!

wjt213414 发表于 2022-10-24 08:19:12

请问MAV_1_CONFIG等参数在哪里设置的?

天下无双 发表于 2022-10-24 08:25:27

飞控连上电脑,QGC的参数里可以查找到

小禹宇鱼 发表于 2022-10-24 08:32:16

谢谢大哥

青田石头 发表于 2022-10-24 08:45:55

前来拜读大佬文章,然后串口降速的问题我也遇到了,从经验上感觉应该是线太长速度太快导致数据包完整程度受到影响,我仔细观察过921600的时候还是有机会能连上。解决方案可以试试把线弄短,然后加屏蔽层试试。

zcg2000 发表于 2022-10-24 08:52:12

okk感谢[调皮]

飞飞机油 发表于 2022-10-24 09:02:50

作者您好,我也想买一块nano,只买一块板子就可以了吗?要不要买显示器、wifi模块等等?

x60528 发表于 2022-10-24 09:16:37

最好买个显示器和wifi模块。显示器主要是配环境的时候用,用完可以用nomachine远程,wifi网卡的话飞机飞的时候总不能连网线吧[调皮]

zhoulinchun01 发表于 2022-10-24 09:24:03

作者您好,我最近也在nano上运行这个px4官方例程来控制飞控,我想问一下,在实机测试这个例程的时候,无人机为什么会一直向上飞停不下来?

vannnnn 发表于 2022-10-24 09:34:53

大佬能加一下联系方式吗?有些问题想咨询您
[谢邀]

xubenben0313 发表于 2022-10-24 09:47:40

你好,请问如何加屏蔽层呀,谢谢

cnlcncn 发表于 2022-10-24 09:53:45

大佬,为什么进行仿真的时候 mavros总是连接不上px4固件呢?
页: [1] 2
查看完整版本: 通过MAVROS连接机载电脑(NANO/TX2/NX) …