ROS-topic用法

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}
 )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值