pixhawk双机通信测试例子
来源:互联网 发布:淘宝卖家数据采集工具 编辑:程序博客网 时间:2024/06/01 21:00
本文针对mavlink和topic有一定熟悉的读者。
Pixhawk自有固件,mavlink程序主要是针对pixhawk与地面站通信的。所以要实现双机通信需要修改一些代码。这里主要是利用example/px4_mavlink_debug这个例子。
Pix1:用于接收pix2发送过来的信息,并将信息转发给地面站。
Pix2:用于向pix1发送信息。
Pix1:
(1)、将config_px4fmu-v2_default.mk中
MODULES +=examples/px4_mavlink_debug中注释去掉。
(2)、src/modules/mavlink/mavlink_messages.cpp中添加
#include <uORB/topics/debug_key_value.h>
(3)、src/modules/mavlink/mavlink_receiver.h中添加
#include<uORB/topics/debug_key_value.h>
voidhandle_message_debug_mavlink_value(mavlink_message_t *msg);
orb_advert_t_debug_value_pub;
(4)、src/modules/mavlink/mavlink_receiver.cpp中
i. MavlinkReceiver构造函数初始化列表中添加_debug_value_pub(-1),//lastadd
ii. 添加函数:
void
MavlinkReceiver::handle_message_debug_mavlink_value(mavlink_message_t*msg)
{
mavlink_named_value_float_tvalue_float;
mavlink_msg_named_value_float_decode(msg,&value_float);
uint64_t timestamp =hrt_absolute_time();
structdebug_key_value_s dbg;
dbg.value =value_float.value;
dbg.timestamp_ms =timestamp;
if(_debug_value_pub< 0)
{
_debug_value_pub= orb_advertise(ORB_ID(debug_key_value), &dbg);
}
else
{
orb_publish(ORB_ID(debug_key_value),_debug_value_pub, &dbg);
}
}
iii. 修改handle_message()
void MavlinkReceiver::handle_message(mavlink_message_t*msg)
{
switch (msg->msgid) {
case MAVLINK_MSG_ID_COMMAND_LONG:
handle_message_command_long(msg);
break;
………………….
caseMAVLINK_MSG_ID_NAMED_VALUE_FLOAT:
handle_message_debug_mavlink_value(msg);
break;
default:
break;
}
(5)、启动一个新的mavlink连接。在sd卡中添加etc/extras.txt
#!nsh
#
#pix1
#mavlink stop-all
mavlink stream -d /dev/ttyS1 -s NAMED_VALUE_FLOAT -r 10
mavlink start -b 57600 -d /dev/ttyS2 -m custom
说明:
ttyS1:对应Telem1,用于向地面站发送数据
ttyS2:对应Telem2,用于接收pix2的数据
Pix2:
(1)、将config_px4fmu-v2_default.mk中
MODULES +=examples/px4_mavlink_debug中注释去掉。
(2)启动一个新的mavlink连接。在sd卡中添加etc/extras.txt
#!nsh
#pix2
#mavlink stop-all
mavlink start -b 57600 -d /dev/ttyS2 -m custom
usleep 100000
mavlink stream -d /dev/ttyS2 -s NAMED_VALUE_FLOAT -r 10
说明:
ttyS2:对应Telem2,用于向pix1发送数据
注:
(1)、连线时注意应将tx和rx交替连接。
图1接线示意图
图2实际运行示意图
(2)、除了USB、telem1、telem2外,还可以使用serial4/5。可使用下面标记的4个串口。
- pixhawk双机通信测试例子
- 双机通信
- Pixhawk uORB通信
- pixhawk通信机制
- stm32f407 spi 双机通信
- Arduino 双机串口通信
- 单片的双机通信
- 双机串口通信
- Pixhawk软件仿真飞行测试
- Pixhawk与树莓派3的串口通信
- STC89C52MCU -- 双机通信及多机通信
- pixhawk
- 基于NRF24L01的AVR双机通信
- VirtualBox中双机之间的串口通信
- STM32双机SPI中断通信机制
- 51单片机编程:双机串行通信
- Java+利用UDP实现简单双机通信
- arduino双机通信 (解决引脚不够用)
- IOS学习 NSOperation 并发数量、暂停/继续、取消、等待、依赖 与GCD区别
- SensorSimulator安装
- 中央政府各职能部门简介
- iOS js oc相互调用(JavaScriptCore)(二)
- debian设置vim配置文件
- pixhawk双机通信测试例子
- const的引用
- Windows Server 2008 R2 Server Core常用命令及其安装
- Physics Bodies(中文翻译)—UE4官方文档
- hdu4975A simple Gaussian elimination problem.【网络流判断是否解唯一】
- poj 2774 最长公共子串 后缀数组
- html5上传图片限制大小
- ♥HDOJ 2407-Knots【大爷的规律题】
- 圆柱体的面积和体积