# Lite3_ROS **Repository Path**: CQU-EPL/Lite3_ROS ## Basic Information - **Project Name**: Lite3_ROS - **Description**: 基于ROS的机器狗二次开发 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: ubuntu20 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-01-12 - **Last Updated**: 2026-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CPS Ubuntu电脑账户密码 双系统开机按F11选择win还是ubuntu 密码:win:Wang20240913;ubuntu:123456 (下载什么东西或者更改什么设置最好做个文档记录) # 目录 - [机器狗操作](#机器狗操作) - [机器狗仿真](#机器狗仿真) - [机器狗与动捕系统连接与代码运行](#机器狗与动捕系统连接与代码运行) - [用RVIZ画机器狗的运动轨迹](#用rviz画机器狗的运动轨迹) - [绝影Lite3感知开发](#绝影lite3感知开发) # 机器狗操作 通过ssh远程连接到机器狗,通过SDK控制机器狗关节运动 详细操作参考: ``` https://github.com/DeepRoboticsLab/Lite3_MotionSDK?tab=readme-ov-file#1-sdk-change-log ``` ## 1 SDK下载 将**Lite3_MotionSDK**存储库克隆到本地主机: ``` cd xxxxxxxxxx #cd git clone --recurse-submodules https://github.com/DeepRoboticsLab/Lite3_MotionSDK.git ``` ## 2 识别远程主机地址、用户名和密码 ### 2.1 识别运动主机地址 - 通过 WiFi 连接到机器人时,请验证您的开发主机的 IP 地址: - 如果网段为 1,则运动主机 IP 地址为 192.168.1.120。 - 如果网段为 2,则运动主机 IP 地址为 192.168.2.1。 通过以太网端口连接到机器人时,运动主机IP地址为192.168.1.120。 ### 2.2 识别用户名和密码 | 用户名 | 密码 | | ysc | , (单引号)| ## 3 配置运动主机 通过ssh远程连接到运动主机,为运动主机配置目标 IP 地址,以发送关节数据等运动数据。 - 首先连接机器狗wifi或以太网端口将开发主机连接到机器狗局域网,然后使用SSH连接上一步确定的地址和用户名的运动主机: ``` ssh ysc@192.168.1.120 ``` - 连接主机后,在终端中输入以下命令,打开网络配置文件: ``` cd ~/jy_exe/conf vim network.toml ``` - 配置文件 network.toml 如下所示: ``` ip = '192.168.1.102' # Motion host will send data to this IP address target_port = 43897 local_port = 43893 ``` *备注1:将ip地址改为自己的Ubuntu系统IP,可在设置中查看;多台电脑可考虑将ip设置为静态ip* *备注2:在更改ip时,点击“i”或“a”进行修改,点击esc退出编辑模式,输入:wq保存退出* - 重新启动运动程序以应用新配置: ``` cd ~/jy_exe/scripts sudo ./stop.sh sudo ./restart.sh ``` ## 4 配置MotionSDK main.cpp代码的第 39 行为 SDK 创建了一个发送线程,用于向机器人运动主机发送关节控制命令: ``` Sender* send_cmd = new Sender("192.168.1.120",43893); ///< Create send thread ``` 请根据第 4 章中确定的运动主机地址修改目标 IP 地址。Sender() ## 5 编译并运行 main.cpp提供了一个简单的站立演示,站立一段时间后,它将控制权直接返回给底层控制器,机器人自动进入阻尼保护模式。 **但为了保证SDK的安全使用,在main.cpp的原始代码中,注释掉了第73行发送关节控制命令的代码,所以机器人默认只会重置为零,不会站立:** ``` //send_cmd->SendCmd(robot_joint_cmd); ``` >谨慎:在取消注释之前,开发者必须确保 SDK 与机器人之间的通信正常运行(参见“5.1 检查通信”),并确保 SDK 发送的联合控制命令正确无误,即向开发主机返回正确的关节信息 ### 5.1 检查通信 MotionSDK 使用 UDP 与机器人进行通信。 要检查机器人是否成功向 SDK 发送数据,开发者可以使用 SDK 打印关节数据或 imu 数据等数据,以判断 SDK 是否接收了机器人发送的数据,或者在运行 Demo 时观察是否打印。No data from the robot was received!!!!!! 要检查SDK是否成功向机器人发送控制命令,开发人员可以在运行演示时观察机器人的动作。如果机器人可以归零,则证明SDK可以成功向机器人发送命令。 - 首先编译原始代码 >注意:您可以在编译前取消注释 main.cpp 中的第 75 行,以使 SDK 打印 imu 数据,以判断 SDK 是否接收到机器人发送的数据。cout << robot_data->imu.acc_x << endl - 进入解压缩的文件夹,在与CMakeLists.txt相同的目录下创建一个新的构建目录; ``` cd xxxxxxxx # cd mkdir build ``` >注意:开发人员可以在任何地方创建构建目录。但是,运行 CMake 时需要CMakeLists.txt路径。 - 导航到构建目录,然后编译: - 为 x86 主机编译: ``` cd build cmake .. -DBUILD_PLATFORM=x86 # cmake make -j ``` >针对ARM的主机编译请参考原GitHub链接 - 编译完成后,build目录下会生成一个名为**Lite_motion**的可执行文件,这是编译的结果; - 在终端中输入以下命令以运行Lite_motion(运行前请确保开发主机已连接到机器人网络): ``` ./Lite_motion ``` >注意:为了使机器人顺利归零,请在运行程序之前将机器人调整到就绪位置。 - 观察机器人在运行Lite_motion时是否复位归零,在终端中打印机器人发送的数据是否正常(要输出机器狗关节信息) ### 5.2 通信故障排除 如果运动主机用户名为ysc,则 MotionSDK 正在开发主机上运行,并且开发主机通过 WiFi 连接到机器人,如果SDK收到的信息均为0,则在ysc@ysc:~/jy_exe/conf文件中输入: ``` sudo tcpdump -x port 43897 -i p2p0 ``` >其余情况请查阅原GitHub文档 ### 5.3 编译与开发 在确保 SDK 与机器人正确通信并且您的控制命令正确后,您可以在 main.cpp 中取消注释第 73 行中的代码,重新编译并再次运行它:send_cmd->SendCmd(robot_joint_cmd) - 删除之前生成的构建目录 - 打开一个新的终端,创建一个空的构建目录; ``` cd xxxxxxxx # cd mkdir build ``` - 导航到构建目录,然后编译; - 为 x86 主机编译: ``` cd build cmake .. -DBUILD_PLATFORM=x86 # cmake make -j ``` -编译后,在构建目录中生成一个名为 Lite_motion 的可执行文件。在终端中输入以下代码以运行程序: ``` ./Lite_motion ``` >注意:使用绝影Lite3测试运动控制算法或进行实验时,所有在场人员应与机器人保持至少5米的距离,并将机器人悬挂在机器人吊装装置上,以免对人员和设备造成意外损坏。如果用户在实验过程中需要接近机器人,用户必须确保机器人进入紧急停止状态或使用命令关闭运动程序。sudo ./stop.sh # 机器狗仿真 ## 1 仿真环境部署(Isaac Gym) ### 1.1 在linux系统上安装anaconda3 - 安装**anaconda**(参考): ``` https://blog.csdn.net/wyf2017/article/details/118676765 ``` - 安装虚拟环境 ``` conda create-n dr_gym python=3.8 ``` - 确认环境是否已经正确安装 ``` conda env list ``` ``` #conda environnents base */home/ysc/anaconda3 dr_gym /home/ysc/anaconda3/envs/dr_gym ``` - 后续所有的操作都是在**dr_gym** 环境中 ``` conda activate dr_gym ``` ### 1.2 Ubuntu20.04 安装 Isaac Gym 仿真器: - 安装**Isaac Gym**仿真器教程: ``` https://blog.csdn.net/qq_54900679/article/details/147387701 ``` >注意: *根据教程,需先安装显卡驱动与CUDA,CUDA版本需与显卡匹配,cps安装的cuda版本为12.8.1* - Ubuntu20.04安装**Nvidia显卡**驱动教程: ``` https://blog.csdn.net/ytusdc/article/details/132403852 ``` - Ubuntu 20.04 **CUDA**安装: ``` 参考1 https://cloud.tencent.com/developer/article/2037551 参考2 https://blog.csdn.net/CC977/article/details/122789394 ``` - 最后安装python包及相关依赖**运行超时**问题解决办法参考: ``` pip install -e . ``` ``` https://blog.csdn.net/qlkaicx/article/details/146703877 ``` ### 1.3 安装其他依赖项 - 安装**rs1_rl** ``` git clone https://github.com/DeepRoboticsLab/Robot_Training_Cases/tree/main/Case2 ``` - 在给出的代码中的rsl_r1目录下运行 ``` pip-e ``` - 安装其他需要安装的库 ``` pip install setuptools==59.5.0 pip3 install torch==2.3.1+cu121 torchvision==0.18.1+cu121 torchaudio==2.3.1+cu121 --index-url https://download.pytorch.org/whl/cu121 ``` >注意:*需选择与显卡适配的**pytorch**版本,已安装的**pytorch**版本为**2.3.1*** 验证**pytorch**的安装情况 ``` python3 -c "import torch; print(torch.cuda.is_available())" ``` ### 1.4 运行dr_gym/legged gym/scripts/train.py脚本,观察是否运行正常 ``` conda activate isaac cd dr_gym/legged gym/scripts python3 train.py ``` ### 1.4 运行dr_gym/legged gym/scripts/train.py脚本,观察是否运行正常 ``` conda activate isaac cd dr_gym/legged gym/scripts python3 train.py ``` ## 2 运行案例6:基于VMC的运动控制 ### 2.1 下载代码包 git clone https://github.com/DeepRoboticsLab/Lite3_VMC.git ### 2.2 编译 需在系统全局环境下进行编译与仿真。 - 编译 >若终端为(base)ubuntu20@ubuntu20: >则运行conda deactivate ``` cd ~/Lite3_VMC catkin_make ``` >注意:这里可能会由于缺少某些依赖项而编译失败,需安装对应的依赖项,再进行编译。再次编译时,需先将工作空间中已生成的build和include文件夹删除,再进行编译。 > >若使用catkin_make进行编译出现anaconda路径污染问题,借助chatgpt对相关报错进行处理。 - 配置环境变量 ``` source ~/Lite3_VMC/devel/setup.bash ``` - 运行launch文件,加载gazebo仿真环境,加载机器狗仿真模型 ``` roslaunch gazebo_model_spawn gazebo_startup.launch roslaunch gazebo_model_spawn model_spawn.launch rname:=lite3 use_xacro =true use camera:=false #start controller ``` - 按enter键 - 运行Lite3主控程序,键盘控制程序,通过键盘对机器狗仿真模型进行运动控制 ``` rosrun examples example_lite3_sim rosrun examples example_keyboard ``` >"l":切换到“力矩支撑模式”; >"j":切换步态; >"u":站立/坐下; >"i":坐下后退出程序; >"w/s/a/d":前后左右移动; >"q/e":向左/右旋转; >"ctrl+C":退出键盘控制程序 ## 3 仿真环境部署(Isaac Lab) **系统配置:** Ubuntu22.04 **参考教程:** https://isaac-sim.github.io/IsaacLab/main/source/setup/installation/pip_installation.html# ### 3.1 创建conda环境并激活 ``` bash conda create -n env_isaaclab python=3.11 conda activate env_isaaclab ``` ### 3.2 安装IsaacSim ``` bash pip install "isaacsim[all,extscache]==5.1.0" --extra-index-url https://pypi.nvidia.com ``` ### 3.3 安装PyTorch ``` bash pip install -U torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cu128 ``` ### 3.4 安装IsaacLab ``` bash git clone https://github.com/isaac-sim/IsaacLab.git sudo apt install cmake build-essential ./isaaclab.sh --install # or "./isaaclab.sh -i" ``` ### 3.5 验证IsaacLab ``` bash # Option 1: Using the isaaclab.sh executable # note: this works for both the bundled python and the virtual environment ./isaaclab.sh -p scripts/tutorials/00_sim/create_empty.py # Option 2: Using python in your virtual environment python scripts/tutorials/00_sim/create_empty.py ``` # 机器狗与动捕系统连接与代码运行 ### 1 确保动捕系统主机连接机器狗的WIFI - 名称:YCS-JYML-td9lsi 密码:12345678 ### 2 在动捕系统XINGYING APP中标定机器狗 - C:\jk_for_novkov路径下查看是否已有dog.mars标定文件,已有可直接打开软件,点击开始即可 - 若需重新标定,到以上标定文件路径中将已有标定文件删去,打开软件,点击冻结帧,按住shift选中要标定的对象,右键点击create rig,命名即可 ### 3 控制主机操作 - 连接机器狗WIFI - 测试 Ubuntu 是否跟 XINGYING 软件所在主机的网络连通,两台电脑的 IP 地址一定要在同一个网段(故均连接机器狗WIFI)。此处的IP为 XINGYING 软件所在主机的IP。若 PING 不通,请检查电脑的 IP 地址是否设置正确。**[插入图片]** ``` bash ping 192.168.2.65 ``` - ping通后,启动动捕系统的ros接口,此处的IP为 XINGYING 软件所在主机的IP。 ``` bash roslaunch vrpn_client_ros sample.launch server:=192.168.2.65 ``` ### 4 运行控制代码 - 在VS Code中或终端中运行均可。遇到紧急情况Ctrl+C结束运行。 # 用RVIZ画机器狗的运动轨迹 呈现出的效果是,从上往下看视角看到的机器狗实时运动的画面和实时在动捕系统上画出的轨迹图 ## 1 电脑WiFi连接 将开启**rivz**的那台电脑 连接上狗的WiFi **YSC—JYML—td9lsl—5G** ## 2 在Ubuntu里的操作步骤 ### 2.1 启动摄像头 - 在桌面另开一个终端,输入 ``` roslaunch mindvision_cam ge300gc.launch ``` - 开启成功,会看见 ``` camera:0 open successed!!! ``` ### 2.2 打开rviz - rviz在Ubuntu的桌面开启终端,输入 ``` rviz ``` - 开启成功,会看见弹出相应界面 ## 3 在rviz里的操作步骤 ### 3.1 将设定好的配置添加进rviz - 点击rviz界面左上角的**interact** - 在弹出的界面点击**Open Config** - 在弹出的界面左侧点击**src** - 选择需要的文件(狗的圆形轨迹规划的相关文件保存在了2025XuKe中),点击文件2025XuKe,可以看见文件dog_rviz.rviz,点击文件dog_rviz.rviz,就可以看见摄像头监控的机器狗实时运动的画面和实时在动捕系统上画出的轨迹图 ### 3.2 连接动捕系统,将数据传入rviz - 接着3.1操作的界面,点击左下角的**add**,确认**Path**和**TF**被勾选(点开**Path**里面的选项都没有被勾选) - 在Ubuntu的桌面开启一个新的终端,输入 ``` roslaunch vrpn_client_ros sample.launch server:=192.168.2.65 ``` 连接动捕系统,得到动捕系统的数据,连接成功会看见类似 ``` Found new sender:dog Creating new tracker dog ``` - 回到rviz界面,可以看到狗的坐标(如果不需要原点坐标,可以在**interact**里面把**world**不勾选,原点坐标就会消失) ## 4 屏幕录制 - 开启Kazam屏幕录制 - 在右上角结束录制,录制的文件在ubuntu的视频里面 # 绝影Lite3感知开发 ## 运动通信功能包`message_transformer` ### 功能介绍 本案例实现了ROS与UDP消息的功能转换。 绝影Lite3的运动主机与感知主机之间、感知主机与手柄App之间的数据传输均采用UDP协议,通过本案例提供的***message_transformer_cpp*** 软件包,可实现: - 将运动主机上报的UDP消息转换为ROS话题进行发布,将感知主机下发的运动控制指令使用UDP发送给运动主机; - 接收App发送的控制指令,以开启和关闭感知主机上的AI功能。 其提供的ROS通信接口: **发布话题:** 运动主机向感知主机传输数据 ```html 腿部里程计: /leg_odom (nav_msgs::Odometry) IMU数据: /imu/data (sensor_msgs::Imu) 关节数据: /joint_states (sensor_msgs::JointState) ``` **订阅话题:** 感知主机向运动主机传输数据 ```html 速度指令: /cmd_vel (geometry_msgs::Twist) ``` ### 使用方法 1. 打开一个新的终端依次执行以下命令,以**启动通信功能包节点** `nx2app`、`rk2ros`、`ros2rk`: ```bash cd message_transformer_ws/ #进入功能包工作空间(/home/ysc/message_transformer_ws) source devel/setup.bash #添加工作空间环境变量 roslaunch message_transformer message_transformer.launch #启动通信功能包节点 ``` 2. 打开一个新的终端,使用ROS中的`rostopic`命令**查看机器狗状态信息**: ```bash rostopic info xxxxxx rostopic echo xxxxxx # xxxxxx指的是具体话题名称,可在自己的代码中订阅话题进行二次开发 ``` 3. 使用`/cmd_vel`话题**向运动主机下发速度指令**,话题消息类型`geometry_msgs/Twist`定义如下: ```bash geometry_msgs/Vector3 linear # 线速度(m/s) float64 x # 前向速度,向前为正 float64 y # 侧向速度,向左为正 float64 z # 无效参数 geometry_msgs/Vector3 angular # 角速度(rad/s) float64 x # 无效参数 float64 y # 无效参数 float64 z # 转向角速度,左转为正 ``` - 用户可在基于ROS编译的C++和Python程序中发布该话题(需要用户具有ROS基础,ROS基础的学习请参考 http://wiki.ros.org/ROS/Tutorials ),也可以打开一个终端,输入命令发布进行调试,请先输入: ```bash rostopic pub /cmd_vel geometry_msgs/Twist ``` - 输入完先不运行,在语句后面加一个空格,再按Tab键,就会自动补充当前消息类型的内容,具体如下: ```bash rostopic pub /cmd_vel geometry_msgs/Twist "linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0 " ``` - 使用键盘上的向左/向右方向键移动光标,对速度值进行修改,然后在`geometry_msgs/Twist`之后加入` -r 10` 规定发布频率(即每秒发布10次),输入完毕后终端内容如下所示: ```bash rostopic pub /cmd_vel geometry_msgs/Twist -r 10 "linear: x: 0.2 y: 0.1 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.3 " ``` - 运行命令,即可发布话题。 - 传输程序会订阅该话题,并将其转为UDP指令消息发给运动主机。 - 在传输程序已正常开启的情况下,用App切入自动模式,机器狗即可按照如上速度行动,为防止在调试过程中对人或物品造成损伤,请在空旷处调试,并随时准备将机器狗切回手动模式进行接管。 ### 程序结构 ```bash ~/message_transformer_ws/src/message_transformer └── message_transformer ├── CMakeLists.txt ├── include │ ├── protocol.h │ └── sensor_logger_.h ├── launch │ └── message_transformer.launch ├── msg │ ├── ComplexCMD.msg │ └── SimpleCMD.msg ├── package.xml ├── script │ ├── log.sh │ ├── start.sh │ ├── status.sh │ ├── stop.sh └── src ├── nx2app.cpp ├── qnx2ros.cpp ├── ros2qnx.cpp └── sensor_checker.cpp ``` - ***nx2app.cpp***主要用于感知主机与手柄App之间进行UDP通信,App下发指令码到感知主机,该程序根据收到的命令执行相应的操作。 - ***qnx2ros.cpp***用于接收运动主机上报的数据,并将其转化为ROS话题,供其他功能包调用。 - ***ros2qnx.cpp***订阅其他功能包节点发布的话题,转化为UDP数据报下发给运动主机。 - ***sensor_checker.cpp***用于检查机器狗传感器的状态,并提示警告出现错误的传感器。