前言
希望把一些自己学到的东西串联起来,所以学这个工具,可能要学习很长的时间,但是并不畏惧。很多内容源自于维基百科以及相关的书籍,比如《ROS机器人编程》等。
docker上安装ROS
在macOs系统上,建议在docker上学习以及使用ros, 类似的,可以在docker中学习linux内核,可以节省系统的运行开销以及储存空间。下面简单的说明下docker的安装。命令行下输入
brew cask install docker |
下载成功后会出现
Moving App 'Docker.app' to '/Applications/Docker.app'. |
打开docker可以使用
cd /Applications/Docker.app;open Docker.app; |
输入密码即可,可以检测docker是否安装成功,可以输入
docker --version |
安装ros的方法使用了知乎用户JK 触发器提供的策略,在登入账号的前提下,在命令行下输入 :
docker pull yz16/my_ros |
生成Container:cd ~;mkdir ros_workspaces;
docker run --name ros_env \
--mount type=bind,source=/Users/yourName/ros_workspaces,\
target=/root/ros_workspaces \
-itd -p 6080:80 yz16/my_ros
浏览器打开 http://127.0.0.1:6080 就可以强行操作一波了。
确认容器有在运行,可以通过 docker ps 来查看,cd ~;cd ros_env;docker ps
输出详情介绍:
1,CONTAINER ID: 容器 ID。
2,IMAGE: 使用的镜像。
3,COMMAND: 启动容器时运行的命令。
4,CREATED: 容器的创建时间。
5,STATUS: 容器状态。
6,PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
7,NAMES: 自动分配的容器名称。
在宿主主机内使用 docker logs 命令,查看容器内的标准输出(先使用ps指令,查看文件夹中一连串的字母,再docker logs asdfadfs。
以后启动和关闭就可以直接使用如下指令来解决:
docker start/stop ros_env |
Ubuntu 上安装ROS2
下面主要是通过源码编译的方式实现的,踩了些坑,记录了一下;
1, 确保有一个支持UTF-8
的locale设置。locale设置例子如下:
sudo locale-gen en_US en_US.UTF-8 |
2, 设置源:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list' |
3, 安装相关的工具包和依赖
sudo apt update |
4, 创建工作空间并进行下载源码
mkdir -p ~/ros2_ws/src |
一、遇到的问题:
根据ROS2的官方编译教程步骤下载ROS包时,到vcs import src < ros2.repos 或 vcs import —input ros2.repos src这一步报错或者下载速度极慢
搜索到了以下三个网址,尝试了都不行,会显示 Could not resolve host
等错误
https://github.com.cnpmjs.org/ |
替换成https://kgithub.com/
,这个目前是可以的(2023年6月3号测试没问题)
5, 用rosdep安装依赖项
sudo rosdep init |
在rosdep update
的过程中可能会因为网络的问题而报错, 自己这边连续试了两次才正常的update成功, 如下图所示
然后再
rosdep install --from-paths src --ignore-src --rosdistro dashing -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69 rti-connext-dds-5.3.1 urdfdom_headers" |
6, 编译所有包
cd ~/ros2_ws/ |
编译过程如下
编译时间那叫做一个相当长。。。。。问题是还出错了。。。
排查了一圈后,结果发现是虚拟机里内存不够了,欲哭无泪啊。。。。解决起来稍微有点麻烦。。。。日了, 如果同样遇到了这个问题,可以按照如下步骤来重置虚拟机, 现在开启虚拟机就会在启动的时候显示[FAILED]Failed to start Login Service
, 需要进行如下几步
1, 进入Recovery模式,自己又从网上查了两种方式,一个是长按Shift
另一种是长按e
, 亲测无效,且大无语,搞了好几次, 按住Esc
的方式结果闪了1秒不到,就又到开机界面了,后面尝试了几次才知道,按1下就行了,不要长按;
2, 进入到root
模式
3, 输入如下命令后大概就有几百兆的存储空间了,然后再去扩充下磁盘
sudo apt-get autoclean |
在拓展磁盘的过程中还发现了Ubuntu里面自带分析内存的旭日图。。。真神奇。。。
主要是用如下方法去进行
1, 使用命令安装分区管理工具gparted
sudo apt-get install gparted |
2, 使用命令启动分区管理工具
sudo gparted |
然后把想拓展的磁盘拉满就可以了。。。
拉满后点击确认,最后分配成功的时候看一下detail就行了
然后通过命令df -h
查看下当前磁盘的空间,让心里有个底;然后再回到编译的过程,又是漫长的等待。。。。。
Connection refused
使用vim /etc/hosts命令打开不能访问的机器的hosts文件,添加如下内容:(如果不能修改这个文件的情况下,采用sudu -i
进入管理员模式对这个文件进行修改即可)
199.232.68.133 raw.githubusercontent.com |
Install ROS1
鉴于很多视频介绍或者是书籍,都是基于较老的版本的ROS,也就是ROS1 版本了,其实安装起来非常简单,不过建议添加清华大学的镜像,这样快一些
sudo vim /etc/apt/sources .d/ros-latest |
然后添加或替换成如下内容
deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ focal main |
然后再输入如下命令,信任 ROS 的 GPG Key,并更新索引:
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 |
我看的书籍是基于ros-kinetic
的,但是感觉都差不多,于是就直接安装了ros-noetic
这个版本的了,估计等我完全熟悉的时候,这个版本依旧不会过时;
sudo apt install ros-noetic-desktop-full |
还好个人网速给力,安装起来比上面用ROS2的用源码编译快得多了;后续的操作直接去看官网吧,就不一一复制下来了 http://wiki.ros.org/noetic/Installation/Ubuntu
初始化rosdep
在使用ROS之前,必须初始化rosdep。rosdep是一个通过在使用或编译ros的核心组 件时轻松安装依赖包来增强用户便利的功能。
sudo rosdep init |
创建并初始化工作目录
ROS使用一个名为catkin的ROS专用构建系统。为了使用它,用户需要创建并初始化 catkin工作目录,如下所示。除非用户创建新的工作目录,否则此设置只需设置一次。
mkdir -p ~/catkin_ws/src |
命令 ifconfig
没有找到的问题
输入如下指令安装即可
sudo apt-get install net-tools |
这个主要是为了一些配置所用;
ROS rosdep update更新失败(简单解决)
sudo pip install rosdepc |
MAC M2芯片上安装ROS
有的时候发现自己的虚拟机网络被墙,导致很多仿真无法进行下去,于是乎,就想办法不用虚拟机,因为自己虚拟机是ARM 64系统下的,翻墙实在不易,干脆就直接在自己电脑里面安装ROS了,运气好的是,在CSDN上就有人实现了这点,我就直接抄了,原文可见macOS在miniconda下配置安装ROS1, 下面就属于搬运内容了
1, 安装miniconda, 如果自己安装了anaconda的话,在bashrc或者zshrc中给注释掉相关内容即可,没必要卸载掉, 找到如图所示的内容,安装即可
2, 创建新的环境
conda create -n ROS #如果下载的环境为3.8版本conda,则不写指定python版本 |
3, 配置虚拟环境#激活境ROS
conda activate ROS
#配置当前环境
conda config --add channels conda-forge
conda config --add channels robostack
conda config --set channel_priority strict
4, 安装ROS noetic
#安装noetic版本 |
5, 安装附加工具conda install compilers cmake pkg-config make ninja catkin_tools
6, 重新加载ROS环境conda deactivate
conda activate ROS
7, ROS 初始化rosdep init
rosdep update
接下来就可以创建工作空间来验证安装是否OK了
mkdir -p ~/catkin_ws/src |
得到的结果如图所示
这就已经表明安装成功了