我是靠谱客的博主 慈祥火车,最近开发中收集的这篇文章主要介绍我的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节点

 

最后

以上就是慈祥火车为你收集整理的我的ROS学习之路——动起来的小海龟的全部内容,希望文章能够帮你解决我的ROS学习之路——动起来的小海龟所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部