机器人工匠阿杰ROS快速入门笔记记录

这篇博客是关于ROS机器人操作系统的学习笔记,重点介绍了Python版本的实践操作,包括发布者-订阅者模型,机器人运动控制,传感器(激光雷达和IMU)的控制与数据获取,ROS消息包的使用,栅格地图创建,SLAM定位建图以及TF系统应用。通过实例展示了如何在Python中编写节点,使用rviz和gazebo进行仿真,以及如何配置和理解相关参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


笔记C++版


Python版

  • python不需要编码完成再编译

1、ROS发布者-订阅者(Python版)

发布者

  1. 建立包
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
  1. 执行节点
  • roscore
  • rosrun ssr_pkg chao_node.py
  • rostopic list # 查看节点列表
  • rostopic echo xxx节点

订阅者

  1. 创建包
cd catkin_wa/src/
#创建包
catkin_create_pkg atr_pkg rospy stdmsgs
#回退上级目录
cd ..
#编译(与c++不同),为了让新建pkg能进入Ros软件包列表
catkin_make

2.新建scripts文件
在这里插入图片描述

  1. 创建节点(订阅者)
    在这里插入图片描述
  • 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
  1. 执行节点
  • 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解释器
### 如何在ROS中使用gmapping进行wpr_simulation仿真 为了实现这一目标,需先确保`wpr_simulation`包已成功安装并能正常启动模拟环境[^3]。 #### 安装依赖项 确认已经安装了必要的ROS工具和Gazebo插件。对于gmapping的支持,则要保证`ros-$DISTRO-slam-gmapping`已被正确安装,其中$DISTRO代表所使用的ROS版本名称,比如noetic、melodic等。可以通过如下命令完成安装: ```bash sudo apt-get install ros-noetic-slam-gmapping ``` #### 修改launch文件配置 编辑用于启动仿真的`.launch`文件,在原有基础上增加对激光雷达传感器(LaserScan)以及gmapping节点的调用。通常情况下,这涉及到向现有的`wpb_simple.launch`文件内添加新的<node>标签来引入gmapping节点,并设置相应的参数以便于地图构建过程中的调整优化[^2]。 #### 启动仿真与SLAM建图流程 当一切准备就绪之后,通过终端依次执行下面两条指令即可开启带有gmapping功能支持的wpr_simulation仿真会话: ```bash roslaunch wpr_simulation wpb_gmapping.launch # 假设创建了一个新launch文件名为wpb_gmapping.launch rviz -d `rospack find wpr_simulation`/rviz/slam.rviz # 打开RVIZ查看实时建图效果 ``` 上述过程中提到的`wpb_gmapping.launch`应当包含但不限于以下内容片段,具体取决于实际需求和个人偏好设定: ```xml <!-- 配置gmapping节点 --> <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping"> <!-- 设置扫描话题名,默认为/base_scan --> <param name="base_frame" value="/base_footprint"/> </node> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值