Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't update static costmap layer, no map received. Connecting to the GO2 Robot Via cyclonedds #87

Open
Erenrobot opened this issue Sep 25, 2024 · 14 comments

Comments

@Erenrobot
Copy link

**Hello, I am trying to launch "ros2 launch go2_robot_sdk robot.launch.py" file but It is not showing anything on RVIZ(I am using ROS2 humble on Ubuntu 22.04). There is no connection error and I have already tried the IP address export ROBOT_IP="192.168.123.222" is working on the official python and C++ SDK of Unitree Robotics. **

The ros2 node list is:
/behavior_server
/bt_navigator
/bt_navigator_navigate_through_poses_rclcpp_node
/bt_navigator_navigate_to_pose_rclcpp_node
/controller_server
/foxglove_bridge
/foxglove_bridge_component_manager
/global_costmap/global_costmap
/go2_driver_node
/joy_node
/lidar_to_pointcloud
/lifecycle_manager_navigation
/local_costmap/local_costmap
/planner_server
/pointcloud_to_laserscan
/robot_state_publisher
/rviz2
/slam_toolbox
/smoother_server
/teleop_node
/transform_listener_impl_556ce3c99620
/transform_listener_impl_55b04bf80370
/transform_listener_impl_5d78826f8b20
/transform_listener_impl_755eec01beb0
/transform_listener_impl_79d6d0002450
/transform_listener_impl_7c25dc008020
/transform_listener_impl_7fb0b8008a50
/twist_mux
/velocity_smoother
/waypoint_follower

Screenshot from 2024-09-24 19-45-06

It only allows me to change the topic to /robot_description which is only the robot body without legs and other components.

The output of launch is:

eren@eren:~/go2Sim_ws$ ros2 launch go2_robot_sdk robot.launch.py
[INFO] [launch]: All log files can be found below /home/eren/.ros/log/2024-09-24-19-44-33-729942-eren-74228
[INFO] [launch]: Default logging verbosity is set to INFO
IP list: ['192.168.123.222']
[INFO] [robot_state_publisher-1]: process started with pid [74230]
[INFO] [pointcloud_to_laserscan_node-2]: process started with pid [74232]
[INFO] [go2_driver_node-3]: process started with pid [74234]
[INFO] [lidar_to_pointcloud-4]: process started with pid [74236]
[INFO] [rviz2-5]: process started with pid [74238]
[INFO] [joy_node-6]: process started with pid [74240]
[INFO] [teleop_node-7]: process started with pid [74242]
[INFO] [twist_mux-8]: process started with pid [74244]
[INFO] [foxglove_bridge-9]: process started with pid [74246]
[INFO] [async_slam_toolbox_node-10]: process started with pid [74248]
[INFO] [controller_server-11]: process started with pid [74250]
[INFO] [smoother_server-12]: process started with pid [74252]
[INFO] [planner_server-13]: process started with pid [74255]
[INFO] [behavior_server-14]: process started with pid [74259]
[INFO] [bt_navigator-15]: process started with pid [74261]
[INFO] [waypoint_follower-16]: process started with pid [74263]
[INFO] [velocity_smoother-17]: process started with pid [74266]
[INFO] [lifecycle_manager-18]: process started with pid [74269]
[rviz2-5] Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
[twist_mux-8] [INFO] [1727232274.114590363] [twist_mux]: Topic handler 'topics.joy' subscribed to topic 'cmd_vel_joy': timeout = 0.500000s , priority = 10.
[twist_mux-8] [INFO] [1727232274.114879369] [twist_mux]: Topic handler 'topics.navigation' subscribed to topic 'cmd_vel': timeout = 0.500000s , priority = 5.
[robot_state_publisher-1] [INFO] [1727232274.117613452] [robot_state_publisher]: got segment FL_calf
[robot_state_publisher-1] [INFO] [1727232274.117659034] [robot_state_publisher]: got segment FL_calflower
[robot_state_publisher-1] [INFO] [1727232274.117666826] [robot_state_publisher]: got segment FL_calflower1
[robot_state_publisher-1] [INFO] [1727232274.117672110] [robot_state_publisher]: got segment FL_foot
[robot_state_publisher-1] [INFO] [1727232274.117676750] [robot_state_publisher]: got segment FL_hip
[robot_state_publisher-1] [INFO] [1727232274.117682396] [robot_state_publisher]: got segment FL_thigh
[robot_state_publisher-1] [INFO] [1727232274.117687066] [robot_state_publisher]: got segment FR_calf
[robot_state_publisher-1] [INFO] [1727232274.117691684] [robot_state_publisher]: got segment FR_calflower
[robot_state_publisher-1] [INFO] [1727232274.117696309] [robot_state_publisher]: got segment FR_calflower1
[robot_state_publisher-1] [INFO] [1727232274.117700273] [robot_state_publisher]: got segment FR_foot
[robot_state_publisher-1] [INFO] [1727232274.117704404] [robot_state_publisher]: got segment FR_hip
[robot_state_publisher-1] [INFO] [1727232274.117708761] [robot_state_publisher]: got segment FR_thigh
[robot_state_publisher-1] [INFO] [1727232274.117712902] [robot_state_publisher]: got segment Head_lower
[robot_state_publisher-1] [INFO] [1727232274.117717062] [robot_state_publisher]: got segment Head_upper
[robot_state_publisher-1] [INFO] [1727232274.117721552] [robot_state_publisher]: got segment RL_calf
[robot_state_publisher-1] [INFO] [1727232274.117726005] [robot_state_publisher]: got segment RL_calflower
[robot_state_publisher-1] [INFO] [1727232274.117730223] [robot_state_publisher]: got segment RL_calflower1
[robot_state_publisher-1] [INFO] [1727232274.117733888] [robot_state_publisher]: got segment RL_foot
[robot_state_publisher-1] [INFO] [1727232274.117737821] [robot_state_publisher]: got segment RL_hip
[robot_state_publisher-1] [INFO] [1727232274.117741699] [robot_state_publisher]: got segment RL_thigh
[robot_state_publisher-1] [INFO] [1727232274.117746121] [robot_state_publisher]: got segment RR_calf
[robot_state_publisher-1] [INFO] [1727232274.117750798] [robot_state_publisher]: got segment RR_calflower
[robot_state_publisher-1] [INFO] [1727232274.117754785] [robot_state_publisher]: got segment RR_calflower1
[robot_state_publisher-1] [INFO] [1727232274.117758854] [robot_state_publisher]: got segment RR_foot
[robot_state_publisher-1] [INFO] [1727232274.117763170] [robot_state_publisher]: got segment RR_hip
[robot_state_publisher-1] [INFO] [1727232274.117767370] [robot_state_publisher]: got segment RR_thigh
[robot_state_publisher-1] [INFO] [1727232274.117772014] [robot_state_publisher]: got segment base_footprint
[robot_state_publisher-1] [INFO] [1727232274.117776209] [robot_state_publisher]: got segment base_link
[robot_state_publisher-1] [INFO] [1727232274.117780217] [robot_state_publisher]: got segment front_camera
[robot_state_publisher-1] [INFO] [1727232274.117784775] [robot_state_publisher]: got segment imu
[robot_state_publisher-1] [INFO] [1727232274.117789503] [robot_state_publisher]: got segment map
[robot_state_publisher-1] [INFO] [1727232274.117793869] [robot_state_publisher]: got segment odom
[robot_state_publisher-1] [INFO] [1727232274.117798436] [robot_state_publisher]: got segment radar
[async_slam_toolbox_node-10] [INFO] [1727232274.118609886] [slam_toolbox]: Node using stack size 40000000
[teleop_node-7] [INFO] [1727232274.119112610] [TeleopTwistJoy]: Linear axis x on 1 at scale 0.200000.
[teleop_node-7] [INFO] [1727232274.119134756] [TeleopTwistJoy]: Linear axis y on 3 at scale 0.200000.
[teleop_node-7] [INFO] [1727232274.119137963] [TeleopTwistJoy]: Angular axis yaw on 6 at scale 0.200000.
[planner_server-13] [INFO] [1727232274.122229174] [planner_server]:
[planner_server-13] planner_server lifecycle node launched.
[planner_server-13] Waiting on external lifecycle transitions to activate
[planner_server-13] See https://design.ros2.org/articles/node_lifecycle.html for more information.
[planner_server-13] [INFO] [1727232274.123127507] [planner_server]: Creating
[controller_server-11] [INFO] [1727232274.125250535] [controller_server]:
[controller_server-11] controller_server lifecycle node launched.
[controller_server-11] Waiting on external lifecycle transitions to activate
[controller_server-11] See https://design.ros2.org/articles/node_lifecycle.html for more information.
[controller_server-11] [INFO] [1727232274.127473856] [controller_server]: Creating controller server
[waypoint_follower-16] [INFO] [1727232274.126047164] [waypoint_follower]:
[waypoint_follower-16] waypoint_follower lifecycle node launched.
[waypoint_follower-16] Waiting on external lifecycle transitions to activate
[waypoint_follower-16] See https://design.ros2.org/articles/node_lifecycle.html for more information.
[waypoint_follower-16] [INFO] [1727232274.126345032] [waypoint_follower]: Creating
[smoother_server-12] [INFO] [1727232274.126079756] [smoother_server]:
[smoother_server-12] smoother_server lifecycle node launched.
[smoother_server-12] Waiting on external lifecycle transitions to activate
[smoother_server-12] See https://design.ros2.org/articles/node_lifecycle.html for more information.
[smoother_server-12] [INFO] [1727232274.126995541] [smoother_server]: Creating smoother server
[lifecycle_manager-18] [INFO] [1727232274.126558431] [lifecycle_manager_navigation]: Creating
[velocity_smoother-17] [INFO] [1727232274.126719195] [velocity_smoother]:
[velocity_smoother-17] velocity_smoother lifecycle node launched.
[velocity_smoother-17] Waiting on external lifecycle transitions to activate
[velocity_smoother-17] See https://design.ros2.org/articles/node_lifecycle.html for more information.
[bt_navigator-15] [INFO] [1727232274.126783347] [bt_navigator]:
[bt_navigator-15] bt_navigator lifecycle node launched.
[bt_navigator-15] Waiting on external lifecycle transitions to activate
[bt_navigator-15] See https://design.ros2.org/articles/node_lifecycle.html for more information.
[bt_navigator-15] [INFO] [1727232274.126866367] [bt_navigator]: Creating
[planner_server-13] [INFO] [1727232274.126908769] [global_costmap.global_costmap]:
[planner_server-13] global_costmap lifecycle node launched.
[planner_server-13] Waiting on external lifecycle transitions to activate
[planner_server-13] See https://design.ros2.org/articles/node_lifecycle.html for more information.
[planner_server-13] [INFO] [1727232274.127249176] [global_costmap.global_costmap]: Creating Costmap
[behavior_server-14] [INFO] [1727232274.127041455] [behavior_server]:
[behavior_server-14] behavior_server lifecycle node launched.
[behavior_server-14] Waiting on external lifecycle transitions to activate
[behavior_server-14] See https://design.ros2.org/articles/node_lifecycle.html for more information.
[lifecycle_manager-18] [INFO] [1727232274.128479932] [lifecycle_manager_navigation]: Creating and initializing lifecycle service clients
[controller_server-11] [INFO] [1727232274.129775349] [local_costmap.local_costmap]:
[controller_server-11] local_costmap lifecycle node launched.
[controller_server-11] Waiting on external lifecycle transitions to activate
[controller_server-11] See https://design.ros2.org/articles/node_lifecycle.html for more information.
[controller_server-11] [INFO] [1727232274.129970747] [local_costmap.local_costmap]: Creating Costmap
[lifecycle_manager-18] [INFO] [1727232274.139036975] [lifecycle_manager_navigation]: Starting managed nodes bringup...
[lifecycle_manager-18] [INFO] [1727232274.139082992] [lifecycle_manager_navigation]: Configuring controller_server
[controller_server-11] [INFO] [1727232274.139266351] [controller_server]: Configuring controller interface
[controller_server-11] [INFO] [1727232274.139414698] [controller_server]: getting goal checker plugins..
[controller_server-11] [INFO] [1727232274.139490298] [controller_server]: Controller frequency set to 3.0000Hz
[controller_server-11] [INFO] [1727232274.139519975] [local_costmap.local_costmap]: Configuring
[controller_server-11] [INFO] [1727232274.142491163] [local_costmap.local_costmap]: Using plugin "static_layer"
[controller_server-11] [INFO] [1727232274.146536845] [local_costmap.local_costmap]: Subscribing to the map topic (/map) with transient local durability
[controller_server-11] [INFO] [1727232274.147515677] [local_costmap.local_costmap]: Initialized plugin "static_layer"
[controller_server-11] [INFO] [1727232274.147538787] [local_costmap.local_costmap]: Using plugin "voxel_layer"
[controller_server-11] [INFO] [1727232274.149318040] [local_costmap.local_costmap]: Subscribed to Topics: scan
[controller_server-11] [INFO] [1727232274.153622006] [local_costmap.local_costmap]: Initialized plugin "voxel_layer"
[controller_server-11] [INFO] [1727232274.153644083] [local_costmap.local_costmap]: Using plugin "inflation_layer"
[controller_server-11] [INFO] [1727232274.154874479] [local_costmap.local_costmap]: Initialized plugin "inflation_layer"
[controller_server-11] [ERROR] [1727232274.157255019] [local_costmap.local_costmap]: The configured inflation radius (0.100) is smaller than the computed inscribed radius (0.210) of your footprint, it is highly recommended to set inflation radius to be at least as big as the inscribed radius to avoid collisions
[controller_server-11] [INFO] [1727232274.158983212] [controller_server]: Created progress_checker : progress_checker of type nav2_controller::SimpleProgressChecker
[controller_server-11] [INFO] [1727232274.159569458] [controller_server]: Created goal checker : general_goal_checker of type nav2_controller::SimpleGoalChecker
[controller_server-11] [INFO] [1727232274.160470554] [controller_server]: Controller Server has general_goal_checker goal checkers available.
[controller_server-11] [INFO] [1727232274.161986338] [controller_server]: Created controller : FollowPath of type dwb_core::DWBLocalPlanner
[controller_server-11] [INFO] [1727232274.167117298] [controller_server]: Setting transform_tolerance to 0.200000
[controller_server-11] [INFO] [1727232274.173656976] [controller_server]: Using critic "RotateToGoal" (dwb_critics::RotateToGoalCritic)
[controller_server-11] [INFO] [1727232274.174406828] [controller_server]: Critic plugin initialized
[controller_server-11] [INFO] [1727232274.174695154] [controller_server]: Using critic "Oscillation" (dwb_critics::OscillationCritic)
[controller_server-11] [INFO] [1727232274.175420722] [controller_server]: Critic plugin initialized
[controller_server-11] [INFO] [1727232274.175779028] [controller_server]: Using critic "BaseObstacle" (dwb_critics::BaseObstacleCritic)
[controller_server-11] [INFO] [1727232274.175997843] [controller_server]: Critic plugin initialized
[controller_server-11] [INFO] [1727232274.176336843] [controller_server]: Using critic "GoalAlign" (dwb_critics::GoalAlignCritic)
[controller_server-11] [INFO] [1727232274.177089554] [controller_server]: Critic plugin initialized
[controller_server-11] [INFO] [1727232274.177197830] [controller_server]: Using critic "PathAlign" (dwb_critics::PathAlignCritic)
[controller_server-11] [INFO] [1727232274.177825962] [controller_server]: Critic plugin initialized
[controller_server-11] [INFO] [1727232274.177952152] [controller_server]: Using critic "PathDist" (dwb_critics::PathDistCritic)
[controller_server-11] [INFO] [1727232274.178527424] [controller_server]: Critic plugin initialized
[controller_server-11] [INFO] [1727232274.178656119] [controller_server]: Using critic "GoalDist" (dwb_critics::GoalDistCritic)
[controller_server-11] [INFO] [1727232274.179236388] [controller_server]: Critic plugin initialized
[controller_server-11] [INFO] [1727232274.179257339] [controller_server]: Controller Server has FollowPath controllers available.
[lifecycle_manager-18] [INFO] [1727232274.183090357] [lifecycle_manager_navigation]: Configuring smoother_server
[smoother_server-12] [INFO] [1727232274.183543840] [smoother_server]: Configuring smoother server
[smoother_server-12] [INFO] [1727232274.187970453] [smoother_server]: Created smoother : simple_smoother of type nav2_smoother::SimpleSmoother
[smoother_server-12] [INFO] [1727232274.188794124] [smoother_server]: Smoother Server has simple_smoother smoothers available.
[lifecycle_manager-18] [INFO] [1727232274.191896481] [lifecycle_manager_navigation]: Configuring planner_server
[planner_server-13] [INFO] [1727232274.192044272] [planner_server]: Configuring
[planner_server-13] [INFO] [1727232274.192080932] [global_costmap.global_costmap]: Configuring
[planner_server-13] [INFO] [1727232274.289025284] [global_costmap.global_costmap]: Using plugin "static_layer"
[planner_server-13] [INFO] [1727232274.291598976] [global_costmap.global_costmap]: Subscribing to the map topic (/map) with transient local durability
[planner_server-13] [INFO] [1727232274.292325067] [global_costmap.global_costmap]: Initialized plugin "static_layer"
[planner_server-13] [INFO] [1727232274.292471989] [global_costmap.global_costmap]: Using plugin "voxel_layer"
[planner_server-13] [INFO] [1727232274.293089467] [global_costmap.global_costmap]: Subscribed to Topics: scan
[rviz2-5] [INFO] [1727232274.381003432] [rviz2]: Stereo is NOT SUPPORTED
[rviz2-5] [INFO] [1727232274.381096705] [rviz2]: OpenGl version: 4.6 (GLSL 4.6)
[rviz2-5] [INFO] [1727232274.392108718] [rviz2]: Stereo is NOT SUPPORTED
[foxglove_bridge-9] [INFO] [1727232274.428748368] [foxglove_bridge_component_manager]: Load Library: /opt/ros/humble/lib/libfoxglove_bridge_component.so
[foxglove_bridge-9] [INFO] [1727232274.434126106] [foxglove_bridge_component_manager]: Found class: rclcpp_components::NodeFactoryTemplate<foxglove_bridge::FoxgloveBridge>
[foxglove_bridge-9] [INFO] [1727232274.434158633] [foxglove_bridge_component_manager]: Instantiate class: rclcpp_components::NodeFactoryTemplate<foxglove_bridge::FoxgloveBridge>
[async_slam_toolbox_node-10] [INFO] [1727232274.435979576] [slam_toolbox]: Using solver plugin solver_plugins::CeresSolver
[async_slam_toolbox_node-10] [INFO] [1727232274.436227435] [slam_toolbox]: CeresSolver: Using SCHUR_JACOBI preconditioner.
[foxglove_bridge-9] [INFO] [1727232274.436320012] [foxglove_bridge]: Starting foxglove_bridge (humble, 0.8.0@) with WebSocket++/0.8.2
[foxglove_bridge-9] [INFO] [1727232274.436906081] [foxglove_bridge]: [WS] Server running without TLS
[foxglove_bridge-9] [INFO] [1727232274.437089714] [foxglove_bridge]: [WS] WebSocket server listening at ws://0.0.0.0:8765
[foxglove_bridge-9] [INFO] [1727232274.437099844] [foxglove_bridge]: [WS] WebSocket server run loop started
[planner_server-13] [INFO] [1727232274.510891427] [global_costmap.global_costmap]: Initialized plugin "voxel_layer"
[planner_server-13] [INFO] [1727232274.510935414] [global_costmap.global_costmap]: Using plugin "inflation_layer"
[planner_server-13] [INFO] [1727232274.514242158] [global_costmap.global_costmap]: Initialized plugin "inflation_layer"
[planner_server-13] [ERROR] [1727232274.515338221] [global_costmap.global_costmap]: The configured inflation radius (0.100) is smaller than the computed inscribed radius (0.210) of your footprint, it is highly recommended to set inflation radius to be at least as big as the inscribed radius to avoid collisions
[planner_server-13] [INFO] [1727232274.516476054] [planner_server]: Created global planner plugin GridBased of type nav2_navfn_planner/NavfnPlanner
[planner_server-13] [INFO] [1727232274.516502685] [planner_server]: Configuring plugin GridBased of type NavfnPlanner
[pointcloud_to_laserscan_node-2] [INFO] [1727232274.518807302] [pointcloud_to_laserscan]: Got a subscriber to laserscan, starting pointcloud subscriber
[planner_server-13] [INFO] [1727232274.607172314] [planner_server]: Planner Server has GridBased planners available.
[lifecycle_manager-18] [INFO] [1727232274.610819458] [lifecycle_manager_navigation]: Configuring behavior_server
[behavior_server-14] [INFO] [1727232274.610944050] [behavior_server]: Configuring
[behavior_server-14] [INFO] [1727232274.614380417] [behavior_server]: Creating behavior plugin spin of type nav2_behaviors/Spin
[behavior_server-14] [INFO] [1727232274.614977070] [behavior_server]: Configuring spin
[behavior_server-14] [INFO] [1727232274.616572535] [behavior_server]: Creating behavior plugin backup of type nav2_behaviors/BackUp
[behavior_server-14] [INFO] [1727232274.617115075] [behavior_server]: Configuring backup
[behavior_server-14] [INFO] [1727232274.618223204] [behavior_server]: Creating behavior plugin drive_on_heading of type nav2_behaviors/DriveOnHeading
[behavior_server-14] [INFO] [1727232274.618579812] [behavior_server]: Configuring drive_on_heading
[behavior_server-14] [INFO] [1727232274.619635857] [behavior_server]: Creating behavior plugin assisted_teleop of type nav2_behaviors/AssistedTeleop
[behavior_server-14] [INFO] [1727232274.620898392] [behavior_server]: Configuring assisted_teleop
[behavior_server-14] [INFO] [1727232274.623561835] [behavior_server]: Creating behavior plugin wait of type nav2_behaviors/Wait
[behavior_server-14] [INFO] [1727232274.624049592] [behavior_server]: Configuring wait
[lifecycle_manager-18] [INFO] [1727232274.628369048] [lifecycle_manager_navigation]: Configuring bt_navigator
[bt_navigator-15] [INFO] [1727232274.628693989] [bt_navigator]: Configuring
[lifecycle_manager-18] [INFO] [1727232274.653610012] [lifecycle_manager_navigation]: Configuring waypoint_follower
[waypoint_follower-16] [INFO] [1727232274.653969240] [waypoint_follower]: Configuring
[waypoint_follower-16] [INFO] [1727232274.660535362] [waypoint_follower]: Created waypoint_task_executor : wait_at_waypoint of type nav2_waypoint_follower::WaitAtWaypoint
[lifecycle_manager-18] [INFO] [1727232274.661195691] [lifecycle_manager_navigation]: Configuring velocity_smoother
[velocity_smoother-17] [INFO] [1727232274.661359513] [velocity_smoother]: Configuring velocity smoother
[lifecycle_manager-18] [INFO] [1727232274.662819635] [lifecycle_manager_navigation]: Activating controller_server
[controller_server-11] [INFO] [1727232274.662926889] [controller_server]: Activating
[controller_server-11] [INFO] [1727232274.662966020] [local_costmap.local_costmap]: Activating
[controller_server-11] [INFO] [1727232274.663009403] [local_costmap.local_costmap]: Checking transform
[controller_server-11] [INFO] [1727232274.663084653] [local_costmap.local_costmap]: start
[go2_driver_node-3] [INFO] [1727232274.721204184] [go2_driver_node]: Received ip list: ['192.168.123.222']
[go2_driver_node-3] [INFO] [1727232274.721385478] [go2_driver_node]: Connection type is cyclonedds
[go2_driver_node-3] [INFO] [1727232274.721508007] [go2_driver_node]: Connection mode is single
[go2_driver_node-3] INFO:scripts.go2_camerainfo:Loading camera info from file: /home/eren/go2Sim_ws/install/go2_robot_sdk/share/go2_robot_sdk/calibration/front_camera.yaml
[lidar_to_pointcloud-4] /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/node.py:441: UserWarning: when declaring parameter named 'robot_ip_lst', declaring a parameter only providing its name is deprecated. You have to either:
[lidar_to_pointcloud-4] - Pass a name and a default value different to "PARAMETER NOT SET" (and optionally a descriptor).
[lidar_to_pointcloud-4] - Pass a name and a parameter type.
[lidar_to_pointcloud-4] - Pass a name and a descriptor with dynamic_typing=True [lidar_to_pointcloud-4] warnings.warn( [lidar_to_pointcloud-4] /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/node.py:441: UserWarning: when declaring parameter named 'map_name', declaring a parameter only providing its name is deprecated. You have to either: [lidar_to_pointcloud-4] - Pass a name and a default value different to "PARAMETER NOT SET" (and optionally a descriptor). [lidar_to_pointcloud-4] - Pass a name and a parameter type. [lidar_to_pointcloud-4] - Pass a name and a descriptor with dynamic_typing=True
[lidar_to_pointcloud-4] warnings.warn(
[lidar_to_pointcloud-4] /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/node.py:441: UserWarning: when declaring parameter named 'map_save', declaring a parameter only providing its name is deprecated. You have to either:
[lidar_to_pointcloud-4] - Pass a name and a default value different to "PARAMETER NOT SET" (and optionally a descriptor).
[lidar_to_pointcloud-4] - Pass a name and a parameter type.
[lidar_to_pointcloud-4] - Pass a name and a descriptor with `dynamic_typing=True
[lidar_to_pointcloud-4] warnings.warn(
[lidar_to_pointcloud-4] [INFO] [1727232275.294065875] [lidar_to_pointcloud]: Map will be saved
[lidar_to_pointcloud-4] [INFO] [1727232275.294255955] [lidar_to_pointcloud]: Map name is 3d_map.ply
[controller_server-11] [INFO] [1727232275.713625936] [controller_server]: Creating bond (controller_server) to lifecycle manager.
[lifecycle_manager-18] [INFO] [1727232275.820002635] [lifecycle_manager_navigation]: Server controller_server connected with bond.
[lifecycle_manager-18] [INFO] [1727232275.820130398] [lifecycle_manager_navigation]: Activating smoother_server
[smoother_server-12] [INFO] [1727232275.820662051] [smoother_server]: Activating
[smoother_server-12] [INFO] [1727232275.820752376] [smoother_server]: Creating bond (smoother_server) to lifecycle manager.
[lifecycle_manager-18] [INFO] [1727232275.925351502] [lifecycle_manager_navigation]: Server smoother_server connected with bond.
[lifecycle_manager-18] [INFO] [1727232275.925485459] [lifecycle_manager_navigation]: Activating planner_server
[planner_server-13] [INFO] [1727232275.926310369] [planner_server]: Activating
[planner_server-13] [INFO] [1727232275.926467941] [global_costmap.global_costmap]: Activating
[planner_server-13] [INFO] [1727232275.926497555] [global_costmap.global_costmap]: Checking transform
[planner_server-13] [INFO] [1727232275.926728129] [global_costmap.global_costmap]: start
[planner_server-13] [INFO] [1727232277.277534131] [planner_server]: Activating plugin GridBased of type NavfnPlanner
[planner_server-13] [INFO] [1727232277.277819829] [planner_server]: Creating bond (planner_server) to lifecycle manager.
[lifecycle_manager-18] [INFO] [1727232277.379507222] [lifecycle_manager_navigation]: Server planner_server connected with bond.
[lifecycle_manager-18] [INFO] [1727232277.379566251] [lifecycle_manager_navigation]: Activating behavior_server
[behavior_server-14] [INFO] [1727232277.379866262] [behavior_server]: Activating
[behavior_server-14] [INFO] [1727232277.379902488] [behavior_server]: Activating spin
[behavior_server-14] [INFO] [1727232277.379914245] [behavior_server]: Activating backup
[behavior_server-14] [INFO] [1727232277.379923852] [behavior_server]: Activating drive_on_heading
[behavior_server-14] [INFO] [1727232277.379932984] [behavior_server]: Activating assisted_teleop
[behavior_server-14] [INFO] [1727232277.379942069] [behavior_server]: Activating wait
[behavior_server-14] [INFO] [1727232277.379953928] [behavior_server]: Creating bond (behavior_server) to lifecycle manager.
[lifecycle_manager-18] [INFO] [1727232277.482664441] [lifecycle_manager_navigation]: Server behavior_server connected with bond.
[lifecycle_manager-18] [INFO] [1727232277.482852288] [lifecycle_manager_navigation]: Activating bt_navigator
[bt_navigator-15] [INFO] [1727232277.483406172] [bt_navigator]: Activating
[bt_navigator-15] [INFO] [1727232277.532326076] [bt_navigator]: Creating bond (bt_navigator) to lifecycle manager.
[lifecycle_manager-18] [INFO] [1727232277.635591408] [lifecycle_manager_navigation]: Server bt_navigator connected with bond.
[lifecycle_manager-18] [INFO] [1727232277.635735787] [lifecycle_manager_navigation]: Activating waypoint_follower
[waypoint_follower-16] [INFO] [1727232277.636284281] [waypoint_follower]: Activating
[waypoint_follower-16] [INFO] [1727232277.636421515] [waypoint_follower]: Creating bond (waypoint_follower) to lifecycle manager.
[lifecycle_manager-18] [INFO] [1727232277.742070398] [lifecycle_manager_navigation]: Server waypoint_follower connected with bond.
[lifecycle_manager-18] [INFO] [1727232277.742112421] [lifecycle_manager_navigation]: Activating velocity_smoother
[velocity_smoother-17] [INFO] [1727232277.742497316] [velocity_smoother]: Activating
[velocity_smoother-17] [INFO] [1727232277.742570085] [velocity_smoother]: Creating bond (velocity_smoother) to lifecycle manager.
[lifecycle_manager-18] [INFO] [1727232277.844513365] [lifecycle_manager_navigation]: Server velocity_smoother connected with bond.
[lifecycle_manager-18] [INFO] [1727232277.844611177] [lifecycle_manager_navigation]: Managed nodes are active
[lifecycle_manager-18] [INFO] [1727232277.844642936] [lifecycle_manager_navigation]: Creating bond timer...
[controller_server-11] [WARN] [1727232284.663560079] [local_costmap.local_costmap]: Can't update static costmap layer, no map received
[planner_server-13] [WARN] [1727232286.161617844] [global_costmap.global_costmap]: Can't update static costmap layer, no map received
[controller_server-11] [WARN] [1727232294.663520942] [local_costmap.local_costmap]: Can't update static costmap layer, no map received
[planner_server-13] [WARN] [1727232296.240300947] [global_costmap.global_costmap]: Can't update static costmap layer, no map received
[controller_server-11] [WARN] [1727232304.663535256] [local_costmap.local_costmap]: Can't update static costmap layer, no map received
[planner_server-13] [WARN] [1727232306.215343854] [global_costmap.global_costmap]: Can't update static costmap layer, no map received

@abizovnuralem
Copy link
Owner

Hello, what kind of dog firmware are you using?

@KingJacM
Copy link

Same here, any solution yet?

@KingJacM
Copy link

Hello, what kind of dog firmware are you using?

FYI, my robot is edu version, I am not sure of the firmware you are referring to. I connected it by ethernet and later realized that I might need to connect by WIFI, but when I set the connection type to cyclonedds, still nothing appears.

@abizovnuralem
Copy link
Owner

You can try a webrtc method first, for the cyclonesdds can you please share your output here with this cmd:
ros2 topic list
Thanks! @KingJacM

@Erenrobot
Copy link
Author

Erenrobot commented Oct 2, 2024

Hello, what kind of dog firmware are you using?

We are using the latest firmware. Also, we cannot connect the robot to the Wifi. We can only connect from Ethernet.
We have the EDU version too.

@minolta001
Copy link

Hello there, I actually have the same issue. Also, did you try to check the message from publisher? I can see publisher topics but most of them publish nothing.

@abizovnuralem
Copy link
Owner

Hello, what kind of dog firmware are you using?

We are using the latest firmware. Also, we cannot connect the robot to the Wifi. We can only connect from Ethernet. We have the EDU version too.

Can you switch to cyclonedds method please and try? You can learn how to do that from the readme instructions.

@KingJacM
Copy link

You can try a webrtc method first, for the cyclonesdds can you please share your output here with this cmd: ros2 topic list Thanks! @KingJacM

@abizovnuralem The topic list shows:

humble@humble-virtual-machine:~/Documents/ros2_ws$ ros2 topic list
/4g_traffic_report
/all_edge
/all_node
/api/audio_hub/request
/api/audio_hub/response
/api/bashrunner/request
/api/bashrunner/response
/api/gpt/request
/api/gpt/response
/api/obstacles_avoid/request
/api/obstacles_avoid/response
/api/robot_state/request
/api/robot_state/response
/api/sport/request
/api/sport/response
/api/sport_lease/request
/api/sport_lease/response
/api/uwbswitch/request
/api/uwbswitch/response
/api/videohub/request
/api/videohub/response
/api/vui/request
/api/vui/response
/audioreceiver
/audiosender
/frontvideostream
/gpt_cmd
/gptflowfeedback
/lf/lowstate
/lf/sportmodestate
/lio_sam_ros2/mapping/odometry
/lowcmd
/lowstate
/mf/sportmodestate
/multiplestate
/parameter_events
/pctoimage_local
/public_network_status
/qt_add_edge
/qt_add_node
/qt_command
/qt_modify_edge
/qt_modify_node
/qt_notice
/query_result_edge
/query_result_node
/rosout
/rtc_status
/selftest
/servicestate
/servicestateactivate
/sportmodestate
/utlidar/cloud
/utlidar/cloud_deskewed
/utlidar/foot_position
/utlidar/grid_map
/utlidar/height_map
/utlidar/height_map_array
/utlidar/imu
/utlidar/lidar_state
/utlidar/map_state
/utlidar/mapping_cmd
/utlidar/range_info
/utlidar/range_map
/utlidar/robot_odom
/utlidar/robot_pose
/utlidar/switch
/utlidar/voxel_map
/utlidar/voxel_map_compressed
/uwbstate
/uwbswitch
/videohub/inner
/webrtcreq
/webrtcres
/wirelesscontroller

The error message from running ros2 launch go2_robot_sdk robot.launch.py is:

[controller_server-11] [WARN] [1729061050.614756948] [local_costmap.local_costmap]: Can't update static costmap layer, no map received
[planner_server-13] [WARN] [1729061057.390710984] [global_costmap.global_costmap]: Can't update static costmap layer, no map received
[controller_server-11] [WARN] [1729061060.614934259] [local_costmap.local_costmap]: Can't update static costmap layer, no map received

@ImperiumKontratakuje
Copy link

ImperiumKontratakuje commented Oct 16, 2024

First of all, I would like to congratulate you on this fantastic project and thank you for the time, effort, and dedication you’ve put into it. Thank you very much, and congratulations on your expertise! :)

In my case, I’m also experiencing issues connecting via CONN_TYPE="cyclonedds".

Below are some initial/entry parameters:

1. Robot

A. Model

Unitree Go2 Pro, purchased in October 2024.
Hardware version: V2.0
Software version: V1.1.1
Mobile App: V1.8.4. e

B. Network

On the built-in network port (RJ45 socket accessible under the flap on the back), for the internal computer called "GO2 MCU," a static IP address 192.168.123.161 is set.
When connected to a DHCP server, the network interface also obtains an additional dynamic IP address from the DHCP pool. Scanning the address with nmap shows that the SSH service is running and open on port 22.

Nmap scan report for 192.168.123.161
Host is up (0.00026s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh

Unfortunately, I haven't found any information about the login credentials (user/password) for the internal computer "GO2 MCU" (what a shame).

The available information regarding login credentials for the Unitree Go2 EDU version only refers to the additional external computer on the NVIDIA Jetson Orin platform, called "GO2 External," which has the IP address 192.168.123.18 and credentials unitree/123.

For the WiFi/AP mode activated on the robot, WiFi clients (phone, laptop) receive addresses from the 192.168.12.X subnet, and the robot has a static address of 192.168.12.1. Just like with the 192.168.123.161 address, an open port 22 and the SSH service are also visible here.

C. Strange behavior / issues / no Wi-Fi network

With my Go2 unit, I have a similar problem as @Erenrobot and cannot connect to the Wi-Fi network from the "GO2 MCU" – only the 4G network and LAN port are functional.


Errata / 2024-10-17 00:03

I managed to set up a connection via WiFi, but it is very unstable when it comes to the user interface, and it often stops working, showing a "timeout" message, even when I have an active connection to the robot.

  • WiFi/AP mode on the robot, and the phone connects at 5GHz with a speed of 400Mbit/s, obtaining an IP address from the 192.168.12.X subnet.
  • WiFi/STA-L mode (I changed the parameters of my test AP: WPA/WPA2-Personal, WPA2-PSK/AES).

After disabling the 4G option in the mobile app, I lost all connection with the robot, but I managed to re-enable the 4G option by directly connecting the GO2 to the Wi-Fi router via LAN cable. This allowed the mobile app to reconnect with the robot. I haven't checked if this TCP/IP communication is happening locally or if the traffic goes outside and returns.
I’m also unsure how these 4G connections work in my "PRO" version. From what I’ve read/seen, there is a 4G modem inside with an eSIM card, but I’m still not sure who is paying for it :)

2. Testing go2_ros2_sdk

The project compiles successfully on Ubuntu 22.04 under ROS 2 Humble.
The ROS 2 nodes for the parameters and "webrtc" mode work correctly (SLAM, LIDAR, CAMERA, ODOMETRY).

export ROBOT_IP="192.168.123.161" 
export CONN_TYPE="webrtc"
ros2 launch go2_robot_sdk robot.launch.py 

When switching to CONN_TYPE="cyclonedds", I couldn’t establish a connection with the robot.

As far as I know, the default DDS implementation in ROS 2 Humble is Fast DDS, not CycloneDDS.

Therefore, I changed the default DDS for ROS 2 Humble to rmw_cyclonedds_cpp,

sudo apt install ros-humble-rmw-cyclonedds-cpp

source /opt/ros/humble/setup.bash
source ~/ros2_ws/install/setup.bash

export RMW_IMPLEMENTATION="rmw_cyclonedds_cpp"
export ROBOT_IP="192.168.123.161"
export CONN_TYPE="cyclonedds"

but this did not resolve the issue, and I still cannot connect to the robot :(

I tested the same configuration for the WiFi/AP mode activated on the robot, changing the IP address with export ROBOT_IP="192.168.12.1", but unfortunately without a positive result.

In the next step, I will try testing the examples from the project https://github.com/unitreerobotics/unitree_ros2, as they also use rmw-cyclonedds-cpp. If those examples work, it will be a very good starting point for further analysis, as at least it will show whether anything related to DDS is functioning.

2:00 AM

Continuing with the experiments, and I have bad news.

I successfully compiled unitree_ros2 with support for CycloneDDS version 0.10.x.

git clone https://github.com/ros2/rmw_cyclonedds -b humble
git clone https://github.com/eclipse-cyclonedds/cyclonedds -b releases/0.10.x

Unfortunately, there is no communication with the robot over DDS on my "PRO", and ros2 topic list shows nothing.

Why?

On the project’s page https://github.com/legion1581/go2_python_sdk I found the answer:

CycloneDDS is an open-source implementation of the Data Distribution Service (DDS) standard, which is a middleware protocol used by Unitree Go2.

CycloneDDS works out of the box only with the EDU version.

For use with AIR/PRO models, a custom firmware upgrade is required. Please visit theroboverse.com and our Discord group for more details.

3:00 AM

I now have root access to "GO2 MCU".

I'm inside ! Finally, I'm home :)

Now it’s starting to make sense. Without access to the inside of the "Go2 MCU," it's like watching a girl from 10 km away :)

And the view is well-known. It’s a regular Debian "bullseye/sid", and I installed "mc" via apt. In htop, it’s barely busy :)

image

3:42 AM

From what I've read, it’s possible to unlock the "development" function.

https://wiki.theroboverse.com/en/firmware/secondary_development

Secondary development is primarily an option exclusive to the EDU model. It allows you to develop for your robot using both official and unofficial SDKs. The key feature is low-level access, enabling control of each joint independently, allowing you to implement your own balancing/walking algorithms. AIR/PRO models do not support this out of the box, but it can be enabled.

4:03 AM

Now it's necessary to create a backup and enable the "Secondary Development" option, and maybe then DDS will work :)

unitree_go2_pro

@abizovnuralem
Copy link
Owner

@ImperiumKontratakuje , Thank you, for your warm words, I wish you all the same x 10!
For your problem with wifi:
if you want to use this repo, you don't need to do such modifications, you need to use the mobile app and search for the robot IP address, then, paste it and run this SDK, that's all. Also, I recommend to use webrtc method with this repo, as it has camera stream integration.

@ImperiumKontratakuje
Copy link

ImperiumKontratakuje commented Oct 17, 2024

@abizovnuralem , Thank you for your response. I have successfully tested go2_ros2_sdk in WebRTC mode, but based on the diagram, it seems that DDS is the native communication method for ROS2/SDK. This type of communication has many advantages: it eliminates additional translation overhead, ensures lower latency, and provides better reliability in data transmission. Furthermore, DDS is better suited for distributed systems, allowing for more efficient data exchange between robot components without the need for conversion.
software_arch

I'm not an expert, but all the vehicles I've built so far have natively used DDS, and it would be great if go2_ros2_sdk could be run in CycloneDDS mode for my Go2 "Pro" model, as this would be far more optimal than translating through WebRTC.

I managed to activate the "Secondary Development" option in the Go2 Pro, and now the "ros2 topic list" command on the computer returns the list of topics, so it's getting closer to the goal, and ...

DDS is working! :)

image

Additionally, the operating system on the Go2 is Ubuntu 20.04.5 LTS (GNU/Linux 5.10.176-rt86+ aarch64), which is why most examples reference ROS2 Foxy.

Now, I would like to test whether I can run your project "go2_ros2_sdk" in CONN_TYPE="cyclonedds" mode.
It would be great if it works!

I would also like to check what the .iso image for the "GO2 External" external platform system with Nvidia Jetson Orin contains, as there should be a pre-configured ROS2 environment for GO2, so there might be some packages available as well.

ros2 topic list

/api/assistant_recorder/request
/api/assistant_recorder/response
/api/audiohub/request
/api/audiohub/response
/api/bashrunner/request
/api/bashrunner/response
/api/config/request
/api/config/response
/api/fourg_agent/request
/api/fourg_agent/response
/api/gas_sensor/request
/api/gas_sensor/response
/api/gpt/request
/api/gpt/response
/api/motion_switcher/request
/api/motion_switcher/response
/api/obstacles_avoid/request
/api/obstacles_avoid/response
/api/programming_actuator/request
/api/programming_actuator/response
/api/robot_state/request
/api/robot_state/response
/api/sport/request
/api/sport/response
/api/sport_lease/request
/api/sport_lease/response
/api/uwbswitch/request
/api/uwbswitch/response
/api/videohub/request
/api/videohub/response
/api/vui/request
/api/vui/response
/arm_Command
/arm_Feedback
/audiohub/player/state
/audioreceiver
/audiosender
/config_change_status
/frontvideostream
/gas_sensor
/gnss
/gpt_cmd
/gptflowfeedback
/lf/lowstate
/lf/sportmodestate
/lio_sam_ros2/mapping/odometry
/lowcmd
/lowstate
/mf/sportmodestate
/multiplestate
/parameter_events
/pctoimage_local
/programming_actuator/command
/programming_actuator/feedback
/public_network_status
/qt_add_edge
/qt_add_node
/qt_command
/qt_notice
/query_result_edge
/query_result_node
/rosout
/rtc/state
/rtc_status
/selftest
/servicestate
/servicestateactivate
/sportmodestate
/uslam/client_command
/uslam/cloud_map
/uslam/frontend/cloud_world_ds
/uslam/frontend/odom
/uslam/localization/cloud_world
/uslam/localization/odom
/uslam/navigation/global_path
/uslam/server_log
/utlidar/cloud
/utlidar/cloud_deskewed
/utlidar/foot_position
/utlidar/grid_map
/utlidar/height_map
/utlidar/height_map_array
/utlidar/imu
/utlidar/lidar_state
/utlidar/map_state
/utlidar/mapping_cmd
/utlidar/range_info
/utlidar/range_map
/utlidar/robot_odom
/utlidar/robot_pose
/utlidar/switch
/utlidar/voxel_map
/utlidar/voxel_map_compressed
/uwbstate
/uwbswitch
/videohub/inner
/webrtcreq
/webrtcres
/wirelesscontroller
/wirelesscontroller_unprocessed
/xfk_webrtcreq
/xfk_webrtcres

@tackgeun
Copy link

tackgeun commented Nov 8, 2024

Thank you for sharing your experience, @ImperiumKontratakuje. Following your instructions, I successfully unlocked the secondary development, and the my Go2 Pro can now connect via both wifi-network and wired-ethernet.

I do have some questions regarding the activation dependency for CycloneDDS. I'm encountering a message that says, 'can't update static costmap layer.' Is setting up unitree_ros2 and its dependencies sufficient to support CycloneDDS, or are additional dependencies, such as unitree_sdk, required?

Thank you in advance.

@ImperiumKontratakuje
Copy link

I'm glad that my information was helpful. Without the ability to access the Unitree Go via SSH and unlock DDS, this robot really becomes just an expensive toy. Unlocking the robot greatly expands its capabilities—now, our only limits are our knowledge and skills.

I haven’t dedicated much time to testing yet, and so far, I haven't managed to get go2_ros2_sdk working with DDS support. However, I did succeed with the go2_robot project, which currently doesn’t support the camera or SLAM, but this functionality should be added soon.

As for DDS, after unlocking, it’s available only through the LAN port, not via Wi-Fi. I attempted to modify the DDS rules by editing the configuration file /unitree/etc/cyclonedds.xml, changing it from:

<?xml version="1.0" encoding="UTF-8"?>
<CycloneDDS>
  <Domain Id="any">
    <General>
      <Interfaces>
        <NetworkInterface name="eth0" priority="default" multicast="default" />
      </Interfaces>
    </General>
    <SharedMemory>
      <Enable>true</Enable>
    </SharedMemory>
    <Discovery>
      <EnableTopicDiscoveryEndpoints>true</EnableTopicDiscoveryEndpoints>
    </Discovery>
  </Domain>
</CycloneDDS>

to:

<Interfaces>
  <NetworkInterface name="eth0" priority="default" multicast="default" />
  <NetworkInterface name="wlan0" priority="default" multicast="default" />
</Interfaces>


This change should allow CycloneDDS to use both eth0 and wlan0. However, after a system reboot, the file reverts to its previous state, suggesting it is dynamically generated. I haven't yet figured out how to modify it permanently, so for now, DDS is accessible only through the eth0 interface.

I'm very interested in hearing about your tests with DDS in this project. If you make any progress, please share your insights!

For now, I’ll focus on learning Isaac Sim, as many projects in the field of reinforcement learning simulations use Omniverse software: https://github.com/abizovnuralem/go2_omniverse.

@tackgeun
Copy link

tackgeun commented Nov 14, 2024

@ImperiumKontratakuje Thank you for sharing your current status.

Although your goal is to connect cycloneDDS via both wired and wireless connections, I found that using WebRTC over a wired connection works to some extent. (As I reviewed above, I think you didn't try this one.) I’m focusing on wired communication because I need to control a robot dog outdoors with my external computing resource attached on top of go2.

However, there's an unusual setup required. Changing the IP to go2's static IP (192.168.123.161) alone doesn’t work. I also need to run source unitree_ros2/install/setup.bash, which includes cyclonedds initialization, before launching the go2 unofficial SDK with WebRTC and the static IP.

I’m currently investigating why this is necessary.

Thank you for your suggestions and comments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants