1、创建工作空间
mkdir 名字_ws
mkdir 名字_ws/src
cd lei_ws/src
catkin_init_workspace
2、创建一个ros包
catkin_create_pkg topic_pub rospy roscpp std_msgs
cd topic_pub/src
设置环境变量
gedit .bashrc
在末尾加上 source ~/turtle_ws/devel/setup.bash
3、创建一个发布话题cpp文件
gedit topic_pub
#include <ros/ros.h>
#include <std_msgs/String.h>
#include <iostream>
using namespace std;
int main(int argc,char *argv[])
{
ros::init(argc,argv,"leihua");
ros::NodeHandle n;
ros::Publisher topic_pub=n.advertise<std_msgs::String>("leihua",10);
std_msgs::String Send_msgs;
string mesgs="0";
while(ros::ok)
{
cin>>mesgs;
Send_msgs.data=mesgs;
topic_pub.publish(Send_msgs);
}
return 0;
}
4、创建接受话题cpp文件
```cpp
#include <ros/ros.h>
#include <iostream>
#include <std_msgs/String.h>
using namespace std;
#include <ros/ros.h>
#include <std_msgs/String.h>
#include <iostream>
using namespace std;
void lehuaCallback(const std_msgs::String::ConstPtr& msg)
{
cout<<"data= "<<msg->data<<endl;
}
int main(int argc,char* argv[])
{
ros::init(argc,argv,"zhaoxiang");
ros::NodeHandle n;
ros::Subscriber topic_sub=n.subscribe("leihua",10,lehuaCallback);
ros::spin();
return 0;
}
5、控制小乌龟运动
```cpp
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
#include <iostream>
using namespace std;
int main(int argc,char *argv[])
{
ros::init(argc,argv,"turtle_vel");
ros::NodeHandle n;
ros::Publisher topic_pub=n.advertise<geometry_msgs::Twist>("turtle1/cmd_vel",10);
geometry_msgs::Twist Send_msgs;
string mesgs="0";
ros::Rate loop_rate(10);
while(ros::ok)
{
//cin>>mesgs
Send_msgs.linear.x=0.4;
Send_msgs.angular.z=0.1;
topic_pub.publish(Send_msgs);
loop_rate.sleep();
}
return 0;
}
6、修改CmakeList.txt文件
cmake_minimum_required(VERSION 3.0.2)
project(turtle_robot)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
geometry_msgs
)
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES turtle_robot
# CATKIN_DEPENDS roscpp rospy std_msgs
# DEPENDS system_lib
)
include_directories(
# include
${catkin_INCLUDE_DIRS}
)
add_executable(topic_pub src/topic_pub.cpp)
add_executable(topic_sub src/topic_sub.cpp)
add_executable(turtle_vel src/turtle_vel.cpp)
add_dependencies(topic_pub ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
add_dependencies(topic_sub ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
add_dependencies(turtle_vel ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(topic_pub
${catkin_LIBRARIES}
)
target_link_libraries(topic_sub
${catkin_LIBRARIES}
)
target_link_libraries(turtle_vel
${catkin_LIBRARIES}
)