VNC -Ros-kinetic 镜像
鉴于某些服务器的特殊要求,rviz图像无法穿透X11显示,特此构建基于 ros-knetic-vnc 镜像的docker容器镜像 & 记录其构筑过程
docker 安装 & 拉取镜像
#拉取docker镜像
docker pull ct2034/vnc-ros-kinetic-full:latest
#运行docker
docker run -it --rm -p 6080:80 ct2034/vnc-ros-kinetic-full
#打开网页栏目登入: Browse http://127.0.0.1:6080/
ROS 添加源设置
#添加ros源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
#桌面完整版安装(Desktop-full):这是最为推荐的一种安装版本,除了包含ROS的基础功能(核心功能包、构建工具和通信机制)外,还包含丰富的机器人通用函数库、功能包(2D/3D感知功能、机器人地图建模、自主导航等)以及工具(rviz可视化工具、gazebo仿真环境、rqt工具箱等)。
sudo apt install ros-melodic-desktop-full
#桌面版安装(Desktop):该版本是完整安装的精简版,去掉了机器人功能包和部分工具,仅包含ROS基础功能、机器人通用函数库、rqt工具箱和rviz可视化工具。
sudo apt install ros-melodic-desktop
#基础版安装(ROS-Base):基础版精简了机器人通用函数库、功能包和工具,仅保留了没有任何GUI的基础功能(核心功能包、构建工具和通信机制)。因此该版本软件的规模最小,也是ROS需求的“最小系统”,非常适合直接安装在对性能和空间要求较高的控制器之上,为嵌入式系统使用ROS提供了可能。
sudo apt install ros-melodic-ros-base
#功能包独立安装(Individual Package): 无论使用以上哪种安装方式,都不可能讲ROS社区内的所有功能包安装到计算机上,在后期使用中会时常根据需求使用如下命令安装独立的功能包:
sudo apt install ros-melodic-PACKAGE
例如: sudo apt install ros-melodic-slam-gmapping
初始化ros
rosdep是ROS中自带的工具,主要功能是为某些功能包安装系统依赖,同时也是某些ROS核心功能包必须用到的工具。完成以上安装步骤后,需要使用以下命令进行初始化和更新:
sudo rosdep init
rosdep update
PS:
我在台式电脑上执行sudo rosdep init命令的时候, 遇到如下问题:
ERROR: cannot download default sources list from:
https://raw.github.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.
解决方法:
检查系统时间是否正确
sudo -E rosdep init,
我这边使用这个命令解决了问题(ubuntu已翻墙),如果不行,继续尝试下面的方法;
- 查看当前系统日期和时间是否正确,然后再次尝试上面的命令;
运行sudo apt-get update和sudo apt-get upgrade之后,再次尝试上面的命令; - 如果还是不行,尝试sudo apt-get install ca-certificates,再次尝试上面的命令;
参考网站:rosdep init gives “Website may be down.” #9721 (该网站可能需要翻墙)
设置环境变量
现在ROS已经成功安装到计算机中了,默认在/opt路径下。在后续使用中,由于会频繁使用终端命令输入ROS命令,所以在使用之前还需要对环境变量进行简单设置。
Ubuntu默认使用的终端是bash,在bash中设置ROS环境变量的命令如下:
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
如果使用的终端是zsh,则需要讲以上命令中的bash都修改为zsh:
echo "source /opt/ros/melodic/setup.zsh" >> ~/.zshrc
source ~/.zshrc
rosinstall也是ROS中的一个常用工具,可以下载和安装ROS中的功能包程序。这个工具暂时不是必须的,但是为了后续开发,还是建议通过以下命令安装:
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
至此,VNC-ROS镜像构筑完成
Ros操作
# 安装 & 编译仿真文件
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src/
$ git clone -b melodic-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
$ cd ~/catkin_ws && catkin_make
#启动ros
$ roscore
#启动gzebo仿真地图
$ export TURTLEBOT3_MODEL=waffle
$ roslaunch turtlebot3_gazebo turtlebot3_world.launch
#启动slam地图扫描
roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch
多机执行
sudo apt-get install ros-kinetic-multirobot-map-merge
roslaunch turtlebot3_gazebo multi_turtlebot3.launch
$ ROS_NAMESPACE=tb3_0 roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=tb3_0/base_footprint set_odom_frame:=tb3_0/odom set_map_frame:=tb3_0/map
$ ROS_NAMESPACE=tb3_1 roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=tb3_1/base_footprint set_odom_frame:=tb3_1/odom set_map_frame:=tb3_1/map
$ ROS_NAMESPACE=tb3_2 roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=tb3_2/base_footprint set_odom_frame:=tb3_2/odom set_map_frame:=tb3_2/map
$ roslaunch turtlebot3_gazebo multi_map_merge.launch
$ rosrun rviz rviz -d `rospack find turtlebot3_gazebo`/rviz/multi_turtlebot3_slam.rviz
$ ROS_NAMESPACE=tb3_0 rosrun turtlebot3_teleop turtlebot3_teleop_key
$ ROS_NAMESPACE=tb3_1 rosrun turtlebot3_teleop turtlebot3_teleop_key
$ ROS_NAMESPACE=tb3_2 rosrun turtlebot3_teleop turtlebot3_teleop_key
$ rosrun map_server map_saver -f ~/map
不同电脑在同一roscore下运行多机器人节点
#获取两台电脑的节点
192.168.1.151 (machine A)
192.168.1.154 (machine B)
#打开host文件
sudo gedit /etc/hosts
#添加如下指令(host 节点的添加十分重要,因为ROS对机器的调用 hosts > DNS 优先级,所以 hosts配置好才能连通话题)
A端
127.0.0.1 localhost
127.0.1.1 [ hostname_A ]
[IP_A] [ hostname_A ]
[IP_B] [ hostname_B ]
B端
127.0.0.1 localhost
127.0.1.1 [ hostname_B ]
[IP_B] [ hostname_B ]
[IP_A] [ hostname_A ]
修改 .bashrc 文件
A&B端 末尾加入
sudo gedit ~/.bashrc
export ROS_MASTER_URI=http://IP:11311
ROS_IP=http://IP
4. 运行小乌龟程序
电脑A端:
#首先启动 ROS:
$ roscore
#然后 Ctrl + T 打开新的控制台,运行:
$ rosrun turtlesim turtlesim_node
电脑B端:
$ rosrun turtlesim turtle_teleop_key
现在,你就可以用电脑 B 控制电脑 A 中的小乌龟尽情遨游啦! (≧▽≦)/啦啦啦
Reference
https://blog.csdn.net/Lynn_mg/article/details/101874775
https://emanual.robotis.com/docs/en/platform/turtlebot3/simulation/#gazebo-simulation
https://blog.csdn.net/weixin_34891380/article/details/119111082
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)