# tsp_upper **Repository Path**: tsprobot/tsp_upper ## Basic Information - **Project Name**: tsp_upper - **Description**: tsp上层主控 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-03-30 - **Last Updated**: 2026-04-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tsp_upper ## 1.介绍 - 角色: 上位机控制侧。 - 负责手柄交互、旋转电机控制、监控 GUI、上位机传感器接入和录制联动。 ## 2.功能 - 提供上位机设备部署、远程连接、编译运行和联调入口。 - 提供手柄控制、旋转电机控制、监控显示和上位机 bringup。 ## 3.结构 - 主要硬件: - Dynamixel 旋转电机与 U2D2 适配器 - RealSense D435i - fdilink_ahrs 姿态传感器 - Logitech F710 手柄 - 主要模块: - `tsp_gamepad`: 手柄输入映射与录制控制 - `tsp_rotator`: 旋转电机控制与自动录制联动 - `tsp_monitor`: 监控 GUI - `tsp_upper_bringup`: 上位机总装启动 ## 4.接口 - 关键控制话题: - `/recorder_time`: 录制开始/停止控制 - `/rotator/*`: 电机控制接口 - `/rotator_state`: 电机状态反馈 - `/tsp_upper/folder_info`: 上位机磁盘状态 - `/tsp_upper/folder_info` - 消息类型: `tsp_msgs/TspFolderInfo` - 关键字段: `disk_total_size`、`disk_free_size`、`disk_write_speed`、`disk_write_remaining_time`、`folder_total_size` - 说明: 目录与容量字段均为 snake_case,供 `tsp_monitor` 和调试工具读取。 ## 5.启动运行 ### 5.1 TSP 网络环境配置 - 网络硬件: - `GL-SFT1200`,工作在 Wi-Fi 中继模式,SSID: `GL-SFT1200-8d3` - `TL-WDR7650`,工作在路由模式,SSID: `tsp-5g`,重置后默认 SSID: `TP-LINK_0ABC` - 路由器访问地址: - `GL`: `192.168.8.1` - `TL`: `192.168.1.1` - 路由器密码: - `GL` 和 `TL` 登录密码: `TSP@516517518` - `TL` 无线密码: `tsp516517518` - DHCP 静态分配: - `tsp-upper` 有线网卡: `192.168.1.2` - `tsp-upper` 无线网卡: `192.168.1.3` - `tsp-lower` 有线网卡: `192.168.1.4` - `tsp-lower` 无线网卡: `192.168.1.5` - 连接关系: - `TL` 的 `WAN` 口连接到 `GL` 的 `LAN` 口 - `GL` 为中继模式,其上行地址由上级路由分配,例如实验室常见 `192.168.31.x`;切换手机热点后要按热点实际分配检查 - 当前上位机联调默认走有线口 `192.168.1.2` - 当前下位机默认走无线口 `192.168.1.5`,并作为 ROS Master ### 5.2 系统配置 - 系统:ubuntu 20.04 - 机器名:nx1 - 用户名:robot - 密码:1 - 电压:12V - 连接显示器,键盘鼠标 - 通过网线连接 `TL` 路由器,不能使用无线 - 确认 `TL` 已通过 DHCP 静态分配给上位机有线口 `192.168.1.2` - 设置将用户改为自动登陆 配置.bashrc ```bash if [ "$(cat ~/.bashrc | grep /opt/ros/noetic/setup.bash)" == "" ]; then echo source /opt/ros/noetic/setup.bash >> ~/.bashrc fi if [ "$(cat ~/.bashrc | grep catkin_ws/devel/setup.bash)" == "" ]; then echo source ${HOME}/catkin_ws/devel/setup.bash >> ~/.bashrc fi if [ "$(cat ~/.bashrc | grep ROS_HOSTNAME)" == "" ]; then echo export ROS_HOSTNAME=192.168.1.2 >> ~/.bashrc fi if [ "$(cat ~/.bashrc | grep ROS_MASTER_URI)" == "" ]; then echo export ROS_MASTER_URI=http://192.168.1.5:11311 >> ~/.bashrc fi source ~/.bashrc #测试连通 ping 192.168.1.5 #测试ROS互联 rosrun rospy_tutorials listener.py rosnode list rostopic list ``` ### 5.3 笔记本远程连接 ```bash #笔记本通过无线连接 TL 路由器,SSID 为 tsp-5g #vscode安装remote ssh插件,配置中填写下面内容 Host tsp_upper.local HostName 192.168.1.2 User robot port 22 ForwardX11 yes ForwardX11Trusted yes ForwardAgent yes ``` ### 5.4 设备号固定和自动启动 ```bash #下载机器人功能包 git clone https://gitee.com/linuxfly/tsp_upper.git ~/tsp/tsp_upper git clone https://gitee.com/linuxfly/tsp_common.git ~/tsp/tsp_common #编辑并确认udev设置 code ~/tsp/tsp_upper/set_udev_rules.sh #执行并重启 sudo ~/tsp/tsp_upper/./set_udev_rules.sh ls /etc/udev/rules.d/ sudo reboot #观察设备号是否固定 ls -l /dev/xxx #u2d2适配器 ls -l /dev/xxx #RealSense D435i前向深度相机 ls -l /dev/xxx #fdilink_ahrs姿态传感器 ls -l /dev/xxx #罗技f710手柄无线适配器 cp ~/tsp/tsp_upper/tsp_upper_autostart.desktop ~/.config/autostart/ #重启或注销查看 ``` ### 5.5 编译运行 ```bash mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace git clone -b ros1-legacy https://github.com/IntelRealSense/realsense-ros.git git clone https://gitee.com/linuxfly/fdilink_ahrs mv ~/tsp . cd ~/catkin_ws catkin_make ~/catkin_ws/src/tsp/tsp_upper/run_all.sh ``` ### 5.6 镜像部署和远程连接(非必要) ```bash #下载机器人功能包 git clone https://gitee.com/linuxfly/tsp_dockerfile.git ~/tsp/tsp_dockerfile #构建镜像 ~/tsp/tsp_dockerfile/./build.sh ubuntu-ros 20 ~/tsp/tsp_dockerfile/./build.sh ubuntu-tsprobot 20 #在开发机上同时启动 upper/lower 测试容器 ~/tsp/tsp_dockerfile/./run_test.sh 20 #vscode remote ssh 连接 upper 测试容器 Host tsp-upper.docker HostName 127.0.0.1 User root Port 2206 #容器 noVNC # upper: http://127.0.0.1:6086 # lower: http://127.0.0.1:6087 #vscode 连接容器后测试编译 cd ~/ros_ws catkin_make ``` ## 6.常用操作 ### 6.1 f710手柄测试 ![avatar](tsp_gamepad/f710_usage.png) ```bash roslaunch tsp_gamepad f710.launch #注意:mode绿灯熄灭时换向和调速才起作用 ``` ### 6.2 旋转电机节点测试 ```bash roslaunch tsp_rotator rotator.launch #重设电机需要下载安装DYNAMIXEL Wizard #https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_wizard2/ ``` ### 6.3 fdilink_ahrs测试 ```bash roslaunch fdilink_ahrs ahrs_data.launch port:=/dev/fdilink_ahrs ns:=tsp_upper #该节点和全部话题都带有/tsp_upper前缀 ``` ### 6.4 磁盘空间使用测试 ```bash roslaunch tsp_files disk_info.launch ns:=tsp_upper path:=${HOME}/share #查看自定义消息TspFolderInfo结构 rosmsg show tsp_msgs/TspFolderInfo #查看最新磁盘状态 rostopic echo -n 1 /tsp_upper/folder_info ``` ### 6.5 测试realsense、电机、姿态传感器bag录制 ```bash roslaunch tsp_bag_recorder bag_recorder.launch save_dir:=${HOME}/share prefix:=chongyang topics_file:=${HOME}/catkin_ws/src/tsp_upper/tsp_upper_bringup/record_bags.yaml ns:=tsp_upper #使用rosnode list查看节点 rosnode info /xxx查看节点发布的话题 #编辑record_bags.yaml文件,配置bag包名和需要录制的topic列表 #永远不使用的话题或者无内容话题可以不录制 ``` ### 6.6 gui界面测试 ```bash roslaunch tsp_monitor monitor.launch ``` ### 6.7 bringup测试和全部开启测试 ```bash roslaunch tsp_upper_bringup bringup.launch ns:=tsp_upper save_dir:=${HOME}/share #编译并测试全部脚本 ~/catkin_ws/src/tsp/tsp_upper/test_all.sh ``` ## 7.说明 ### 7.1 ros常用工具 ```bash rqt_graph rqt_topic rosrun rqt_reconfigure rqt_reconfigure ... ``` - `TspFolderInfo` 字段已统一为 snake_case,脚本、监控界面或调试命令不要再使用旧式 camelCase 名称。