6 #include <boost/asio.hpp> 7 #include <std_srvs/Trigger.h> 8 #include <boost/smart_ptr.hpp> 12 using boost::asio::ip::tcp;
22 int main(
int argc,
char** argv) {
23 ros::init(argc, argv,
"pick_and_place_server");
31 boost::asio::io_service io_service;
32 tcp::acceptor server(io_service, tcp::endpoint(tcp::v4(), 5001));
33 socket_ptr client(
new tcp::socket(io_service));
38 server.accept(*client);
40 std_srvs::Trigger::Response pickAndPlaceRes =
pickAndPlace(pickAndPlaceClient);
43 if (pickAndPlaceRes.success) {
44 boost::asio::write(*client, boost::asio::buffer(
"go\n", 3));
46 recover(pickAndPlaceClient, client);
51 boost::asio::read(*client, boost::asio::buffer(data, 3));
52 if (std::strcmp(data,
"go\n") == 0) {
54 boost::asio::write(*client, boost::asio::buffer(
"go\n", 3));
56 recover(pickAndPlaceClient, client);
75 write(*client, boost::asio::buffer(
"go\n", 3));
78 }
else if(choice ==
'q') {
87 std_srvs::Trigger::Request pickAndPlaceReq;
88 std_srvs::Trigger::Response pickAndPlaceRes;
90 if (pickAndPlaceClient.
call(pickAndPlaceReq, pickAndPlaceRes)) {
93 return pickAndPlaceRes;
98 std::string baseCmd =
"rosrun dynamic_reconfigure dynparam load /find_object_node `rospack find robotican_demos`/config/";
99 if(colorName ==
"red") {
101 FILE *process = popen((baseCmd +
"red_object.yaml").c_str(),
"r");
107 else if(colorName ==
"green") {
108 FILE *process = popen((baseCmd +
"green_object.yaml").c_str(),
"r");
113 }
else if(colorName ==
"blue") {
114 FILE *process = popen((baseCmd +
"blue_object.yaml").c_str(),
"r");
ServiceClient serviceClient(const std::string &service_name, bool persistent=false, const M_string &header_values=M_string())
std_srvs::Trigger::Response pickAndPlace(ros::ServiceClient &pickAndPlaceClient)
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
bool call(MReq &req, MRes &res)
ROSCPP_DECL const std::string & getName()
int main(int argc, char **argv)
bool waitForExistence(ros::Duration timeout=ros::Duration(-1))
boost::shared_ptr< tcp::socket > socket_ptr
void recover(ros::ServiceClient &pickAndPlaceClient, socket_ptr &client)
#define ROS_INFO_STREAM(args)
ROSCPP_DECL void shutdown()
void changeColor(std::string colorName)