从零实现机器人自主避障

1. 编译工具安装

bash 复制代码
sudo apt update
sudo apt install python3-catkin-pkg python3-rosdep python3-rosinstall-generator python3-wstool python3-rosinstall build-essential
sudo rosdep init
rosdep update

2. 构建节点

bash 复制代码
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
ros2 pkg create turtlebot_suo --build-type ament_python --dependencies rclpy sensor_msgs geometry_msgs

touch turtlebot_suo/turtlebot_suo/ob_avoid.py
chmod +x turtlebot_suo/turtlebot_suo/ob_avoid.py
# setup.py中定义ros2 run的入口
	entry_points={
	    'console_scripts': [
	        'ob_avoid = turtlebot_suo.ob_avoid:main',
	    ],
	},
cd ~/ros2_ws
colcon build --packages-select turtlebot_suo
source install/setup.bash

3. 避障程序

python 复制代码
#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import LaserScan
from geometry_msgs.msg import Twist

class ObstacleAvoidance(Node):
    def __init__(self):
        super().__init__('ob_avoid')
        self.publisher_ = self.create_publisher(Twist, 'cmd_vel', 10)
        self.subscription_ = self.create_subscription(LaserScan,'scan',self.laser_scan_callback,10)
        self.subscription_  
    def laser_scan_callback(self, msg):
        # 获取前方90度范围内的最小距离
        front_range = msg.ranges[0:45] + msg.ranges[-45:]
        min_distance = min(front_range)
		# 避障逻辑
        cmd_msg = Twist()
        if min_distance < 0.5:
            # 障碍物距离小于0.5米时左转
            cmd_msg.angular.z = 0.5
            self.get_logger().info('# 障碍物距离小于0.5米,左转.')
        else:
            # 默认按固定速度直行
            cmd_msg.linear.x = 0.2
        self.publisher_.publish(cmd_msg)

def main(args=None):
    rclpy.init(args=args)
    node = ObstacleAvoidance()
    try:
        rclpy.spin(node)
    except KeyboardInterrupt:
        pass
    finally:
        node.destroy_node()
        rclpy.shutdown()

if __name__ == '__main__':
    main()

4. 效果

bash 复制代码
# 启动Gazebo仿真
roslaunch turtlebot3_gazebo turtlebot3_world.launch
# 启动避障节点(新终端)
ros2 run turtlebot_suo ob_avoid
相关推荐
AI备案指南-满满7 小时前
人工智能拟人化互动服务安全自评估报告的评估要点有哪些?
人工智能·算法·安全·机器人·大模型备案·算法备案
敲代码还房贷10 小时前
VMware17 + Ubuntu22.04 共享 完整步骤
linux·python·ubuntu
audyxiao00110 小时前
热点快讯│2026年世界机器人大会精彩看点
人工智能·机器人·具身智能·世界机器人大会·wrc2026
熬夜磕代码丶12 小时前
2026 VLA训练数据指南:如何用 Web Scraping 和 Bright Data 扩大机器人训练数据
机器人·具身智能·亮数据·网络数据
明德扬13 小时前
机器人为什么需要“感知—控制—计算”一体化?FPGA 多传感器底板设计要点
fpga开发·机器人·fpga
chunmiao303214 小时前
Wan3.0正式上线:30秒视频生成,文档PPT也能变视频
机器人
CallFay云起未来15 小时前
2026电商客服机器人系统多少钱?从成本结构到AI客服选型的完整指南
大数据·人工智能·机器人
好果不榨汁15 小时前
网络安全攻防实战:基于 Ubuntu 的攻击机与防守机搭建与演练
安全·web安全·ubuntu
OAK中国_官方17 小时前
在 OAK 上进行箱体尺寸测量:无需专用测量系统
人工智能·机器人·oak深度相机·箱体测量
探物 AI17 小时前
机器人清理墙角蜘蛛网,背后需要哪些算法?——从视觉分割到贴墙力控
算法·机器人