瞬驰(Dash)D1开发手册--超声波传感器

在瞬驰(Dash)D1前部安装3个超声波传感器。

arduino端

在arduino固件中添加如下代码:

int TrigPin2 = 42;
int EchoPin2 = 43;
int TrigPin3 = 44;
int EchoPin3 = 45;
int TrigPin4 = 46;
int EchoPin4 = 47;
int TrigPin5 = 48;
int EchoPin5 = 49;

int myPing(int TrigPin, int EchoPin) {
    digitalWrite(TrigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(TrigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(TrigPin, LOW);

    //return (long)(pulseIn(EchoPin, HIGH) / 58.0/100.0);
    return (int)(pulseIn(EchoPin, HIGH)/58.0);
}

int last_f1=400;
int last_f2=400;
int last_f3=400;

int frontPing(){
  int f1= myPing(TrigPin2 , EchoPin2 );
  int f2= myPing(TrigPin5 , EchoPin5 );
  int f3= myPing(TrigPin4 , EchoPin4);
  if(f1==0){
    f1=last_f1;
  }else if ((f1>=400)||(f1<0)){
    f1=400;
  }
  if(f2==0){
    f2=last_f1;
  }else if ((f2>=400)||(f2<0)){
    f2=400;
  }
  if(f3==0){
    f3=last_f1;
  }else if ((f3>=400)||(f3<0)){
    f3=400;
  }
  int tmp=min(f1,f2);
  int tmp1=min(tmp, f3);

  if(f1>0){
       last_f1=f1;
  }
  if(f2>0){
       last_f2=f2;
  }
  if(f3>0){
      last_f3=f3;
  }
  return tmp1;
}

在命令处理中添加如下代码:

    case PING:
      Serial.println(frontPing());
      break;

测试代码片段:

#if 0
  delay(3000);
    Serial.print("front: ");
    Serial.println(frontPing());
    Serial.print("2: ");
   Serial.println(last_f1);
   Serial.print("3: ");
   Serial.println(last_f2);
   Serial.print("4: ");
   Serial.println(last_f3);
#endif

ros_arduino_bridge端

在ros_arduino_bridge/ros_arduino_python/src/ros_arduino_python/arduino_driver.py中,把ping()函数修改为如下内容:

    def ping(self):
        ‘‘‘ The srf05/Ping command queries an SRF05/Ping sonar sensor
            connected to the General Purpose I/O line pinId for a distance,
            and returns the range in cm.  Sonar distance resolution is integer based.
        ‘‘‘
        return self.execute(‘p‘);

在ros_arduino_bridge/ros_arduino_python/src/ros_arduino_python/base_controller.py修改如下三处:

1)在init()中定义变量

        # ranger
        self.ranger_front=400

2)在poll()中读取超声波传感器的值

            try:
                 self.ranger_front= self.arduino.ping()
            except:
                rospy.logerr("ping exception count: ")
                return

            rospy.loginfo("ranger_front:" + str(self.ranger_front))

3)速度的调节

        if self.ranger_front < 25 and x>0:
            x=0.0
        elif self.ranger_front < 50 and x>=0.15:
            x=0.15
        elif self.ranger_front < 80 and x>=0.3:
            x=0.3
时间: 2024-10-09 05:11:58

瞬驰(Dash)D1开发手册--超声波传感器的相关文章

树梅派控制瞬驰D1开发平台

瞬驰D1开发平台的下位机控制接口参考:http://blog.csdn.net/EAIBOT/article/category/6204460 这里我们讲下如何使用树梅派(Raspberry Pi)和下位机相连,用来控制顺驰D1开发平台的移动. 主要分如下几个部分: 线路连接 D1开发平台预留两个线: 5V的电源线和USB数据线. 把这两根线分别和树梅派的供电口(micro usb).USB接口(四个USB接口中任何一个均可). 如果连接正常, 按下D1开发平台的开关按钮, 树梅派的指示就会亮了

最新ThinkPHP3.2.3完全开发手册.chm下载地址(花了3小时制作完成)。

立即下载ThinkPHP3.2.3完全开发手册.chm ThinkPHP是一个快速.简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开发体验和易用性,并且拥有众多的原创功能和特性,为WEB应用开发提供了强有力的支持. 3.2版本则在原来的基础上进行一些架构的调整,引入了命名空间支持和模块化的完善,为大型应用和模块化开发提供了更多的便利. 3.2.3 主要更新 数据库驱动完全用PDO

火星人敏捷开发手册视频培训上线了!

CSDN教育频道上线说起来已经是旧闻了,<火星人敏捷开发手册>的网址是:http://edu.csdn.net/course/detail/164 以前录制过一个1小时的版本,不过讲解得没有这次15分钟×8课时的好.

谷歌Web中文开发手册:1目的&amp;目录

原文:https://developers.google.com/web/fundamentals/getting-started/your-first-multi-screen-site/ 你的第一个适应多屏幕的网站 现在有一系列的智能手机和大屏幕显示设备(甚至是电视),所以我们需要学习怎样开发一个可以在这些设备中都表现良好的网站. 多屏幕适应的开发经验并不是那么难.根据这个系列的教程,一起来做一个例子: https://www.udacity.com/course/cs256 CS256 M

阿里巴巴Java开发手册

序号 文档名及下载地址 1 阿里巴巴Java开发手册v1.2.0 其他

《阿里巴巴Java开发手册(正式版》读记

前几天,阿里巴巴发布了<阿里巴巴Java开发手册(正式版>,第一时间下载阅读了一番. 不同于一般大厂内部的代码规范,阿里巴巴的这本Java开发手册,可谓包罗万象,几乎日常Java开发中方方面面都有所涉及. 在知乎上,也有关于这本开发手册的讨论十分热烈的帖子. 由于里面涉及的内容比较多,下面重点罗列下一些我读过之后十分赞同与持保留意见的条目: (一)编码规范 (一)命名规约 8. [强制]POJO 类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误. 反例:定义为基本数据类型b

Android开发之方向传感器的使用? (2011-10-13 20:56:05)转载▼

Android开发之方向传感器的使用 (2011-10-13 20:56:05) 转载▼ 标签: android 传感器 方向 指南针 杂谈 分类: 3GAndroid学习笔记 Android中的方向传感器在生活中是一个很好的应用,典型的例子是指南针的使用,我们先来简单介绍一下传感器中三个参数x,y,z的含义,以一幅图来说明.                                      图 1 补充说明:图中的坐标轴x,y,z和传感器中的X,Y,Z没有任何联系! 如上图所示,绿色部

【转】线程池体系介绍及从阿里Java开发手册学习线程池的正确创建方法

jdk1.7中java.util.concurrent.Executor线程池体系介绍 java.util.concurrent.Executor : 负责线程的使用与调度的根接口  |–ExecutorService:Executor的子接口,线程池的主要接口  |–ThreadPoolExecutor:ExecutorService的实现类  |–ScheduledExecutorService:ExecutorService的子接口,负责线程的调度  |–ScheduledThreadPo

使用超声波传感器HC-SR04检测障碍物

HC-SR04是一种常用的超声波传感器,能够探测2-300厘米范围内的障碍物. 传感器看起来像一个小PCB,前面有两个金属圆柱,背面有一个小电路. 在本文中,我们将提供一个简单的演示来使用HC-SR04. http://www.yiboard.com/thread-660-1-1.html