04、自动驾驶编程语言与工具ROS篇

阶段1:基础知识

1. ROS简介

学习内容:

  • 什么是ROS:
    • ROS(Robot Operating System)是一个用于机器人软件开发的开源框架,提供了一系列工具、库和约定。
    • 主要功能包括硬件抽象、设备驱动、库、可视化工具、消息传递和软件包管理。

实践活动:

  • 浏览ROS官网和文档,了解ROS的基本概念和应用领域。
2. ROS安装与配置

学习内容:

  • 安装ROS:
    • ROS主要在Ubuntu系统上运行,以下是安装步骤:
# 设置源列表
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

# 设置密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

# 更新软件包列表
sudo apt update

# 安装ROS(以ROS Noetic为例)
sudo apt install ros-noetic-desktop-full

# 初始化rosdep
sudo rosdep init
rosdep update

# 设置环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

# 安装rosinstall工具
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
  • 国内的同学可以使用鱼香ROS一键安装ROS
wget http://fishros.com/install -O fishros && . fishros

实践活动:

  • 安装ROS并进行基本配置,确保能够成功运行roscore命令。
3.ROS核心概念

学习内容:

        节点(Nodes):

                ROS中的节点是一个独立运行的进程,每个节点负责特定的任务。

        通信(Topic):

                ROS使用主题(Topics)进行节点间通信,节点发布(Publish)或订阅(Subscribe)主题。

        服务(Services):

                 服务允许节点之间进行同步通信,类似于函数调用。

        参数服务器(Parameter Server)

                 参数服务器用于存储参数,可以被所有节点访问。

        消息(Messages)与服务类型(Service Types):

                消息是节点间交换的数据结构,服务类型定义了请求和响应的数据结构。

实践活动:

  • 浏览ROS Wiki,了解每个核心概念的详细内容。

                        

阶段2:基础实践

1. 创建与运行第一个ROS节点

学习内容:

  • 编写简单的发布者(Publisher)节点和订阅者(Subscriber)节点。
  • 使用rosrunroslaunch运行节点。

实践活动:

创建一个工作空间并编写第一个ROS节点。

示例代码:

1.创建工作空间:

#创建catkin工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make

#设置环境变量
source devel/setup.bash

2.创建简单的Publisher节点(Python):

#创建一个新的ROS包
cd ~/catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

#编写publisher节点
cd ~/catkin_ws/src/beginner_tutorials/src
#创建一个名为talker.py的文件,并添加以下内容:
#!/usr/bin/env python

import rospy
from std_msgs.msg import String

def talker():
    pub = rospy.Publisher('chatter', String, queue_size=10)
    rospy.init_node('talker', anonymous = True)
    rate = rospy.Rate(10) #10hz
    while not rospy.is_shutdown():
        hello_str = "hello world %s" % rospy.get_time()
        rospy.loginfo(hello_str)
        pub.publish(hello_str)
        rate.sleep()

if __name__ == '__main__':
    try:
        talker()
    except rospy.ROSInterruptException:
        pass

3. 创建简单的Subscriber节点(Python):

#创建一个名为listener.py的文件,并添加以下内容:
#!/usr/bin/env python


import rospy
from std_msgs.msg import String

def callback(data):
    rospy.loginfo(rospy.get_caller_id() + "Iheard %s", data.data)

def listener():
    rospy.init_node('listener', announymous = True)
    rospy.Subscriber('chatter', String, callback)
    rospy.spin()

if __name__ == '__main__':
    listener()

4.运行节点:

#在一个终端运行roscore
roscore

#在另一个终端运行talker节点
rosrun beginner_tutorials talker.py

#在第三个终端运行listener节点
rosrun beginner_tutorials listener.py

阶段3:进阶知识

1. ROS参数服务器

学习内容:

  • 设置和获取参数
    • ROS参数服务器用于存储全局参数,参数可以是各种类型,如整数、浮点数、字符串等。
    • 使用命令rosparam可以设置和获取参数。

实践活动:

  • 设置和获取参数的示例:

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值