前言
随着元宇宙、数字孪生的大火,机器人也可以通过 VR 或 AR 的视角呈现,在虚拟空间中建立机器人的数字化模型,实现虚实结合。
接下来这个专栏将会介绍在 Unity 中使用 ROS ,初学者入门可以参考本教程。
系统环境
- Ubuntu 20.04
- Docker 桌面版 4.11.0
- Unity 2020
Docker 桌面版安装
步骤 1: 设置 Docker 的包存储库
- 更新
apt
包索引并安装包,以允许apt
通过 HTTPS 使用存储库:
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
- 添加 Docker 的 官方 GPG 密钥:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- 使用以下命令设置存储库:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
步骤 2: 下载最新的 DEB 包
步骤 3: 使用 apt 安装包
sudo apt-get update
sudo apt-get install ./docker-desktop-<version>-<arch>.deb
Unity 安装
安装 Unity Hub
sudo sh -c 'echo "deb https://hub.unity3d.com/linux/repos/deb stable main" > /etc/apt/sources.list.d/unityhub.list'
wget -qO - https://hub.unity3d.com/linux/keys/public | sudo apt-key add -
sudo apt update
sudo apt-get install unityhub
安装 Unity Editor
- ROS–Unity 对于 2020 之后的版本在博客发布时支持的不太好,所以选择2020及以前的版本。
ROS–Unity Demo
- 克隆项目:
git clone https://github.com/Unity-Technologies/Unity-Robotics-Hub.git
ROS1
- 打开 Docker 桌面版,创建镜像并运行容器:
cd xxx/Unity-Robotics-Hub/tutorials/ros_unity_integration
docker build -t melodic -f ros_docker/Dockerfile . # 可选 noetic
docker run -it --rm -p 10000:10000 melodic /bin/bash
备选方案:如果电脑上有 ROS ,不想使用 Docker,需要下载 ROS-TCP-Endpoint 到 Catkin 工作区内的
src
文件夹下,然后导航到 Catkin 文件夹下执行catkin_make
,最后执行source devel/setup.bash
。
- 打开一个容器的终端,导航到
~/catkin_ws
,执行:
source devel/setup.bash
roslaunch ros_tcp_endpoint endpoint.launch
ros_tcp_endpoint
启动后会输出如下信息:
注意:默认情况下,server_endpoint将侦听ip 0.0.0.0(即允许所有传入地址)和端口10000,但这些设置是可配置的。要覆盖它们,可以将命令更改为roslauch ros_tcp_endpoint endpoint.launch tcp_ip:=127.0.0.1 tcp_port:=10000(将127.0.0.1替换为所需的ip,将10000替换为所需要的端口号。)
ROS2
- 打开 Docker 桌面版,创建镜像并运行容器:
cd xxx/Unity-Robotics-Hub/tutorials/ros_unity_integration
docker build -t foxy -f ros2_docker/Dockerfile .
docker run -it --rm -p 10000:10000 foxy /bin/bash
备选方法:下载 ROS-TCP-Endpoint 存储库的 ROS2 分支 ,将其复制到 Colcon 工作区的
src
文件夹中。然后导航到 Colcon 工作区并运行以下命令:
source install/setup.bash # 第一次设置要使用的构建环境
colcon build
source install/setup.bash # 第二次将新构建的包添加到环境中
-
在 Colcon 工作区中,运行以下命令,替换
<your IP address>
为 ROS 计算机的 IP 或主机名。- 如果是在 Docker 容器中运行 ROS,0.0.0.0 是有效的传入地址,所以可以写
ros2 run ros_tcp_endpoint default_server_endpoint --ros-args -p ROS_IP:=0.0.0.0
- 在 Linux 上,可以使用以下命令找到 IP 地址
hostname -I
- 在MacOS上,可以通过以下方式找到 IP 地址
ipconfig getifaddr en0
ros2 run ros_tcp_endpoint default_server_endpoint --ros-args -p ROS_IP:=<your IP address>
- 如果是在 Docker 容器中运行 ROS,0.0.0.0 是有效的传入地址,所以可以写
-
在 Docker 中执行后,输出如下:
- 如果需要服务器侦听与默认 10000 不同的端口,请在此处使用命令行来设置 ROS_TCP_PORT 参数:
ros2 run ros_tcp_endpoint default_server_endpoint --ros-args -p ROS_IP:=127.0.0.1 -p ROS_TCP_PORT:=10000
Unity 统一设置
- 启动 Unity 2020 并创建一个新项目
- 打开包管理器
- 单击左上角的 + 按钮。选择“从 git URL 添加包”并输入“https://github.com/Unity-Technologies/ROS-TCP-Connector.git?path=/com.unity.robotics.ros-tcp-connector”以安装ROS-TCP-Connector包。
- 如果没有使用 Docker 容器,从 Unity 菜单栏中打开
Robotics/ROS Settings
,并将变量ROS IP Address
设置为之前设置的 IP(如果使用的是 Docker,请将其保留为默认值 127.0.0.1)。
评论(0)
您还未登录,请登录后发表或查看评论