Ardupilot飞控接入多个GY-US42型号超声波测距传感器

引言

GY-US42超声波测距传感器成本低廉,测距范围20-720cm,拥有多种通信协议支持iic、uart、pwm三种模式,其iic协议和Maxsonar协议兼容,因此可以直接接入ardupilot。但是ardupilot默认Maxsonar测距代码并不兼容多个不同地址的设备同时运行,需要对其源码进行一定的修改。(下述源码修改基于4.0.0master版本)

改变

全局查找函数并定位

void RangeFinder::detect_instance(uint8_t instance, uint8_t& serial_instance)

修改case Type::MBI2C内容为如下:

 case Type::MBI2C:
     if(params[instance].address){
         FOREACH_I2C(i) {      
             if (_add_backend(AP_RangeFinder_MaxsonarI2CXL::detect(state[instance], params[instance],
                hal.i2c_mgr->get_device(i,params[instance].address)))) {//AP_RANGE_FINDER_MAXSONARI2CXL_DEFAULT_ADDR
                 break;
             }
         }
     }
     break;

结果

经如上修改后,进入地面站,读取参数列表,对RNGFND_X的参数进行设置,设置地址为7bit I2C地址的十进制形式(修改GY-US42地址的方法请参见官方手册,使用官方地面站进行修改。需要注意的是官方地面站填入的地址是8bit地址,需要除以2。),设置安装角度,设置RNGFND_TYPE为2。

重启飞控,即可看见多个GY-US42超声波传感器开始正常工作了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值