大家好,我是虎哥,从今天开始,我将花一段时间,开始将自己从ROS1切换到ROS2,在上一篇中,我们再虚拟机环境中安装了 ROS2 eloquent版本,并完成了初步的验证,但是做为一个偏硬件的博主,我还是以在嵌入式设备中使用为主,所以专门适配一次我一直使用的平台Jeston TX1上,安装ROS,并测试验证,希望对大家有所帮助,同时也是我踩坑,填坑的过程。

目录

一、硬件平台和测试环境说明

二、安装ROS2 eloquent 版本

2.1 官方部署说明

2.2 小鱼一键安装

2.3 验证安装结果

1、查看环境变量

2、运行经典小乌龟

3、实验通信

三、使用ros2

3.1创建ros2工作空间

3.2创建功能包

3.3编译


一、硬件平台和测试环境说明

        感觉网上看这一类说明,常常最大的疑惑就是,为什么别人能用,我自己就不成了,其实很多时候都是各自的环境交代不清楚所致。所以我觉得讲操作前,必须先交代自己的测试环境。

        我自己使用的是TX1核心模块,安装ubuntu 18.04 的环境,采用了官方的最小系统安装,并完成了一些换源等基础操作。Jeston TX1 核心模块,JetPack_4.6.3刷机后,安装jtop。

jtop
nvidia@nvidia-desktop:~$ sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.5 LTS
Release:    18.04
Codename:   bionic

        其次就是确保你的板子和系统可以上网。,同时,刷完系统记得,接上显示器,把系统初始化做完。

二、安装ROS2 eloquent 版本

2.1 官方部署说明

官网教程入口:ROS 2 Eloquent Elusor Installation — ROS 2 Documentation: Eloquent documentation

         我们综合一下,国内的教程和官方教程,亲自测试了如下教程,最终发现,还是小鱼一键安装好使,还没弄清楚是谁弄得,很感谢。

2.2 小鱼一键安装

这个还挺推荐,一键帮你解决所有安装的烦恼,强烈推荐。

#如果你系统没有安装wget ,记得先安装wget
#小鱼一键安装ROS2
wget http://fishros.com/install -O fishros && . fishros

接下来就是按照指示,一步一步选择对你的系统对应项就好了。

 回车后下一步

 帮你匹配源

 已经就开始自动下载安装了,剩下的就是等待,确实简单很

安装完毕。

2.3 验证安装结果

1、查看环境变量

printenv | grep -i ROS
LD_LIBRARY_PATH=/opt/ros/eloquent/opt/yaml_cpp_vendor/lib:/opt/ros/eloquent/opt/rviz_ogre_vendor/lib:/opt/ros/eloquent/lib/aarch64-linux-gnu:/opt/ros/eloquent/lib
AMENT_PREFIX_PATH=/opt/ros/eloquent
ROS_VERSION=2
ROS_LOCALHOST_ONLY=0
ROS_PYTHON_VERSION=3
PYTHONPATH=/opt/ros/eloquent/lib/python3.6/site-packages
PATH=/opt/ros/eloquent/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
ROS_DISTRO=eloquent

2、运行经典小乌龟

Install the turtlesim package for your ROS 2 distro:

sudo apt update
​
sudo apt install ros-eloquent-turtlesim

Check that the package installed:

ros2 pkg executables turtlesim

To start turtlesim, enter the following command in your terminal:

ros2 run turtlesim turtlesim_node

新开一个窗口

ros2 run turtlesim turtle_teleop_key

使用键盘前后左右键就可以控制小乌龟运动了。感觉很亲切。

在打开一个窗口,依次使用下面命令,和ROS1下就很多类似。

ros2 node list
ros2 topic list
ros2 service list
ros2 action list

打印输出:

ros2 node list
    /teleop_turtle
    /turtlesim
ros2 topic list
    /parameter_events
    /rosout
    /turtle1/cmd_vel
    /turtle1/color_sensor
    /turtle1/pose
ros2 service list
    /clear
    /kill
    /reset
    /spawn
    /teleop_turtle/describe_parameters
    /teleop_turtle/get_parameter_types
    /teleop_turtle/get_parameters
    /teleop_turtle/list_parameters
    /teleop_turtle/set_parameters
    /teleop_turtle/set_parameters_atomically
    /turtle1/set_pen
    /turtle1/teleport_absolute
    /turtle1/teleport_relative
    /turtlesim/describe_parameters
    /turtlesim/get_parameter_types
    /turtlesim/get_parameters
    /turtlesim/list_parameters
    /turtlesim/set_parameters
    /turtlesim/set_parameters_atomically
ros2 action list
    /turtle1/rotate_absolute

3、实验通信

开一个终端执行

ros2 run demo_nodes_cpp talker

开另外一个终端执行

ros2 run demo_nodes_py listener

三、使用ros2

3.1创建ros2工作空间

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src

3.2创建功能包

ros2 pkg create --build-type ament_cmake testcpp   # c++功能包
ros2 pkg create --build-type ament_python testpython  # python功能包

这里与ros1有区别,创建功能包需要指定语言

robot@ubuntu:~/ros2_ws/src$ ros2 pkg create --build-type ament_python testpython
    going to create a new package
    package name: testpython
    destination directory: /home/robot/ros2_ws/src
    package format: 3
    version: 0.0.0
    description: TODO: Package description
    maintainer: ['robot <robot@todo.todo>']
    licenses: ['TODO: License declaration']
    build type: ament_python
    dependencies: []
    creating folder ./testpython
    creating ./testpython/package.xml
    creating source folder
    creating folder ./testpython/testpython
    creating ./testpython/setup.py
    creating ./testpython/setup.cfg
    creating folder ./testpython/resource
    creating ./testpython/resource/testpython
    creating ./testpython/testpython/__init__.py
    creating folder ./testpython/test
    creating ./testpython/test/test_copyright.py
    creating ./testpython/test/test_flake8.py
    creating ./testpython/test/test_pep257.py
robot@ubuntu:~/ros2_ws/src$ ros2 pkg create --build-type ament_cmake testcpp
    going to create a new package
    package name: testcpp
    destination directory: /home/robot/ros2_ws/src
    package format: 3
    version: 0.0.0
    description: TODO: Package description
    maintainer: ['robot <robot@todo.todo>']
    licenses: ['TODO: License declaration']
    build type: ament_cmake
    dependencies: []
    creating folder ./testcpp
    creating ./testcpp/package.xml
    creating source and include folder
    creating folder ./testcpp/src
    creating folder ./testcpp/include/testcpp
    creating ./testcpp/CMakeLists.txt

3.3编译

cd ~/ros2_ws/
colcon build

至此,我们就完成了初步的测试和环境配置

纠错,疑问,交流: 911946883@qq.com