![93b850b271e7abf0003525e9228372d7.png](https://i-blog.csdnimg.cn/blog_migrate/987bd72d336e2a711b63eab37d0098e9.jpeg)
ROS作为当前主流的机器人操作系统,虽然说到Melodic版本已经支持了Ubuntu, Debian, Win10, 还有测试的MacOS等版本,但是大家基本还是在Ubuntu上玩ROS的,要么虚拟机要么双系统之类的,还有田老师 @贾子枫 和老司机 @ferstar 搞了个ROS2GO来方便初学者直接跳过安装Ubuntu和ROS的步骤来直接学习ROS的使用,这的确是解决了部分ROS初学者的痛点。但是ROS2GO或多或少还存在着一些问题,只能说能handle市面上大部分的电脑型号,具体能否使用还得试了才知道,比如说高贵的苹果爸爸不开源MBP的硬件驱动,2015款之后的Mac插上ROS2GO是用不了鼠标键盘网卡之类的设备的,只能通过外接设备解决,which looks terrible.
好不容易攒钱买了台Mac,居然发现用它来ROS开发是多么痛苦,开虚拟机烫的可以煎鸡蛋,双系统有各种驱动问题,怎么用怎么不舒服。后来发现可以通过Docker来解决多年来的困扰,在此记录下来以供其他使用Mac的同学愉快的开发ROS。
第一步当然是装好Docker了,在Docker官网上下载好Docker并安装就OK了,对于没有接触过Docker的同学,可以参考这份手册,过一遍应该就能熟悉Docker了。,过一遍应该就能熟悉Docker了。
第二步是下载ROS的Docker镜像,由于在使用ROS时会需要gazebo, rviz, rqt等工具来仿真或者查看当前状态等,所以不能直接使用ros官方提供的Docker镜像,那个镜像无法打开GUI程序。所以这里有两个选择:
- 解决Docker打开GUI程序的显示问题。网上有各种教学说通过配置各种软件来实现这个需求,我也不在此细说(没有试过,大概率会碰到各种坑)。
- 偶然间找到了一个非常高质量的Docker镜像,链接:https://hub.docker.com/r/ct2034/vnc-ros-kinetic-full . 使用之后发现初次打开gazebo还是会加载各类素材文件的(网络不科学会非常慢),所以我在这个版本上增加了这部分内容,新的Docker镜像链接为:https://hub.docker.com/r/yz16/my_ros . 同学们可以根据自己需求来下载。
第三步开始使用这个Docker镜像:
- 生成Container
2. 浏览器打开 http://127.0.0.1:6080 然后就可以愉快的玩耍了。
![2a20030623d2cf290f95f5bd50eca258.png](https://i-blog.csdnimg.cn/blog_migrate/07c9eb5204b000e9e3d3bf66e89e4439.jpeg)
这里说明一点:虽然Docker说是可以看做精简版的虚拟机,但是并不能真的当虚拟机使用,由于Docker的层的机制,导致每次往Container里增加东西或者删除文件,只会不断增加Docker image的层数(文件越来越大)。所以正确的使用方法是把Container当做一个处理文件的程序(类比Word软件和*.docx文件),将我们主机的文件系统挂载到Container当中。
不用了就直接
docker stop ros_env
再需要了就
docker start ros_env
这个方法优点显而易见,其实在任何平台上都是可行的,只要能跑Docker,易于部署。关于图像质量不高,这个可以通过配置noVNC的参数来提高,暂时还没折腾。由于在调试真机的时候,基本都是机器人上一个主机开着roscore,然后一堆传感器接到机器人上,自己的电脑都是通过连到机器人上面的roscore来调试的,所以不会存在传感器和Docker之间数据传输配置什么的问题。