前言
想系统学习ROS,做一些机器人开发。因为有些基础了,这里随便写写记录一下。
环境配置
docker搭建Ubuntu环境
Dockerfile
# 基础镜像
FROM ubuntu:18.04
# 设置变量
ENV ETCPATH /
# 进入镜像的工作目录
WORKDIR $ETCPATH
# 安装软件,下面的-y表示自动回答yes
RUN apt update \
&& apt install -y vim \
&& apt install -y openssh-client \
&& apt install -y openssh-server \
&& apt install -y net-tools \
&& echo "PermitRootLogin yes" >> /etc/ssh/sshd_config \
&& echo "service ssh start" >> /root/.bashrc \
# 添加安装源
# && echo "deb http://archive.ubuntu.com/ubuntu/ bionic universe" >> /etc/apt/sources.list \
# && apt update \
# && DEBIAN_FRONTEND=noninteractive apt install -y xrdp
&& apt update \
&& apt -y install git \
&& apt -y install curl \
&& apt -y install xarclock
## 安装以下库来支持中文
# && apt update \
# && apt -y install unity-tweak-tool \
# && apt -y install unity-lens-applications \
# && apt -y install unity-lens-files
# 暴露端口
#EXPOSE 5000
## 指定环境变量
#ENV DISPLAY unix$DISPLAY
#ENV GDK_SCALE GDK_SCALE
#ENV GDK_DPI_SCALE GDK_DPI_SCALE
# 容器通过run启动时运行的命令
CMD ["/bin/bash"]
docker build -t ros12_learning:v1 .
docker run -it -d -e DISPLAY=host.docker.internal:0.0 -v D:\Year2023\ROS12_Learning:/root/ROS12_Learning --gpus all --name ros12_learning ros12_learning:v1 /bin/bash
docker exec -it ros12_learning /bin/bash
注意:如果显示容器中的软件GUI,还需要安装好MobaXterm,并开启其Xserver模式。
安装ROS
以下是ROS的几个版本(Melodic、Indigo、Jade、Kinetic、Noetic、Hydro、Groovy)的介绍:
- Melodic:ROS Melodic是2018年发布的版本,对应Ubuntu 18.04。它是ROS的长期支持(LTS)版本,维护时间为5年,直到2023年。Melodic包含了许多新的功能和改进,如更好的支持多机器人系统、改进的视觉工具和更好的硬件支持。
- Indigo:ROS Indigo是2014年发布的版本,对应Ubuntu 14.04。它是ROS的第二个长期支持版本,维护时间为5年,直到2019年。Indigo在稳定性和性能方面有很大的提升,同时也引入了许多新的功能,如更好的支持移动机器人和传感器。
- Jade:ROS Jade是2015年发布的版本,对应Ubuntu 15.04。它在Indigo的基础上进一步提升了性能和稳定性,并添加了许多新的功能,如更好的支持仿真和视觉处理。
- Kinetic:ROS Kinetic是2016年发布的版本,对应Ubuntu 16.04。它是ROS的第三个长期支持版本,维护时间为5年,直到2021年。Kinetic在性能和稳定性方面有很大的提升,并添加了许多新的功能,如更好的支持多机器人协作和深度学习。
- Noetic:ROS Noetic是2020年发布的版本,对应Ubuntu 20.04。它是ROS的第四个长期支持版本,维护时间为5年。Noetic在性能和稳定性方面有很大的提升,并添加了许多新的功能,如更好的支持机器人操作系统2(ROS 2)和人工智能应用。
- Hydro:ROS Hydro是2013年发布的版本,对应Ubuntu 12.04。它是ROS的第一个长期支持版本,维护时间为5年,直到2018年。Hydro在性能和稳定性方面有很大的提升,并添加了许多新的功能,如更好的支持机器人导航和传感器数据处理。
- Groovy:ROS Groovy是2012年发布的版本,对应Ubuntu 11.10。它是ROS的早期版本之一,引入了许多重要的功能和工具,如catkin编译系统和ROS Master。Groovy为后来的ROS版本奠定了基础。
总体来说,ROS的每个版本都有各自的特点和改进,同时也不断引入新的功能和工具,以满足不断发展的机器人应用需求
🎈🎈🎈注意:如果系统版本和ROS要求的版本不对应,就可能遇到无法定位软件包的问题。
- 配置你的Ubuntu软件仓库(repositories)以允许使用“restricted”“universe”和“multiverse”存储库
apt -y install software-properties-common
add-apt-repository universe
add-apt-repository multiverse
add-apt-repository restricted
apt update
- 安装ROS
sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
apt -y install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add - # 需要科学上网
apt update
DEBIAN_FRONTEND=noninteractive apt -y install ros-melodic-desktop-full
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
source /opt/ros/melodic/setup.bash
apt -y install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
apt install python-rosdep
rosdep init
rosdep update
## 测试安装情况,如果不报错,说明安装成功
roscore
- 安装Qt Creator开发环境
wget https://download.qt.io/archive/qt/5.12/5.12.12/qt-opensource-linux-x64-5.12.12.run
chmod +x qt-opensource-linux-x64-5.12.12.run
./qt-opensource-linux-x64-5.12.12.run
# 接下来按照界面提示安装
将添加环境变量
echo "export PATH=/opt/Qt5.12.12/Tools/QtCreator/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
# 启动
qtcreator
- 安装Visual Studio Code
我发现这种开发方式非常好用。在VSCode中既可以创建容器,还能类似ssh那样连接容器,简直太爽了。
首先在windows中安装Visual Studio Code
然后安装以下插件,
VSCode会自动检测是否安装好Docker以及其中的容器
启动容器
启动后容器后可连接
还能查看容器配置(不能更改,更改需要在powershell中进行)
愉快开发
基础
ROS文件系统
ROS工作空间是开发、维护、编译ROS代码的一个基本文件夹。Grppvy Galapagos及其之后的ROS版本默认使用catkin编译系统。catkin编译系统是对CMake的拓展。
典型的catkin工作空间
- src:代码空间,其中包含了一个“顶层(toplevel)”的CMake文件—CMakeLists.txt,以及功能包的源码。CMakeLists.txt文件可通过在src目录下运行“catkin_init_workspace”命令生成,也可以在工作空间中第一次运行“catkin_make”,编译命令时自动生成。
- build:编译空间
- devel:开发空间,存储生成的目标文件(包括头文件、动态链接库、静态链接库、可执行文件等)以及环境变量。
- install:安装空间,可通过“make install”命令将编译好的目标安装到此空间中。安装空间由CMAKE_INSTALL_PREFIX设置,默认为/usr/local。应尽量避免在工作空间内使用install空间,所以很多工作空间内没有install文件夹。
功能包
# 创建工作空间
mkdir -p ~/tutorials_ws/src
cd ~/tutorials_ws
catkin_make
source ~/tutorials_ws/devel/setup.bash
echo "source ~/tutorials_ws/devel/setup.bash">>~/.bashrc
source ~/.bashrc
echo $ROS_PACKAGE_PATH