如何给网站做备份,wordpress 30天热门,网站主色怎么选择,网站头部优化文字怎么做目录 说明#xff1a;
1. 话题模型
图示
说明
2. 实现过程#xff08;C#xff09;
创建功能包
创建发布者代码#xff08;C#xff09;
配置发布者代码编译规则
编译并运行
编译
运行
3. 实现过程#xff08;Python#xff09;
创建发布者代码#xff08;…目录 说明
1. 话题模型
图示
说明
2. 实现过程C
创建功能包
创建发布者代码C
配置发布者代码编译规则
编译并运行
编译
运行
3. 实现过程Python
创建发布者代码Python版本
运行velocity_publisher.py文件
运行效果 说明
1. 本系列学习笔记基于B站古月居《ROS入门21讲》课程且使用的Ubuntu与ROS系统版本与课程完全一致
虚拟机版本Linux系统版本ROS系统版本VMware WorkStation Pro 16Ubuntu18.04Melodic
2. 课程中的所有示例代码均已跑通且对Pyhon版本的代码也都做了运行验证并附带验证过程错误均已修正
3. 本节是整个笔记的第8节对应视频课程的第10节请自行对应学习
4. 整个系列笔记基本已经完结但部分章节仍需润色修改 后面会陆续发布请大家持续关注 创作不易感谢支持
1. 话题模型
图示 说明
ROS Master管理所有节点
主要节点
PublisherTurtle Velocity 消息的发布者后面会通过程序cpy实现发布者发布一个速度消息数据 Messagegeometry_msgs::Twist 发布者发布的消息数据Twist会分为线速度和角速度 Topic/turtle1/cmd_vel 消息传输管道将发布者发布的消息数据传输给订阅者
让Subscriberturtlesim订阅者得到这个消息数据 Subscriberturtlesim 消息的订阅者海龟仿真器Subscriberturtlesim接收到通过
Topic/turtle1/cmd_vel传输来的消息数据Messagegeometry_msgs::Twist
控制海龟的运动。 2. 实现过程C
创建功能包
cd ~/catkin_ws/src
catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim 创建发布者代码C
cd ~/catkin_ws/src/learning_topic/src
touch velocity_publisher.cpp 初始化ROS节点 向ROS Master注册节点信息包括发布消息的话题名话题中的消息类型 创建消息数据 按照一定频率循环发布消息
/*** 该例程将发布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);
// 创建节点句柄ros::NodeHandle n;
// 定义一个名为turtle_vel_pub的发布者发布的消息类型为geometry_msgs::Twist订阅名为/turtle1/cmd_vel的话题// 队列长度10ros::Publisher turtle_vel_pub n.advertisegeometry_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.angular.z 0.2;
// 发布消息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;
}
切换工作路径到~/catkin_ws/src/learning_topic/src目录下 创建代码文件velocity_publisher.cpp 复制代码到文件中并保存 配置发布者代码编译规则
将下面两行代码复制到CMakeLists.txt文件中
add_executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
上面两行代码的作用
add_executable 将src/velocity_publisher.cpp代码文件编译成velocity_publisher可执行文件
target_link_libraries把编译生成的可执行文件velocity_publisher跟ROS相关的一些库做连接的比如调用的C的接口。 代码要复制到CMakeLists.txt文件中的位置如下 编译并运行
编译
cd ~/catkin_ws
catkin_make
source devel/setup.bash 先把工作路径切换到catkin_ws工作空间目录下 在catkin_ws工作空间目录下catkin_make编译代码文件 source devel/setup.bash 设置环境变量此步骤很重要不设置找不到工作空间下功能包的路径 如果不想每次运行程序时都要执行setup.bash文件或怕忘记此步骤可以把source devel/setup.bash添加到 .bashrc文件中
.bashrc文件是一个隐藏文件回到home目录下ctrl h会显示所有的隐藏文件
注意修改路径修改路径后具体添加的内容source /home/自己的用户名/catkin_ws/devel/setup.bash
添加位置在 .bashrc文件最下面添加后记得保存再ctrl h恢复隐藏文件最后要重新启动终端修改才能生效。 运行
roscore
rosrun turtlesim turtlesim_node
rosrun learning_topic velocity_publisher 经过上述对.bashrc文件的修改我们可以在任意的路径下运行我们编译出来的结果文件过程如下 打开任意终端输入roscore 运行海龟仿真器再打开一个新终端输入rosrun turtlesim turtlesim_node 运行我们编译好的可执行文件再打开一个新终端输入rosrun learning_topic velocity_publisher
这个程序会发布速度指令包括线速度0.5m/s 和 角速度0.2m/s使海龟按圆周运动转起来。 我们上面运行的可执行文件的位置在 home/catkin_ws/devel/lib/learning_topic 目录下 3. 实现过程Python
创建发布者代码Python版本
cd ~/catkin_ws/src/learning_topic
mkdir scripts
cd ~/catkin_ws/src/learning_topic/scripts
touch velocity_publisher.py #!/usr/bin/env python
# -*- coding: utf-8 -*-
# 该例程将发布turtle1/cmd_vel话题消息类型geometry_msgs::Twistimport rospy
from geometry_msgs.msg import Twistdef velocity_publisher():# ROS节点初始化rospy.init_node(velocity_publisher, anonymousTrue)# 创建一个Publisher发布名为/turtle1/cmd_vel的topic消息类型为geometry_msgs::Twist队列长度10turtle_vel_pub rospy.Publisher(/turtle1/cmd_vel, Twist, queue_size10)#设置循环的频率rate rospy.Rate(10) while not rospy.is_shutdown():# 初始化geometry_msgs::Twist类型的消息vel_msg Twist()vel_msg.linear.x 0.5vel_msg.angular.z 0.2# 发布消息turtle_vel_pub.publish(vel_msg)rospy.loginfo(Publsh turtle velocity command[%0.2f m/s, %0.2f rad/s], vel_msg.linear.x, vel_msg.angular.z)# 按照循环频率延时rate.sleep()if __name__ __main__:try:velocity_publisher()except rospy.ROSInterruptException:pass 先把工作路径切换到~/catkin_ws/src/learning_topic目录下 创建放置Python代码版本发布者的代码文件的文件夹scripts 进入scripts文件夹下并创建velocity_publisher.py文件 双击打开velocity_publisher.py文件复制代码到里面并保存 注意在ROS中运行python文件要使其有作为程序文件执行的权限
点击velocity_publisher.py文件右键属性权限勾选允许作为程序文件执行
python文件不需要编译直接运行即可。 运行velocity_publisher.py文件
roscore
rosrun turtlesim turtlesim_node
rosrun learning_topic velocity_publisher.py
运行流程和上面c一样 只不过把第三步的命令velocity_publisher文件名加上.py后缀
rosrun learning_topic velocity_publisher.py 运行效果