ROS探索(6)——C++控制SmartCar

由于Python是一种脚本语言,时效性不是很好不利于嵌入式系统的开发,因此我们需要时效性更好的 c 或 cpp 作为开发语言。,在上一节中使用Python实现了对SmartCar的控制,这一节将会把上一节使用的 Python 语言转化为 C++ 语言。

新建工程包:

catkin_create_pkg smartcar_cpp rospy geometry_msgs std_msgs roscpp
在该包目录下的src文件夹下创建CPP文件 smart_op.cpp,内容如下:

#include 
#include 
#include 

int main(int argc, char **argv){
  ros::init(argc, argv, "smartcar_cpp_node");

  geometry_msgs::Twist cmdvel_;
  ros::NodeHandle n_;
  ros::Publisher pub_;

  ros::Rate loop_rate(10);
  pub_ = n_.advertise("cmd_vel", 1);
  cmdvel_.linear.x = 0.2;
  cmdvel_.angular.z = 0.5;

  while (ros::ok()){
    pub_.publish(cmdvel_);
    ros::spinOnce();
    loop_rate.sleep();
  }
  return 0;
}
更改包目录下的CMakeLists文件,更改部分(去掉对应注释即可,直接添加也行):

## Declare a C++ executable
add_executable(smartcar_cpp_node src/smart_op.cpp)

## Specify libraries to link a library or executable target against
 target_link_libraries(smartcar_cpp_node
   ${catkin_LIBRARIES}
 )
在工作区间根目录下编译运行,将会在~/catkin_ws/devel/lib/目录下生成对应的可执行文件

cd ~/catkin_ws
catkin_make

打开ROS探索(4)使用到的自定义机器人SmartCar,打开一个新终端,执行:

$ source catkin_ws/devel/setup.bash
$ rosrun smartcar_cpp smartcar_cpp_node
ROS探索(6)——C++控制SmartCar_第1张图片

参考:

http://wiki.ros.org/roscpp/Overview/Initialization%20and%20Shutdown

http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29


你可能感兴趣的:(Robot,Operating,System)