目录总览

小车yolo机械臂(一)ros下gazebo搭建小车(可键盘控制)安装摄像头仿真 加载yolo检测识别标记物体

小车yolo机械臂(二)机械臂仿真 ros下从xacro模型文件搭建Moveit!+Gazebo仿真系统

小车yolo机械臂(三)ROS消息订阅监听 rospy.Subscriber 订阅监听yolo python实现订阅/darknet_ros/bounding_boxes topic

小车yolo机械臂(四)python ros 和darknet_ros 使用launch文件启动脚本

小车yolo机械臂(五)让小车在命令下运动起来 rostopic pub /cmd_vel geometry_msgs/Twist

小车yolo机械臂(六)ros gazebo 小车摄像头根据darknet_ros中yolo目标检测的信息进行自主运动

小车yolo机械臂(七)小车与机械臂融合,并控制机械臂运动 gazebo control

小车yolo机械臂(八)ros小车和机械臂gazebo仿真,机械臂根据darknet_ros中yolo检测结果来自动运动 python实现

前言

在之前的几篇博客中,小车已经可以通过键盘控制,但是,我们最后要实现的是小车根据自己所看到的来做出运动判断,机械臂也要根据所看到的来做出运动判断,期间不能有人工参与。

所以我们现在要做的就是用命令让小车动起来,然后再将命令嵌入python中,什么时候让小车运动,由python程序决定。

参考的博客

(五)turtlebot3用代码控制机器人直线及圆弧运动(/cmd_vel geometry_msgs/Twist的使用)

ROS-ROS命令(四)rostopic: ROS话题

模型运行

roslaunch mrobot_gazebo my_gazebo3.launch

寻找控制小车的topic

我们查看当前有哪些tipic,再从中找到控制小车运动的topic

rostopic list

在这里插入图片描述
这里有很多话题,具体选那个,查阅众多资料,发现和控制运动有关的话题是/cmd_vel
同样,我们可以打开mrobot_gazebo/urdf下的my_gazebo_robot_car.urdf.xacro
在这里插入图片描述

可以看到其中有一句:

<commandTopic>cmd_vel</commandTopic>

也可以看出控制小车运动的话题就是cmd_vel

下一步,控制小车运动的命令
在终端中,输入:

rostopic info /cmd_vel

在这里插入图片描述
这里的type就是 Type: geometry_msgs/Twist

执行运动的命令

所以最后的控制命令就是:

 rostopic pub /cmd_vel geometry_msgs/Twist

最后还差命令的数据,我们通过键盘控制可以看到命令数据的格式
在终端输入:

roslaunch mrobot_teleop mrobot_teleop.launch

在这里插入图片描述
同时执行:

rostopic echo /cmd_vel

在这里插入图片描述
所以小车的运动命令数据格式是:

linear: 
  x: 0.0
  y: 0.0
  z: 0.0
angular: 
  x: 0.0
  y: 0.0
  z: 0.0

最后的命令:

rostopic pub /cmd_vel geometry_msgs/Twist '{linear: {x: 0.1, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0}}'

在这里插入图片描述
可以看到小车已经开始动了,但是它一直不停。

在执行命令的时候,我们加一个 -1

rostopic pub -1 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.1, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0}}'

-1只发布一次消息

但是小车还是一直在动,估计是没有摩擦力的原因,后续再修改。
也可以再发一次命令:

rostopic pub -1 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0}}'

里面的值全0,这样的话,小车就可以停止。