Compare commits
2 Commits
2e77bdbebb
...
e7b3aa9deb
Author | SHA1 | Date |
---|---|---|
yul | e7b3aa9deb | |
yul | 2c5ced569b |
|
@ -0,0 +1,56 @@
|
||||||
|
#include <ros/ros.h>
|
||||||
|
#include <std_msgs/Float32MultiArray.h>
|
||||||
|
#include <geometry_msgs/Twist.h>
|
||||||
|
|
||||||
|
// Set value according to your image number in your img_data folder.
|
||||||
|
#define ARROW_RIGHT 4
|
||||||
|
#define ARROW_UP 5
|
||||||
|
#define ARROW_LEFT 6
|
||||||
|
|
||||||
|
ros::Publisher vel_pub;
|
||||||
|
geometry_msgs::Twist vel_msg;
|
||||||
|
|
||||||
|
void objectCallback(const std_msgs::Float32MultiArrayPtr &object)
|
||||||
|
{
|
||||||
|
if (object->data.size() > 0){
|
||||||
|
int id = object->data[0];
|
||||||
|
|
||||||
|
switch (id){
|
||||||
|
case ARROW_RIGHT:
|
||||||
|
vel_msg.linear.x = 0;
|
||||||
|
vel_msg.angular.z = -1;
|
||||||
|
break;
|
||||||
|
case ARROW_UP:
|
||||||
|
vel_msg.linear.x = 0.5;
|
||||||
|
vel_msg.angular.z = 0;
|
||||||
|
break;
|
||||||
|
case ARROW_LEFT:
|
||||||
|
vel_msg.linear.x = 0;
|
||||||
|
vel_msg.angular.z = 1;
|
||||||
|
break;
|
||||||
|
default: // other object
|
||||||
|
vel_msg.linear.x = 0;
|
||||||
|
vel_msg.angular.z = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
vel_msg.linear.x = 0;
|
||||||
|
vel_msg.angular.z = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
vel_pub.publish(vel_msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
ros::init(argc, argv, "img_control");
|
||||||
|
ros::NodeHandle n("~");
|
||||||
|
ros::Rate loop_rate(30);
|
||||||
|
ros::Subscriber sub = n.subscribe("/objects", 1, objectCallback);
|
||||||
|
vel_pub = n.advertise<geometry_msgs::Twist>("/cmd_vel", 1);
|
||||||
|
while (ros::ok())
|
||||||
|
{
|
||||||
|
ros::spinOnce();
|
||||||
|
loop_rate.sleep();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue