安装 Unity Robotics Demo
- (如果使用的是该 Github 存储库提供的 Dockerfile 则不需要执行该步)将
unity_robotics_demo
和 unity_robotics_demo_msgs
复制到 Catkin 工作空间下的 src
文件夹下:
- ROS1:从
tutorials/ros_unity_integration/ros_packages
复制
- ROS2:从
tutorials/ros_unity_integration/ros2_packages
复制
- 编译新的 package:
# ROS1:
catkin_make
source devel/setup.bash
# ROS2:
colcon build
source install/setup.bash
- 在 Unity 菜单栏中,从
Robotics
进入 Generate ROS Messages...
,在 ROS Message 浏览窗口中,点击 Browse
按钮去设置 ROS message 的路径为存储库的 tutorials/ros_unity_integration/ros_packages/unity_robotics_demo_msgs
。(注:ros2_packages 的内容和 ros_packages 中的内容相同,ROS2 用户用哪个都行)
- 在 ROS message 浏览窗口中,展开
unity_robotics_demo_msgs
的子文件夹,点击 “Build 2 msgs” 和 “Build 2 srvs” ,从 ROS .msg 和 .srv 文件中生成 C# 脚本。
- 注:生成的文件默认存储在
Assets/RosMessages/UnityRoboticsDemo/msg
和 Assets/RosMessages/UnityRoboticsDemo/srv
中,在 ROS1 和 ROS2 之间切换时不需要重新生成文件,因为其内容是一样的。
网络通信的定义
ROS_IP
:运行ROS的机器、虚拟机或容器的IP地址。
- 可以在运行 Unity 和 ROS 的计算机上设置这两个变量。下面将介绍每个设置的位置和原因的细节。
- 两种设置方法:
- 在 ROS 中,这些设置作为
rosparam
被设置,写在 launch 文件中或参数文件中供 launch 文件调用。
- 在 Unity 中,通过
Robotics
-> ROS Settings
可以进行设置
%%写在 launch 文件中%%
<launch>
<param name="ROS_IP" value="127.0.0.1" />
<node name="position_service" pkg="unity_robotics_demo" type="position_service.py" args="--wait" output="screen" respawn="true" />
<node name="server_endpoint" pkg="ros_tcp_endpoint" type="default_server_endpoint.py" args="--wait" output="screen" respawn="true" />
</launch>
%% 在 launch 文件中加载,写在 yaml 文件中 %%
%%
params.yaml文件的内容如下:
ROS_IP: 127.0.0.1
%%
<launch>
<arg name="tcp_ip" default="0.0.0.0"/>
<arg name="tcp_port" default="10000"/>
<node name="server_endpoint" pkg="ros_tcp_endpoint" type="default_server_endpoint.py" args="--wait" output="screen" respawn="true">
<param name="tcp_ip" type="string" value="$(arg tcp_ip)"/>
<param name="tcp_port" type="int" value="$(arg tcp_port)"/>
</node>
<node name="mover" pkg="niryo_moveit" type="mover.py" args="--wait" output="screen"/>
<include file="$(find niryo_moveit)/launch/demo.launch" />
</launch>
通信的前提条件
- Unity 和 ROS 通信的两个前提条件是:
- 在 ROS 端的 launch 文件中设置
ROS_IP
;
- 并在 Unity 端进行
Robotics
-> ROS Settings
的设置。
如果使用 Docker
- Docker 需要使用以下参数启动,以转发用于 ROS 和 Unity 之间通信的端口。
-p 10000:10000 -p 5005:5005
- 在 ROS 端,设置
ROS_IP
为 0.0.0.0
- 在 Unity 端,设置
ROS_IP
为 127.0.0.1
评论(0)
您还未登录,请登录后发表或查看评论