SIGVerse Ros tutorial on SIGverse
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); }
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); }
double SendController::onAction(ActionEvent &evt) { my->setWheelVelocity(Weel_one,Weel_two); ros::spinOnce(); return 1.0; }
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); }
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); }
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_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)
include_directories(include ${catkin_INCLUDE_DIRS}) include_directories(/home/ericgt/sigverse-2.2.0/include/sigverse/home/ericgt/sigverse-2.2.0/include/sigverse/comm/controller)