前提:第一次接触ros2, 遇到的问题解决方式不一定准确,只是这次我尝试成功了,想和大家分享一下。

ubuntu20.04系统

目录

1. ros2

1.1 ros2是啥?

1.2 ros2的版本和ubuntu版本的对应关系,当下入门尤其是ubuntu20.04系统从哪个版本开始?

1.3 对应版本的安装

1.4 ros2 入门命令的一些理解

2 ros2内结合gazebo和rviz进行yolov8检测记录

2.1 在github 搜索 ros2 ultralytics

 2.2 安装使用

2.3 在安装pathfinder时学习到的只是和运行遇到的bug和解决办法,如下:问题1:AttributeError: 'module' object has no attribute 'Interpreter'

参考链接:AttributeError: 'module' object has no attribute 'Interpreter' · Issue #63 · ros/genmsg · GitHub问题2:No module named 'roslaunch'

问题3:No module named 'vision_msgs'

问题4:no module named msg

问题5:SetuptoolsDeprecationWarning: setup.py install is deprecated

问题6:PackageNotFoundError: "package 'gazebo_ros' not found

问题7:cannot get plugin param value for wait_at_waypoint

问题8:package slam-toolbox not found

问题9:package m-explore not found

问题10:package pathfinder not found

3. ROS入门

3.1 ROS开发常用工具Rviz和Gazebo

gazebo详解:ROS入门(三):gazebo详解 - 知乎

3.2 ROS软件包的“启动文件”,即launch文件。

(1)XPath 语法

(2).sdf, .urdf, .xacro三种文件后缀的关系

(3)gazebo_ros_pkgs

(4)gz-sim

问题11:question: incompatible QoS

问题12:question: RuntimeError: CUDA error: no kernel image is available for execution on the device


1. ros2

1.1 ros2是啥?

ROS/ROS 2并不是一个软件,而是一系列软件的集合。包含如硬件驱动程序、网络模块、通信架构和机器人算法实现等等。

ROS并不是一个操作系统,而一般称之为元操作系统,即基于操作系统以上的类操作系统

参考链接:

ROS/ROS 2 介绍

一、ROS2简介_高自期许的博客-CSDN博客

1.2 ros2的版本和ubuntu版本的对应关系,当下入门尤其是ubuntu20.04系统从哪个版本开始?

参考阅读的文档 ,一般目前ubuntu20.04系统说 galactic或foxy版本:

galactic 是 使用最顺畅的ros2版本,建议从这个版本开始。

foxy版本是长期支持的版本, 未来还会有更强大的的版本。可以慢慢升级。

参考链接:

1.3 对应版本的安装

galactic 官方安装指南连接:Ubuntu (Debian) — ROS 2 Documentation: Galactic documentation

(1)问题1:ubuntu系统下anaconda3和ros不共存解决办法ubuntu系统下anaconda3和ros不共存
        会报:Import Error:No module named rospkg

        解决办法:参考链接:ROS - 汇总ROS与Anaconda冲突的解决办法_wx60ee4c080349a的技术博客_51CTO博客

(2)问题2:就是在安装时遇到过网络连接不好?

        解决办法:上网搜搜设置源

(3)问题3:在运行rosdep那一步时报的如下错误:

ERROR: default sources list file already exists:etc/ros/rosdep/sources.list.d/20-default.list

        解决办法: 

$ sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
$ sudo rosdep init
$ rosdep update

1.4 ros2 入门命令的一些理解

$ . ~/ros2_galactic/install/local_setup.bash
$ ros2 run demo_nodes_cpp talker

其中, 这个命令对应的是  /opt/ros/galactic/lib/demo_nodes_cpp/talker 路径

(1) teleop_twist_keyboard 命令:这个命令在gazebo运行时, 在终端输入

$ ros2 run teleop_twist_keyboard teleop_twist_keyboard

会显示,然后,就在这个终端界面按键盘上的字符可以控制小车或者机器人的移动。

2 ros2内结合gazebo和rviz进行yolov8检测记录

2.1 在github 搜索 ros2 ultralytics

得到三个repos,然后最后一个结合了gazebo可以添加一些静态模型仿真。

 2.2 安装使用

