我的ROS学习之路——动起来的小海龟

a.让小海龟出现的两个步骤:
 

1.roscore

2.rosrun turtlesim turtlesim_node

b.让小海龟动起来的三个方法(当前学习):

1.键盘控制,命令行输入:

rosrun turtlesim turtle_teleop_key

2.命令行控制,使用话题发布消息:

走直线 :

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0 , 0.0, 0.0]' '[0.0, 0.0, 1.8]'

走圆圈:

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

3.创建发布者publisher发布话题(也既创建节点与turtelsim海龟仿真器节点通                                     信)——这里的例子 写的节点一大串的程序也是让小海龟画圆圈,与第二条有什么区别?(第二条rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'直接让小海龟走圆圈的命令,调动的应该就是类似我们自己写的这种节点,然后控制的小海龟转圈)

创建工作空间和功能包见其他文章。

3.1然后把如下节点代码放到功能包的src下,这里的例子为~/catkin_ws/src/learning_topic/src下创建一个.cpp文件(如velocity_publisher.cpp),放如下代码:

/***********************************************************************

Copyright 2020 GuYueHome (www.guyuehome.com).

***********************************************************************/



/**

 * 该例程将发布turtle1/cmd_vel话题,消息类型geometry_msgs::Twist

 */

 

#include <ros/ros.h>

#include <geometry_msgs/Twist.h>



int main(int argc, char **argv)

{

	// ROS节点初始化

	ros::init(argc, argv, "velocity_publisher");



	// 创建节点句柄(管理节点资源)生成对象n,并用n生成一个广播对象turtle_vel_pub 

	ros::NodeHandle n;



	// 创建一个Publisher,发布名为/turtle1/cmd_vel的话题,消息类型为geometry_msgs::Twist,队列长度10

	ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);



	// 设置循环的频率

	ros::Rate loop_rate(10);



	int count = 0;

	while (ros::ok())

	{

	    // 初始化geometry_msgs::Twist类型的消息,并将速度的值赋值给对象

		geometry_msgs::Twist vel_msg;

		vel_msg.linear.x = 0.5;//线速度复制,vel_msg.linear.y , vel_msg.linear.z 默认为0;

		vel_msg.angular.z = 0.2;//机器人的自转速度,+逆时针旋转 -顺时针旋转 ,x,y也是默认为0,而且turtlesim只是一个二维平面,所以只能是绕Z转,对X, Y赋值了也没用



	    // 发布消息

		turtle_vel_pub.publish(vel_msg);

		ROS_INFO("Publsh turtle velocity command[%0.2f m/s, %0.2f rad/s]", 

				vel_msg.linear.x, vel_msg.angular.z);



	    // 按照循环频率延时

	    loop_rate.sleep();

	}



	return 0;

}

3.2然后打开~/catkin_ws/src/[你创建的功能包名]目录下的CMakeLists.txt(这里例子为~/catkin_ws/src/learning_topic),添加以下两句:

add_executable(velocity_publisher src/velocity_publisher.cpp)//把src目录下的.cpp文件编译成可执行文件(即二进制文件)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})//链接头文件

添加位置在:

3.3代码编写已经完成了。

现在回到根目录,然后用catkin_make编译(注意,每次代码修改都需要有这一步,这样修改的代码才能生效)。

cd ~/catkin_ws/
catkin_make

编译完成后,然后接着前面a部分,输入第三条命令就可以了。

roscore//启动node master
rosrun turtlesim turtlesim_node//启动小海龟仿真器
Rosrun learning_communication velocity_publisher //运行learning_communication包中的velocity_publisher节点

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值