概述
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学习之路——动起来的小海龟所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复