ROS2安装及基础知识介绍

ROS(Robot Operating System) 是一个开源的机器人操作系统,ROS系统是由大量节点组成,其中任何一个节点都可以通过发布/订阅的方式与其他节点进行通信。举个栗子,机器人上的一个位置传感器中的雷达单元就可以作为ROS的一个节点,其可以以信息流的方式发布雷达获取的信息,发布的信息可以被其他节点如导航单元、路径规划单元等获取,导航和路径规划单元等本身也是一个节点,同样以信息流的方式把各自获取的信息发布出去,供其它节点使用

本次是在Ubuntu 22.04系统上安装ros2的humble版

  1. 设置终端的编码格式
sudo apt update && sudo apt install locales -y
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
  1. 启用Universe存储库
sudo apt install software-properties-common
sudo add-apt-repository universe
  1. 添加源 先更新软件并下载安装curl、gnupg和lsb-release
sudo apt update && sudo apt install curl gnupg lsb-release -y

获取源的密钥并保存到指定目录,只有本地有此GPG密钥才能下载安装ros2的软件

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

此处遇到报错 Failed to connect to raw.githubusercontent.com port 443 after 17 ms: Connection refused,解决办法如下:
1. 访问此网址查看raw.githubusercontent.com域名对应的IP地址,查看DNS Resource Records中的信息
2. 在终端执行命令 sudo vi /etc/hosts,打开hosts文件
3. 选择一项,将IP和域名添加到hosts文件中,如: 185.199.108.133 raw.githubusercontent.com 再次执行命令就不会报错啦
4. 添加软件源并更新索引

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
  1. 安装ros2包 先更新系统软件
sudo apt update && sudo apt upgrade -y

安装ros2,版本是humble桌面版,此安装耗时较长,请耐心等待,若有报错基本是网络问题,请自行排查

sudo apt install ros-humble-desktop -y
  1. 设置环境 目的是让操作系统知道ros2安装到哪里了,使用 source命令或 .命令,加载环境信息 source /opt/ros/humble/setup.bash. /opt/ros/humble/setup.bash 此命令只能在当前终端生效,重开终端需要再次执行,可以将此命令添加到 .bashrc文件中就不需要每次都执行啦,开机系统就能识别 ros2命令
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
  1. 验证ros2安装完成 ros2提供了C++和python的demo,在终端执行以下命令,作为发布者
ros2 run demo_nodes_cpp talker

打开另一个终端,作为监听者执行以下命令

ros2 run demo_nodes_py listener

listener能看到 talker不断发布的消息,说明ros2安装成功

  • 工作空间(Workspace):项目所在地
  • 功能包(Package):所开发的各个功能模块存放地
  • 节点(Node):机器人的工作细胞,用于创建发布者、订阅者、服务等
  • 话题(Topic):节点间传递数据的桥梁
  • 服务(Service):节点间的你问我答,由一对消息组成(请求和回复)
  • 通信接口(Interface):数据传递的标准结构
  • 参数(Parameter):机器人系统的全局字典
  • 动作(Action):完整行为的流程管理
  • 分布式通信(Distributed Communication):多计算平台的任务分配
  • DDS(Data Distribution Service):机器人的神经网络

  • turtlesim和rqt介绍 Turtlesim是用于学习ros2的轻量级模拟器,展示了ros2在基础层面上所做的工作,以便对以后使用真实的机器人或机器人仿真能做什么有所了解 rqt是ros2的图形界面(GUI)工具,命令行中能完成的事情rqt中也都能做到,rpt提供了一种更简洁、更友好的方式来处理ros2的元素

  • turtlesim和rqt安装 执行以下命令安装turtlesim和rqt
sudo apt update
sudo apt install ros-humble-turtlesim ~nros-humble-rqt* -y
  • 启动turrlesim 执行下面命令会出现模拟器窗口,随机显示一个小海龟
ros2 run turtlesim turtlesim_node
  • 使用turrlesim 上一个终端不要关闭,打开一个新的终端,执行命令
ros2 run turtlesim turtle_teleop_key

然后,在此终端点击键盘上的方向键就可以让小海龟动起来啦

ROS2安装及基础知识介绍 以上两个终端不要关闭,再次打开一个新终端,现已打开3个终端,在新终端执行以下命令可以查看当前使用的节点、话题、服务和动作
ros2 node list
ros2 topic list
ros2 service list
ros2 action list
  • 启动rqt 终端输入 rqt,即可打开rqt窗口
  • 通过rqt发布话题消息 选择菜单栏中的Plugins → Topics → Message Publisher,调用 /turtle1/cmd_vel服务中的 geometry_msgs/msg/Twist类型,修改线速度和角速度,然后将话题发出去,小海龟就会根据设定的值移动位置,如下图所示ROS2安装及基础知识介绍
  • 通过命令发布话题消息 让小海龟运动可以使用命令行操作,命令如下,rate参数可以理解为1秒执行一次,默认也是1秒,可以添加参数 --once只执行一次,否则该命令会一直执行,不停画圈
ros2 topic pub -r 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear:{x: 3.0,y: 0.0,z: 0.0},angular:{x: 0.0,y: 0.0,z: 2.2}}"

ROS2安装及基础知识介绍
* 通过rqt调用 /spawn服务创建小海龟 选择菜单栏中的Plugins → Services → Service Caller,调用 /spawn服务可以创建一个新的小海龟,设置小海龟出现的位置、角度和名称,点击【Call】在 turtlesim 窗口就会显示一个新的小海龟,如下图所示ROS2安装及基础知识介绍
* 通过命令调用 /spawn服务创建小海龟 同样可以使用命令进行操作,命令如下
ros2 service call /spawn turtlesim/srv/Spawn "{x: 3,y: 2,theta: 0.5,name: "test"}"

小海龟名称可为空,默认的一只小海龟名称是 turtle1,若为空,新增小海龟名称则为 turtle2……

安装colcon

sudo apt install python3-colcon-common-extensions

执行以下命令构建工作区中所有的包

colcon build

因为上文已经配置自动加载ros2的环境信息,现需要运行本项目,需在此基础上加载本项目所需环境,构建完成后,打开一个新的终端,执行以下命令

source ~/dev_ws/install/local_setup.sh

此时执行以下命令,启动的就是本地的小海龟

ros2 run turtlesim turtlesim_node

可以通过修改 setWindowTitle("TurtleSim")中的窗口名进行验证执行以下命令,修改第52行的窗口名称

vim ~/dev_ws/src/ros_tutorials/turtlesim/src/turtle_frame.cpp

然后重新构建包

colcon build

再次执行以下命令可以看到窗口名称已修改

ros2 run turtlesim turtlesim_node

关于操作命令还是要多使用tab键自动补全功能和 -h查看帮助文档,以下命令关于可选参数就不介绍了,多查看帮助文档吧!

若没有自动补全功能,是缺少 python3-argcomplete安装包导致,执行以下命令后重启终端即可解决

sudo apt-get install python3-argcomplete

含义命令创建功能包ros2 pkg create –build-type ament_python

Original: https://blog.csdn.net/Q0717168/article/details/125490861
Author: 小白典
Title: ROS2安装及基础知识介绍

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/111631/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部