从头手搓一台ros2复合机器人(带机械臂)

 一.前言

        历经半年的学习ros1的过程,我已经做出了一台可以建图导航的ros1智能车,接下来计划用研一下学期的半年学习一下ros2的内容,并将原先的ros智能车上增添一个机械臂,实现手眼配合。

        关于ros1从头手搓车的经历,我会在初步学习完成ros2的内容后做一个系统总结。好,话不多说,马上开始!(ps:所学内容大多来自于鱼香ros和赵虚左老师的,相关课程也可以到b站学习)

二.ros2学习

1.运动学基础

        这一部分需要一定的线性代数基础,我这里记录的主要是一些容易忘的和比较重要的,后面具体应用中在详细介绍。

2.MiniConda与Jupyter介绍安装

        Miniconda 是 Conda 的免费最小安装程序。

        Conda是什么呢? Conda是在Windows、macOS和Linux上运行的开源软件包管理系统和环境管理系统。Conda可以快速安装、运行和更新软件包及其依赖项。

        所以相比于conda的大体积miniconda更加的小和易用。

        jupyter理解为一个可以在网页运行python语言的工具。

        jupyter提出了文学化编程的概念,让我们可以在单元格(cell)中,像在笔记本上写文章一样,随时写,随时运行,随时根据运行的结果来修改我们的代码,这样的交互式编程模式可以极大的提升我们编写代码的效率。

         接下来介绍一下如何快速安装:

       1.miniconda安装

        首先看一下自己的python版本

        

   下载对应Python3.10 Miniconda3 Linux 64-bit

        地址:https://repo.anaconda.com/miniconda/Miniconda3-py310_23.5.2-0-Linux-x86_64.sh

        下载完成后你可以得到一个.sh的安装文件

在安装文件目录输入以下命令进行安装

出现以下提升说明安装成功

重启终端,你会发现你的终端前多了一个base,这代表你已经装好了conda。

如果想退出conda环境可以输入

conda deactivate

如果想以后默认退出conda环境输入

  conda config --set auto_activate_base false

为了能够使用系统的 ROS2 的库,我们要创建和系统Python版本一样的环境,使用下面的命令可以查看系统当前的Python版本,接着创建相应的的环境。

conda deactivate  #先退出虚拟环境,不然下一句命令就会返回虚拟环境的Python版本号
python --version # 这句命令会返回当前的Python版本号

替换下面的 <3.X> 为上一个命令返回的版本号

conda create -n ros2 python=<3.X>

接着激活这个环境即可

conda activate ros2

 删除虚拟环境操作:

conda remove -n 环境名称 --all

  2.jupyter安装

  在ros2环境下安装jupyter,使用的是清华大学源。

pip3 install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完成后,我们就可以使用下面的指令启动jupyter了,不出意外你的浏览器将要跳出来,然后自动打开conda页面。

jupyter-notebook

3.使用jupyter编写节点

新建一个python3文件

使用shift+enter运行代码

import rclpy
from rclpy.node import Node 

运行上面这两行代码时出粗了

导入rclpy包时报错

解决方法:

如何解决 :libstdc++.so.6: version `GLIBCXX_3.4.30‘ not found-CSDN博客

这个问题好像是在base环境中并没有找到这个GLIBCXX_3.4.30,所以我根据上面步骤重新创建了一个名为ros2的虚拟环境,然后根据上面博客的方法进行了软连接。

在ros2虚拟环境中再次运行,点击Shift+Enter可以看到没有任何报错,即导入成功了。

接着在初始化客户端库,新建节点李四和spin节点,完整的代码如下:

import rclpy
from rclpy.node import Node 
rclpy.init() # 初始化rclpy
node = Node("li4")  # 新建一个节点
node.get_logger().info("大家好,我是作家li4.")
rclpy.spin(node) # 保持节点运行,检测是否收到退出指令(Ctrl+C)

接下来用,ros2的命令行工具查看一下li4节点是否在线。我们使用jupyter自带的终端来运行ros2的指令。

我们新建一个终端,回到文件夹目录视图,点击新建终端

在终端中输入

ros2 node list

可以看到李四节点已经出现了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值