友情提示:380元/半年,儿童学编程,就上码丁实验室。
DashgoD1底盘新指南-5.4 超声波避障
D1 超声波避障
- 在一个终端运行下面脚本
$ roslaunch dashgo_bringup bringup_smoother_ob.launch
-
D1 前方摆放障物
-
然后,再在另一个终端运行
$ rostopic pub -r 10 /smoother_cmd_vel geometry_msgs/Twist '{linear: {x: 0.2, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0}}'
-
便可查看 D1 的 移动反应。
-
整合超声波的代码在 ~/dashgo_ws/src/dashgo/dashgo_bringup/nodes/dashgo_driver_sm_ob.py 内,目前只整合了两个超声波模块:前面中间的超声波模块与后面的超声波模块。
-
超声波模块的数据的引用代码如下:
try:
r1,r2,r3,r4 = self.arduino.ping()
self.front_ranger=r2 //r2 代表前面中间的超声波模块
self.back_ranger=r4 //r4 代表后面的超声波模块
#rospy.loginfo("ranger: " + str(r1)+","+str(r2)+","+str(r3)+","+str(r4))
except:
rospy.logerr("ping error")
return
- 超声波模块的数据的处理逻辑代码如下:
if(self.front_ranger<=self.safe_ranger_0) and (x>0):
x=0
elif(self.front_ranger<=self.safe_ranger_1) and (x>0.05):
x=0.05
elif(self.front_ranger<=self.safe_ranger_2) and (x>0.15):
x=0.15
if(self.back_ranger<=self.safe_ranger_0) and (x<0):
x=0
elif(self.back_ranger<=self.safe_ranger_1) and (x<-0.05):
x=-0.05
elif(self.back_ranger<=self.safe_ranger_2) and (x<-0.15):
x=-0.15
- 实际中,超声波数据的处理逻辑需要根据实际的应用场景进行修改,上面给出的只是范本。