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)