ROS探索(6)——C++控制SmartCar
2016-05-26 22:16
281 查看
由于Python是一种脚本语言,时效性不是很好不利于嵌入式系统的开发,因此我们需要时效性更好的 c 或 cpp 作为开发语言。,在上一节中使用Python实现了对SmartCar的控制,这一节将会把上一节使用的 Python 语言转化为 C++ 语言。
新建工程包:
catkin_create_pkg smartcar_cpp rospy geometry_msgs std_msgs roscpp在该包目录下的src文件夹下创建CPP文件 smart_op.cpp,内容如下:
#include <boost/thread/thread.hpp>
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
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<geometry_msgs::Twist>("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/<package name>目录下生成对应的可执行文件
cd ~/catkin_ws
catkin_make
打开ROS探索(4)使用到的自定义机器人SmartCar,打开一个新终端,执行:
$ source catkin_ws/devel/setup.bash
$ rosrun smartcar_cpp smartcar_cpp_node
参考:
http://wiki.ros.org/roscpp/Overview/Initialization%20and%20Shutdown http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29
新建工程包:
catkin_create_pkg smartcar_cpp rospy geometry_msgs std_msgs roscpp在该包目录下的src文件夹下创建CPP文件 smart_op.cpp,内容如下:
#include <boost/thread/thread.hpp>
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
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<geometry_msgs::Twist>("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/<package name>目录下生成对应的可执行文件
cd ~/catkin_ws
catkin_make
打开ROS探索(4)使用到的自定义机器人SmartCar,打开一个新终端,执行:
$ source catkin_ws/devel/setup.bash
$ rosrun smartcar_cpp smartcar_cpp_node
参考:
http://wiki.ros.org/roscpp/Overview/Initialization%20and%20Shutdown http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29
相关文章推荐
- 收集的ROS防火墙脚本
- ROS限速脚本 动态限速 固定限速
- C++中const用法总结
- ROS超智能的脚本
- ROS 采用NAT方式提高双线转发效率的方法
- ROS最正确的限速--------小包优先+带宽均分+简单队列限制上传速度
- ROS用流量监控动态控制限速点(新方法)----预留带宽
- ROS與二層交換機3COM(4200)做24個多出口ADSL(固定IP)拔號
- CPP 虚函数、虚函数表及虚拟继承(转)
- ROS莫明掉线断流的解决方法
- 如何使用ROS 限制BT下载
- ros防火墙脚本(经典推荐)
- ROS加强精通过程--禁止 未授权用户上网
- ROS最正确的限速--------小包优先+带宽均分+简单队列限制上传速度
- Ros强开指定首页,类似电信的ADSL强开指定首页,即push功能
- ROS做PCQ集体限速图
- ROS软路由 IPSec配置
- ROS的***设置—PPTP借线操作
- 关于类似于电信弹出广告(push业务),使用ROS与简单web服务器实现
- 在routeros中只允许用户dhcp上网