WSL2中 RViz2加载so101 urdf
SO101 ROS2 BringupSO101 机械臂 (6-DOF, STS3215 舵机) 的 ROS2 驱动包。当前实现用自定义so101_hardware_bridge做串口桥接未接入ros2_control。config/so101_controllers.yaml仅作后续升级参考。架构真机模式默认:/dev/ttyACM* → so101_hardware_bridge → /joint_states → robot_state_publisher → /tf → RViz2 ↑ /joint_commands (用户节点 / so101_test_control)调试模式use_joint_state_gui:true不启硬件:joint_state_publisher_gui → /joint_states → robot_state_publisher → /tf → RViz2与硬件桥接互斥开 GUI 时不会启动so101_hardware_bridge。前置条件依赖包sudoaptinstall-y\ros-humble-robot-state-publisher\ros-humble-joint-state-publisher\ros-humble-joint-state-publisher-gui\ros-humble-rviz2\python3-colcon-common-extensions pipinstallpyserial# 真机串口需要WSL2 USB 转发仅真机# Windows PowerShell (管理员)winget install usbipd usbipd list usbipd bind--busid BUSID usbipd attach--wsl--busid BUSIDsudochmod666/dev/ttyACM1# 或: sudo usermod -aG dialout $USER 后重新登录编译若 shell 里 conda/miniforge 的python3优先请先保证系统 PythonexportPATH/usr/bin:$PATHcd~/robot-urdfs/so101/so101_bringup colcon build --symlink-installsourceinstall/setup.bash包内 URDF 使用package://so101_bringup/assets/...仓库根目录so101/so101_new_calib.urdf仍是file://绝对路径请优先用包内版本。运行重要 (WSL2):启动 RViz2 前必须使用软件 OpenGL否则可能导致整机黑屏无法恢复。launch 已自动设置LIBGL_ALWAYS_SOFTWARE1。若手动启动rviz2请先exportLIBGL_ALWAYS_SOFTWARE1调试无真机GUI 滑块 RVizros2 launch so101_bringup so101.launch.py use_joint_state_gui:trueRViz 只负责显示关节由弹出的Joint State Publisher滑块控制不是在 RViz 视口里拖模型。真机硬件桥接 RVizros2 launch so101_bringup so101.launch.py port:/dev/ttyACM1仅硬件桥接不启 RVizros2 launch so101_bringup so101.launch.py use_rviz:false控制机械臂真机方式 1: 发布关节角度弧度顺序见下表ros2 topic pub /joint_commands std_msgs/msg/Float64MultiArray\{data: [0, 0, 0, 0, 0, 0]}-1方式 2: 键盘测试节点# 另开终端先 source install/setup.bashros2 run so101_bringup so101_test_control方式 3: Pythonimportrclpyfromstd_msgs.msgimportFloat64MultiArray rclpy.init()noderclpy.create_node(so101_controller)pubnode.create_publisher(Float64MultiArray,joint_commands,10)msgFloat64MultiArray()msg.data[0.0,0.5,-0.8,0.0,0.0,0.0]pub.publish(msg)查看状态ros2 topicecho/joint_states# 当前实现主要发布 positionros2 run tf2_tools view_frames话题话题类型方向说明/joint_statessensor_msgs/JointState桥接/GUI →关节位置桥接当前主要填 position/joint_commandsstd_msgs/Float64MultiArray→ 桥接目标关节角弧度仅真机模式/tftf2_msgs/TFMessagerobot_state_publisher→坐标系变换/robot_description参数/话题robot_state_publisherURDFLaunch 参数参数默认值说明port/dev/ttyACM1串口真机baudrate1000000波特率publish_rate50.0状态发布频率 (Hz)use_rviztrue是否启动 RViz2use_joint_state_guifalsetrue时用 GUI、不启硬件桥接urdf_file包内urdf/so101_new_calib.urdfURDF 路径硬件桥接节点内部参数也可在 launch 中覆盖参数默认值说明servo_ids[1,2,3,4,5,6]舵机 IDjoint_names见下表关节名default_speed500舵机速度关节顺序与/joint_commandsdata 下标一致下标关节名舵机 ID0shoulder_pan11shoulder_lift22elbow_flex33wrist_flex44wrist_roll55gripper6环境检查更完整的安装与排错见 docs/ENV_SETUP.md。也可运行bashscripts/check_env.sh效果Referencelerobot-so101-rviz2