SIGVerse Ros tutorial on SIGverse

Overview

Simple_Ros.PNG

The Topic

Message Sender

  void SendController::poseCallback(const Sigvers_Ros::VelocityConstPtr& vel)
  {     Wheel_one =  vel->linear;
        Wheel_two =  vel->angular;
     
        printf("Velocity 1!!!  %f\n", Wheel_one);
        printf("Velocity 2!!!  %f\n", Wheel_two);
     
  }

Node Initialization

 void SendController::onInit(InitEvent &evt)
  { Wheel_one = 0.0;
   Wheel_two = 0.0;
   int argc =0;
   char** argv = NULL;
   my = this->getRobotObj(this->myname());
   my->setWheel(10.0, 10.0);
   ros::init(argc, argv, "Sigvers_controller_node");
   ros::NodeHandle n;
   velocity = 1;
   chatter_pub = n.advertise<std_msgs::String>("CommandMess", 1);
   pose_sub = n.subscribe<Sigvers_Ros::Velocity>("mycommand_velocity",    1,&SendController::poseCallback,this);
   ros::Rate loop_rate(10);
  }

Robot Controller

double SendController::onAction(ActionEvent &evt)
{
 my->setWheelVelocity(Weel_one,Weel_two);
 ros::spinOnce();
 return 1.0;
}

Command Node initialization ROS Side

 CommandSig::CommandSig():
  linear_(0),
  angular_(0),
  l_scale_(2.0),
  a_scale_(2.0)
  {
   nh_.param("scale_angular", a_scale_, a_scale_);
   nh_.param("scale_linear", l_scale_, l_scale_);
   vel_pub_ = nh_.advertise<Sigvers_Ros::Velocity>("mycommand_velocity", 1);
   mess_sub =    nh_.subscribe("CommandMess",100,&CommandSig::chatterCallback,this);
   
   }

Main to execute the Node

int main(int argc, char** argv)
 {
  ros::init(argc, argv, "Sigvers_Command_node");
  CommandSig Command_sig;
  ros::Rate loop_rate(10);
  ros::spin();
  return(0);
 }

Message Sender

Robot Motion Command ROS Side

  void CommandSig::chatterCallback (const std_msgs::String::ConstPtr& msg)
  {
   Sigvers_Ros::Velocity vel;
   if(strcmp("go",msg->data.c_str())==0)
   {
   vel.angular = 3.0;
   vel.linear = 3.0;
   vel_pub_.publish(vel);
   }
   else if(strcmp("back",msg->data.c_str())==0)
  {
   vel.angular = -3.0;
   vel.linear = -3.0;
   vel_pub_.publish(vel);
   }
   else if(strcmp("left" ,msg->data.c_str())==0)
  {
  vel.angular = 0.78;
  vel.linear = -0.78;
  vel_pub_.publish(vel);
  sleep(1.8);
  vel.angular = 0.0;
  vel.linear = 0.0;
  vel_pub_.publish(vel);
  }
  else if(strcmp("right" ,msg->data.c_str())==0)
  {
  vel.angular = -0.78;
  vel.linear = 0.78;
  vel_pub_.publish(vel);
  sleep(1.8);
  vel.angular = 0.0;
  vel.linear =  0.0;
  vel_pub_.publish(vel);
  }
  else if(strcmp("stop",msg->data.c_str())==0)
 {
  vel.angular = 0.0;
  vel.linear = 0.0;
  vel_pub_.publish(vel);
 }
………
}

Catkin command

 $catkin_init_workspace in the ~/catkin_ws folder  
 $~/catkin_ws/src/Sigvers_Ros/src.
  $source ~/catkin_ws2/devel/setup.sh 

CMakeLists.txt include msg package.xml src

This shows that the Sigvers_Ros packages exists

Cmake parameters: For Sig.cpp:

cmake_minimum_required(VERSION 2.8.3)
project(Sigvers_Ros)
 find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs message_generation )
## Generate messages in the 'msg' folder
    add_message_files(
    FILES
    Velocity.msg
    )
 ## Generate added messages and services with any dependencies listed here
    generate_messages(
    DEPENDENCIES
    std_msgs
    )
 ADD_LIBRARY(Sig_app src/Sig_app.cpp)
 target_link_libraries(Sig_app ${catkin_LIBRARIES})
 add_dependencies(Sig_app Sigvers_Ros_gencpp)

Front page   New List of pages Search Recent changes   Help   RSS of recent changes