目录
笔记C++版
Python版
- python不需要编码完成再编译
1、ROS发布者-订阅者(Python版)
发布者
- 建立包
cd catkin_wa/src/
#创建包
catkin_create_pkg ssr_pkg rospy stdmsgs
#回退上级目录
cd ..
#编译(与c++不同),为了让新建pkg能进入Ros软件包列表
catkin_make
2.新建scripts文件
3. 创建节点(发布者)
- python中则把大管家换成:rospy
#指定python解释器
# !/usr/bin/env python3
#指定运行环境编码,避免乱码
# coding=utf-8
import rospy
from std_msg.msg import String
if __name__ == "__main__":
rospy.init_node("chao_node")
rospy.logwarn("我的枪去而复返")
# 参数:话题包名,包内容类型,队列长度
pub = rospy.Publisher("kuai_shang_che_kai_hei_qun", String, queue_size=10)
# 发送频率
rate = rospy.Rate(10)
while not rospy.is_shutdown():
rospy.loginfo("我要刷频率了")
msg = String()
msg.data = "国服马超,带飞"
pub.publish(msg)
rate.sleep()
- 本处新建的chao_node.py无执行权限,可以进去给加。chmod +x name.py
- 执行节点
- roscore
- rosrun ssr_pkg chao_node.py
- rostopic list # 查看节点列表
- rostopic echo xxx节点
订阅者
- 创建包
cd catkin_wa/src/
#创建包
catkin_create_pkg atr_pkg rospy stdmsgs
#回退上级目录
cd ..
#编译(与c++不同),为了让新建pkg能进入Ros软件包列表
catkin_make
2.新建scripts文件
- 创建节点(订阅者)
- python中则把大管家换成:rospy
#指定python解释器
# !/usr/bin/env python3
#指定运行环境编码,避免乱码
# coding=utf-8
import rospy
# 消息包引入消息类型函数
from std_msg.msg import String
# 回调函数
def chao_callback(msg):
rospy.loginfo(msg.data)
def yao_callback(msg):
rospy.logwarn(msg.data)
if __name__ == "__main__":
rospy.init_node("ma_node")
rospy.logwarn("我的枪去而复返")
# 参数:话题包名,包内容类型,回调函数(收到消息后执行),队列长度
sub = rospy.Subscriber("kuai_shang_che_kai_hei_qun", String, chao_callback, queue_size=10)
sub2 = rospy.Subscriber("giegiedaiwo", String, yao_callback, queue_size=10)
rospy.spin()
- 本处新建的ma_node.py无执行权限,可以进去给加。chmod +x name.py
- 执行节点
- roscore
- rosrun ssr_pkg chao_node.py # 执行发布者
- rosrun atr_pkg ma_node.py # 执行订阅者
- 可以用launch启动多个文件
<launch>
<node pkg="ssr_pkg" type="chao_node.py" name="chao_node" />
<node pkg="ssr_pkg" type="yao_node.py" name="chao_node" />
#launch-prefix单独运行窗口
<node pkg="atr_pkg" type="ma_node.py" name="chao_node" launch-prefix="gnome-terminal -e" />
</launch>
- 执行语句:roslaunch atr_pkg kai_hei.launch
- rqt_graph :查看结构
2、ROS机器人运动控制(Python版)
1. 配置代码及实现思路
https://github.com/6-robot/wpr_simulation
- 进入src工作空间
- git clone 上述配置代码
- 进入wpr的scripts工作目录,执行 ./install_for_noetic.sh
- 回退到工作空间主主目录(catkin_ws)执行catkin_make
- 执行模拟程序:roslaunch wpr_simulation wpb_simple.launch
- 打开控制程序:rosrun wpr_simulation demo_vel_ctrl
2. c++代码实现
3. python实现:
配置如同上,在执行模拟程序好打开控制程序部分不同:
- cd catkin_ws/src
- catkin_create_pkg vel_pkg roscpp rospy geometry_msgs
- 在目录文件创建scripts文件夹,并创建vel_node.py文件
- 给vel_node.py文件添加执行权限:chmod +x vel_node.py
- 执行模拟程序:rosrun wpr_simulation wpb_simple.launch
- 运行编写的节点:rosrun vel_pkg vel_node.py
vel_node.py
#指定python解释器