ros-swg / turtlebot3_demo

Repository to build and test Turtlebot3 packages
Apache License 2.0
20 stars 6 forks source link

add build and run instructions for running tb3 demo with security #1

Closed mikaelarguedas closed 5 years ago

mikaelarguedas commented 5 years ago

Signed-off-by: Mikael Arguedas mikael.arguedas@gmail.com

crdelsey commented 5 years ago

@mikaelarguedas ros-planning/navigation2#860 has been merged

mikaelarguedas commented 5 years ago

Great! thanks @crdelsey for the update!

mikaelarguedas commented 5 years ago

Note to self about current status:

Currently released version of navigation (0.2.2) does not work for the demo because of map issues. Release candidate 0.2.3 seems to fix the issue.

With the repos listed in this PR as of https://github.com/mikaelarguedas/tb3_demo/pull/1/commits/56711e0752276204ad43e58f4fde9a4a00341993 allow to run the turtlebot3 demo using Gazebo and the navigation stack (without SROS2).

Currently unable to get the demo working with SROS2. https://github.com/mikaelarguedas/tb3_demo/pull/1/commits/d11964b1b19439f8ced5224701b994db5cac967b adds a policy file with most of the policies necessary to get it to launch without issue. A couple of wildcards have been put as I haven't been able to figure out yet the missing permissions for amcl / amcl_rclcpp_node

Even using wildcards for all nodes / all topics / all services, the demo doesn't work as amcl never receives the map when running with security. Need to check if it's related to QoS or the overhead of adding security on top of a pretty heavy system.

Edit: other changes I needed to get closer to working with sros2: https://github.com/ROBOTIS-GIT/turtlebot3/pull/456 https://github.com/ROBOTIS-GIT/turtlebot3_simulations/pull/82


Edit2: amcl nodes say they use sim time but this error message seems to indicate otherwise:

[amcl-3] [INFO] [amcl]: initialPoseReceived
[amcl-3] [INFO] [amcl]: Setting pose (171.360000): -0.396 -0.389 -0.007
[amcl-3] [WARN] [amcl]: Failed to transform initial pose in time (Lookup would require extrapolation into the future.  Requested time 1564092905.38770 but the latest data is at time 171.36000, when looking up transform from frame [odom] to frame [base_footprint])

Other weird thing is that there are 2 amcl nodes and one amcl_rclcpp_node running so the error message may not come from the same node as the one responding to the ros2 param get /amcl use_sim_time query

$ ros2 node list | grep amcl
/amcl_rclcpp_node
/amcl
/amcl

Other error message when the map is received and costmap displayed: [rviz2-9] [ERROR] [navigation_dialog_action_client]: NavigateToPose action server is not available. Is the initial pose set?


More fun stuff:

Navigation2 launch file doesn't pass the use_sim_time launch file argument value to the spawned nodes

mikaelarguedas commented 5 years ago

Failure was due to temporary nodes created by the nav stack. Took a bit of time to track them down but here is the list of nodes that need to be allowed on the network for the demo to run:

/_client_node
/_ros2cli  # this one is for my debugging and not required
/amcl
/amcl_rclcpp_node
/bt_navigator
/bt_navigator_client_node
/bt_navigator_global_localization_client
/bt_navigator_rclcpp_node
/dwb_controller
/dwb_controller_rclcpp_node
/gazebo
/global_costmap
/global_costmap/global_costmap
/global_costmap/global_costmap_rclcpp_node
/global_costmap_client
/global_localization
/launch_ros
/lifecycle_manager
/lifecycle_managerservice_client
/local_costmap
/local_costmap/local_costmap
/local_costmap/local_costmap_rclcpp_node
/local_costmap_client
/map_server
/navfn_planner
/navfn_planner_GetCostmap_client
/navfn_planner_GetRobotPose_client
/navfn_planner_rclcpp_node
/navigation_dialog_action_client
/recoveries
/recovery_GetRobotPose_client
/robot_state_publisher
/rviz2
/transform_listener_impl
/turtlebot3_diff_drive
/turtlebot3_imu
/turtlebot3_joint_state
/turtlebot3_laserscan
/world_model

I used this command to create them with wildcards:

ros2 security generate_artifacts -k keystore -n /lifecycle_manager /navigation_dialog_action_client /navfn_planner_rclcpp_node /navfn_planner /global_costmap_client /gazebo /lifecycle_managerservice_client /dwb_controller_rclcpp_node /recovery_GetRobotPose_client /launch_ros /dwb_controller /turtlebot3_diff_drive /amcl_rclcpp_node /bt_navigator_rclcpp_node /robot_state_publisher /global_costmap /global_costmap/global_costmap_rclcpp_node /global_costmap/global_costmap /turtlebot3_laserscan /bt_navigator /map_server /world_model /local_costmap_client /transform_listener_impl /local_costmap /local_costmap/local_costmap_rclcpp_node /local_costmap/local_costmap /navfn_planner_GetRobotPose_client /recoveries /navfn_planner_GetCostmap_client /amcl /rviz2 /turtlebot3_imu /_ros2cli /turtlebot3_joint_state /bt_navigator_client_node /_client_node /global_localization /bt_navigator_global_localization_client
mikaelarguedas commented 5 years ago

As @ruffsl was able to reproduce this demo with encryption enabled, I will merge this first version.

Improvements to the policy files and documentation will be done in follow-up PRs

FYI @thomas-moulard @olaldiko