主题
备战TCEI 2026 (一) 机器狗赛道
如火如荼的EICON 2025线下大赛已经结束,长达3个月的比赛全程可谓是异常的激烈。很多同学在最后的线下决赛阶段直接睡在了比赛场地,为了争取一个毫不后悔的成绩。
现在,规模更大,赛制更完善、赛程更丰富新一届大赛已经开始筹备。大赛名称也从EICON China升级为了具智大师TCEI(Technical Conference on Embodied Intelligence) 无人系统大赛。
很多同学在得知这样一场规模和等级都空前之高的赛事时,大赛的报名时间已经所剩无几,甚至报名时间已经结束。
为了弥补去年一部分同学的遗憾,平台将会把去年的机器狗赛道线上仿真预赛环境重新上线,也再次整理和优化的整个的环境搭建过程。供希望学习的同学重新体验一下去年的比赛环境。
让我们从机器狗赛道,即四足机器人开始。
比赛规则与比赛文件
首先,我们来回到官网介绍一下机器狗规则赛道。
另外,我们需要准备赛道的比赛文件。在提供百度网盘中查找这些文件。
机器狗赛道比赛文件,比赛文件中的介绍markdown文件为本地环境搭建。但是参赛同学本地环境和文档作者的环境一般不同的,如果系统上已经安装了部分环境,版本可能会不一致。此时在本地环境进行安装会比较复杂。利用算力自由平台,我们可以在云端获得干净环境,从而快速搭建环境。
也可以部分参考比赛培训视频: 机械臂赛道培训视频
我们可以看到比赛的环境包括了:
- 源代码
- ROS 1
- IsaacSim 4.5
- yolo V8
- 九格大模型
这其中,类似ROS1和IsaacSim 4.5都是对ubuntu、python等内容非常严苛的框架。所以平台提供了对应的镜像来方便用户快速搭建环境。
EICON大赛专用-IsaacSim4.5+ROS1开发环境镜像
由于镜像内的noVNC版本比较老,不支持直接复制粘贴,先参考这个文档升级VNC(https://www.gpufree.cn/docs/guide/know_issue/novnc_clipboard.html)。
使用平台镜像快速创建
点击上方的链接,直接进入平台镜像页面。在开始的环境搭建阶段,我们需要一卡就足够了。直接点击快速创建。

镜像页面中有快速启动和已知问题是必须参考的内容,页面中的详细说明后续还会用到。
初次使用算力自由平台,可以参看平台快速开始文档。
专用镜像体积较大,可能需要较长的拉取时间,需要几分钟或者十几分钟的等待。开机过程是不会收取算力费用的。
开机完成会自动弹出VNC远程桌面,或者可以自行在控制台打开VNC页面。

为了方便后续复制粘贴命令,可以使用实例远程桌面内的firefox浏览器打开本网页。
下载源码
将分享的百度盘的源码文件夹下的Go2和EAICON放在/root/gpufree-data文件夹下。可以在远程桌面中的浏览器,安装百度网盘linux deb版本,进行下载。 
或者
bash
# 安装4.17.7版本,是当前最新版本。未来可能会有更新。
cd /root/gpufree-data/
wget https://039ede-1874119700.antpcdn.com:19001/b/pkg-ant.baidu.com/issue/netdisk/LinuxGuanjia/4.17.7/baidunetdisk_4.17.7_amd64.deb
dpkg -i baidunetdisk_4.17.7_amd64.deb将源码拷贝到/root/gpufree-data/文件夹下,形成如下文件目录:
/root/gpufree-data/
├── Go2/
└── EAICON/将EAICON中的相关类库复制到IsaacSim下:
bash
cp /root/gpufree-data/EAICON/Content/Go2/lidar/L1.json /root/isaacsim/exts/isaacsim.sensors.rtx/data/lidar_configs/NVIDIA/bash
# 安装Go2
cd /root/gpufree-data/Go2
catkin_make
# 配置bashrc
echo "source /root/gpufree-data/Go2/devel/setup.bash" >> ~/.bashrc
source ~/.bashrcROS 1环境
ROS 1环境是已经预装的,在快速启动中包括了他的启动方式: 
直接开启三个终端: 
终端一
bash
roscore # 启动 ROScore终端二
bash
rosrun turtlesim turtlesim_node终端三
bash
rosrun turtlesim turtle_teleop_key结果输出
使用键盘上下左右操作,可以看到界面上的小乌龟在按照键盘指令移动。测试完成后可以关闭终端一二三。 
IsaacSim 4.5环境
注册IsaacSim
bash
echo "export ISAACSIM_PATH=\"/root/isaacsim\"" >> ~/.bashrc
echo "export ISAACSIM_PYTHON_EXE=\"/root/isaacsim/python.sh\"" >> ~/.bashrc
source ~/.bashrc新建独立的终端四
终端四
IsaacSim安装在/root/isaacsim
cd /root/isaacsim
# 启动
./isaac-sim.sh首次启动,需要访问Nvidia官方下载部分相关文件,可能会较慢。在使用之前,建议关闭IsaacSim默认的Eco Mode,并打开DLSS以提高性能。

测试完成后关闭终端四。
yolo V8环境安装
yolo V8的安装相对比较简单,需要我们自行安装。建议先设置GitHub加速,
终端五
bash
# 安装yolo V8
conda create -n yolov8 python=3.8安装过程需要输入几次回车或者'y'。
bash
conda activate yolov8
# 安装pytorch
# pytorch推荐在官网获取安装命令,根据自己的cuda版本选择合适的命令。
# 如果选择平台提供的镜像,相关cuda是确定的,可以使用以下命令
pip3 install torch torchvision
# 拉取yolo V8代码
cd /root/gpufree-data
git clone https://github.com/ultralytics/ultralytics.git
cd ultralytics
# 安装yolo V8
pip install -e .完成后可以关闭终端五。
九格大模型环境安装
在官方的百度网盘下载比赛专用源码: 九格大模型比赛文件
文件非常大,有大概8GB,仅下载比赛专用源码,百度网盘下载模型文件在没有会员的情况下非常缓慢。模型我们后续在九格官方下载。速度会快得多。

终端六
下载九格大模型:
bash
cd /root/gpufree-data
mkdir inference
mkdir inference/FM9G4B-V
# 此处官方文档的下载内容有误,最后的文件名应该是FM9G4B-V,而不是主分支的9G4B
wget https://thunlp-model.oss-cn-wulanchabu.aliyuncs.com/FM9G4B-V.tar.gz
# 解压
tar -xvf FM9G4B-V.tar.gz
mv FM9G4B-V/* inference/FM9G4B-V/将下载的Embodied文件夹放在之前创建的/root/gpufree-data/inference文件夹下。形成这样的文件目录:
/root/gpufree-data/inference/
├── FM9G4B-V/
└── Embodied/创建虚拟环境inference并安装依赖
bash
conda create -n inference python=3.10安装过程需要输入几次回车或者'y'。
bash
conda activate inference
cd /root/gpufree-data/inference/Embodied
# 安装依赖
pip install -r requirements.txt
# 缺少一个类库,手动安装
pip install protobuf
# conda环境下,需要设置LD_LIBRARY_PATH,否则会缺少类库
echo "export LD_LIBRARY_PATH=/opt/conda/envs/inference/lib/python3.10/site-packages/nvidia/cudnn/lib:$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc测试模型
bash
cd /root/gpufree-data/inference/Embodied/inference
# 修改test.py的模型文件夹
# 将test.py中的/model/FM9G4B-V修改为/root/gpufree-data/inference/FM9G4B-V
sed -i 's|/model/FM9G4B-V|/root/gpufree-data/inference/FM9G4B-V|g' test.py
python test.py输出下图即为测试成功: 
至此,环境搭建完成。可以关闭所有的终端窗口。
运行四足机器狗仿真
bash
# 终端一
roscore # 启动 ROScorebash
# 终端二
cd /root/gpufree-data/EAICON
chmod +x run_go2_sim.sh
bash run_go2_sim.shbash
# 终端三
#进入工作空间
cd /root/gpufree-data/Go2
#运行 launch文件
roslaunch go2_slam go2_bring.launch界面将会显示: 
大模型接口
该版本通用大模型参数量为80亿,具有高效训练与推理和高效适配与部署的技术特点,具备文本问答、文本分类、机器翻译、文本摘要等自然语言处理能力。九格百亿级通用基础大模型的参数量为8B(80亿)。具体的模型训练、推理等内容见:quick start
本表聚焦“九格”接口设计中与大模型相关的部分,将其抽象为模型加载、推理调用两大核心单元,具体接口列表如下:
| 接口名称 | 描述 | 调用方式 | 输入参数 | 输出 | 异常处理 |
|---|---|---|---|---|---|
| 模型加载接口 | 从本地或远程路径加载大模型及其 Tokenizer | AutoModel.from_pretrained AutoTokenizer.from_pretrained | - model_file (字符串):权重与配置存放路径 - trust_remote_code (布尔):是否信任远程自定义代码 | - self.model (模型对象) - self.tokenizer (分词器对象) | 捕获并 rospy.logerr,加载失败时置空并退出订阅流程 |
| 推理调用接口 | 根据输入图像与文本 Prompt,调用模型生成推理结果 | model.chat(image=None, msgs, tokenizer=self.tokenizer) | - msgs (列表):每项为字典 |
1.模型加载接口
python
self.model = AutoModel.from_pretrained(
model_file: str,
trust_remote_code: bool = True,
attn_implementation: str = 'sdpa',
torch_dtype: torch.dtype = torch.bfloat16
)
self.tokenizer = AutoTokenizer.from_pretrained(
model_file: str,
trust_remote_code: bool = True
)参数说明
model_file:本地或远程路径,预训练模型权重与配置所在目录。
trust_remote_code:是否信任并执行仓库中的自定义代码。
attn_implementation 与 torch_dtype:可选优化参数。
输出说明
self.model:已加载并 eval() 的模型实例,已切换到 CUDA(若可用)。
self.tokenizer:对应的分词器,用于构造输入tokens。
异常处理
捕获任何加载错误,调用 rospy.logerr("模型加载失败: %s", e) 并将self.model/self.tokenizer 置为 None,后续流程根据空值判断跳过订阅与推理。
2.推理调用接口
model_res = self.model.chat(
image=None,
msgs: List[Dict[str, Any]],
tokenizer=self.tokenizer
)输入说明
msgs:长度可变的消息列表,每条消息格式为:
{
'role': 'user',
'content': [pil_image: PIL.Image.Image, prompt: str]
} pil_image:从最新 ROS 彩色帧转换而来。
prompt:用户或上层脚本动态输入的文本提示。
输出说明
model_res:大模型返回的推理结果,可为文本、结构化数据或二次封装,随后转换为字符串发布。
调用时机
在 self.new_bbox_request == True 且最新图像帧已获取时触发。
异常处理
推理过程中捕获任何异常并调用 rospy.logerr("调用大模型进行处理时出错: %s", e),当前帧推理终止,不影响后续请求。
四足机器狗接口
1.运动控制接口
| 话题名称 | 消息类型 | 发布/订阅 | 功能说明 |
|---|---|---|---|
| /cmd_vel | geometry_msgs/Twist | 订阅 | 接收机器人运动控制指令(线速度和角速度) |
| /cmd_vel_x | std_msgs/Float32 | 发布 | 发布处理后的x方向线速度分量 |
| /cmd_vel_y | std_msgs/Float32 | 发布 | 发布处理后的y方向线速度分量 |
| /cmd_vel_yaw | std_msgs/Float32 | 发布 | 发布处理后的绕z轴的角速度分量 |
| /odom | nav_msgs/Odometry | 发布 | 发布机器人里程计信息(位置、姿态和速度) |
| /tf | tf2_msgs/TFMessage | 发布 | 广播各坐标系之间的变换(坐标变换树) |
2.传感器接口
| 话题名称 | 消息类型 | 发布/订阅 | 功能说明 |
|---|---|---|---|
| /camera/front | sensor_msgs/Image | 订阅 | 前视摄像头原始图像 用于机械狗的巡线 |
| /camera/global | sensor_msgs/Image | 订阅 | 全局摄像头 |
| /lidar/points | sensor_msgs/PointCloud2 | 发布 | 发布三维点云数据 |
| /scan | ensor_msgs/LaserScan | 发布 | 发布二维激光扫描数据 |
| /imu/data | sensor_msgs/Imu | 发布 | 发布惯性测量单元数据,包括线加速度、角速度和姿态 |