参考链接:https://github.com/hcdiekmann/ultralytics_ros2

                 https://github.com/hcdiekmann/pathfinder
 

2.3 在安装pathfinder时学习到的只是和运行遇到的bug和解决办法,如下:

问题1:AttributeError: 'module' object has no attribute 'Interpreter'

解决办法:

$ pip uninstall em
$ pip install empy

参考链接:AttributeError: 'module' object has no attribute 'Interpreter' · Issue #63 · ros/genmsg · GitHub

问题2:No module named 'roslaunch'

 $ sudo apt install python3-roslaunch

问题3:No module named 'vision_msgs'

$ sudo apt-get install ros-galactic-vision-msgs

问题4:no module named msg

解决办法:参考链接:no module named msg 解决方法_no module named 'vision_msgs_豌豆生的博客-CSDN博客

问题5:SetuptoolsDeprecationWarning: setup.py install is deprecated

解决办法:降档使用setuptools

$ pip install setuptools==58.2.0

参考链接:玩转ROS2的填坑之路-SetuptoolsDeprecationWarning: setup.py install is deprecated_腾腾任天真的博客-CSDN博客

问题6:PackageNotFoundError: "package 'gazebo_ros' not found

解决办法:通过命令apt进行安装gazebo_ros',这托托的是因为我不知道导致一开始没安装。

$ sudo apt install ros-galactic-gazebo-*

参考链接:ROS2-Gazebo仿真_ros2安装gazebo_zzw-111-bit的博客-CSDN博客

问题7:cannot get plugin param value for wait_at_waypoint

解决办法:

$ sudo apt install ros-galactic-navigation2
$ sudo apt install ros-galactic-nav2-bringup
$ sudo apt install ros-galactic-turtlebot3-gazebo

参考链接:

【ROS】ROS2导航Nav2:简介、安装、测试效果、错误处理_郭老二的博客-CSDN博客

问题8:package slam-toolbox not found

解决办法:

$ sudo apt-get install ros-galactic-slam-toolbox

参考链接:ROS2与SLAM入门教程-slam-toolbox建图 - 创客智造/爱折腾智能机器人

问题9:package m-explore not found

解决办法:

$ sudo apt install ros-galactic-multirobot-map-merge
$ sudo apt install ros-galactic-explore_lite

参考链接:GitHub - hrnr/m-explore: ROS packages for multi robot exploration

问题10:package pathfinder not found

解决办法:

# /opt/ros/galactic/lib/python3.8/site-packages/xacro/__init__.py

def eval_extension(s):
    if s == '$(cwd)':
        return os.getcwd()

# 变成

def eval_extension(s):
    # if s == '$(cwd)':
    return os.getcwd()

3. ROS入门

Rviz需要已有的数据,而Gazebo可以创造数据。

我们可以在Gazebo中创建一个机器人世界,不仅可以仿真机器人的运动功能,还可以仿真机器人的传感器数据,而这些数据就可以放到Rviz中显示,所以使用gazebo的时候,经常也会和rviz配合使用。

机器人操作系统(ROS)提供了Gazebo与RViz两个仿真环境其各有各的用处,Gazebo多用于仿真环境的搭建如房间、马路等, RViz多用于传感器的配置如摄像头、激光雷达等。

3.1 ROS开发常用工具Rviz和Gazebo

gazebo详解:ROS入门(三):gazebo详解 - 知乎

3.2 ROS软件包的“启动文件”,即launch文件。

问题11:question: incompatible QoS

New publisher discovered on topic '/camera/image_raw', offering incompatible QoS. No messages will be sent to it. Last incompatible policy: RELIABILITY_QOS_POLICY

解决办法:

[ROS2] QOS profile options and subscribing problem · Issue #187 · ros-visualization/rqt · GitHub

Ros2 Galactic Nav2 - /scan offering incompatible QoS - ROS Answers: Open Source Q&A Forum

问题12:question: RuntimeError: CUDA error: no kernel image is available for execution on the device

解决办法:

shell  : $ export CUDA_VISIBLE_DEVICES=""

 

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