pixhawk双机通信测试例子

2023-05-16

本文针对mavlinktopic有一定熟悉的读者。

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)、连线时注意应将txrx交替连接。

1 接线示意图

 

2 实际运行示意图

 

2)、除了USBtelem1telem2外,还可以使用serial4/5。可使用下面标记的4个串口。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pixhawk双机通信测试例子 的相关文章

  • IPC:system V消息队列

    ftok函数 ftok convert a pathname and a project identifier to a System V IPC key SYNOPSIS include lt sys types h gt include
  • IPC:system V 信号量和共享内存

    信号量相关知识 结构体 union semun int val Value for SETVAL struct semid ds buf Buffer for IPC STAT IPC SET unsigned short array Ar
  • 信号signal编程测试

    信号会打断系统调用 xff0c 慎用 xff0c 就是用的时候测一测 下面是信号的基础测试 信号 信号 xff08 signal xff09 机制是UNIX系统中最为古老的进程之间的通信机制 它用于在一个或多个进程之间传递异步信号 信号可以
  • 线程间通讯的信号量semaphore.h

    sem init SEM INIT 3 Linux Programmer 39 s Manual SEM INIT 3 NAME sem init initialize an unnamed semaphore SYNOPSIS inclu
  • posix线程的优先级测试

    测试的时候 xff0c 如果创建的线程不够多 xff0c 有些问题体现不出来 xff0c 例如pthread cond signal和pthread cond broadcast 奇怪的优化是不会有好结果的 优先级打印 xff1a 测试目的
  • getpwent系统调用

    getpwent系统调用 NAME getpwent setpwent endpwent get password file entry SYNOPSIS include lt sys types h gt include lt pwd h
  • 调试信息:linux彩色调试信息的输出

    一 printf实现的宏 测试代码 xff1a include lt sys types h gt include lt pwd h gt include lt stdio h gt include lt stdlib h gt defin
  • UML里面静态建模及动态建模都有哪些图?

    静态建模 xff1a 创建并建立一个系统的静态特征 1 用例图 xff1a 描述系统功能及功能的使用者 2 类 图 xff1a 表现系统里实体的关系 责任 类和类之间的关系 xff0c 属性及方法 3 对象图 xff1a 当类图不能完全显示
  • warning: ISO C++11 requires at least one argument for the “...“ in a variadic macro

    关于警告 xff1a warning ISO C 43 43 11 requires at least one argument for the 34 34 in a variadic macro 相关代码如下 xff0c 把下面的代码放到
  • IMX6开发板设置DHCP功能和验证DNS功能

    一 udhcpc命令 root 64 host udhcpc help BusyBox v1 29 3 2022 11 09 15 51 05 CST multi call binary Usage udhcpc fbqRB a MSEC
  • 常用端口号/etc/services

    etc services文件存储的内容 记录一下 xff0c 防止忘记 etc services Id services v 1 1 2004 10 09 02 49 18 andersen Exp Network services Int
  • 网络字节序和主机字节序转换函数

    大小端判断 include lt stdio h gt include lt stdint h gt int is little endian union uint32 t num uint8 t c e e num 61 1 return
  • 在ubuntu连接Xlight FTP Server

    一 在windows上搭建服务器 http www xlightftpd com download htm 使用英文版 xff0c 使防止在ubuntu中登录中文版时 xff0c 显示乱码 新建用户和用户对应的服务器目录 如下所示 xff0
  • xinetd服务

    检查xinetd服务是否安装 lkmao 64 ubuntu ps au grep xinetd lkmao 2536 0 0 0 1 11760 2172 pts 0 S 43 06 17 0 00 grep color 61 auto
  • ssh免密登录mobaxterm使用方法

    1 如果要在服务器上添加两个公钥 xff0c 在服务器 ssh authorized keys上添加公钥 xff0c 在第一个公钥的下一行添加第二个公钥即可 xff1b 2 在mobaxterm上使用公私钥免密登录时 xff0c 需要在se
  • eclipse和ubuntu使用小技巧

    1 在当前界面查找某一关键字ctrl 43 f 然后在当前界面切换关键字下一个是ctrl 43 k 上一个是ctrl 43 shift 43 k 2 打开一个新的页面要激活输入法切换是ctrl 43 sapce
  • 关于pixhawk2.1+px4 1.7.3stable出现mag sensors inconsistent问题分析

    因为前两天在学校测试代码时 xff0c 飞机在mission模式下突然出现在每一个mission点都会停留两三分钟的问题 xff0c 而且偏航还一直在旋转 xff0c QGC上也会提示mag sensors inconsistent 于是考
  • px4+pixhawk2.1使用出现无sensors问题

    今天外场试飞突然发现地面站无法检测到sensors xff0c 距离上一次正常试飞没有进行任何操作 xff0c 怀疑可能是飞控板子上面的cube接触不良 xff0c 于是重新安装了下还是不能解决问题 xff0c 重新刷px4官方固件也是不能
  • Ubuntu安装之后卡顿解决方法

    前两天刚为电脑装了Ubuntu18 04 xff0c 然后发现很卡 这就奇怪了 xff0c 我这电脑在Windows运行还挺流畅的 xff0c 难道是系统是真的卡 xff1f 后来百度之后 xff0c 发现可能是以下两点原因 xff1a 1
  • AdGuard Home 安装使用教程

    原文链接 xff1a 使用 Envoy 和 AdGuard Home 阻挡烦人的广告 通常我们使用网络时 xff0c 宽带运营商会为我们分配一个 DNS 服务器 这个 DNS 通常是最快的 xff0c 距离最近的服务器 xff0c 但会有很

随机推荐