-
从源代码编译时候,需要为fastrpts 打开 security 的支持
$ colcon build --symlink-install --cmake-args -DSECURITY=ON
-
创建 key store
$ ros2 security create_keystore demo_keys
-
为talker 和 listener两个node 创建key 和 certificate
$ ros2 security create_key demo_keys /talker $ ros2 security create_key demo_keys /listener
有可能你会遇到如下错误
lxml.etree.XMLSchemaParseError: attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}base' does not resolve to a(n) attribute declaration., line 34
修正这个问题如下
修改sros2 的代码$ cd ros2_ws/src/ros2/sros2/sros2/sros2/policy/schemas $ wget http://www.w3.org/2001/03/xml.xsd # 下载 xml.xsd $ vim policy.xsd 修改如下 @@ -4,7 +4,7 @@ xmlns:xml="http://www.w3.org/XML/1998/namespace" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://www.w3.org/XML/1998/namespace" - schemaLocation="http://www.w3.org/2001/03/xml.xsd" /> + schemaLocation="xml.xsd" />
-
执行demo
$ export ROS_SECURITY_ROOT_DIRECTORY=~/sros2_demo/demo_keys $ export ROS_SECURITY_ENABLE=true $ export ROS_SECURITY_STRATEGY=Enforce
每个ros2 run 的终端都要配置上面的参数
一个终端执行$ ros2 run demo_nodes_cpp talker
另一个终端执行
$ ros2 run demo_nodes_py listener
网友评论