通过MAVROS连接机载电脑(NANO/TX2/NX) …
一、MAVROSMAVROS常用话题和服务可以看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:=&#34;udp://:14540@127.0.0.1:14557&#34;
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=&#34;fcu_url&#34; default=&#34;/dev/ttyACM0:57600&#34; />修改为自己的端口和波特率
<arg name=&#34;fcu_url&#34; default=&#34;/dev/ttyTHS1:921600&#34; />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,可以自由调节 作者您好,我最近也在学习板载计算机通过MAVROS及offboard模式控制PX4飞控,可以有空的时候交流一下吗? 欢迎交流。可以私聊加我微信或者评论交流都可以 请问你在实验过程中有没有在tx2安装QGC地面站?因为我想在仿真里先试试offboard模式,但是目前无法在TX2安装qgc地面站 仿真的话是在笔记本或者台式机上做的,tx2主要用来计算和通信 我昨天TX2也装了好久,不成功,请问你成功了吗? 没有,不准备浪费时间在上面了,换个思路 可以安装MissionPlanner,参照这个链接:Running Mission Planner on Linux 我后来直接不仿真了,直接用Linux串口给PX4发指令,不过还是谢谢您! 请问MAV_1_CONFIG等参数在哪里设置的? 飞控连上电脑,QGC的参数里可以查找到 谢谢大哥 前来拜读大佬文章,然后串口降速的问题我也遇到了,从经验上感觉应该是线太长速度太快导致数据包完整程度受到影响,我仔细观察过921600的时候还是有机会能连上。解决方案可以试试把线弄短,然后加屏蔽层试试。 okk感谢[调皮] 作者您好,我也想买一块nano,只买一块板子就可以了吗?要不要买显示器、wifi模块等等? 最好买个显示器和wifi模块。显示器主要是配环境的时候用,用完可以用nomachine远程,wifi网卡的话飞机飞的时候总不能连网线吧[调皮] 作者您好,我最近也在nano上运行这个px4官方例程来控制飞控,我想问一下,在实机测试这个例程的时候,无人机为什么会一直向上飞停不下来? 大佬能加一下联系方式吗?有些问题想咨询您
[谢邀] 你好,请问如何加屏蔽层呀,谢谢 大佬,为什么进行仿真的时候 mavros总是连接不上px4固件呢?
页:
[1]
2