# exoskeleton_robot **Repository Path**: skyworth_exoskeleton/exoskeleton_robot ## Basic Information - **Project Name**: exoskeleton_robot - **Description**: 将main分支作为默认分支 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-02-08 - **Last Updated**: 2026-01-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # exoskeleton_robot # 在orin上先检查ros2有无安装,第一次运行爆一些环境没有不要慌,一步步补就行,特别是ros-humble-hpp-fcl。 # 加入export ROS_DOMAIN_ID=10使得多机通讯生效 # 记得source一下自定义的包 source mujoco_simulater/src/robot_msg/install/setup.bash(已经自动source) # 如果ros topic list跑不起来 就去执行ros2 daemon stop ros2 daemon start ![计算雅可比倒置观察](people.png) 上图为计算雅可比所用图,如果修改机械参数请修改Jacobian_Transformation内的机械参数 ##### 实机运行流程 ```terminator # connect remote ssh sunrise@192.168.3.67 sunrise # source env source /workspace/er/bin/motion_source.env /workspace/er/bin/motion_realmachine #init 手柄A键 cd /tmp/er/control/motor_0 echo 5 > control_mode #收紧助力绳 echo 4 > control_mode #进入ForcePD模式 ros2 run plotjuggler plotjuggler ``` ## x86 编译运行 ./scripts/docker_load_x86_aarch64.sh x86 # 实机运行,用于进入docker容器 ./scripts/build_orin.sh x86 # 在docker容器中编译 运行命令待实现' ## aarch64 编译运行 - 编译命令 ./scripts/docker_load_x86_aarch64.sh aarch64 # 实机运行,用于进入docker容器 ./scripts/build_sunrise.sh aarch64 # 在docker容器中编译 ## ssh ssh sunrise@192.168.3.67 ssh sunrise@192.168.3.59 sunrise - 运行命令 (实机) source /workspace/er/bin/motion_source.env /workspace/er/bin/motion_realmachine - 初始化方式 (实机) ********* estimator部分:开机后,待人体站立直立, 按手柄A键进行初始化, 若初始化成功,则终端会打印"--------编码器位置已初始化--------" ForcePD部分:待人体站立直立时,进入echo 4模式,自动完成传感器初始化 - 查看数据命令 (实机) /workspace/er/bin/watch_cat_file.bash /tmp/er/inputStruct /workspace/er/bin/watch_cat_file.bash /tmp/er/outputStruct - 查看可视化数据 (上位机) ros2 run plotjuggler plotjuggler estimator话题:"est_msgs" ForcePD话题: "joint_angles" - 控制电机命令 (实机) cd /tmp/er/control/motor_0 #### 或者 motor_1 motor_2 motor_3 echo 0 > CAN_PACKET_SET_POS #### 位置模式 0 位置,单位弧度 echo 1.57 > CAN_PACKET_SET_RPM #### 转速模式 1.57 转速,单位弧度/s echo 0 1.57 > CAN_PACKET_SET_POS_SPD #### 位置速度环模式 第一个参数是位置,第二个参数是转速 echo 2 1.57 > CAN_PACKET_SET_POS_SPD echo -2 1.57 > CAN_PACKET_SET_POS_SPD echo 10 > CAN_PACKET_SET_CURRENT #### 电流环模式 echo 1 > control_mode echo 3 > control_mode #膝关节助力 echo 5 > control_mode #收紧助力绳 echo 4 > control_mode #进入ForcePD模式 ## x86环境中ROS2安装路径 /opt/ros2_humble_x86 source /opt/ros2_humble_x86/setup.bash echo $ROS_DISTRO # 应显示版本号(如 "humble") ros2 --version cd /workspace/exoskeleton_robot/environment/env_script/ source /workspace/exoskeleton_robot/environment/env_script/third_party.env ``` which ros2 ``` /opt/ros2_humble_x86/bin/ros2 ``` nano /opt/ros2_humble_x86/bin/ros2 ``` #!/usr/bin/python3 #EASY-INSTALL-ENTRY-SCRIPT: 'ros2cli==0.18.7','console_scripts','ros2' strace -f -o strace.log "ros2 --version" 2>&1 bash: strace: command not found ``` sudo apt install strace ``` ros2 命令行工具本身不支持 --version 参数 ros2 doctor --report # 安装缺失的 Python 包 pip3 install psutil catkin_pkg rosdistro sudo apt install --reinstall ros-humble-ros2doctor # 启动 talker 和 listener ros2 run demo_nodes_cpp talker & ros2 run demo_nodes_py listener pip3 list | grep -E 'psutil|catkin_pkg|rosdistro' # 应输出已安装的版本 # 重新安装 Python 依赖 pip3 install --force-reinstall catkin_pkg rosdistro ros2 pkg list | grep -E 'rclcpp|rclpy|std_msgs' # 应输出:rclcpp, rclpy, std_msgs 等核心包 # 重新安装 Python 依赖 pip3 install --force-reinstall catkin_pkg rosdistro import warnings warnings.filterwarnings("ignore", category=DeprecationWarning) # 切换绳驱 motion_config ssh sunrise@192.168.3.59 sunrise # 层级 motion_realmachine/ ├── src/ │ ├── estimator/ # 感知层,状态估计(独立) │ ├── behavior_tree/ # 规划决策层(高优先级),BT(行为树) │ ├── action_server/ # 控制层,Action Server,具体执行(与BT交互) │ ├── Control/ # 原有运动控制(可被BT调用) │ └── ... # action server cd /workspace/er/lib/gait && LD_LIBRARY_PATH=../:$LD_LIBRARY_PATH ./gait cd /workspace/er/lib && ./motor_action_server/motor_action_server ps aux | grep motor_action_server cd /tmp/er/control/motor_0 # 左电机 右电机motor_2 ls # 输出内容: # CAN_PACKET_SET_CURRENT CAN_PACKET_SET_IDLE # CAN_PACKET_SET_CURRENT_BRAKE CAN_PACKET_SET_POS # CAN_PACKET_SET_POS_SPD CAN_PACKET_SET_RPM # control_mode control_param # 设置位置 echo 0 > CAN_PACKET_SET_POS echo 1 > CAN_PACKET_SET_POS echo 2 > CAN_PACKET_SET_POS # 进入空闲模式 echo 0 > CAN_PACKET_SET_IDLE