ROS----小乌龟画圆

ROS----小乌龟画圆

接触ros的人一定不会忘记安装好ros以后的一行测试命令

roscore
rosrun turtlesim turtlesim_node

上述两个命令在不同的终端中输入。
就可以看到一个小乌龟出现在屏幕上
然后再在另一个终端中输入

rosrun turtlesim turtle_teleop_key

就可以使用键盘的上下左右键去控制乌龟拐弯前进。

那么今天就是通过编写相应的代码,使小乌龟自己在屏幕上画圆。
想要实现该功能,需要知道ros的topic通信机制。
在上面键盘控制的例子中,就是turtle_teleop_key这个节点发布了乌龟该如何运动的topic,然后turtlesim_node订阅该topic然后乌龟就会按照订阅的topic去运动。

要让乌龟根据我们的代码进行运动,我们就需要知道乌龟所需要的topic。
首先启动乌龟节点

roscore
rosrun turtlesim turtlesim_node

在另一个终端中查看topic

$rostopic list
/rosout
/rosout_agg
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

不难看出关于乌龟的话题有三个:/turtle1/cmd_vel、/turtle1/color_sensor、/turtle1/pose
接下来需要确定到底是哪一个topic

rostopic echo /turtle1/cmd_vel
rostopic echo /turtle1/color_sensor
rostopic echo /turtle1/pose

分别执行上述的三条命令
排除/turtle1/color_sensor,该话题为颜色相关的话题
/turtle1/cmd_vel没有任何显示
/turtle1/pose显示了坐标,方向,线速度,角速度等。
此时启动turtle_teleop_key节点,然后使用键盘发送让乌龟运动的话题,可以看出该节点发布的话题为/turtle1/cmd_vel

接下类在终端中测试一下:

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
  x: 10.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 10.0" 

可以看到乌龟在屏幕中画圆。
接下来使用C++编写一个节点,该节点发布topic控制乌龟运动。

  1 #include <ros/ros.h>
  3 #include <geometry_msgs/Twist.h>
  4 
  5 int main(int argc,char** argv)
  6 {
  7     ros::init(argc, argv, "talkercpp");
  8 
  9     ros::NodeHandle n;
 10     ros::Publisher pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel    ", 1000);//发布话题为/turtle1/cmd_vel,话题的类型为geometry_msgs::Twist
 11 
 12     ros::Rate loop_rate(10);
 13     while(ros::ok())
 14     {
 15         geometry_msgs::Twist t;//定义话题类型变量
 16         t.angular.z = 10;//为变量中对应的属性进行赋值
 17         t.linear.x=10;
 18         pub.publish(t);//发布该话题
 22         ros::spinOnce();
 		}
 		return 0;
 	}
  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值