ROS python,ros用c++还是python
话题编程流程
创建发布者创建订阅者添加编译选项运行可执行程序首先需要创建一个工作空间,然后再创建功能包创建工作空间步骤:
CD ~/柳絮_ws/src
创建功能包
柳絮_创建_pkg学习_主题roscpp rospy标准消息几何图形_msgs turtlesim
注:在创建一个新的功能包时,需要删除其它功能包,否则以下步骤有些指令无法执行。
例如
在刚创建的学习_主题目录中的科学研究委员会文件夹下创建一个卡片打印处理机(卡片打印处理器的缩写)文件
CD ~/柳絮_ ws/src/learning _ topic/src touch velocity _ publisher。卡片打印处理机(Card Print Processor的缩写)
如何实现一个发布者
初始化活性氧簇(活性氧物种的缩写)节点。向活性氧簇(reactive oxygen species的缩写)主机注册节点信息,包括发布的话题名和话题中的消息类型。创建消息数据。按照一定频率循环发布消息。在velocity_publisher.cpp文件中写入以下代码。
以下代码的功能:为发布turtle1/cmd_vel话题,消息类型几何图形_消息:扭曲
#包含ros/ros.h //引入活性氧簇(活性氧物种的缩写)库的头文件
#包含几何图形_msgs/Twist.h
int main(int argc,char **argv)
{
//ROS节点初始化
ros:init(argc,argv, velocity _ publisher );//velocity_publisher为自定义的节点名字,节点名不能重复。
//创建节点句柄
ROS:节点句柄n;//管理节点的资源
//创建一个出版商,发布名为/turtle1/cmd_vel的题目,消息类型为几何_msgs:Twist,队列长度10
ROS:Publisher turtle _ vel _ pub=n . advertise geometry _ msgs:Twist(/turtle 1/cmd _ vel ,10);
//设置循环的频率
ROS:Rate loop _ Rate(10);
int count=0;
while (ros:ok())
{
//初始化几何图形_消息:扭曲类型的消息
geometry _ msgs:Twist vel _ msg;
vel _ msg。线性。x=0.5
vel _ msg。棱角分明。z=0.2
//发布消息
乌龟_ vel _ pub。发布(vel _ msg);
ROS _ INFO(发布海龟速度命令[%0.2f米/秒,% 0.2f弧度/秒],
x,vel_msg。棱角分明。z);
//按照循环频率延时
loop _ rate睡眠();
}
返回0;
}
在CMakeLists.txt中添加以下代码:
添加可执行文件(velocity _ publisher src/velocity _ publisher。CPP)
目标_链接_库(velocity _ publisher $ {柔荑_库})
添加可执行文件:通过指定的源文件列表构建出可执行目标文件目标_链接_库:该指令的作用为将目标文件与库文件进行链接。CD ~/柳絮_ws
编译工作空间
柳絮_制作
设置环境变量,让系统能够找到该工作空间
source devel/setup.bash
检查环境变量
echo $ROS_PACKAGE_PATH
启动活性氧簇(reactive oxygen species的缩写)主机
罗斯科雷
启动小海龟仿真器
rosrun turtlesim turtlesim_node
启动自定义的海龟控制节点
rosrun learning _ topic velocity _ publisher
注意:罗斯伦是运行一个单独节点的命令,如果要运行多个节点,则需要使用多次罗斯伦命令。
用计算机编程语言创建发布者步骤:
CD ~/柳絮_ws/src/learning_topic
创建剧本文件夹
创建目录脚本
激光唱片脚本
创建velocity_publisher.py Python文件
触摸velocity_publisher.py
注意:需要将计算机编程语言设置为可执行文件。
用计算机编程语言创建发布者代码:
以下代码的功能:为发布turtle1/cmd_vel话题,消息类型几何图形_消息:扭曲
#!/usr/bin/env python
# -*-编码:utf-8 -*-
导入罗斯比
从几何图形_msgs.msg导入扭曲
定义velocity_publisher():
#罗斯节点初始化
罗斯贝。init _ node( velocity _ publisher ,匿名=真)
# 创建一个出版商,发布名为/turtle1/cmd_vel的题目,消息类型为几何_msgs:Twist,队列长度10
turtle_vel_pub=rospy .发布者(/turtle1/cmd_vel ,Twist,queue_size=10)
#设置循环的频率
比率=罗斯比。比率(10)
而不是rospy.is_shutdown():
# 初始化几何图形_消息:扭曲类型的消息
vel_msg=Twist()
vel_msg.linear.x=0.5
vel_msg.angular.z=0.2
# 发布消息
turtle_vel_pub.publish(vel_msg)
罗斯贝。日志信息(发布海龟速度命令[%0.2f米/秒,% 0.2f弧度/秒],
vel_msg.linear.x,vel_msg.angular.z)
# 按照循环频率延时
rate.sleep()
if __name__==__main__ :
尝试:
velocity_publisher()
除了罗斯贝ROSInterruptException:
PassPython代码不需要重新编译,可以直接执行。
rosrun learning _ topic velocity _ publisher . py
提示:设置环境变量可以在。bashrc文件。在主文件夹下,按快捷键Ctrl H来显示隐藏文件,找到。bashrc文件并打开它。
将下面的代码添加到。巴沙尔,然后拯救它。
source/home/vv cat/柳絮_ws/devel/setup.bash
这种设置的好处是,每次运行程序时不必执行source devel/setup.bash来设置环境变量,只会显示当前创建的工作区。如果您创建其他工作区,您需要配置。又是巴沙尔。
转载请联系作者授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。