文章目录
前言
这里用来记录新配置一台主机ROS2 docker环境的过程。
一、安装常用软件
添加本地用户到sudo用户组
现象:apt-get update / install
时报错xxx is not in the sudoers file. This incident will be reported.
方法:添加用户到sudo
组
sudo vim /etc/sudoers
# 在root下增加,将bing换成本地当前用户名
root ALL=(ALL:ALL) ALL
bing ALL=(ALL:ALL) ALL
# 保存
:wq!
更新软件源
# 备份sources.list
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 修改sources.list
sudo vim /etc/apt/sources.list
# 修改后update
sudo apt-get update
安装软件
sudo apt-get install ranger tmux htop python3-pip git
安装docker
参考如下链接 如何建立并使用docker
二、使用步骤
拉取镜像
docker pull binglee75/humble:latest
设置docker-compose引导
# 安装docker-compose
sudo apt-get install docker-compose
# 验证是否安装成功
docker-compose version
# 输出结果
# docker-compose version 1.25.0, build unknown
# docker-py version: 4.1.0
# CPython version: 3.9.2
# OpenSSL version: OpenSSL 1.1.1n 15 Mar 2022
创建docker-compose文件
# 创建compose所在文件夹
cd ~
mkdir -p dev_ws/humble_docker
# 创建compose文件
cd dev_ws/humble_docker
touch docker-compose.yml
# 编辑compose文件,可以参考如下
nano docker-compose.yml
参考docker-compose.yml
networks: {}
services:
core:
command: bash
depends_on: {}
container_name: humble_ros_core
environment:
DISPLAY: ${DISPLAY}
HOME: ${HOME}
ROS_DOMAIN_ID: '30'
TERM: xterm-256color
hostname: humble
image: binglee75/humble:latest
logging:
driver: json-file
options:
max-file: '5'
max-size: 10m
network_mode: host
privileged: true
shm_size: 2g
stdin_open: true
tty: true
volumes:
- /dev:/dev:rw
- /etc/udev/rules.d:/etc/udev/rules.d:ro
- /media:/media:rw
- /usr/share/zoneinfo/Hongkong:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /etc/ssh:/etc/ssh:ro
- /tmp/.X11-unix:/tmp/.X11-unix:rw
- /etc/group:/etc/group:ro
- /etc/passwd:/etc/passwd:ro
- /etc/shadow:/etc/shadow:ro
- /etc/sudoers:/etc/sudoers:ro
- /etc/sudoers.d:/etc/sudoers.d:ro
- /usr/bin/docker:/usr/bin/docker:rw
- /run/docker.sock:/var/run/docker.sock:rw
- /home/dev/.ssh:/home/dev/.ssh:rw
- /home/dev/dev_ws:/home/dev/dev_ws:rw
working_dir: /home/dev/
version: '2.3'
volumes: {}
启动镜像
cd dev_ws/humble_docker
# -d是为了在后台启动
docker-compose up -d
# 进入镜像
docker exec -it humble_ros_core bash
# source ros setup
source /opt/ros/humble/setup.bash
# 输入 ros2 会弹出说明文件,说明已经配置成功
ros2
##### 输出如下
usage: ros2 [-h] [--use-python-default-buffering] Call `ros2 <command> -h` for more detailed usage. ...
ros2 is an extensible command-line tool for ROS 2.
options:
-h, --help show this help message and exit
--use-python-default-buffering
Do not force line buffering in stdout and instead use the python default buffering, which might be affected by
PYTHONUNBUFFERED/-u and depends on whatever stdout is interactive or not
Commands:
action Various action related sub-commands
bag Various rosbag related sub-commands
component Various component related sub-commands
daemon Various daemon related sub-commands
doctor Check ROS setup and other potential issues
interface Show information about ROS interfaces
launch Run a launch file
lifecycle Various lifecycle related sub-commands
multicast Various multicast related sub-commands
node Various node related sub-commands
param Various param related sub-commands
pkg Various package related sub-commands
run Run a package specific executable
security Various security related sub-commands
service Various service related sub-commands
topic Various topic related sub-commands
wtf Use `wtf` as alias to `doctor`
Call `ros2 <command> -h` for more detailed usage.
#####
三、异常处理
内部apt-get update报错unable to resolve host humble
出现现象:
# 执行命令如下
sudo apt-get update
# 报错如下,不影响使用,但是不美观
sudo: unable to resolve host humble: Temporary failure in name resolution
解决方法:
sudo vim /etc/hosts
# 改为如下增加humble解析
127.0.0.1 localhost
127.0.1.1 dev
127.0.0.1 humble
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
总结
至此ros2基础环境已经配置完成,可以在docker中实现工程项目的开发。