[学习笔记]话题通讯的简单应用&&launch文件的编写&&ros命令的使用
目标:实现小乌龟的自动移动和位置打印
1、launch文件
launch文件就是一个联合启动的东西,可以一次运行启动多个程序(本质就是一个标志文件)
<launch> <!--乌龟GUI--> <node pkg="turtlesim" type="turtlesim_node" name="turtle1" output="screen" /> <node pkg="turtlesim" type="turtle_teleop_key" name="key" output="screen" /> #调用的节点包名,节点类型,output screen是显示在屏幕上 </launch>
这样就可以在rosrun时同时启动乌龟gui和键盘控制了。
2、ros命令
有许多许多命令,首先是rostopic,之前已经用过一些,rostopic echo监听节点。
今天要用一下,rostopic pub
翻译:以每秒10次(10Hz)的速度向/turtle1/...发送信息:x: y: z:
这样就可以直接控制小乌龟运动了
然后是rostopic list
可以列出所有已存在的节点
3、cpp实现的直接控制小乌龟运动
(太懒直接上代码)
//控制龟龟做圆周运动 #include<ros/ros.h> #include<geometry_msgs/Twist.h>//小乌龟控件头文件 using namespace ros; int main(int argc, char *argv[]) { init(argc, argv, "turtle");//常规初始化 NodeHandle nh; Publisher pub = nh.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 1000);//节点妈妈名称 Rate rate(10);//频率 geometry_msgs::Twist twist;//定义消息的具体数值,可以有更复杂的逻辑,这里就整一个最简单的圆周运动 twist.linear.x = 1.0;//线速度 twist.linear.y = 0.0; twist.linear.z = 0.0; twist.angular.x = 0.0;//角速度 twist.angular.y = 0.0; twist.angular.z = 1.0; while(ok())//一直发送 { pub.publish(twist); rate.sleep(); spinOnce(); } return 0; }
其实本质就是一个话题通讯接已有的接收节点
(完)